martin-loop 0.1.1 → 0.1.3

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.
Files changed (62) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +331 -58
  3. package/dist/bin/martin-loop.js +12 -8
  4. package/dist/index.d.ts +21 -8
  5. package/dist/index.js +31 -9
  6. package/dist/vendor/adapters/claude-cli.d.ts +89 -0
  7. package/dist/vendor/adapters/claude-cli.js +555 -0
  8. package/dist/vendor/adapters/cli-bridge.d.ts +28 -0
  9. package/dist/vendor/adapters/cli-bridge.js +127 -0
  10. package/dist/vendor/adapters/direct-provider.d.ts +10 -0
  11. package/dist/vendor/adapters/direct-provider.js +41 -0
  12. package/dist/vendor/adapters/index.d.ts +5 -0
  13. package/dist/vendor/adapters/index.js +5 -0
  14. package/dist/vendor/adapters/runtime-support.d.ts +14 -0
  15. package/dist/vendor/adapters/runtime-support.js +52 -0
  16. package/dist/vendor/adapters/stub-agent-cli.d.ts +8 -0
  17. package/dist/vendor/adapters/stub-agent-cli.js +41 -0
  18. package/dist/vendor/adapters/stub-direct-provider.d.ts +8 -0
  19. package/dist/vendor/adapters/stub-direct-provider.js +10 -0
  20. package/dist/vendor/cli/bin/martin.js +19 -0
  21. package/dist/vendor/cli/index.d.ts +39 -0
  22. package/dist/vendor/cli/index.js +634 -0
  23. package/dist/vendor/cli/persistence.d.ts +34 -0
  24. package/dist/vendor/cli/persistence.js +71 -0
  25. package/dist/vendor/contracts/governance.d.ts +21 -0
  26. package/dist/vendor/contracts/governance.js +12 -0
  27. package/dist/vendor/contracts/index.d.ts +330 -0
  28. package/dist/vendor/contracts/index.js +203 -0
  29. package/dist/vendor/core/compiler.d.ts +50 -0
  30. package/dist/vendor/core/compiler.js +47 -0
  31. package/dist/vendor/core/grounding.d.ts +37 -0
  32. package/dist/vendor/core/grounding.js +270 -0
  33. package/dist/vendor/core/index.d.ts +145 -0
  34. package/dist/vendor/core/index.js +1099 -0
  35. package/dist/vendor/core/leash.d.ts +48 -0
  36. package/dist/vendor/core/leash.js +408 -0
  37. package/dist/vendor/core/persistence/compiler.d.ts +18 -0
  38. package/dist/vendor/core/persistence/compiler.js +35 -0
  39. package/dist/vendor/core/persistence/index.d.ts +6 -0
  40. package/dist/vendor/core/persistence/index.js +4 -0
  41. package/dist/vendor/core/persistence/ledger.d.ts +23 -0
  42. package/dist/vendor/core/persistence/ledger.js +10 -0
  43. package/dist/vendor/core/persistence/store.d.ts +77 -0
  44. package/dist/vendor/core/persistence/store.js +84 -0
  45. package/dist/vendor/core/policy.d.ts +126 -0
  46. package/dist/vendor/core/policy.js +625 -0
  47. package/dist/vendor/core/rollback.d.ts +11 -0
  48. package/dist/vendor/core/rollback.js +219 -0
  49. package/docs/oss/EXAMPLES.md +126 -0
  50. package/docs/oss/OSS-BOUNDARY-REPORT.json +113 -0
  51. package/docs/oss/OSS-BOUNDARY-REPORT.md +48 -0
  52. package/docs/oss/QUICKSTART.md +135 -0
  53. package/docs/{README.md → oss/README.md} +17 -13
  54. package/docs/oss/RELEASE-SURFACE-REPORT.json +45 -0
  55. package/docs/oss/RELEASE-SURFACE-REPORT.md +35 -0
  56. package/package.json +27 -35
  57. package/dist/bin/martin-loop.js.map +0 -1
  58. package/dist/index.js.map +0 -1
  59. package/docs/EXAMPLES.md +0 -96
  60. package/docs/QUICKSTART.md +0 -127
  61. package/docs/release/CLAIM-TO-CAPABILITY.md +0 -19
  62. /package/dist/{bin/martin-loop.d.ts → vendor/cli/bin/martin.d.ts} +0 -0
@@ -48,15 +48,15 @@ Martin keeps cost provenance explicit:
48
48
 
