gentle-pi 2.1.2 → 2.3.0

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 (228) hide show
  1. package/README.md +108 -79
  2. package/assets/agents/gentle-ai-worker.md +7 -3
  3. package/assets/agents/jd-fix-agent.md +1 -1
  4. package/assets/agents/jd-judge-a.md +3 -1
  5. package/assets/agents/jd-judge-b.md +3 -1
  6. package/assets/agents/review-readability.md +4 -3
  7. package/assets/agents/review-reliability.md +4 -3
  8. package/assets/agents/review-resilience.md +4 -3
  9. package/assets/agents/review-risk.md +4 -3
  10. package/assets/agents/sdd-apply.md +11 -4
  11. package/assets/agents/sdd-archive.md +6 -1
  12. package/assets/agents/sdd-design.md +6 -1
  13. package/assets/agents/sdd-explore.md +6 -2
  14. package/assets/agents/sdd-init.md +10 -2
  15. package/assets/agents/sdd-onboard.md +6 -1
  16. package/assets/agents/sdd-proposal.md +8 -1
  17. package/assets/agents/sdd-research.md +54 -0
  18. package/assets/agents/sdd-spec.md +6 -1
  19. package/assets/agents/sdd-status.md +10 -5
  20. package/assets/agents/sdd-sync.md +6 -1
  21. package/assets/agents/sdd-tasks.md +8 -4
  22. package/assets/agents/sdd-verify.md +27 -2
  23. package/assets/chains/4r-review.chain.md +2 -0
  24. package/assets/chains/sdd-full.chain.md +2 -2
  25. package/assets/chains/sdd-plan.chain.md +1 -1
  26. package/assets/chains/sdd-verify.chain.md +2 -2
  27. package/assets/orchestrator-delegation.md +145 -160
  28. package/assets/orchestrator-memory.md +2 -0
  29. package/assets/orchestrator.md +25 -48
  30. package/assets/sdd-orchestrator-workflow.md +163 -25
  31. package/assets/support/sdd-status-contract.md +24 -6
  32. package/contracts/review-integration/v1/fixtures/consent.fixture.json +3 -3
  33. package/contracts/review-integration/v1/fixtures/start-v2.fixture.json +19 -28
  34. package/contracts/review-integration/v1/fixtures/start.fixture.json +1 -10
  35. package/contracts/review-integration/v1/fixtures/status-v2.fixture.json +12 -21
  36. package/contracts/review-integration/v1/schemas/correction-plan-request.schema.json +49 -0
  37. package/contracts/review-integration/v1/schemas/operation.schema.json +76 -0
  38. package/contracts/review-integration/v1/schemas/repair.schema.json +39 -0
  39. package/contracts/review-integration/v1/schemas/status-v2.schema.json +4 -2
  40. package/contracts/review-integration/v1/schemas/status.schema.json +4 -2
  41. package/contracts/review-integration/v1/schemas/transition-execution.schema.json +42 -0
  42. package/contracts/review-integration/v2/fixtures/consent.fixture.json +1 -1
  43. package/contracts/review-integration/v2/fixtures/start.fixture.json +1 -10
  44. package/contracts/review-integration/v2/fixtures/status.fixture.json +1 -10
  45. package/contracts/review-integration/v2/schemas/failure.schema.json +5 -1
  46. package/contracts/review-integration/v2/schemas/last-event-closure.schema.json +66 -0
  47. package/contracts/review-integration/v2/schemas/opencode-provider-role.schema.json +14 -0
  48. package/contracts/review-integration/v2/schemas/operation.schema.json +6 -1
  49. package/contracts/review-integration/v2/schemas/repair.schema.json +4 -2
  50. package/contracts/review-integration/v2/schemas/start.schema.json +5 -2
  51. package/contracts/review-integration/v2/schemas/status.schema.json +4 -2
  52. package/contracts/review-provider-contract-mirror/provider-contract.lock.json +30 -0
  53. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/README.md +12 -0
  54. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/manifest.json +65 -0
  55. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/schemas/lens.schema.json +16 -0
  56. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/schemas/refuter.schema.json +1 -0
  57. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/schemas/targeted-validator.schema.json +1 -0
  58. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/vectors/lens.json +1 -0
  59. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/vectors/refuter.json +1 -0
  60. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/vectors/targeted-validator.json +1 -0
  61. package/contracts/review-provider-contract-mirror/v1.1.0/generated/provider-capabilities.baseline.json +15 -0
  62. package/contracts/review-provider-contract-mirror/v1.1.0/generated/provider-roles.baseline.json +42 -0
  63. package/docs/native-authority-architecture.md +14 -16
  64. package/docs/review-integration.md +27 -353
  65. package/extensions/ask-user-choice.ts +151 -0
  66. package/extensions/gentle-ai.ts +2710 -3211
  67. package/extensions/quiet-tools.ts +515 -32
  68. package/extensions/sdd-init.ts +21 -12
  69. package/extensions/skill-registry.ts +10 -2
  70. package/extensions/startup-banner.ts +10 -4
  71. package/lib/gentle-ai-binary.ts +173 -2
  72. package/lib/gentle-ai-renderer.ts +70 -0
  73. package/lib/model-routing-authority.ts +133 -0
  74. package/lib/native-review-cli.ts +676 -781
  75. package/lib/opaque-pi-reviewer-adapter.ts +284 -0
  76. package/lib/provider-contract-bundle.ts +704 -0
  77. package/lib/review-candidate-view.ts +836 -118
  78. package/lib/review-compact-contract.ts +59 -248
  79. package/lib/review-host-relay.ts +578 -0
  80. package/lib/review-integration-v2.ts +1254 -221
  81. package/lib/review-last-event-controller.ts +35 -0
  82. package/lib/review-relay-contract.ts +16 -0
  83. package/lib/sdd-preflight.ts +230 -67
  84. package/lib/sdd-status.ts +66 -111
  85. package/lib/terminal-theme.ts +1 -1
  86. package/package.json +83 -79
  87. package/runtime/gentle-ai-binary.mjs +174 -3
  88. package/runtime/native-review-cli.mjs +610 -715
  89. package/runtime/review-integration-v2.mjs +1223 -190
  90. package/runtime/review-relay-contract.mjs +17 -0
  91. package/scripts/{build-git-commit-transaction-runner.mjs → build-runtime-modules.mjs} +5 -5
  92. package/scripts/check-provider-contract.mjs +138 -0
  93. package/scripts/gentle-ai-installer.mjs +85 -22
  94. package/scripts/maintainer/provider-relay-matrix.mjs +403 -0
  95. package/scripts/mirror-provider-contract.mjs +143 -0
  96. package/scripts/test-packed-runner.mjs +20 -9
  97. package/scripts/verify-package-files.mjs +119 -43
  98. package/skills/_shared/review-ledger-contract.md +11 -19
  99. package/skills/chained-pr/SKILL.md +3 -0
  100. package/skills/cognitive-doc-design/SKILL.md +1 -1
  101. package/skills/comment-writer/SKILL.md +1 -1
  102. package/skills/gentle-ai/SKILL.md +7 -74
  103. package/skills/issue-creation/SKILL.md +94 -168
  104. package/skills/judgment-day/SKILL.md +9 -5
  105. package/skills/judgment-day/references/prompts-and-formats.md +2 -0
  106. package/skills/rdd-defect-workflow/SKILL.md +54 -0
  107. package/skills/release/SKILL.md +3 -3
  108. package/skills/skill-registry/SKILL.md +1 -1
  109. package/skills/work-unit-commits/SKILL.md +3 -1
  110. package/tests/artifact-language.test.ts +24 -11
  111. package/tests/ask-user-choice.test.ts +264 -0
  112. package/tests/background-subagents.test.ts +771 -0
  113. package/tests/codegraph-tools.test.ts +3 -3
  114. package/tests/crosslane/cross-lane.mjs +16 -0
  115. package/tests/delegated-key-learnings-contract.test.ts +240 -0
  116. package/tests/devbinary/native-review-parity.devtest.ts +167 -250
  117. package/tests/devbinary/pi-host-relay.devtest.ts +867 -0
  118. package/tests/fixtures/devbinary/capabilities-v2.1.derived.json +331 -0
  119. package/tests/fixtures/devbinary/capabilities-v2.2.captured.json +340 -0
  120. package/tests/fixtures/devbinary/consent-v3.captured.json +37 -0
  121. package/tests/fixtures/devbinary/failure-v2-capture-evidence.captured.json +16 -0
  122. package/tests/fixtures/devbinary/last-event-capture-correction-plan.captured.json +10 -0
  123. package/tests/fixtures/devbinary/last-event-capture-refuter-approved.captured.json +20 -0
  124. package/tests/fixtures/devbinary/last-event-capture-refuter-correction-required.captured.json +26 -0
  125. package/tests/fixtures/devbinary/last-event-capture-result-approved.captured.json +8 -0
  126. package/tests/fixtures/devbinary/last-event-capture-result-correction-required.captured.json +26 -0
  127. package/tests/fixtures/devbinary/last-event-capture-validation-approved.captured.json +8 -0
  128. package/tests/fixtures/devbinary/last-event-closure.provenance.md +13 -0
  129. package/tests/fixtures/devbinary/result-artifact-v2-path.captured.json +12 -0
  130. package/tests/fixtures/devbinary/result-artifact-v2.captured.json +12 -0
  131. package/tests/fixtures/devbinary/review-acknowledged-v1.captured.json +9 -0
  132. package/tests/fixtures/devbinary/review-acknowledged.provenance.md +31 -0
  133. package/tests/fixtures/devbinary/start-v3-consent-declined.captured.json +19 -0
  134. package/tests/fixtures/devbinary/start-v3-consent-granted.captured.json +109 -0
  135. package/tests/fixtures/devbinary/start-v3-zero-lens-closed.captured.json +21 -0
  136. package/tests/fixtures/devbinary/status-v5-capture-result-submission.captured.json +184 -0
  137. package/tests/fixtures/devbinary/status-v5-repository-context.captured.json +138 -0
  138. package/tests/fixtures/devbinary/status-v5.captured.json +88 -0
  139. package/tests/fixtures/native-review-cli/v2.5.0-rc.1/PROVENANCE.txt +15 -0
  140. package/tests/fixtures/provider-contract-bundle/v1.1.0/README.md +12 -0
  141. package/tests/fixtures/provider-contract-bundle/v1.1.0/manifest.json +65 -0
  142. package/tests/fixtures/provider-contract-bundle/v1.1.0/schemas/lens.schema.json +16 -0
  143. package/tests/fixtures/provider-contract-bundle/v1.1.0/schemas/refuter.schema.json +1 -0
  144. package/tests/fixtures/provider-contract-bundle/v1.1.0/schemas/targeted-validator.schema.json +1 -0
  145. package/tests/fixtures/provider-contract-bundle/v1.1.0/vectors/lens.json +1 -0
  146. package/tests/fixtures/provider-contract-bundle/v1.1.0/vectors/refuter.json +1 -0
  147. package/tests/fixtures/provider-contract-bundle/v1.1.0/vectors/targeted-validator.json +1 -0
  148. package/tests/gentle-ai-binary.test.ts +83 -13
  149. package/tests/gentle-ai-dev-binary-surfacing.test.ts +195 -0
  150. package/tests/gentle-ai-dev-binary.test.ts +159 -0
  151. package/tests/gentle-ai-installer.test.ts +138 -48
  152. package/tests/gentle-ai.test.ts +820 -131
  153. package/tests/gentle-theme.test.ts +133 -0
  154. package/tests/maintainer/provider-relay.maintest.ts +601 -0
  155. package/tests/model-routing-authority.test.ts +257 -0
  156. package/tests/native-review-capability-contract.test.ts +75 -2
  157. package/tests/native-review-cli.test.ts +588 -908
  158. package/tests/native-review-consent.test.ts +283 -38
  159. package/tests/native-review-parity-runtime.test.ts +108 -350
  160. package/tests/native-review-parity.test.ts +684 -732
  161. package/tests/native-sdd-attempt-authority.test.ts +235 -0
  162. package/tests/opaque-pi-reviewer-adapter.test.ts +266 -0
  163. package/tests/orchestrator-budget.test.ts +158 -89
  164. package/tests/orchestrator-rdd-ownership.test.ts +103 -0
  165. package/tests/package-manifest.test.ts +128 -100
  166. package/tests/provider-contract-bundle.test.ts +385 -0
  167. package/tests/provider-contract-mirror.test.ts +206 -0
  168. package/tests/provider-defect-handoff.test.ts +252 -0
  169. package/tests/quiet-tool-rendering.test.ts +1055 -28
  170. package/tests/review-actor-tool-deny.test.ts +12 -13
  171. package/tests/review-authority-recovery-docs.test.ts +1 -2
  172. package/tests/review-candidate-view.test.ts +898 -12
  173. package/tests/review-compact-contract.test.ts +29 -122
  174. package/tests/review-controller-lock-status.test.ts +2 -2
  175. package/tests/review-controller-native-recovery.test.ts +366 -857
  176. package/tests/review-controller-native-routing.test.ts +1253 -4199
  177. package/tests/review-controller-retired-ops.test.ts +1 -1
  178. package/tests/review-controller-workspace-root.test.ts +236 -70
  179. package/tests/review-controller.test.ts +26 -816
  180. package/tests/review-corrected-finalize-binding.test.ts +134 -0
  181. package/tests/review-dispatch-hydration-gap.test.ts +145 -0
  182. package/tests/review-gate.test.ts +0 -45
  183. package/tests/review-host-relay-restart-parity.test.ts +360 -0
  184. package/tests/review-host-relay-routing.test.ts +352 -0
  185. package/tests/review-host-relay.test.ts +754 -0
  186. package/tests/review-integration-v2-forward.test.ts +654 -0
  187. package/tests/review-integration-v2.test.ts +317 -129
  188. package/tests/review-last-event-closure.test.ts +408 -0
  189. package/tests/review-ledger-contract.test.ts +106 -60
  190. package/tests/review-recovered-lineage-routing.test.ts +199 -0
  191. package/tests/review-relay-transport-agent.test.ts +322 -0
  192. package/tests/review-snapshot.test.ts +3 -2
  193. package/tests/runtime-harness.mjs +573 -180
  194. package/tests/sdd-agent-tools.test.ts +53 -32
  195. package/tests/sdd-preflight.test.ts +81 -15
  196. package/tests/sdd-status.test.ts +109 -110
  197. package/tests/skill-collision-prefixes.test.ts +6 -8
  198. package/tests/skill-registry.test.ts +50 -1
  199. package/tests/verify-package-files.test.ts +62 -0
  200. package/tests/writer-edit-surface-scope.test.ts +230 -0
  201. package/themes/Gentleman-Cute.json +94 -0
  202. package/themes/Gentleman-Sexy.json +92 -0
  203. package/assets/agents/review-refuter.md +0 -40
  204. package/assets/agents/review-validator.md +0 -23
  205. package/lib/git-commit-transaction.ts +0 -801
  206. package/lib/native-review-remediation.ts +0 -49
  207. package/lib/review-compact.ts +0 -947
  208. package/lib/review-refuter-adapter.ts +0 -129
  209. package/lib/review-runtime-contract.ts +0 -68
  210. package/prompts/gcl.md +0 -54
  211. package/prompts/gis.md +0 -25
  212. package/prompts/gpr.md +0 -41
  213. package/prompts/gwr.md +0 -31
  214. package/runtime/git-commit-transaction.mjs +0 -802
  215. package/scripts/run-git-commit-transaction.mjs +0 -35
  216. package/tests/fixtures/native-review-cli/v2.1.2/bind-sdd.json +0 -25
  217. package/tests/fixtures/native-review-cli/v2.1.2/finalize.json +0 -8
  218. package/tests/fixtures/native-review-cli/v2.1.2/sdd-status-engram.json +0 -139
  219. package/tests/fixtures/native-review-cli/v2.1.2/sdd-status.json +0 -200
  220. package/tests/fixtures/native-review-cli/v2.1.2/start.json +0 -12
  221. package/tests/fixtures/native-review-cli/v2.1.2/validate-allow.json +0 -24
  222. package/tests/fixtures/native-review-cli/v2.1.2/validate-deny-empty-context.json +0 -20
  223. package/tests/fixtures/native-review-cli/v2.1.2/validate-deny.json +0 -28
  224. package/tests/fixtures/native-review-cli/v2.1.3/sdd-status-engram.json +0 -139
  225. package/tests/fixtures/native-review-cli/v2.1.3/sdd-status.json +0 -200
  226. package/tests/git-commit-transaction.test.ts +0 -302
  227. package/tests/review-compact.test.ts +0 -243
  228. package/tests/review-refuter-adapter.test.ts +0 -89
