gentle-pi 2.1.2 → 2.2.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 (171) hide show
  1. package/README.md +70 -12
  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 -1
  7. package/assets/agents/review-reliability.md +4 -1
  8. package/assets/agents/review-resilience.md +4 -1
  9. package/assets/agents/review-risk.md +4 -1
  10. package/assets/agents/sdd-apply.md +6 -1
  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 +6 -1
  17. package/assets/agents/sdd-spec.md +6 -1
  18. package/assets/agents/sdd-status.md +6 -1
  19. package/assets/agents/sdd-sync.md +6 -1
  20. package/assets/agents/sdd-tasks.md +6 -1
  21. package/assets/agents/sdd-verify.md +6 -1
  22. package/assets/chains/4r-review.chain.md +2 -0
  23. package/assets/chains/sdd-full.chain.md +1 -1
  24. package/assets/chains/sdd-plan.chain.md +1 -1
  25. package/assets/chains/sdd-verify.chain.md +1 -1
  26. package/assets/orchestrator-delegation.md +246 -67
  27. package/assets/orchestrator.md +7 -14
  28. package/assets/sdd-orchestrator-workflow.md +154 -9
  29. package/assets/support/sdd-status-contract.md +19 -1
  30. package/contracts/review-integration/v1/fixtures/consent.fixture.json +3 -3
  31. package/contracts/review-integration/v1/fixtures/start-v2.fixture.json +19 -28
  32. package/contracts/review-integration/v1/fixtures/start.fixture.json +1 -10
  33. package/contracts/review-integration/v1/fixtures/status-v2.fixture.json +12 -21
  34. package/contracts/review-integration/v1/schemas/correction-plan-request.schema.json +49 -0
  35. package/contracts/review-integration/v1/schemas/operation.schema.json +76 -0
  36. package/contracts/review-integration/v1/schemas/repair.schema.json +39 -0
  37. package/contracts/review-integration/v1/schemas/status-v2.schema.json +4 -2
  38. package/contracts/review-integration/v1/schemas/status.schema.json +4 -2
  39. package/contracts/review-integration/v2/fixtures/consent.fixture.json +1 -1
  40. package/contracts/review-integration/v2/fixtures/start.fixture.json +1 -10
  41. package/contracts/review-integration/v2/fixtures/status.fixture.json +1 -10
  42. package/contracts/review-integration/v2/schemas/failure.schema.json +5 -1
  43. package/contracts/review-integration/v2/schemas/operation.schema.json +6 -1
  44. package/contracts/review-integration/v2/schemas/repair.schema.json +4 -2
  45. package/contracts/review-integration/v2/schemas/start.schema.json +5 -2
  46. package/contracts/review-integration/v2/schemas/status.schema.json +4 -2
  47. package/contracts/review-provider-contract-mirror/provider-contract.lock.json +30 -0
  48. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/README.md +12 -0
  49. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/manifest.json +65 -0
  50. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/schemas/lens.schema.json +16 -0
  51. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/schemas/refuter.schema.json +1 -0
  52. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/schemas/targeted-validator.schema.json +1 -0
  53. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/vectors/lens.json +1 -0
  54. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/vectors/refuter.json +1 -0
  55. package/contracts/review-provider-contract-mirror/v1.1.0/bundle/vectors/targeted-validator.json +1 -0
  56. package/contracts/review-provider-contract-mirror/v1.1.0/generated/provider-capabilities.baseline.json +15 -0
  57. package/contracts/review-provider-contract-mirror/v1.1.0/generated/provider-roles.baseline.json +42 -0
  58. package/docs/native-authority-architecture.md +5 -5
  59. package/docs/review-integration.md +22 -2
  60. package/extensions/gentle-ai.ts +1595 -201
  61. package/extensions/sdd-init.ts +19 -6
  62. package/extensions/skill-registry.ts +10 -2
  63. package/extensions/startup-banner.ts +10 -4
  64. package/lib/gentle-ai-binary.ts +173 -2
  65. package/lib/git-commit-transaction.ts +77 -17
  66. package/lib/native-review-cli.ts +528 -65
  67. package/lib/provider-contract-bundle.ts +704 -0
  68. package/lib/review-candidate-view.ts +527 -18
  69. package/lib/review-compact-contract.ts +59 -248
  70. package/lib/review-host-relay.ts +436 -0
  71. package/lib/review-integration-v2.ts +537 -36
  72. package/lib/review-relay-contract.ts +16 -0
  73. package/lib/sdd-preflight.ts +53 -1
  74. package/package.json +5 -2
  75. package/runtime/gentle-ai-binary.mjs +173 -2
  76. package/runtime/git-commit-transaction.mjs +75 -15
  77. package/runtime/native-review-cli.mjs +524 -61
  78. package/runtime/review-integration-v2.mjs +536 -35
  79. package/runtime/review-relay-contract.mjs +17 -0
  80. package/scripts/build-git-commit-transaction-runner.mjs +1 -0
  81. package/scripts/check-provider-contract.mjs +138 -0
  82. package/scripts/gentle-ai-installer.mjs +23 -13
  83. package/scripts/maintainer/provider-relay-matrix.mjs +219 -0
  84. package/scripts/mirror-provider-contract.mjs +143 -0
  85. package/scripts/test-packed-runner.mjs +16 -2
  86. package/scripts/verify-package-files.mjs +110 -33
  87. package/skills/_shared/review-ledger-contract.md +4 -6
  88. package/skills/gentle-ai/SKILL.md +4 -4
  89. package/skills/issue-creation/SKILL.md +94 -168
  90. package/skills/judgment-day/SKILL.md +7 -1
  91. package/skills/judgment-day/references/prompts-and-formats.md +2 -0
  92. package/skills/rdd-defect-workflow/SKILL.md +54 -0
  93. package/tests/background-subagents.test.ts +771 -0
  94. package/tests/crosslane/cross-lane.mjs +1169 -0
  95. package/tests/delegated-key-learnings-contract.test.ts +238 -0
  96. package/tests/fixtures/devbinary/capabilities-v2.1.derived.json +331 -0
  97. package/tests/fixtures/devbinary/capabilities-v2.2.captured.json +340 -0
  98. package/tests/fixtures/devbinary/consent-v3.captured.json +37 -0
  99. package/tests/fixtures/devbinary/failure-v2-capture-evidence.captured.json +16 -0
  100. package/tests/fixtures/devbinary/result-artifact-v2-path.captured.json +12 -0
  101. package/tests/fixtures/devbinary/result-artifact-v2.captured.json +12 -0
  102. package/tests/fixtures/devbinary/start-v3-consent-declined.captured.json +19 -0
  103. package/tests/fixtures/devbinary/start-v3-consent-granted.captured.json +109 -0
  104. package/tests/fixtures/devbinary/status-v5-capture-result-submission.captured.json +184 -0
  105. package/tests/fixtures/devbinary/status-v5-repository-context.captured.json +138 -0
  106. package/tests/fixtures/devbinary/status-v5.captured.json +88 -0
  107. package/tests/fixtures/provider-contract-bundle/v1.1.0/README.md +12 -0
  108. package/tests/fixtures/provider-contract-bundle/v1.1.0/manifest.json +65 -0
  109. package/tests/fixtures/provider-contract-bundle/v1.1.0/schemas/lens.schema.json +16 -0
  110. package/tests/fixtures/provider-contract-bundle/v1.1.0/schemas/refuter.schema.json +1 -0
  111. package/tests/fixtures/provider-contract-bundle/v1.1.0/schemas/targeted-validator.schema.json +1 -0
  112. package/tests/fixtures/provider-contract-bundle/v1.1.0/vectors/lens.json +1 -0
  113. package/tests/fixtures/provider-contract-bundle/v1.1.0/vectors/refuter.json +1 -0
  114. package/tests/fixtures/provider-contract-bundle/v1.1.0/vectors/targeted-validator.json +1 -0
  115. package/tests/gentle-ai-binary.test.ts +1 -1
  116. package/tests/gentle-ai-dev-binary-surfacing.test.ts +195 -0
  117. package/tests/gentle-ai-dev-binary.test.ts +336 -0
  118. package/tests/gentle-ai-installer.test.ts +46 -46
  119. package/tests/git-commit-transaction.test.ts +229 -1
  120. package/tests/maintainer/provider-relay.maintest.ts +265 -0
  121. package/tests/native-review-capability-contract.test.ts +48 -2
  122. package/tests/native-review-cli.test.ts +56 -0
  123. package/tests/native-review-consent.test.ts +164 -3
  124. package/tests/native-review-parity-runtime.test.ts +37 -0
  125. package/tests/native-review-parity.test.ts +218 -15
  126. package/tests/native-sdd-attempt-authority.test.ts +235 -0
  127. package/tests/orchestrator-budget.test.ts +30 -5
  128. package/tests/package-manifest.test.ts +98 -72
  129. package/tests/provider-contract-bundle.test.ts +385 -0
  130. package/tests/provider-contract-mirror.test.ts +206 -0
  131. package/tests/provider-defect-handoff.test.ts +355 -0
  132. package/tests/review-actor-tool-deny.test.ts +12 -13
  133. package/tests/review-candidate-view.test.ts +489 -9
  134. package/tests/review-compact-contract.test.ts +52 -119
  135. package/tests/review-controller-native-recovery.test.ts +643 -47
  136. package/tests/review-controller-native-routing.test.ts +1667 -222
  137. package/tests/review-controller-workspace-root.test.ts +17 -2
  138. package/tests/review-corrected-finalize-binding.test.ts +175 -0
  139. package/tests/review-dispatch-hydration-gap.test.ts +197 -0
  140. package/tests/review-host-relay-routing.test.ts +317 -0
  141. package/tests/review-host-relay.test.ts +520 -0
  142. package/tests/review-integration-v2-forward.test.ts +631 -0
  143. package/tests/review-integration-v2.test.ts +114 -0
  144. package/tests/review-ledger-contract.test.ts +12 -28
  145. package/tests/review-recovered-lineage-routing.test.ts +246 -0
  146. package/tests/review-relay-transport-agent.test.ts +249 -0
  147. package/tests/runtime-harness.mjs +242 -14
  148. package/tests/sdd-agent-tools.test.ts +18 -33
  149. package/tests/skill-collision-prefixes.test.ts +1 -0
  150. package/tests/skill-registry.test.ts +50 -1
  151. package/tests/verify-package-files.test.ts +62 -0
  152. package/assets/agents/review-refuter.md +0 -40
  153. package/assets/agents/review-validator.md +0 -23
  154. package/lib/native-review-remediation.ts +0 -49
  155. package/lib/review-compact.ts +0 -947
  156. package/lib/review-refuter-adapter.ts +0 -129
  157. package/lib/review-runtime-contract.ts +0 -68
  158. package/prompts/gcl.md +0 -54
  159. package/prompts/gis.md +0 -25
  160. package/prompts/gpr.md +0 -41
  161. package/prompts/gwr.md +0 -31
  162. package/tests/fixtures/native-review-cli/v2.1.2/bind-sdd.json +0 -25
  163. package/tests/fixtures/native-review-cli/v2.1.2/finalize.json +0 -8
  164. package/tests/fixtures/native-review-cli/v2.1.2/sdd-status-engram.json +0 -139
  165. package/tests/fixtures/native-review-cli/v2.1.2/sdd-status.json +0 -200
  166. package/tests/fixtures/native-review-cli/v2.1.2/start.json +0 -12
  167. package/tests/fixtures/native-review-cli/v2.1.2/validate-allow.json +0 -24
  168. package/tests/fixtures/native-review-cli/v2.1.2/validate-deny-empty-context.json +0 -20
  169. package/tests/fixtures/native-review-cli/v2.1.2/validate-deny.json +0 -28
  170. package/tests/review-compact.test.ts +0 -243
  171. package/tests/review-refuter-adapter.test.ts +0 -89