49
49
  Do not collapse those labels when building dashboards, docs, or public claims.
50
50
 
51
- ## Planned public launch target
51
+ ## Frozen public launch target
52
52
 
53
- The current engineering memo keeps these public-launch targets as the intended release shape:
53
+ The current engineering memo freezes these public-launch targets for release planning:
54
54
 
55
55
  - install target: `npm install martin-loop`
56
56
  - CLI target: `npx martin-loop ...`
57
57
  - SDK target: `import { MartinLoop } from "martin-loop"`
58
58
 
59
- Those targets are not the validated operator path for this OSS snapshot yet. In the current repo, the honest workflow is still the repo-local path documented below and in the quickstart, because registry publication and broader release packaging remain later steps.
59
+ Those targets are now implemented in the root package facade and verified through a clean-install smoke test. During the current RC phase, the honest operator path still includes the repo-local workflow documented below and in the quickstart, because public registry publication and broader release packaging remain later steps.
60
60
 
61
61
  ## Reproducibility
62
62
 
@@ -64,26 +64,30 @@ From the repo root:
64
64
 
65
65
  ```bash
66
66
  pnpm install
67
- pnpm test
68
67
  pnpm build
69
- pnpm typecheck
68
+ pnpm rc:validate
70
69
  ```
71
70
 
72
- Those are the commands validated in this workspace today. Earlier RC-only commands such as `pnpm rc:validate` or `pnpm public:smoke` are referenced in older planning notes, but they are not shipped as runnable scripts in this repo snapshot.
71
+ `pnpm rc:validate` runs the current RC matrix in an isolated temp home so fresh-home behavior is checked instead of depending on warmed `~/.martin` state. Use `pnpm rc:validate:install` when you also want the RC run to perform a clean `pnpm install --frozen-lockfile` first.
73
72
 
74
73
  ## RC gate commands
75
74
 
76
- The current repo-local validation gate is:
75
+ The current release-candidate gate is:
77
76
 
78
- - `pnpm test`
79
- - `pnpm build`
80
- - `pnpm typecheck`
77
+ - `pnpm oss:validate`
78
+ - `pnpm public:smoke`
79
+ - `pnpm repo:smoke`
80
+ - `pnpm rc:validate`
81
+ - `pnpm pilot:prep:validate`
82
+ - `pnpm release:matrix:local`
81
83
 
82
- Treat anything broader than those commands as release-planning work that still needs to be reintroduced explicitly before launch.
84
+ `pnpm rc:validate` now includes the machine-checked release-surface audit in addition to the existing build, test, benchmark, provider-path, OSS-boundary, and control-plane checks.
83
85
 
84
86
  ## Where to go next
85
87
 
86
- - [`docs/QUICKSTART.md`](./QUICKSTART.md) for clone-to-first-run setup
87
- - [`docs/EXAMPLES.md`](./EXAMPLES.md) for grounded CLI and MCP examples
88
+ - [`docs/oss/QUICKSTART.md`](./QUICKSTART.md) for clone-to-first-run setup
89
+ - [`docs/oss/EXAMPLES.md`](./EXAMPLES.md) for grounded CLI and MCP examples
90
+ - [`docs/oss/OSS-BOUNDARY-REPORT.md`](./OSS-BOUNDARY-REPORT.md) for the current machine-checked OSS boundary and public-surface status
91
+ - [`docs/oss/RELEASE-SURFACE-REPORT.md`](./RELEASE-SURFACE-REPORT.md) for the current machine-checked release-surface audit
88
92
  - [`docs/pilot/README.md`](../pilot/README.md) for the pilot-prep package that remains explicitly gated behind Phase 13 completion
89
93
  - [`../../README.md`](../../README.md) for the repo-level RC status and workspace map
