martin-loop 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +362 -362
- package/docs/oss/EXAMPLES.md +126 -126
- package/docs/oss/OSS-BOUNDARY-REPORT.json +113 -113
- package/docs/oss/OSS-BOUNDARY-REPORT.md +48 -48
- package/docs/oss/QUICKSTART.md +135 -135
- package/docs/oss/README.md +93 -93
- package/docs/oss/RELEASE-SURFACE-REPORT.json +45 -45
- package/docs/oss/RELEASE-SURFACE-REPORT.md +35 -35
- package/package.json +10 -12
package/docs/oss/EXAMPLES.md
CHANGED
|
@@ -1,126 +1,126 @@
|
|
|
1
|
-
# Examples
|
|
2
|
-
|
|
3
|
-
These examples are grounded in the current CLI and MCP surfaces in this repo. Where an example depends on a real provider path, it is labeled that way explicitly.
|
|
4
|
-
|
|
5
|
-
These are still primarily repo-local RC examples. The root `martin-loop` package facade is now real and smoke-validated, but registry publication remains a later release step.
|
|
6
|
-
|
|
7
|
-
## 1. Stub-backed hello world
|
|
8
|
-
|
|
9
|
-
Use this when you want a safe first pass through the loop without real model spend.
|
|
10
|
-
|
|
11
|
-
### PowerShell
|
|
12
|
-
|
|
13
|
-
```powershell
|
|
14
|
-
$env:MARTIN_LIVE='false'
|
|
15
|
-
pnpm run:cli -- run `
|
|
16
|
-
--workspace ws_demo `
|
|
17
|
-
--project proj_demo `
|
|
18
|
-
--objective "Describe the current Martin run lifecycle in one paragraph" `
|
|
19
|
-
--verify "pnpm --filter @martin/core test"
|
|
20
|
-
Remove-Item Env:MARTIN_LIVE
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Why this is useful:
|
|
24
|
-
|
|
25
|
-
- exercises `runMartin`
|
|
26
|
-
- writes a real loop record and artifacts
|
|
27
|
-
- avoids external provider dependencies
|
|
28
|
-
|
|
29
|
-
## 2. Repo-backed task with explicit scope
|
|
30
|
-
|
|
31
|
-
Use allow and deny paths so the task contract is narrow and reviewable.
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
pnpm run:cli -- run \
|
|
35
|
-
--cwd . \
|
|
36
|
-
--objective "Tighten README wording for the OSS quickstart" \
|
|
37
|
-
--verify "pnpm --filter @martin/core test" \
|
|
38
|
-
--allow-path README.md \
|
|
39
|
-
--allow-path docs/oss/** \
|
|
40
|
-
--deny-path apps/control-plane/** \
|
|
41
|
-
--accept "Only update documentation files" \
|
|
42
|
-
--accept "Do not modify runtime code"
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
What this demonstrates:
|
|
46
|
-
|
|
47
|
-
- repo root selection with `--cwd`
|
|
48
|
-
- scoped file-edit boundaries
|
|
49
|
-
- acceptance criteria injection into the task contract
|
|
50
|
-
|
|
51
|
-
## 3. Safety-block example
|
|
52
|
-
|
|
53
|
-
This example is expected to block before execution because the verifier command is unsafe.
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
pnpm run:cli -- run \
|
|
57
|
-
--objective "Try to run an unsafe verifier" \
|
|
58
|
-
--verify "rm -rf ."
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Expected behavior:
|
|
62
|
-
|
|
63
|
-
- the leash blocks the verifier command before adapter execution
|
|
64
|
-
- the run exits through a safety-oriented path rather than pretending the command was acceptable
|
|
65
|
-
- the attempt artifact set includes a persisted leash artifact when applicable
|
|
66
|
-
|
|
67
|
-
The point of this example is not that `rm` exists on every machine. The point is that the raw verifier text is evaluated before the process would be allowed to run.
|
|
68
|
-
|
|
69
|
-
## 4. Budget-constrained live run
|
|
70
|
-
|
|
71
|
-
This is a live-provider example. Only use it when you have the relevant CLI and credentials configured.
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
pnpm run:cli -- run \
|
|
75
|
-
--engine codex \
|
|
76
|
-
--model o3 \
|
|
77
|
-
--objective "Refactor the CLI argument parser for clarity" \
|
|
78
|
-
--verify "pnpm --filter @martin/cli test" \
|
|
79
|
-
--budget-usd 2 \
|
|
80
|
-
--soft-limit-usd 1 \
|
|
81
|
-
--max-iterations 2
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
What to review afterward:
|
|
85
|
-
|
|
86
|
-
- admission and settlement events in `ledger.jsonl`
|
|
87
|
-
- cost provenance labels in the run artifacts
|
|
88
|
-
- whether the loop stopped for completion, budget pressure, or lack of progress
|
|
89
|
-
|
|
90
|
-
## 5. MCP invocation shape
|
|
91
|
-
|
|
92
|
-
The MCP server exposes `martin_run`, `martin_inspect`, and `martin_status`.
|
|
93
|
-
|
|
94
|
-
Example `martin_run` payload:
|
|
95
|
-
|
|
96
|
-
```json
|
|
97
|
-
{
|
|
98
|
-
"objective": "Tighten the local dashboard copy",
|
|
99
|
-
"workingDirectory": ".",
|
|
100
|
-
"engine": "claude",
|
|
101
|
-
"verificationPlan": ["pnpm --filter @martin/control-plane test"],
|
|
102
|
-
"maxUsd": 5,
|
|
103
|
-
"maxIterations": 2,
|
|
104
|
-
"maxTokens": 20000,
|
|
105
|
-
"workspaceId": "ws_mcp",
|
|
106
|
-
"projectId": "proj_mcp"
|
|
107
|
-
}
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## 6. What to inspect in artifacts
|
|
111
|
-
|
|
112
|
-
For a repo-backed attempt, look at:
|
|
113
|
-
|
|
114
|
-
- `contract.json`
|
|
115
|
-
- `state.json`
|
|
116
|
-
- `ledger.jsonl`
|
|
117
|
-
- `artifacts/attempt-XXX/compiled-context.json`
|
|
118
|
-
- `artifacts/attempt-XXX/diff.patch`
|
|
119
|
-
- `artifacts/attempt-XXX/grounding-scan.json`
|
|
120
|
-
- `artifacts/attempt-XXX/leash.json`
|
|
121
|
-
- `artifacts/attempt-XXX/patch-score.json`
|
|
122
|
-
- `artifacts/attempt-XXX/patch-decision.json`
|
|
123
|
-
- `artifacts/attempt-XXX/rollback-boundary.json`
|
|
124
|
-
- `artifacts/attempt-XXX/rollback-outcome.json`
|
|
125
|
-
|
|
126
|
-
Those files are the evidence trail that backs the runtime’s claims.
|
|
1
|
+
# Examples
|
|
2
|
+
|
|
3
|
+
These examples are grounded in the current CLI and MCP surfaces in this repo. Where an example depends on a real provider path, it is labeled that way explicitly.
|
|
4
|
+
|
|
5
|
+
These are still primarily repo-local RC examples. The root `martin-loop` package facade is now real and smoke-validated, but registry publication remains a later release step.
|
|
6
|
+
|
|
7
|
+
## 1. Stub-backed hello world
|
|
8
|
+
|
|
9
|
+
Use this when you want a safe first pass through the loop without real model spend.
|
|
10
|
+
|
|
11
|
+
### PowerShell
|
|
12
|
+
|
|
13
|
+
```powershell
|
|
14
|
+
$env:MARTIN_LIVE='false'
|
|
15
|
+
pnpm run:cli -- run `
|
|
16
|
+
--workspace ws_demo `
|
|
17
|
+
--project proj_demo `
|
|
18
|
+
--objective "Describe the current Martin run lifecycle in one paragraph" `
|
|
19
|
+
--verify "pnpm --filter @martin/core test"
|
|
20
|
+
Remove-Item Env:MARTIN_LIVE
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Why this is useful:
|
|
24
|
+
|
|
25
|
+
- exercises `runMartin`
|
|
26
|
+
- writes a real loop record and artifacts
|
|
27
|
+
- avoids external provider dependencies
|
|
28
|
+
|
|
29
|
+
## 2. Repo-backed task with explicit scope
|
|
30
|
+
|
|
31
|
+
Use allow and deny paths so the task contract is narrow and reviewable.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pnpm run:cli -- run \
|
|
35
|
+
--cwd . \
|
|
36
|
+
--objective "Tighten README wording for the OSS quickstart" \
|
|
37
|
+
--verify "pnpm --filter @martin/core test" \
|
|
38
|
+
--allow-path README.md \
|
|
39
|
+
--allow-path docs/oss/** \
|
|
40
|
+
--deny-path apps/control-plane/** \
|
|
41
|
+
--accept "Only update documentation files" \
|
|
42
|
+
--accept "Do not modify runtime code"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
What this demonstrates:
|
|
46
|
+
|
|
47
|
+
- repo root selection with `--cwd`
|
|
48
|
+
- scoped file-edit boundaries
|
|
49
|
+
- acceptance criteria injection into the task contract
|
|
50
|
+
|
|
51
|
+
## 3. Safety-block example
|
|
52
|
+
|
|
53
|
+
This example is expected to block before execution because the verifier command is unsafe.
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pnpm run:cli -- run \
|
|
57
|
+
--objective "Try to run an unsafe verifier" \
|
|
58
|
+
--verify "rm -rf ."
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Expected behavior:
|
|
62
|
+
|
|
63
|
+
- the leash blocks the verifier command before adapter execution
|
|
64
|
+
- the run exits through a safety-oriented path rather than pretending the command was acceptable
|
|
65
|
+
- the attempt artifact set includes a persisted leash artifact when applicable
|
|
66
|
+
|
|
67
|
+
The point of this example is not that `rm` exists on every machine. The point is that the raw verifier text is evaluated before the process would be allowed to run.
|
|
68
|
+
|
|
69
|
+
## 4. Budget-constrained live run
|
|
70
|
+
|
|
71
|
+
This is a live-provider example. Only use it when you have the relevant CLI and credentials configured.
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pnpm run:cli -- run \
|
|
75
|
+
--engine codex \
|
|
76
|
+
--model o3 \
|
|
77
|
+
--objective "Refactor the CLI argument parser for clarity" \
|
|
78
|
+
--verify "pnpm --filter @martin/cli test" \
|
|
79
|
+
--budget-usd 2 \
|
|
80
|
+
--soft-limit-usd 1 \
|
|
81
|
+
--max-iterations 2
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
What to review afterward:
|
|
85
|
+
|
|
86
|
+
- admission and settlement events in `ledger.jsonl`
|
|
87
|
+
- cost provenance labels in the run artifacts
|
|
88
|
+
- whether the loop stopped for completion, budget pressure, or lack of progress
|
|
89
|
+
|
|
90
|
+
## 5. MCP invocation shape
|
|
91
|
+
|
|
92
|
+
The MCP server exposes `martin_run`, `martin_inspect`, and `martin_status`.
|
|
93
|
+
|
|
94
|
+
Example `martin_run` payload:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"objective": "Tighten the local dashboard copy",
|
|
99
|
+
"workingDirectory": ".",
|
|
100
|
+
"engine": "claude",
|
|
101
|
+
"verificationPlan": ["pnpm --filter @martin/control-plane test"],
|
|
102
|
+
"maxUsd": 5,
|
|
103
|
+
"maxIterations": 2,
|
|
104
|
+
"maxTokens": 20000,
|
|
105
|
+
"workspaceId": "ws_mcp",
|
|
106
|
+
"projectId": "proj_mcp"
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## 6. What to inspect in artifacts
|
|
111
|
+
|
|
112
|
+
For a repo-backed attempt, look at:
|
|
113
|
+
|
|
114
|
+
- `contract.json`
|
|
115
|
+
- `state.json`
|
|
116
|
+
- `ledger.jsonl`
|
|
117
|
+
- `artifacts/attempt-XXX/compiled-context.json`
|
|
118
|
+
- `artifacts/attempt-XXX/diff.patch`
|
|
119
|
+
- `artifacts/attempt-XXX/grounding-scan.json`
|
|
120
|
+
- `artifacts/attempt-XXX/leash.json`
|
|
121
|
+
- `artifacts/attempt-XXX/patch-score.json`
|
|
122
|
+
- `artifacts/attempt-XXX/patch-decision.json`
|
|
123
|
+
- `artifacts/attempt-XXX/rollback-boundary.json`
|
|
124
|
+
- `artifacts/attempt-XXX/rollback-outcome.json`
|
|
125
|
+
|
|
126
|
+
Those files are the evidence trail that backs the runtime’s claims.
|
|
@@ -1,113 +1,113 @@
|
|
|
1
|
-
{
|
|
2
|
-
"generatedAt": "2026-04-
|
|
3
|
-
"verdict": "go",
|
|
4
|
-
"publicSurface": {
|
|
5
|
-
"packageName": "martin-loop",
|
|
6
|
-
"canonicalPackageManager": "npm",
|
|
7
|
-
"installCommand": "npm install martin-loop",
|
|
8
|
-
"npxCommand": "npx martin-loop",
|
|
9
|
-
"sdkImportPath": "martin-loop",
|
|
10
|
-
"supportsNpxCommand": true,
|
|
11
|
-
"supportsSdkImport": true
|
|
12
|
-
},
|
|
13
|
-
"ossCorePackages": [
|
|
14
|
-
{
|
|
15
|
-
"name": "@martin/contracts",
|
|
16
|
-
"path": "packages/contracts",
|
|
17
|
-
"private": true,
|
|
18
|
-
"publishAccess": null,
|
|
19
|
-
"workspaceDependencies": [],
|
|
20
|
-
"classification": "oss_core",
|
|
21
|
-
"classificationReason": "Intended Phase 13 OSS core surface."
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"name": "@martin/core",
|
|
25
|
-
"path": "packages/core",
|
|
26
|
-
"private": true,
|
|
27
|
-
"publishAccess": null,
|
|
28
|
-
"workspaceDependencies": [
|
|
29
|
-
"@martin/contracts"
|
|
30
|
-
],
|
|
31
|
-
"classification": "oss_core",
|
|
32
|
-
"classificationReason": "Intended Phase 13 OSS core surface."
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"name": "@martin/adapters",
|
|
36
|
-
"path": "packages/adapters",
|
|
37
|
-
"private": true,
|
|
38
|
-
"publishAccess": null,
|
|
39
|
-
"workspaceDependencies": [
|
|
40
|
-
"@martin/core"
|
|
41
|
-
],
|
|
42
|
-
"classification": "oss_core",
|
|
43
|
-
"classificationReason": "Intended Phase 13 OSS core surface."
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"name": "@martin/cli",
|
|
47
|
-
"path": "packages/cli",
|
|
48
|
-
"private": false,
|
|
49
|
-
"publishAccess": "public",
|
|
50
|
-
"workspaceDependencies": [
|
|
51
|
-
"@martin/adapters",
|
|
52
|
-
"@martin/contracts",
|
|
53
|
-
"@martin/core"
|
|
54
|
-
],
|
|
55
|
-
"classification": "oss_core",
|
|
56
|
-
"classificationReason": "Intended Phase 13 OSS core surface."
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"name": "@martin/mcp",
|
|
60
|
-
"path": "packages/mcp",
|
|
61
|
-
"private": false,
|
|
62
|
-
"publishAccess": "public",
|
|
63
|
-
"workspaceDependencies": [
|
|
64
|
-
"@martin/adapters",
|
|
65
|
-
"@martin/contracts",
|
|
66
|
-
"@martin/core"
|
|
67
|
-
],
|
|
68
|
-
"classification": "oss_core",
|
|
69
|
-
"classificationReason": "Intended Phase 13 OSS core surface."
|
|
70
|
-
}
|
|
71
|
-
],
|
|
72
|
-
"nonOssWorkspacePackages": [
|
|
73
|
-
{
|
|
74
|
-
"name": "@martin/control-plane",
|
|
75
|
-
"path": "apps/control-plane",
|
|
76
|
-
"private": true,
|
|
77
|
-
"publishAccess": null,
|
|
78
|
-
"workspaceDependencies": [
|
|
79
|
-
"@martin/contracts"
|
|
80
|
-
],
|
|
81
|
-
"classification": "non_oss_workspace",
|
|
82
|
-
"classificationReason": "Managed or RC-only workspace surface that stays out of the initial OSS boundary."
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"name": "@martin/benchmarks",
|
|
86
|
-
"path": "benchmarks",
|
|
87
|
-
"private": true,
|
|
88
|
-
"publishAccess": null,
|
|
89
|
-
"workspaceDependencies": [
|
|
90
|
-
"@martin/adapters",
|
|
91
|
-
"@martin/contracts",
|
|
92
|
-
"@martin/core"
|
|
93
|
-
],
|
|
94
|
-
"classification": "non_oss_workspace",
|
|
95
|
-
"classificationReason": "Managed or RC-only workspace surface that stays out of the initial OSS boundary."
|
|
96
|
-
}
|
|
97
|
-
],
|
|
98
|
-
"localOnlySurfaces": [
|
|
99
|
-
{
|
|
100
|
-
"path": "apps/local-dashboard",
|
|
101
|
-
"reason": "Local read-model viewer that is not yet packaged as a publishable OSS workspace."
|
|
102
|
-
}
|
|
103
|
-
],
|
|
104
|
-
"dependencyLeaks": [],
|
|
105
|
-
"summary": {
|
|
106
|
-
"ossCoreCount": 5,
|
|
107
|
-
"nonOssWorkspaceCount": 2,
|
|
108
|
-
"localOnlySurfaceCount": 1,
|
|
109
|
-
"dependencyLeakCount": 0,
|
|
110
|
-
"privateOssCoreCount": 3,
|
|
111
|
-
"publishReadyOssCoreCount": 2
|
|
112
|
-
}
|
|
113
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"generatedAt": "2026-04-23T15:03:09.849Z",
|
|
3
|
+
"verdict": "go",
|
|
4
|
+
"publicSurface": {
|
|
5
|
+
"packageName": "martin-loop",
|
|
6
|
+
"canonicalPackageManager": "npm",
|
|
7
|
+
"installCommand": "npm install martin-loop",
|
|
8
|
+
"npxCommand": "npx martin-loop",
|
|
9
|
+
"sdkImportPath": "martin-loop",
|
|
10
|
+
"supportsNpxCommand": true,
|
|
11
|
+
"supportsSdkImport": true
|
|
12
|
+
},
|
|
13
|
+
"ossCorePackages": [
|
|
14
|
+
{
|
|
15
|
+
"name": "@martin/contracts",
|
|
16
|
+
"path": "packages/contracts",
|
|
17
|
+
"private": true,
|
|
18
|
+
"publishAccess": null,
|
|
19
|
+
"workspaceDependencies": [],
|
|
20
|
+
"classification": "oss_core",
|
|
21
|
+
"classificationReason": "Intended Phase 13 OSS core surface."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"name": "@martin/core",
|
|
25
|
+
"path": "packages/core",
|
|
26
|
+
"private": true,
|
|
27
|
+
"publishAccess": null,
|
|
28
|
+
"workspaceDependencies": [
|
|
29
|
+
"@martin/contracts"
|
|
30
|
+
],
|
|
31
|
+
"classification": "oss_core",
|
|
32
|
+
"classificationReason": "Intended Phase 13 OSS core surface."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "@martin/adapters",
|
|
36
|
+
"path": "packages/adapters",
|
|
37
|
+
"private": true,
|
|
38
|
+
"publishAccess": null,
|
|
39
|
+
"workspaceDependencies": [
|
|
40
|
+
"@martin/core"
|
|
41
|
+
],
|
|
42
|
+
"classification": "oss_core",
|
|
43
|
+
"classificationReason": "Intended Phase 13 OSS core surface."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "@martin/cli",
|
|
47
|
+
"path": "packages/cli",
|
|
48
|
+
"private": false,
|
|
49
|
+
"publishAccess": "public",
|
|
50
|
+
"workspaceDependencies": [
|
|
51
|
+
"@martin/adapters",
|
|
52
|
+
"@martin/contracts",
|
|
53
|
+
"@martin/core"
|
|
54
|
+
],
|
|
55
|
+
"classification": "oss_core",
|
|
56
|
+
"classificationReason": "Intended Phase 13 OSS core surface."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "@martin/mcp",
|
|
60
|
+
"path": "packages/mcp",
|
|
61
|
+
"private": false,
|
|
62
|
+
"publishAccess": "public",
|
|
63
|
+
"workspaceDependencies": [
|
|
64
|
+
"@martin/adapters",
|
|
65
|
+
"@martin/contracts",
|
|
66
|
+
"@martin/core"
|
|
67
|
+
],
|
|
68
|
+
"classification": "oss_core",
|
|
69
|
+
"classificationReason": "Intended Phase 13 OSS core surface."
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"nonOssWorkspacePackages": [
|
|
73
|
+
{
|
|
74
|
+
"name": "@martin/control-plane",
|
|
75
|
+
"path": "apps/control-plane",
|
|
76
|
+
"private": true,
|
|
77
|
+
"publishAccess": null,
|
|
78
|
+
"workspaceDependencies": [
|
|
79
|
+
"@martin/contracts"
|
|
80
|
+
],
|
|
81
|
+
"classification": "non_oss_workspace",
|
|
82
|
+
"classificationReason": "Managed or RC-only workspace surface that stays out of the initial OSS boundary."
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "@martin/benchmarks",
|
|
86
|
+
"path": "benchmarks",
|
|
87
|
+
"private": true,
|
|
88
|
+
"publishAccess": null,
|
|
89
|
+
"workspaceDependencies": [
|
|
90
|
+
"@martin/adapters",
|
|
91
|
+
"@martin/contracts",
|
|
92
|
+
"@martin/core"
|
|
93
|
+
],
|
|
94
|
+
"classification": "non_oss_workspace",
|
|
95
|
+
"classificationReason": "Managed or RC-only workspace surface that stays out of the initial OSS boundary."
|
|
96
|
+
}
|
|
97
|
+
],
|
|
98
|
+
"localOnlySurfaces": [
|
|
99
|
+
{
|
|
100
|
+
"path": "apps/local-dashboard",
|
|
101
|
+
"reason": "Local read-model viewer that is not yet packaged as a publishable OSS workspace."
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"dependencyLeaks": [],
|
|
105
|
+
"summary": {
|
|
106
|
+
"ossCoreCount": 5,
|
|
107
|
+
"nonOssWorkspaceCount": 2,
|
|
108
|
+
"localOnlySurfaceCount": 1,
|
|
109
|
+
"dependencyLeakCount": 0,
|
|
110
|
+
"privateOssCoreCount": 3,
|
|
111
|
+
"publishReadyOssCoreCount": 2
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
# Martin Loop Phase 13 OSS Core Boundary
|
|
2
|
-
|
|
3
|
-
Generated: 2026-04-
|
|
4
|
-
|
|
5
|
-
## Verdict
|
|
6
|
-
**GO**
|
|
7
|
-
|
|
8
|
-
## Summary
|
|
9
|
-
- Public package target: martin-loop
|
|
10
|
-
- Canonical public package manager: npm
|
|
11
|
-
- Intended OSS core packages: 5
|
|
12
|
-
- Non-OSS workspace packages: 2
|
|
13
|
-
- Local-only surfaces: 1
|
|
14
|
-
- Private OSS-core packages still gated from publish: 3
|
|
15
|
-
- OSS-core packages already publish-configured: 2
|
|
16
|
-
- Dependency leaks: 0
|
|
17
|
-
- No workspace dependency leaks detected between the intended OSS core and the non-OSS workspace surfaces.
|
|
18
|
-
|
|
19
|
-
## Public Package Surface
|
|
20
|
-
- Install target: `npm install martin-loop`
|
|
21
|
-
- CLI target: `npx martin-loop`
|
|
22
|
-
- SDK target: `import { MartinLoop } from 'martin-loop'`
|
|
23
|
-
- Root `npx martin-loop` support shipped: yes
|
|
24
|
-
- Root SDK import shipped: yes
|
|
25
|
-
|
|
26
|
-
## Intended OSS Core Packages
|
|
27
|
-
| Package | Path | Private | Publish Access | Workspace Deps |
|
|
28
|
-
|---|---|---|---|---|
|
|
29
|
-
| @martin/contracts | packages/contracts | yes | n/a | none |
|
|
30
|
-
| @martin/core | packages/core | yes | n/a | @martin/contracts |
|
|
31
|
-
| @martin/adapters | packages/adapters | yes | n/a | @martin/core |
|
|
32
|
-
| @martin/cli | packages/cli | no | public | @martin/adapters, @martin/contracts, @martin/core |
|
|
33
|
-
| @martin/mcp | packages/mcp | no | public | @martin/adapters, @martin/contracts, @martin/core |
|
|
34
|
-
|
|
35
|
-
## Non-OSS Workspace Packages
|
|
36
|
-
| Package | Path | Reason |
|
|
37
|
-
|---|---|---|
|
|
38
|
-
| @martin/control-plane | apps/control-plane | Managed or RC-only workspace surface that stays out of the initial OSS boundary. |
|
|
39
|
-
| @martin/benchmarks | benchmarks | Managed or RC-only workspace surface that stays out of the initial OSS boundary. |
|
|
40
|
-
|
|
41
|
-
## Local-Only Surfaces
|
|
42
|
-
| Path | Reason |
|
|
43
|
-
|---|---|
|
|
44
|
-
| apps/local-dashboard | Local read-model viewer that is not yet packaged as a publishable OSS workspace. |
|
|
45
|
-
|
|
46
|
-
## Dependency Leak Review
|
|
47
|
-
- No workspace dependency leaks detected.
|
|
48
|
-
|
|
1
|
+
# Martin Loop Phase 13 OSS Core Boundary
|
|
2
|
+
|
|
3
|
+
Generated: 2026-04-23T15:03:09.849Z
|
|
4
|
+
|
|
5
|
+
## Verdict
|
|
6
|
+
**GO**
|
|
7
|
+
|
|
8
|
+
## Summary
|
|
9
|
+
- Public package target: martin-loop
|
|
10
|
+
- Canonical public package manager: npm
|
|
11
|
+
- Intended OSS core packages: 5
|
|
12
|
+
- Non-OSS workspace packages: 2
|
|
13
|
+
- Local-only surfaces: 1
|
|
14
|
+
- Private OSS-core packages still gated from publish: 3
|
|
15
|
+
- OSS-core packages already publish-configured: 2
|
|
16
|
+
- Dependency leaks: 0
|
|
17
|
+
- No workspace dependency leaks detected between the intended OSS core and the non-OSS workspace surfaces.
|
|
18
|
+
|
|
19
|
+
## Public Package Surface
|
|
20
|
+
- Install target: `npm install martin-loop`
|
|
21
|
+
- CLI target: `npx martin-loop`
|
|
22
|
+
- SDK target: `import { MartinLoop } from 'martin-loop'`
|
|
23
|
+
- Root `npx martin-loop` support shipped: yes
|
|
24
|
+
- Root SDK import shipped: yes
|
|
25
|
+
|
|
26
|
+
## Intended OSS Core Packages
|
|
27
|
+
| Package | Path | Private | Publish Access | Workspace Deps |
|
|
28
|
+
|---|---|---|---|---|
|
|
29
|
+
| @martin/contracts | packages/contracts | yes | n/a | none |
|
|
30
|
+
| @martin/core | packages/core | yes | n/a | @martin/contracts |
|
|
31
|
+
| @martin/adapters | packages/adapters | yes | n/a | @martin/core |
|
|
32
|
+
| @martin/cli | packages/cli | no | public | @martin/adapters, @martin/contracts, @martin/core |
|
|
33
|
+
| @martin/mcp | packages/mcp | no | public | @martin/adapters, @martin/contracts, @martin/core |
|
|
34
|
+
|
|
35
|
+
## Non-OSS Workspace Packages
|
|
36
|
+
| Package | Path | Reason |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| @martin/control-plane | apps/control-plane | Managed or RC-only workspace surface that stays out of the initial OSS boundary. |
|
|
39
|
+
| @martin/benchmarks | benchmarks | Managed or RC-only workspace surface that stays out of the initial OSS boundary. |
|
|
40
|
+
|
|
41
|
+
## Local-Only Surfaces
|
|
42
|
+
| Path | Reason |
|
|
43
|
+
|---|---|
|
|
44
|
+
| apps/local-dashboard | Local read-model viewer that is not yet packaged as a publishable OSS workspace. |
|
|
45
|
+
|
|
46
|
+
## Dependency Leak Review
|
|
47
|
+
- No workspace dependency leaks detected.
|
|
48
|
+
|