@@ -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
+ }
@@ -0,0 +1,138 @@
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-bbfbf9af2dc27936",
9
+ "state": "reviewing",
10
+ "generation": 1,
11
+ "revision": "sha256:b330774b56c764047e6041de2b9071b16a772abf7cdc311c2f77cb4ecaa3a707"
12
+ },
13
+ "receipt": {
14
+ "status": "expected_missing"
15
+ },
16
+ "action": "finalize",
17
+ "replayability": "not_replayable",
18
+ "frozen": {
19
+ "tier": "medium",
20
+ "original_changed_lines": 1,
21
+ "correction_budget": 1
22
+ },
23
+ "target_identity": "sha256:bbfbf9af2dc27936d5fbc0c30579d5122d65bf4ccc65d9a00cde816f3aa6d3ab",
24
+ "projection": {
25
+ "schema": "gentle-ai.review-integration.projection/v1",
26
+ "kind": "current-changes",
27
+ "projection": "workspace",
28
+ "base_tree": "7bee507cb7f5aa4dce34e6962366eeea27935c74",
29
+ "initial_review_tree": "a044376c6cfb84e30c676ff7307e92bcfef5b6ec",
30
+ "current_candidate_tree": "a044376c6cfb84e30c676ff7307e92bcfef5b6ec",
31
+ "paths_digest": "sha256:4d916b1a185d946866be1c2f945425ea650ea045dec13bb0ec972744f0f9bd61",
32
+ "paths": [
33
+ "file.txt"
34
+ ],
35
+ "intended_untracked": [],
36
+ "intended_untracked_proof": "sha256:b97229718d4c7fe50a8892eb474ae5aa6491697bccb400e3e31dbaca4894d2f3",
37
+ "initial_snapshot_identity": "sha256:bbfbf9af2dc27936d5fbc0c30579d5122d65bf4ccc65d9a00cde816f3aa6d3ab",
38
+ "current_snapshot_identity": "sha256:bbfbf9af2dc27936d5fbc0c30579d5122d65bf4ccc65d9a00cde816f3aa6d3ab"
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": "execute",
66
+ "reason_code": "captured_results_ready",
67
+ "description": "Captured reviewer results are complete and ready for finalization"
68
+ }
69
+ ]
70
+ },
71
+ "next_transition": {
72
+ "kind": "execute",
73
+ "reason_code": "captured_results_ready",
74
+ "execute": {
75
+ "operation": "review.finalize",
76
+ "command": "gentle-ai review finalize --lineage=review-bbfbf9af2dc27936 --captured-results=true --contract=gentle-ai.review-integration/v2 --agent=claude-code",
77
+ "arguments": [
78
+ {
79
+ "name": "lineage",
80
+ "value": "review-bbfbf9af2dc27936",
81
+ "token": "--lineage=review-bbfbf9af2dc27936"
82
+ },
83
+ {
84
+ "name": "captured_results",
85
+ "value": "true",
86
+ "token": "--captured-results=true"
87
+ },
88
+ {
89
+ "name": "contract",
90
+ "value": "gentle-ai.review-integration/v2",
91
+ "token": "--contract=gentle-ai.review-integration/v2"
92
+ },
93
+ {
94
+ "name": "agent",
95
+ "value": "claude-code",
96
+ "token": "--agent=claude-code"
97
+ }
98
+ ],
99
+ "preconditions": [
100
+ {
101
+ "name": "state",
102
+ "value": "reviewing"
103
+ },
104
+ {
105
+ "name": "captured_artifacts",
106
+ "value": "complete"
107
+ }
108
+ ],
109
+ "binding": {
110
+ "lineage_id": "review-bbfbf9af2dc27936",
111
+ "revision": "sha256:b330774b56c764047e6041de2b9071b16a772abf7cdc311c2f77cb4ecaa3a707",
112
+ "target_identity": "sha256:bbfbf9af2dc27936d5fbc0c30579d5122d65bf4ccc65d9a00cde816f3aa6d3ab",
113
+ "repository_context": "rctx1_7da80fda377da87da8aae62204c531e697bd6a4a6bbd5de21ddd3861150fb725"
114
+ },
115
+ "artifacts": [
116
+ {
117
+ "schema": "gentle-ai.review-result-artifact/v2",
118
+ "capability": "review.native_result_artifact",
119
+ "sha256": "sha256:02a403472b0bb0c7ad5dddd1010b006af257f516e425795996f276d423d33c9d",
120
+ "lineage_id": "review-bbfbf9af2dc27936",
121
+ "target_identity": "sha256:bbfbf9af2dc27936d5fbc0c30579d5122d65bf4ccc65d9a00cde816f3aa6d3ab",
122
+ "lens": "review-reliability",
123
+ "selected_order": 0,
124
+ "subject_hash": "sha256:620703b2e6f074e031712f501eb9fe460bb17bd0cbbd70db10be5dc4fa2dfead",
125
+ "admission_decision": "completed"
126
+ }
127
+ ]
128
+ }
129
+ },
130
+ "repository_context": {
131
+ "capability": "review.opaque_repository_context",
132
+ "handle": "rctx1_7da80fda377da87da8aae62204c531e697bd6a4a6bbd5de21ddd3861150fb725",
133
+ "revision": "sha256:b330774b56c764047e6041de2b9071b16a772abf7cdc311c2f77cb4ecaa3a707",
134
+ "target_identity": "sha256:bbfbf9af2dc27936d5fbc0c30579d5122d65bf4ccc65d9a00cde816f3aa6d3ab",
135
+ "event_id": "sha256:5d2588ff1422f4568588986a2e2872bae60f0fef4131df81a6e3bdad9f8fa76a",
136
+ "outcome": "applied"
137
+ }
138
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "schema": "gentle-ai.review-integration.status/v5",
3
+ "contract": "gentle-ai.review-integration/v2",
4
+ "operation": "review.status",
5
+ "applicability": "unrelated",
6
+ "receipt": {
7
+ "status": "not_applicable"
8
+ },
9
+ "action": "start",
10
+ "replayability": "not_replayable",
11
+ "target_identity": "sha256:50d13aa33f913bbf99df6ad5b94ac1db2aba969445ffc08aadffd8b42b79f1c4",
12
+ "projection": {
13
+ "schema": "gentle-ai.review-integration.projection/v1",
14
+ "kind": "current-changes",
15
+ "projection": "workspace",
16
+ "base_tree": "619289f137abd616d94899f2c9b6726de091ac92",
17
+ "initial_review_tree": "619289f137abd616d94899f2c9b6726de091ac92",
18
+ "current_candidate_tree": "619289f137abd616d94899f2c9b6726de091ac92",
19
+ "paths_digest": "sha256:2286a180488f90f2e97062d500a629bc747716d55a34c2861a8309e1b02589a1",
20
+ "paths": [],
21
+ "intended_untracked": [],
22
+ "intended_untracked_proof": "sha256:b97229718d4c7fe50a8892eb474ae5aa6491697bccb400e3e31dbaca4894d2f3",
23
+ "initial_snapshot_identity": "sha256:50d13aa33f913bbf99df6ad5b94ac1db2aba969445ffc08aadffd8b42b79f1c4",
24
+ "current_snapshot_identity": "sha256:50d13aa33f913bbf99df6ad5b94ac1db2aba969445ffc08aadffd8b42b79f1c4"
25
+ },
26
+ "repair": {
27
+ "schema": "gentle-ai.review-authority-repair-assessment/v1",
28
+ "status": "unsupported",
29
+ "counts": {
30
+ "lineages": 0,
31
+ "compact_lineages": 0,
32
+ "legacy_lineages": 0,
33
+ "events": 0,
34
+ "bytes": 0,
35
+ "eligible_candidates": 0,
36
+ "unsupported_lineages": 0,
37
+ "conflicts": 0
38
+ },
39
+ "supported_operations": [
40
+ "review/complete-fix",
41
+ "review/validate-fix"
42
+ ],
43
+ "authorization_schema": "gentle-ai.review-repair-authorization/v1"
44
+ },
45
+ "candidates": [],
46
+ "forecast": {
47
+ "horizon": "partial",
48
+ "steps": [
49
+ {
50
+ "step": 1,
51
+ "kind": "collect",
52
+ "reason_code": "empty_candidate_base_ref_required",
53
+ "description": "empty candidate base ref required"
54
+ }
55
+ ]
56
+ },
57
+ "next_transition": {
58
+ "kind": "collect",
59
+ "reason_code": "empty_candidate_base_ref_required",
60
+ "collect": {
61
+ "inputs": [
62
+ {
63
+ "name": "base_ref",
64
+ "schema": "gentle-ai.review-base-ref-selection/v1",
65
+ "capture_operation": "external.select_base_ref",
66
+ "arguments": [
67
+ {
68
+ "name": "target_identity",
69
+ "value": "sha256:50d13aa33f913bbf99df6ad5b94ac1db2aba969445ffc08aadffd8b42b79f1c4"
70
+ },
71
+ {
72
+ "name": "projection",
73
+ "value": "workspace"
74
+ },
75
+ {
76
+ "name": "base_tree",
77
+ "value": "619289f137abd616d94899f2c9b6726de091ac92"
78
+ },
79
+ {
80
+ "name": "candidate_tree",
81
+ "value": "619289f137abd616d94899f2c9b6726de091ac92"
82
+ }
83
+ ]
84
+ }
85
+ ]
86
+ }
87
+ }
88
+ }
@@ -0,0 +1,12 @@
1
+ # Gentle AI review provider contract
2
+
3
+ This data-only bundle describes the provider result contracts admitted by Gentle AI.
4
+
5
+ ## Activation
6
+
7
+ 1. Verify the signed release checksum manifest before using this archive.
8
+ 2. Verify every listed file hash and the transport capability before activation.
9
+ 3. Confirm your runtime identity appears in the manifest's registered runtimes before trusting the layout.
10
+ 4. Pass the Go-materialized opaque prompt to the provider and return only raw output or an error.
11
+
12
+ Go remains the admission authority for prompts, results, receipts, and delivery gates.
@@ -0,0 +1,65 @@
1
+ {
2
+ "schema": "gentle-ai.review-provider-contract-bundle/v1",
3
+ "contract_semver": "1.1.0",
4
+ "transport_capability": "gentle-ai.provider-transport/v1",
5
+ "runtimes": [
6
+ "claude-code",
7
+ "codex",
8
+ "opencode",
9
+ "pi"
10
+ ],
11
+ "readme": {
12
+ "path": "README.md",
13
+ "sha256": "d14647c8753bd85e18b8a593bef9dfcb4c9d8ea01e32ecd36847dc4304027b1d"
14
+ },
15
+ "roles": [
16
+ {
17
+ "id": "lens",
18
+ "request_schema_id": "gentle-ai.review-lens-context/v1",
19
+ "result_schema_id": "https://gentle-ai.dev/schema/review/reviewer/v1",
20
+ "required_capabilities": [
21
+ "gentle-ai.provider-transport/v1"
22
+ ],
23
+ "schema": {
24
+ "path": "schemas/lens.schema.json",
25
+ "sha256": "ffef79cfb763333282285ff5c795a32b5a88d840b4a8d125ce012188b04cffe1"
26
+ },
27
+ "vector": {
28
+ "path": "vectors/lens.json",
29
+ "sha256": "7ef0b08404645eeb5dba92aba5f8e4780667b6ec775f43ed8547ff9f2a7148c8"
30
+ }
31
+ },
32
+ {
33
+ "id": "refuter",
34
+ "request_schema_id": "gentle-ai.review-provider-refuter-request/v1",
35
+ "result_schema_id": "https://gentle-ai.dev/schema/review/refuter/v1",
36
+ "required_capabilities": [
37
+ "gentle-ai.provider-transport/v1"
38
+ ],
39
+ "schema": {
40
+ "path": "schemas/refuter.schema.json",
41
+ "sha256": "36f8267c6c3f04600b8f1cb77df70d90858611af822cc81922efd6b3502fb646"
42
+ },
43
+ "vector": {
44
+ "path": "vectors/refuter.json",
45
+ "sha256": "f42d71906e49c4191660b2da7e70f01f1778b23d32089005bd2d7ae9cbb73039"
46
+ }
47
+ },
48
+ {
49
+ "id": "targeted-validator",
50
+ "request_schema_id": "gentle-ai.review-targeted-validation-request/v1",
51
+ "result_schema_id": "https://gentle-ai.dev/schema/review/validator/v1",
52
+ "required_capabilities": [
53
+ "gentle-ai.provider-transport/v1"
54
+ ],
55
+ "schema": {
56
+ "path": "schemas/targeted-validator.schema.json",
57
+ "sha256": "58f5efca0fb8089a51e998d5cf07209528a6b6e3782246b34ee1e825132063a8"
58
+ },
59
+ "vector": {
60
+ "path": "vectors/targeted-validator.json",
61
+ "sha256": "7b5a5165e3a913863fb98d2ba5387811860c21333b5c37e6ed3b4e0d121cf2fa"
62
+ }
63
+ }
64
+ ]
65
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://gentle-ai.dev/schema/review/reviewer/v1",
4
+ "title": "Gentle AI reviewer result",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["subject_hash", "inspection", "findings", "evidence"],
8
+ "properties": {
9
+ "subject_hash": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
10
+ "inspection": {"type": "object", "additionalProperties": false, "required": ["status", "paths"], "properties": {"status": {"const": "completed"}, "paths": {"type": "array", "description": "Complete unique unordered set of every changed_path_manifest.path.", "uniqueItems": true, "items": {"type": "string", "minLength": 1}}}},
11
+ "lens": {"type": "string", "description": "Optional selected lens binding. Omission canonicalizes to the selected subject lens.", "enum": ["risk", "resilience", "readability", "reliability", "review-risk", "review-resilience", "review-readability", "review-reliability"]},
12
+ "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["location", "severity", "claim", "proof_refs"], "allOf": [{"if": {"properties": {"severity": {"enum": ["BLOCKER", "CRITICAL"]}}, "required": ["severity"]}, "then": {"required": ["evidence_class", "causal_disposition"]}}], "properties": {"id": {"type": "string", "pattern": "^R[1-4]-[A-Za-z0-9][A-Za-z0-9._-]*$", "description": "Optional explicit ID; omit it to receive a native-assigned ID. When present it must carry the prefix bound to the selected lens, not the selection order: review-risk=R1-, review-readability=R2-, review-reliability=R3-, review-resilience=R4-."}, "lens": {"type": "string", "enum": ["risk", "resilience", "readability", "reliability", "review-risk", "review-resilience", "review-readability", "review-reliability"]}, "location": {"type": "string", "description": "One canonical repository-relative path:line or inclusive path:start-end span.", "pattern": "^.+:[1-9][0-9]*(?:-[1-9][0-9]*)?$"}, "severity": {"type": "string", "enum": ["BLOCKER", "CRITICAL", "WARNING", "SUGGESTION"]}, "claim": {"type": "string", "minLength": 1}, "proof_refs": {"type": "array", "minItems": 1, "items": {"type": "string", "pattern": "\\S", "not": {"pattern": "^\\s*(?:[nN]/[aA]|[nN][aA]|[nN][oO][nN][eE]|[tT][oO][dD][oO]|[tT][bB][dD]|[pP][aA][sS][sS]|[pP][aA][sS][sS][eE][dD]|[sS][uU][cC][cC][eE][sS][sS]|[pP][lL][aA][cC][eE][hH][oO][lL][dD][eE][rR])\\s*$"}}}, "evidence_class": {"type": "string", "enum": ["deterministic", "inferential", "insufficient"]}, "causal_disposition": {"type": "string", "enum": ["introduced", "behavior-activated", "worsened", "pre-existing", "base-only", "unknown"]}}}},
13
+ "evidence": {"type": "array", "minItems": 1, "items": {"type": "string", "pattern": "\\S", "not": {"pattern": "^\\s*(?:[nN]/[aA]|[nN][aA]|[nN][oO][nN][eE]|[tT][oO][dD][oO]|[tT][bB][dD]|[pP][aA][sS][sS]|[pP][aA][sS][sS][eE][dD]|[sS][uU][cC][cC][eE][sS][sS]|[pP][lL][aA][cC][eE][hH][oO][lL][dD][eE][rR])\\s*$"}}}
14
+ },
15
+ "examples": [{"subject_hash": "sha256:0000000000000000000000000000000000000000000000000000000000000000", "inspection": {"status": "completed", "paths": ["internal/example.go"]}, "findings": [], "evidence": ["reviewed the complete candidate scope"]}]
16
+ }
@@ -0,0 +1 @@
1
+ {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://gentle-ai.dev/schema/review/refuter/v1","title":"Gentle AI refuter result","type":"object","additionalProperties":false,"required":["refuter_request_hash","results"],"properties":{"refuter_request_hash":{"$ref":"#/$defs/sha256"},"results":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["finding_id","outcome","proof_refs"],"properties":{"finding_id":{"type":"string"},"outcome":{"type":"string","enum":["corroborated","refuted","inconclusive"]},"proof_refs":{"type":"array","minItems":1,"items":{"type":"string","pattern":"\\S"}}}}}},"$defs":{"sha256":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"}},"examples":[{"refuter_request_hash":"sha256:0000000000000000000000000000000000000000000000000000000000000000","results":[]}]}
@@ -0,0 +1 @@
1
+ {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://gentle-ai.dev/schema/review/validator/v1","title":"Gentle AI targeted validator result","type":"object","additionalProperties":false,"required":["targeted_validation_request_hash","correction_target_identity","original_criteria","correction_regression","follow_ups"],"properties":{"targeted_validation_request_hash":{"$ref":"#/$defs/sha256"},"correction_target_identity":{"$ref":"#/$defs/sha256"},"original_criteria":{"$ref":"#/$defs/check"},"correction_regression":{"$ref":"#/$defs/check"},"follow_ups":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["observation","proof_refs"],"properties":{"observation":{"type":"string"},"proof_refs":{"type":"array","minItems":1,"items":{"type":"string","pattern":"\\S"}}}}}},"$defs":{"sha256":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"check":{"type":"object","additionalProperties":false,"required":["passed","evidence"],"properties":{"passed":{"type":"boolean"},"evidence":{"type":"array","minItems":1,"items":{"type":"string"}}}}},"examples":[{"targeted_validation_request_hash":"sha256:0000000000000000000000000000000000000000000000000000000000000000","correction_target_identity":"sha256:1111111111111111111111111111111111111111111111111111111111111111","original_criteria":{"passed":true,"evidence":["acceptance test passed"]},"correction_regression":{"passed":true,"evidence":["regression test passed"]},"follow_ups":[]}]}
@@ -0,0 +1 @@
1
+ {"subject_hash":"sha256:0000000000000000000000000000000000000000000000000000000000000000","inspection":{"status":"completed","paths":["internal/example.go"]},"findings":[],"evidence":["reviewed the complete candidate scope"]}
@@ -0,0 +1 @@
1
+ {"refuter_request_hash":"sha256:0000000000000000000000000000000000000000000000000000000000000000","results":[]}
@@ -0,0 +1 @@
1
+ {"targeted_validation_request_hash":"sha256:0000000000000000000000000000000000000000000000000000000000000000","correction_target_identity":"sha256:1111111111111111111111111111111111111111111111111111111111111111","original_criteria":{"passed":true,"evidence":["acceptance test passed"]},"correction_regression":{"passed":true,"evidence":["regression test passed"]},"follow_ups":[]}
@@ -50,7 +50,7 @@ async function writeWindowsSourceBinary(packageRoot: string): Promise<{ binaryPa
50
50
  method: "go-sumdb-source-build",
51
51
  package: "github.com/gentleman-programming/gentle-ai/v2/cmd/gentle-ai",
52
52
  module: "github.com/gentleman-programming/gentle-ai/v2",
53
- tag: "v2.2.2",
53
+ tag: "v2.4.0",
54
54
  architecture: process.arch === "x64" ? "x64" : "arm64",
55
55
  binarySha256: createHash("sha256").update(binary).digest("hex"),
56
56
  moduleChecksum: GENTLE_AI_WINDOWS_SOURCE_MODULE_CHECKSUM,