@@ -0,0 +1,45 @@
1
+ {
2
+ "generatedAt": "2026-04-23T14:55:08.167Z",
3
+ "publicSurface": {
4
+ "packageName": "martin-loop",
5
+ "installCommand": "npm install martin-loop",
6
+ "npxCommand": "npx martin-loop",
7
+ "sdkImportStatement": "import { MartinLoop } from \"martin-loop\""
8
+ },
9
+ "rcGateCommands": [
10
+ "pnpm oss:validate",
11
+ "pnpm public:smoke",
12
+ "pnpm repo:smoke",
13
+ "pnpm rc:validate",
14
+ "pnpm pilot:prep:validate",
15
+ "pnpm release:matrix:local"
16
+ ],
17
+ "docCoverage": {
18
+ "readme": {
19
+ "path": "README.md",
20
+ "hasPublicSurface": true,
21
+ "hasRcGateCommands": true,
22
+ "hasRegistryCaution": true
23
+ },
24
+ "ossReadme": {
25
+ "path": "docs\\oss\\README.md",
26
+ "hasPublicSurface": true,
27
+ "hasAccountingLabels": true,
28
+ "hasTrustProfiles": true,
29
+ "hasRegistryCaution": true
30
+ },
31
+ "quickstart": {
32
+ "path": "docs\\oss\\QUICKSTART.md",
33
+ "hasPublicSurface": true,
34
+ "hasRcGateCommands": true,
35
+ "hasRegistryCaution": true
36
+ },
37
+ "examples": {
38
+ "path": "docs\\oss\\EXAMPLES.md",
39
+ "hasRegistryCaution": true
40
+ }
41
+ },
42
+ "deprecatedFiles": [],
43
+ "verdict": "go",
44
+ "failures": []
45
+ }
@@ -0,0 +1,35 @@
1
+ # Martin Loop Phase 13 Release Surface Audit
2
+
3
+ Generated: 2026-04-23T14:55:08.167Z
4
+
5
+ ## Verdict
6
+ **GO**
7
+
8
+ ## Public Package Surface
9
+ - Package target: martin-loop
10
+ - Install target: `npm install martin-loop`
11
+ - CLI target: `npx martin-loop`
12
+ - SDK target: `import { MartinLoop } from "martin-loop"`
13
+
14
+ ## RC Gate Commands
15
+ - `pnpm oss:validate`
16
+ - `pnpm public:smoke`
17
+ - `pnpm repo:smoke`
18
+ - `pnpm rc:validate`
19
+ - `pnpm pilot:prep:validate`
20
+ - `pnpm release:matrix:local`
21
+
22
+ ## Doc Coverage
23
+ | Surface | Path | Checks |
24
+ |---|---|---|
25
+ | Root README | README.md | public surface: yes, RC gate: yes, registry caution: yes |
26
+ | OSS README | docs/oss/README.md | public surface: yes, accounting labels: yes, trust profiles: yes, registry caution: yes |
27
+ | Quickstart | docs/oss/QUICKSTART.md | public surface: yes, RC gate: yes, registry caution: yes |
28
+ | Examples | docs/oss/EXAMPLES.md | registry caution: yes |
29
+
30
+ ## Deprecated Files
31
+ - None.
32
+
33
+ ## Findings
34
+ - No release-surface drift detected across the audited RC docs and commands.
35
+
package/package.json CHANGED
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "name": "martin-loop",
3
- "version": "0.1.1",
4
3
  "private": false,
4
+ "version": "0.1.3",
5
5
  "type": "module",
6
- "description": "Martin Loop The world's first truthfully hardened agentic coding loop.",
6
+ "description": "Martin Loop dual-track monorepo for the OSS runtime and hosted SaaS control plane.",
7
+ "license": "MIT",
8
+ "packageManager": "pnpm@10.17.1",
7
9
  "main": "./dist/index.js",
8
10
  "types": "./dist/index.d.ts",
9
11
  "bin": {
10
- "martin-loop": "./dist/bin/martin-loop.js"
12
+ "martin-loop": "./dist/bin/martin-loop.js",
13
+ "martin": "./dist/bin/martin-loop.js"
11
14
  },