@@ -0,0 +1,16 @@
1
+ {
2
+ "schema": "gentle-ai.review-integration.failure/v2",
3
+ "contract": "gentle-ai.review-integration/v2",
4
+ "operation": "review.capture-evidence",
5
+ "phase": "preflight",
6
+ "code": "verification_evidence_binding_mismatch",
7
+ "message": "The verification evidence binding does not match the current validating or correction authority; re-derive the exact next transition before retrying.",
8
+ "mutation_outcome": "not_started",
9
+ "authority_applicability": "not_evaluated",
10
+ "retry_safe": true,
11
+ "replayability": "not_replayable",
12
+ "lineage_id": "review-ceeb2b862bd39709",
13
+ "required_inputs": [],
14
+ "next_action": "review.status",
15
+ "cause": "verification evidence binding does not match the current validating or correction authority"
16
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "schema": "gentle-ai.review-last-event-closure/v1",
3
+ "operation": "review.capture-correction-plan",
4
+ "lineage_id": "review-afeed0d5a9aa24a1",
5
+ "target_identity": "sha256:ccbd92bd891a944ceeb21be0982a5f0dc515ed94a0f15da0a64d21608329aa59",
6
+ "request_hash": "sha256:0f6dd21a64f76566fdcd8c8f4e87157e1658d207798c2dbd1510d7001af9d243",
7
+ "correction_lines": 2,
8
+ "state": "correction_required",
9
+ "store_revision": "sha256:5a5d22f4f65b0adeca5e2c3a3da0509ced6197a067aa7ffe4b9b040acad4194e"
10
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "schema": "gentle-ai.review-last-event-closure/v1",
3
+ "operation": "review.capture-refuter",
4
+ "lineage_id": "review-61da8af1a89ff96a",
5
+ "state": "approved",
6
+ "action": "the approved review completed on the last admitted event and burned; delivery follows ordinary repository policy",
7
+ "advisory_findings": {
8
+ "statement": "This review is approved and its receipt stands. Every finding listed here is non-blocking: none opened a correction, none reopens this review, and no correction transition is offered for this candidate. Treat them as separate later work, never as a reason to re-run review on this candidate.",
9
+ "findings": [
10
+ {
11
+ "id": "R3-001",
12
+ "lens": "reliability",
13
+ "location": "src/value.js:2",
14
+ "severity": "BLOCKER",
15
+ "disposition": "refuted"
16
+ }
17
+ ]
18
+ },
19
+ "store_revision": "sha256:05588b2784a07c5619af879b97f6e023e35f5112185b42c173ed8f5064cf1b34"
20
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "schema": "gentle-ai.review-last-event-closure/v1",
3
+ "operation": "review.capture-refuter",
4
+ "lineage_id": "review-2c1f3ae8139e6fe3",
5
+ "state": "correction_required",
6
+ "action": "candidate-caused severe findings require one bounded correction",
7
+ "status_continuation": {
8
+ "operation": "review.status",
9
+ "arguments": [
10
+ {"name": "cwd", "value": "/tmp/repository", "token": "--cwd=/tmp/repository"},
11
+ {"name": "contract", "value": "gentle-ai.review-integration/v2", "token": "--contract=gentle-ai.review-integration/v2"},
12
+ {"name": "next-transition", "value": "true", "token": "--next-transition=true"},
13
+ {"name": "lineage", "value": "review-2c1f3ae8139e6fe3", "token": "--lineage=review-2c1f3ae8139e6fe3"},
14
+ {"name": "agent", "value": "pi", "token": "--agent=pi"}
15
+ ],
16
+ "preconditions": [
17
+ {"name": "state", "value": "correction_required"}
18
+ ],
19
+ "binding": {
20
+ "lineage_id": "review-2c1f3ae8139e6fe3",
21
+ "revision": "sha256:de7f54f5c7eca7c1095ab6d8fcd8a3eb05f4a01733129d3e2fa0f32db30b5457",
22
+ "target_identity": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
23
+ }
24
+ },
25
+ "store_revision": "sha256:de7f54f5c7eca7c1095ab6d8fcd8a3eb05f4a01733129d3e2fa0f32db30b5457"
26
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "schema": "gentle-ai.review-last-event-closure/v1",
3
+ "operation": "review/capture-result",
4
+ "lineage_id": "review-c7c923a031112dd7",
5
+ "state": "approved",
6
+ "action": "the approved review completed on the last admitted event and burned; delivery follows ordinary repository policy",
7
+ "store_revision": "sha256:108e0ba4f5af3f69b44d2fb1057a5054e968cc38f050d2e9a30f58c00bbf7e88"
8
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "schema": "gentle-ai.review-last-event-closure/v1",
3
+ "operation": "review/capture-result",
4
+ "lineage_id": "review-afeed0d5a9aa24a1",
5
+ "state": "correction_required",
6
+ "action": "candidate-caused severe findings require one bounded correction",
7
+ "status_continuation": {
8
+ "operation": "review.status",
9
+ "arguments": [
10
+ {"name": "cwd", "value": "/tmp/repository", "token": "--cwd=/tmp/repository"},
11
+ {"name": "contract", "value": "gentle-ai.review-integration/v2", "token": "--contract=gentle-ai.review-integration/v2"},
12
+ {"name": "next-transition", "value": "true", "token": "--next-transition=true"},
13
+ {"name": "lineage", "value": "review-afeed0d5a9aa24a1", "token": "--lineage=review-afeed0d5a9aa24a1"},
14
+ {"name": "agent", "value": "pi", "token": "--agent=pi"}
15
+ ],
16
+ "preconditions": [
17
+ {"name": "state", "value": "correction_required"}
18
+ ],
19
+ "binding": {
20
+ "lineage_id": "review-afeed0d5a9aa24a1",
21
+ "revision": "sha256:3c274f44e4d05c748bae28978396f28a4d833500b41f00942f315261e8bc9749",
22
+ "target_identity": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
23
+ }
24
+ },
25
+ "store_revision": "sha256:3c274f44e4d05c748bae28978396f28a4d833500b41f00942f315261e8bc9749"
26
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "schema": "gentle-ai.review-last-event-closure/v1",
3
+ "operation": "review/capture-validation",
4
+ "lineage_id": "review-afeed0d5a9aa24a1",
5
+ "state": "approved",
6
+ "action": "the approved review completed on the last admitted event and burned; delivery follows ordinary repository policy",
7
+ "store_revision": "sha256:dddb4347e0a391d434a95a2612f22a16a8d9cc5af03a8a7b8546c3936cf88043"
8
+ }
@@ -0,0 +1,13 @@
1
+ # Last-event closure fixture provenance
2
+
3
+ Captured 2026-08-23 from `gentle-ai dev` at the maintainer-provided disposable sandbox candidate `gentle-ai-dev`.
4
+
5
+ Commands were run against disposable Git repositories with isolated `HOME` and `TMPDIR` beneath `.scratch/issue-404-fixtures`:
6
+
7
+ - `gentle-ai review start ... --contract=gentle-ai.review-integration/v2 --agent=pi --consent=relay`
8
+ - `gentle-ai review capture-result ... --input=<reviewer-result>`
9
+ - `gentle-ai review capture-correction-plan ... --correction-lines=2`
10
+ - `gentle-ai review capture-refuter ... --agent=pi --execute=true`
11
+ - `gentle-ai review capture-validation ... --agent=pi --execute=true`
12
+
13
+ The sandbox was removed after the captures. The JSON fixtures are byte copies of the native stdout responses.
@@ -0,0 +1,12 @@
1
+ {
2
+ "schema": "gentle-ai.review-result-artifact/v2",
3
+ "capability": "review.native_result_artifact",
4
+ "path": "/tmp/claude-1000/-home-gentleman-work-gentle-ai/7629c2de-8b8b-4005-b117-ab45c0869f70/scratchpad/rart-capture/.git/gentle-ai/review-transactions/v2/review-ceeb2b862bd39709/reviewer-results/00-review-reliability.json",
5
+ "sha256": "sha256:c8b2d0ce70f22ff924447fe591dab4b4008e0b6cd7d4ac884439eaf6e47bd26e",
6
+ "lineage_id": "review-ceeb2b862bd39709",
7
+ "target_identity": "sha256:ceeb2b862bd39709a0c1d2642ba89711127de7e859d6c008bf1add73e4dc783e",
8
+ "lens": "review-reliability",
9
+ "selected_order": 0,
10
+ "subject_hash": "sha256:6952f7ea0b589d882201943449b3f4ab9505551ad306460ee7bebc6b4671ae1e",
11
+ "admission_decision": "completed"
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "schema": "gentle-ai.review-result-artifact/v2",
3
+ "capability": "review.native_result_artifact",
4
+ "reference": "rart1_ade967893b51f2e280f5393f154fe9e232b6cb8c22fd60b2ba65b301e8e23d47",
5
+ "sha256": "sha256:c8b2d0ce70f22ff924447fe591dab4b4008e0b6cd7d4ac884439eaf6e47bd26e",
6
+ "lineage_id": "review-ceeb2b862bd39709",
7
+ "target_identity": "sha256:ceeb2b862bd39709a0c1d2642ba89711127de7e859d6c008bf1add73e4dc783e",
8
+ "lens": "review-reliability",
9
+ "selected_order": 0,
10
+ "subject_hash": "sha256:6952f7ea0b589d882201943449b3f4ab9505551ad306460ee7bebc6b4671ae1e",
11
+ "admission_decision": "completed"
12
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "schema": "gentle-ai.review-acknowledged/v1",
3
+ "operation": "review/acknowledge-approved",
4
+ "action": "acknowledged",
5
+ "lineage_id": "review-3ec95251db75f626",
6
+ "target_identity": "sha256:b505dcd8d82395c053c9786935e11e0e235cbdecca4f1f46f98c768ea6248d3d",
7
+ "consumed_revision": "sha256:9732b1c3526bfecd3851093239241145c970cc126acea59bfaf14133214b60ee",
8
+ "authority": "burned"
9
+ }
@@ -0,0 +1,31 @@
1
+ # review-acknowledged/v1 fixture provenance
2
+
3
+ `review-acknowledged-v1.captured.json` is a byte copy of the stdout that
4
+ `gentle-ai review acknowledge-approved` printed when it burned one approved
5
+ compact authority. gentle-ai #3947 (main commit bc9f74d2) made that command
6
+ print this `gentle-ai.review-acknowledged/v1` envelope; every published
7
+ release up to and including v2.5.0-rc.3 burns the same authority with EMPTY
8
+ stdout (verified below).
9
+
10
+ - Captured 2026-08-31T08:51:50Z with the installed `gentle-ai 2.5.0-main.bc9f74d2`
11
+ (`gentle-ai --version` banner) in a disposable Git repository under an isolated
12
+ `HOME`; RDD was enabled only in that isolated HOME
13
+ (`gentle-ai review mode enable --scope global`).
14
+ - Candidate: one uncommitted line appended to a committed `README.md`
15
+ (`non_executable_only`, zero-lens, START closed `approved`).
16
+ - Commands, each the exact vector the previous envelope returned
17
+ (`GENTLE_PI_REVIEW_RELAY_CONTRACT=gentle-pi.review-relay/v1` set for the Pi
18
+ transport handshake):
19
+ 1. `gentle-ai review status --cwd <repo> --contract gentle-ai.review-integration/v2 --agent pi --next-transition`
20
+ 2. `gentle-ai review start --cwd=<repo> --contract=gentle-ai.review-integration/v2 --target=sha256:b505dcd8… --projection=workspace --lineage=review-3ec95251db75f626 --agent=pi --consent=relay`
21
+ 3. `gentle-ai review status … --lineage review-3ec95251db75f626 --next-transition` (offered `review.acknowledge-approved`)
22
+ 4. `gentle-ai review acknowledge-approved --cwd=<repo> --lineage=review-3ec95251db75f626 --target=sha256:b505dcd8… --expected-revision=sha256:9732b1c3… --token=<provider-issued>` (exit 0, empty stderr; stdout is the fixture)
23
+ - Replaying step 4 refused with exit 1, empty stdout, and the stderr line
24
+ `approved acknowledgement names no live compact authority; it was already acknowledged and burned, …` (unchanged refusal shape).
25
+ - Pinned control: the same four steps against the pinned published
26
+ `gentle-ai 2.5.0-rc.3` binary (sha256 b69da0a51b03f326147498ae465fc1ec52eff8427d579964eefad714c3f9bd87,
27
+ the recorded asset digest) burned the authority with exit 0 and ZERO bytes on
28
+ stdout and stderr, which is the silent path `acknowledgeApproved` keeps
29
+ accepting byte-for-byte.
30
+
31
+ The disposable repositories and HOME were removed after the captures.
@@ -0,0 +1,19 @@
1
+ {
2
+ "operation": "review/start",
3
+ "action": "declined",
4
+ "lenses_required": false,
5
+ "lineage_id": "",
6
+ "state": "",
7
+ "risk_level": "high",
8
+ "selected_lenses": [],
9
+ "lens_bindings": [],
10
+ "projection": "workspace",
11
+ "target_identity": "sha256:377c60e10b852cfcbcca6cd101e6ee7def9621a24a9f4b361d32137a3b0b3988",
12
+ "changed_files": 2,
13
+ "changed_lines": 12,
14
+ "correction_budget": 0,
15
+ "risk_evidence": [
16
+ "code that starts other processes in internal/runner/runner.go"
17
+ ],
18
+ "consent": "declined_this_candidate"
19
+ }
@@ -0,0 +1,109 @@
1
+ {
2
+ "schema": "gentle-ai.review-integration.start/v3",
3
+ "contract": "gentle-ai.review-integration/v2",
4
+ "operation": "review.start",
5
+ "action": "created",
6
+ "lenses_required": true,
7
+ "lineage_id": "review-377c60e10b852cfc",
8
+ "state": "reviewing",
9
+ "risk_level": "high",
10
+ "selected_lenses": [
11
+ "review-risk",
12
+ "review-resilience",
13
+ "review-readability",
14
+ "review-reliability"
15
+ ],
16
+ "projection": "workspace",
17
+ "base_tree": "6f76421f34880aec8e73618ca7ce69b2f894cb47",
18
+ "candidate_tree": "b6d3cea0ddd081a71e83120d003953872754a617",
19
+ "changed_files": 2,
20
+ "changed_lines": 12,
21
+ "correction_budget": 6,
22
+ "risk_reasons": [
23
+ {
24
+ "code": "process_boundary",
25
+ "signal": "shell_process",
26
+ "path": "internal/runner/runner.go"
27
+ }
28
+ ],
29
+ "artifact_subjects": [
30
+ {
31
+ "schema": "gentle-ai.review-artifact-subject/v2",
32
+ "subject_hash": "sha256:83a75b97a02e17dca2a466f2a247466751d3d610ed5b18ea45cc6b258dbc4a31",
33
+ "lineage_id": "review-377c60e10b852cfc",
34
+ "authority_revision": "sha256:fe7f383e1b3b0854f8974c94b60597b59a4384c8c6f30c04779d13c6ec32fb66",
35
+ "target_identity": "sha256:377c60e10b852cfcbcca6cd101e6ee7def9621a24a9f4b361d32137a3b0b3988",
36
+ "base_tree": "6f76421f34880aec8e73618ca7ce69b2f894cb47",
37
+ "candidate_tree": "b6d3cea0ddd081a71e83120d003953872754a617",
38
+ "changed_path_manifest_sha256": "sha256:487bf2f5df250d6f9d76a28fded97bfad6aec57c62f92e2b997bfd9bf25e7a53",
39
+ "lens": "review-risk",
40
+ "selected_order": 0
41
+ },
42
+ {
43
+ "schema": "gentle-ai.review-artifact-subject/v2",
44
+ "subject_hash": "sha256:5abb925fdd448ca0add3f1ce95e84c9f4742e0c1241bade2bde0b3205f3879d8",
45
+ "lineage_id": "review-377c60e10b852cfc",
46
+ "authority_revision": "sha256:fe7f383e1b3b0854f8974c94b60597b59a4384c8c6f30c04779d13c6ec32fb66",
47
+ "target_identity": "sha256:377c60e10b852cfcbcca6cd101e6ee7def9621a24a9f4b361d32137a3b0b3988",
48
+ "base_tree": "6f76421f34880aec8e73618ca7ce69b2f894cb47",
49
+ "candidate_tree": "b6d3cea0ddd081a71e83120d003953872754a617",
50
+ "changed_path_manifest_sha256": "sha256:487bf2f5df250d6f9d76a28fded97bfad6aec57c62f92e2b997bfd9bf25e7a53",
51
+ "lens": "review-resilience",
52
+ "selected_order": 1
53
+ },
54
+ {
55
+ "schema": "gentle-ai.review-artifact-subject/v2",
56
+ "subject_hash": "sha256:cbf59cec5a008893a97b46248c214f4c007ac1b9a18052bfd4f478eaf560e04c",
57
+ "lineage_id": "review-377c60e10b852cfc",
58
+ "authority_revision": "sha256:fe7f383e1b3b0854f8974c94b60597b59a4384c8c6f30c04779d13c6ec32fb66",
59
+ "target_identity": "sha256:377c60e10b852cfcbcca6cd101e6ee7def9621a24a9f4b361d32137a3b0b3988",
60
+ "base_tree": "6f76421f34880aec8e73618ca7ce69b2f894cb47",
61
+ "candidate_tree": "b6d3cea0ddd081a71e83120d003953872754a617",
62
+ "changed_path_manifest_sha256": "sha256:487bf2f5df250d6f9d76a28fded97bfad6aec57c62f92e2b997bfd9bf25e7a53",
63
+ "lens": "review-readability",
64
+ "selected_order": 2
65
+ },
66
+ {
67
+ "schema": "gentle-ai.review-artifact-subject/v2",
68
+ "subject_hash": "sha256:4a3d37cc911e1b39b03acb15df07be6e3cb041a6c2d493dd4aa9e7446f4b7dfa",
69
+ "lineage_id": "review-377c60e10b852cfc",
70
+ "authority_revision": "sha256:fe7f383e1b3b0854f8974c94b60597b59a4384c8c6f30c04779d13c6ec32fb66",
71
+ "target_identity": "sha256:377c60e10b852cfcbcca6cd101e6ee7def9621a24a9f4b361d32137a3b0b3988",
72
+ "base_tree": "6f76421f34880aec8e73618ca7ce69b2f894cb47",
73
+ "candidate_tree": "b6d3cea0ddd081a71e83120d003953872754a617",
74
+ "changed_path_manifest_sha256": "sha256:487bf2f5df250d6f9d76a28fded97bfad6aec57c62f92e2b997bfd9bf25e7a53",
75
+ "lens": "review-reliability",
76
+ "selected_order": 3
77
+ }
78
+ ],
79
+ "changed_path_manifest": [
80
+ {
81
+ "path": "internal/runner/runner.go",
82
+ "status": "M",
83
+ "old_mode": "100644",
84
+ "new_mode": "100644",
85
+ "deleted": false,
86
+ "type_changed": false,
87
+ "mode_only": false,
88
+ "intended_untracked": false
89
+ },
90
+ {
91
+ "path": "internal/runner/runner_test.go",
92
+ "status": "M",
93
+ "old_mode": "100644",
94
+ "new_mode": "100644",
95
+ "deleted": false,
96
+ "type_changed": false,
97
+ "mode_only": false,
98
+ "intended_untracked": false
99
+ }
100
+ ],
101
+ "repository_context": {
102
+ "capability": "review.opaque_repository_context",
103
+ "handle": "rctx1_5ce64550b975f58fae189cf4ae1da04aea489928f386dc9f17b45f12d26de8e8",
104
+ "revision": "sha256:fe7f383e1b3b0854f8974c94b60597b59a4384c8c6f30c04779d13c6ec32fb66",
105
+ "target_identity": "sha256:377c60e10b852cfcbcca6cd101e6ee7def9621a24a9f4b361d32137a3b0b3988",
106
+ "event_id": "sha256:48ac0c2d153f410d4292a24e6dfa20ae16599cb6c3d5416bb87fa7f515007b71",
107
+ "outcome": "applied"
108
+ }
109
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "schema": "gentle-ai.review-integration.start/v3",
3
+ "contract": "gentle-ai.review-integration/v2",
4
+ "operation": "review.start",
5
+ "action": "closed",
6
+ "lenses_required": false,
7
+ "lineage_id": "review-95b756a05f2e82b1",
8
+ "state": "approved",
9
+ "risk_level": "low",
10
+ "selected_lenses": [],
11
+ "projection": "workspace",
12
+ "changed_files": 1,
13
+ "changed_lines": 2,
14
+ "correction_budget": 1,
15
+ "risk_reasons": [
16
+ {
17
+ "code": "non_executable_only"
18
+ }
19
+ ],
20
+ "artifact_subjects": []
21
+ }
@@ -0,0 +1,184 @@
1
+ {
2
+ "schema": "gentle-ai.review-integration.status/v5",
3
+ "contract": "gentle-ai.review-integration/v2",
4
+ "operation": "review.status",
5
+ "applicability": "current_target",
6
+ "authority": {
7
+ "version": "compact-v2",
8
+ "lineage_id": "review-c15e3de5404ab556",
9
+ "state": "reviewing",
10
+ "generation": 1,
11
+ "revision": "sha256:d6f2eeddd50606fb387daff489a17b612e923e501dc714c2952142a3c1d0e073"
12
+ },
13
+ "receipt": {
14
+ "status": "expected_missing"
15
+ },
16
+ "action": "finalize",
17
+ "replayability": "not_replayable",
18
+ "frozen": {
19
+ "tier": "medium",
20
+ "original_changed_lines": 3,
21
+ "correction_budget": 2
22
+ },
23
+ "target_identity": "sha256:c15e3de5404ab556a237a0a94f1d8d99e33e2ac6664877b2eefee0e210f8252a",
24
+ "projection": {
25
+ "schema": "gentle-ai.review-integration.projection/v1",
26
+ "kind": "current-changes",
27
+ "projection": "workspace",
28
+ "base_tree": "96c8f6a2eee2da821f202ee686b70c211bd9fd37",
29
+ "initial_review_tree": "6812ab6b7a19550f0dc49cee57518528c4479756",
30
+ "current_candidate_tree": "6812ab6b7a19550f0dc49cee57518528c4479756",
31
+ "paths_digest": "sha256:e9ec59a8b57bb461f3e06d58e57517e472c4d90560af0da03adcb8e80328cd25",
32
+ "paths": [
33
+ "src/add.js"
34
+ ],
35
+ "intended_untracked": [],
36
+ "intended_untracked_proof": "sha256:b97229718d4c7fe50a8892eb474ae5aa6491697bccb400e3e31dbaca4894d2f3",
37
+ "initial_snapshot_identity": "sha256:c15e3de5404ab556a237a0a94f1d8d99e33e2ac6664877b2eefee0e210f8252a",
38
+ "current_snapshot_identity": "sha256:c15e3de5404ab556a237a0a94f1d8d99e33e2ac6664877b2eefee0e210f8252a"
39
+ },
40
+ "repair": {
41
+ "schema": "gentle-ai.review-authority-repair-assessment/v1",
42
+ "status": "unsupported",
43
+ "counts": {
44
+ "lineages": 0,
45
+ "compact_lineages": 0,
46
+ "legacy_lineages": 0,
47
+ "events": 0,
48
+ "bytes": 0,
49
+ "eligible_candidates": 0,
50
+ "unsupported_lineages": 0,
51
+ "conflicts": 0
52
+ },
53
+ "supported_operations": [
54
+ "review/complete-fix",
55
+ "review/validate-fix"
56
+ ],
57
+ "authorization_schema": "gentle-ai.review-repair-authorization/v1"
58
+ },
59
+ "candidates": [],
60
+ "forecast": {
61
+ "horizon": "partial",
62
+ "steps": [
63
+ {
64
+ "step": 1,
65
+ "kind": "collect",
66
+ "reason_code": "reviewer_results_required",
67
+ "description": "Reviewer lens artifacts required for current revision"
68
+ }
69
+ ]
70
+ },
71
+ "next_transition": {
72
+ "kind": "collect",
73
+ "reason_code": "reviewer_results_required",
74
+ "collect": {
75
+ "inputs": [
76
+ {
77
+ "name": "reviewer_result",
78
+ "schema": "https://gentle-ai.dev/schema/review/reviewer/v1",
79
+ "capture_operation": "review.capture-result",
80
+ "arguments": [
81
+ {
82
+ "name": "lineage",
83
+ "value": "review-c15e3de5404ab556",
84
+ "token": "--lineage=review-c15e3de5404ab556"
85
+ },
86
+ {
87
+ "name": "expected-revision",
88
+ "value": "sha256:d6f2eeddd50606fb387daff489a17b612e923e501dc714c2952142a3c1d0e073",
89
+ "token": "--expected-revision=sha256:d6f2eeddd50606fb387daff489a17b612e923e501dc714c2952142a3c1d0e073"
90
+ },
91
+ {
92
+ "name": "target",
93
+ "value": "sha256:c15e3de5404ab556a237a0a94f1d8d99e33e2ac6664877b2eefee0e210f8252a",
94
+ "token": "--target=sha256:c15e3de5404ab556a237a0a94f1d8d99e33e2ac6664877b2eefee0e210f8252a"
95
+ },
96
+ {
97
+ "name": "repository-context",
98
+ "value": "rctx1_383ac1f99ddd81b78db104959b5c7d853de3514ed5cbcccddf53463a05e22989",
99
+ "token": "--repository-context=rctx1_383ac1f99ddd81b78db104959b5c7d853de3514ed5cbcccddf53463a05e22989"
100
+ },
101
+ {
102
+ "name": "lens",
103
+ "value": "review-reliability",
104
+ "token": "--lens=review-reliability"
105
+ },
106
+ {
107
+ "name": "order",
108
+ "value": "0",
109
+ "token": "--order=0"
110
+ },
111
+ {
112
+ "name": "subject-hash",
113
+ "value": "sha256:717aafba627b961e8bf8c1d40e20961475e7e48da7addb635172c62f2c8b8c15",
114
+ "token": "--subject-hash=sha256:717aafba627b961e8bf8c1d40e20961475e7e48da7addb635172c62f2c8b8c15"
115
+ },
116
+ {
117
+ "name": "agent",
118
+ "value": "pi",
119
+ "token": "--agent=pi"
120
+ },
121
+ {
122
+ "name": "materialize",
123
+ "value": "true",
124
+ "token": "--materialize=true"
125
+ }
126
+ ],
127
+ "submission": {
128
+ "operation_token": "capture-result",
129
+ "argument_tokens": [
130
+ "--lineage=review-c15e3de5404ab556",
131
+ "--expected-revision=sha256:d6f2eeddd50606fb387daff489a17b612e923e501dc714c2952142a3c1d0e073",
132
+ "--target=sha256:c15e3de5404ab556a237a0a94f1d8d99e33e2ac6664877b2eefee0e210f8252a",
133
+ "--repository-context=rctx1_383ac1f99ddd81b78db104959b5c7d853de3514ed5cbcccddf53463a05e22989",
134
+ "--lens=review-reliability",
135
+ "--order=0",
136
+ "--subject-hash=sha256:717aafba627b961e8bf8c1d40e20961475e7e48da7addb635172c62f2c8b8c15",
137
+ "--input={{value}}"
138
+ ],
139
+ "value": {
140
+ "slot": "reviewer_result",
141
+ "domain": "artifact_path_or_stdin",
142
+ "schema": "https://gentle-ai.dev/schema/review/reviewer/v1",
143
+ "substitution_location": 7
144
+ }
145
+ },
146
+ "artifact_subject": {
147
+ "schema": "gentle-ai.review-artifact-subject/v2",
148
+ "subject_hash": "sha256:717aafba627b961e8bf8c1d40e20961475e7e48da7addb635172c62f2c8b8c15",
149
+ "lineage_id": "review-c15e3de5404ab556",
150
+ "authority_revision": "sha256:d6f2eeddd50606fb387daff489a17b612e923e501dc714c2952142a3c1d0e073",
151
+ "target_identity": "sha256:c15e3de5404ab556a237a0a94f1d8d99e33e2ac6664877b2eefee0e210f8252a",
152
+ "base_tree": "96c8f6a2eee2da821f202ee686b70c211bd9fd37",
153
+ "candidate_tree": "6812ab6b7a19550f0dc49cee57518528c4479756",
154
+ "changed_path_manifest_sha256": "sha256:247cb9ffff17f6f97cf3fbeca795889a281805f676c53c204b319735a3eaf4dd",
155
+ "lens": "review-reliability",
156
+ "selected_order": 0
157
+ },
158
+ "base_tree": "96c8f6a2eee2da821f202ee686b70c211bd9fd37",
159
+ "candidate_tree": "6812ab6b7a19550f0dc49cee57518528c4479756",
160
+ "changed_path_manifest": [
161
+ {
162
+ "path": "src/add.js",
163
+ "status": "M",
164
+ "old_mode": "100644",
165
+ "new_mode": "100644",
166
+ "deleted": false,
167
+ "type_changed": false,
168
+ "mode_only": false,
169
+ "intended_untracked": false
170
+ }
171
+ ]
172
+ }
173
+ ]
174
+ }
175
+ },
176
+ "repository_context": {
177
+ "capability": "review.opaque_repository_context",
178
+ "handle": "rctx1_383ac1f99ddd81b78db104959b5c7d853de3514ed5cbcccddf53463a05e22989",
179
+ "revision": "sha256:d6f2eeddd50606fb387daff489a17b612e923e501dc714c2952142a3c1d0e073",
180
+ "target_identity": "sha256:c15e3de5404ab556a237a0a94f1d8d99e33e2ac6664877b2eefee0e210f8252a",
181
+ "event_id": "sha256:de35d1d7dc457f1157752f9d1bca95b15dd964d82ecabd8c9f2ffacc6ceacc2d",
182
+ "outcome": "applied"
183
+ }
184
+ }