12
15
  "exports": {
13
16
  ".": {
@@ -19,46 +22,35 @@
19
22
  "files": [
20
23
  "dist",
21
24
  "README.md",
22
- "docs"
25
+ "docs/oss"
23
26
  ],
24
27
  "publishConfig": {
25
28
  "access": "public"
26
29
  },
27
- "workspaces": [
28
- "packages/*"
29
- ],
30
- "keywords": [
31
- "ai",
32
- "agent",
33
- "coding-loop",
34
- "llm",
35
- "automation",
36
- "cli"
37
- ],
38
- "author": "Vakeesan Mahalingam and Gobi Shanthan",
39
- "license": "MIT",
40
- "homepage": "https://martinloop.com/",
41
- "repository": {
42
- "type": "git",
43
- "url": "https://github.com/Keesan12/MartinLoop.git"
44
- },
45
- "dependencies": {
46
- "@martin/cli": "0.1.0",
47
- "@martin/adapters": "0.1.0",
48
- "@martin/contracts": "0.1.0",
49
- "@martin/sdk": "0.1.0",
50
- "@martin/core": "0.1.0"
30
+ "scripts": {
31
+ "build": "pnpm -r build && node ./scripts/build-public-facade.mjs",
32
+ "prepublishOnly": "pnpm build",
33
+ "test": "pnpm -r test",
34
+ "lint": "pnpm -r lint",
35
+ "oss:validate": "node ./scripts/oss-boundary.mjs",
36
+ "release:surface:validate": "node ./scripts/release-surface-audit.mjs",
37
+ "pilot:prep:validate": "node ./scripts/pilot-prep-audit.mjs",
38
+ "public:smoke": "node ./scripts/public-facade-smoke.mjs",
39
+ "repo:smoke": "node ./scripts/repo-backed-smoke.mjs",
40
+ "rc:validate": "node ./scripts/rc-validation.mjs",
41
+ "rc:validate:install": "node ./scripts/rc-validation.mjs --install",
42
+ "release:matrix:local": "node ./scripts/release-matrix.mjs",
43
+ "dev:control-plane": "pnpm --filter @martin/control-plane dev",
44
+ "run:cli": "pnpm --filter @martin/cli dev",
45
+ "eval": "pnpm --filter @martin/benchmarks eval",
46
+ "dev:dashboard": "node apps/local-dashboard/server.js"
51
47
  },
52
48
  "devDependencies": {
53
49
  "@types/node": "^22.13.10",
50
+ "@types/react": "^19.0.12",
51
+ "@types/react-dom": "^19.0.5",
54
52
  "tsx": "^4.19.3",
55
53
  "typescript": "^5.8.2",
56
54
  "vitest": "^3.0.8"
57
- },
58
- "scripts": {
59
- "build": "pnpm -r build && tsc -p tsconfig.json",
60
- "test": "pnpm -r test",
61
- "lint": "pnpm -r lint",
62
- "typecheck": "pnpm -r exec tsc --noEmit && tsc -p tsconfig.json --noEmit"
63
55
  }
64
- }
56
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"martin-loop.js","sourceRoot":"","sources":["../../src/bin/martin-loop.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,UAAU,CAAC,IAAI,CAAC;KACb,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;IACf,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACrC,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3E,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,GAAG,EAAE,SAAS;CACf,CAAC"}
package/docs/EXAMPLES.md DELETED
@@ -1,96 +0,0 @@
1
- # Examples
2
-
3
- Runnable examples for the Martin Loop CLI and SDK.
4
-
5
- ## 1. Stub-backed hello world
6
-
7
- ```bash
8
- pnpm --filter @martin/cli exec martin run \
9
- --objective "Describe the current Martin run lifecycle" \
10
- --verify "echo verified"
11
- ```
12
-
13
- ## 2. Scoped task with path boundaries
14
-
15
- ```bash
16
- pnpm --filter @martin/cli exec martin run \
17
- --engine claude \
18
- --objective "Tighten the README wording for the quickstart section" \
19
- --verify "pnpm --filter @martin/core test" \
20
- --allow-path README.md \
21
- --allow-path docs/** \
22
- --deny-path apps/** \
23
- --budget-usd 0.25 \
24
- --accept "Only update documentation files" \
25
- --accept "Do not modify runtime source code"
26
- ```
27
-
28
- ## 3. Leash block
29
-
30
- ```bash
31
- pnpm --filter @martin/cli exec martin run \
32
- --objective "Run a dangerous verifier" \
33
- --verify "rm -rf ."
34
- ```
35
-
36
- ## 4. Budget-constrained live run
37
-
38
- ```bash
39
- pnpm --filter @martin/cli exec martin run \
40
- --engine claude \
41
- --objective "Refactor the CLI argument parser for clarity" \
42
- --verify "pnpm --filter @martin/cli test" \
43
- --budget-usd 1.00 \
44
- --soft-limit-usd 0.60 \
45
- --max-iterations 3
46
- ```
47
-
48
- ## 5. Multi-adapter fallback chain
49
-
50
- ```ts
51
- import { runMartin } from "@martin/core";
52
-
53
- const result = await runMartin({
54
- workspaceId: "ws_local",
55
- projectId: "proj_example",
56
- task: {
57
- title: "Fix the failing test",
58
- objective: "Fix the failing test without widening scope.",
59
- verificationPlan: ["pnpm test"]
60
- },
61
- budget: {
62
- maxUsd: 2,
63
- softLimitUsd: 1,
64
- maxIterations: 6,
65
- maxTokens: 20_000
66
- },
67
- adapter,
68
- fallbackAdapters: [fallbackAdapter]
69
- });
70
-
71
- console.log(result.decision.lifecycleState);
72
- ```
73
-
74
- ## 6. Inspect a completed run
75
-
76
- ```bash
77
- pnpm --filter @martin/cli exec martin inspect --file ~/.martin/runs/<run-id>/loop-record.json
78
- ```
79
-
80
- ## 7. MCP invocation
81
-
82
- ```json
83
- {
84
- "tool": "martin_run",
85
- "arguments": {
86
- "objective": "Repair the flaky test in auth.test.ts",
87
- "workingDirectory": ".",
88
- "engine": "claude",
89
- "verificationPlan": ["pnpm test"],
90
- "maxUsd": 1.0,
91
- "maxIterations": 4,
92
- "workspaceId": "ws_local",
93
- "projectId": "proj_auth"
94
- }
95
- }
96
- ```
@@ -1,127 +0,0 @@
1
- # Quickstart
2
-
3
- Martin Loop runs AI coding agents with hard budget caps, grounding enforcement, and a full audit trail. This guide gets you running in under 5 minutes.
4
-
5
- ## Prerequisites
6
-
7
- - Node.js 20+
8
- - `pnpm` 10.x
9
- - Optional: Claude Code CLI for live Claude runs
10
- - Optional: OpenAI Codex CLI plus credentials for Codex runs
11
-
12
- ## Install
13
-
14
- ### From source
15
-
16
- ```bash
17
- git clone https://github.com/martinloop/martin-loop
18
- cd martin-loop
19
- pnpm install
20
- pnpm build
21
- ```
22
-
23
- This OSS snapshot is validated through the workspace packages, so the examples below use the repo-local CLI entrypoint.
24
-
25
- ## Your first run (stub mode, no spend)
26
-
27
- ```bash
28
- pnpm --filter @martin/cli exec martin run \
29
- --objective "Summarize the current runtime state" \
30
- --verify "echo ok"
31
- ```
32
-
33
- This exercises the full loop using a stub adapter, so no model is called. Check what was written:
34
-
35
- ```bash
36
- pnpm --filter @martin/cli exec martin inspect --file ~/.martin/runs/latest/loop-record.json
37
- ```
38
-
39
- ## Live run with a budget cap
40
-
41
- ```bash
42
- pnpm --filter @martin/cli exec martin run \
43
- --engine claude \
44
- --objective "Fix the failing test in packages/core/tests/leash.test.ts" \
45
- --verify "pnpm --filter @martin/core test" \
46
- --budget-usd 0.50 \
47
- --max-iterations 4
48
- ```
49
-
50
- Martin will stop at $0.50 regardless of task completion. Budget is a hard cap, not a soft suggestion.
51
-
52
- ## Safety demo
53
-
54
- ```bash
55
- pnpm --filter @martin/cli exec martin run \
56
- --objective "Run an unsafe verifier" \
57
- --verify "rm -rf ."
58
- ```
59
-
60
- Expected: the run exits immediately with a leash violation.
61
-
62
- ## Scoped run with path restrictions
63
-
64
- ```bash
65
- pnpm --filter @martin/cli exec martin run \
66
- --engine claude \
67
- --objective "Improve the README wording" \
68
- --verify "echo docs-only" \
69
- --allow-path README.md \
70
- --allow-path docs/** \
71
- --deny-path packages/** \
72
- --budget-usd 0.25
73
- ```
74
-
75
- ## Config file
76
-
77
- Martin reads `martin.config.yaml` from the current directory automatically:
78
-
79
- ```yaml
80
- engine: claude
81
- budgetUsd: 1.00
82
- maxIterations: 6
83
- verificationPlan:
84
- - pnpm test
85
- allowedPaths:
86
- - src/**
87
- deniedPaths:
88
- - .env
89
- - secrets/**
90
- ```
91
-
92
- Then run:
93
-
94
- ```bash
95
- pnpm --filter @martin/cli exec martin run --objective "Refactor the auth handler"
96
- ```
97
-
98
- ## MCP server
99
-
100
- ```bash
101
- node packages/mcp/dist/server.js
102
- ```
103
-
104
- Tools exposed: `martin_run`, `martin_inspect`, `martin_status`
105
-
106
- ## What to inspect after a run
107
-
108
- ```text
109
- ~/.martin/runs/<run-id>/
110
- contract.json
111
- state.json
112
- ledger.jsonl
113
- artifacts/attempt-001/
114
- diff.patch
115
- grounding-scan.json
116
- leash.json
117
- patch-decision.json
118
- rollback-outcome.json
119
- ```
120
-
121
- ## Validation check
122
-
123
- ```bash
124
- pnpm test
125
- pnpm build
126
- pnpm typecheck
127
- ```
@@ -1,19 +0,0 @@
1
- # Claim To Capability
2
-
3
- This matrix keeps the public story tied to proof. Every public claim category must point either to repo-owned artifacts or to a frozen external reference record. If a row cannot be defended by evidence, the claim must stay softened or out of market copy.
4
-
5
- | Claim category | Current boundary | Evidence type | Evidence reference | Status |
6
- |---|---|---|---|---|
7
- | Runtime and artifact truth | Artifact-backed runtime lifecycle, grounding, accounting, and rollback behavior only | repo | `docs/oss/RELEASE-SURFACE-REPORT.md`, `docs/oss/OSS-BOUNDARY-REPORT.md`, `pnpm rc:validate` | ready |
8
- | Evidence-backed contradiction detection | Completion claims are accepted only when repo-backed change evidence and verifier truth support them; this is contradiction detection, not semantic intent reading | repo | `packages/core/src/evidence/claim-audit.ts`, `packages/core/tests/runtime.test.ts` | ready |
9
- | Deterministic supported-path recovery | Recovery is deterministic only across the declared adapter/model matrix the runtime and CLI construct; unsupported paths must be surfaced honestly | repo | `packages/core/tests/runtime.test.ts`, `packages/cli/tests/cli-recovery-topology.test.ts` | ready |
10
- | Public package install and CLI surface | Public install target stays `martin-loop`; operator truth still starts from the repo until human publish | repo | `pnpm public:smoke`, `pnpm release:package:validate` | ready |
11
- | Repo-backed safety, rollback, and grounding proof | Repo-backed mutations must remain explainable from artifacts alone | repo | `pnpm repo:smoke`, `docs/pilot/PILOT-GATE-REVIEW.md` | ready |
12
- | Pilot closeout evidence | Phase 14 claims stay bounded to 2 accepted `disposable_internal`, 2 accepted `low_risk_real`, and gate `GO` | repo | `docs/pilot/PILOT-RUN-TRACKER.md`, `docs/review-packs/2026-04-05-phase14-pilot-04/review.md` | ready |
13
- | Website copy and positioning | Website copy must not outrun the shipped public surface or the pilot evidence | external reference | `docs/release/external-evidence/WEBSITE-SURFACE-REFERENCE.md` | ready_for_signoff |
14
- | Pricing and feature gating | Pricing and packaging statements must align with the single-facade `martin-loop` release and the current feature gate truth | external reference | `docs/release/external-evidence/PRICING-SURFACE-REFERENCE.md` | ready_for_signoff |
15
- | Privacy commitments | Privacy claims must stay inside the shipped operator and data-handling behavior | external reference | `docs/release/external-evidence/PRIVACY-POLICY-REFERENCE.md` | ready_for_signoff |
16
- | Terms and access control | Terms must reflect the current access model, manual release sequence, and support boundaries | external reference | `docs/release/external-evidence/TERMS-OF-SERVICE-REFERENCE.md` | ready_for_signoff |
17
- | Product claim matrix | Marketing or launch claims stay frozen to the reviewed matrix until a human owner widens them intentionally | external reference | `docs/release/external-evidence/PRODUCT-CLAIM-MATRIX-REFERENCE.md` | ready_for_signoff |
18
- | Semantic hallucination detection | Not claimed. The live repo still exposes a structural short-response heuristic, but release language must not present that as semantic truth understanding | repo | `PRODUCTION-READINESS-AUDIT-REPORT.md`, `docs/handoffs/2026-04-08-h2-h3-complete-handoff.md` | not_claimed |
19
- | Universal autonomous self-recovery | Not claimed. Release language is limited to deterministic recovery across the declared supported adapter/model matrix and explicit single-path disclosures | repo | `PRODUCTION-READINESS-AUDIT-REPORT.md`, `packages/cli/tests/cli-recovery-topology.test.ts` | not_claimed |