gentle-pi 1.0.6 → 1.1.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.
- package/README.md +26 -16
- package/assets/agents/jd-judge-a.md +1 -0
- package/assets/agents/jd-judge-b.md +1 -0
- package/assets/agents/review-readability.md +1 -0
- package/assets/agents/review-refuter.md +1 -0
- package/assets/agents/review-reliability.md +1 -0
- package/assets/agents/review-resilience.md +1 -0
- package/assets/agents/review-risk.md +1 -0
- package/assets/agents/review-validator.md +1 -0
- package/assets/orchestrator-delegation.md +9 -7
- package/assets/orchestrator.md +4 -4
- package/contracts/review-integration/v1/fixtures/capabilities-v1.1.fixture.json +194 -0
- package/contracts/review-integration/v1/fixtures/capabilities.fixture.json +186 -0
- package/contracts/review-integration/v1/fixtures/failure.fixture.json +47 -0
- package/contracts/review-integration/v1/fixtures/operation.fixture.json +12 -0
- package/contracts/review-integration/v1/fixtures/start.fixture.json +27 -0
- package/contracts/review-integration/v1/fixtures/status-ambiguous.fixture.json +32 -0
- package/contracts/review-integration/v1/fixtures/status-corrupted.fixture.json +29 -0
- package/contracts/review-integration/v1/fixtures/status-unrelated.fixture.json +29 -0
- package/contracts/review-integration/v1/fixtures/status.fixture.json +41 -0
- package/contracts/review-integration/v1/schemas/capabilities-v1.1.schema.json +222 -0
- package/contracts/review-integration/v1/schemas/capabilities.schema.json +221 -0
- package/contracts/review-integration/v1/schemas/failure.schema.json +117 -0
- package/contracts/review-integration/v1/schemas/operation.schema.json +65 -0
- package/contracts/review-integration/v1/schemas/projection.schema.json +44 -0
- package/contracts/review-integration/v1/schemas/result-artifact.schema.json +12 -0
- package/contracts/review-integration/v1/schemas/start.schema.json +100 -0
- package/contracts/review-integration/v1/schemas/status.schema.json +125 -0
- package/docs/review-integration.md +211 -0
- package/extensions/gentle-ai.ts +436 -50
- package/lib/gentle-ai-binary.ts +1 -1
- package/lib/git-commit-transaction.ts +796 -0
- package/lib/native-review-cli.ts +325 -5
- package/lib/review-authority-supersession.ts +3 -2
- package/lib/review-bundle.ts +2 -2
- package/lib/review-candidate-view.ts +138 -19
- package/lib/review-checkpoint.ts +2 -2
- package/lib/review-compact-store.ts +5 -3
- package/lib/review-integration-v1.ts +713 -0
- package/lib/review-lock.ts +15 -1
- package/lib/review-object-store.ts +2 -2
- package/lib/review-repository.ts +11 -9
- package/lib/review-reset.ts +5 -4
- package/lib/review-transaction.ts +1 -0
- package/package.json +7 -2
- package/runtime/gentle-ai-binary.mjs +91 -0
- package/runtime/git-commit-transaction.mjs +797 -0
- package/runtime/native-review-cli.mjs +1147 -0
- package/runtime/review-integration-v1.mjs +714 -0
- package/scripts/build-git-commit-transaction-runner.mjs +66 -0
- package/scripts/gentle-ai-installer.mjs +16 -8
- package/scripts/install-gentle-ai.mjs +2 -2
- package/scripts/run-git-commit-transaction.mjs +35 -0
- package/scripts/test-packed-runner.mjs +66 -0
- package/scripts/verify-package-files.mjs +80 -2
- package/skills/_shared/review-ledger-contract.md +5 -5
- package/skills/gentle-ai/SKILL.md +8 -8
- package/tests/gentle-ai-binary.test.ts +25 -18
- package/tests/gentle-ai-installer.test.ts +44 -19
- package/tests/git-commit-transaction.test.ts +179 -0
- package/tests/native-review-cli.test.ts +17 -7
- package/tests/native-review-integration-v1.test.ts +102 -0
- package/tests/native-review-parity-runtime.test.ts +30 -11
- package/tests/package-manifest.test.ts +34 -4
- package/tests/review-actor-tool-deny.test.ts +130 -0
- package/tests/review-authority-recovery-docs.test.ts +1 -1
- package/tests/review-authority-supersession.test.ts +3 -3
- package/tests/review-candidate-view.test.ts +61 -0
- package/tests/review-controller-native-routing.test.ts +406 -59
- package/tests/review-controller-workspace-root.test.ts +308 -0
- package/tests/review-controller.test.ts +3 -2
- package/tests/review-integration-v1.test.ts +510 -0
- package/tests/review-ledger-contract.test.ts +16 -12
- package/tests/review-lock.test.ts +52 -2
- package/tests/review-repository.test.ts +15 -1
- package/tests/runtime-harness.mjs +5 -0
- package/tests/sdd-agent-tools.test.ts +3 -1
package/README.md
CHANGED
|
@@ -58,7 +58,7 @@ Most coding-agent sessions fail for operational reasons, not model reasons:
|
|
|
58
58
|
| **Skill creation workflow** | Provides the `gentle-ai-skill-creator`/`gentle-ai-skill-improver` skills, `/skill-creation` prompt, and packaged style guide for LLM-first skills. |
|
|
59
59
|
| **Delivery skills** | Includes issue-first PRs, chained PRs, work-unit commits, cognitive docs, comment writing, and Judgment Day review. |
|
|
60
60
|
| **Bounded native review** | Freezes one candidate, dispatches only controller-selected lenses, records native authority, and reuses the same content-bound receipt at delivery gates. |
|
|
61
|
-
| **Verified native runtime** | Provisions the exact package-local Gentle AI v2.1.
|
|
61
|
+
| **Verified native runtime** | Provisions the exact package-local Gentle AI v2.1.8 binary, verifies pinned archive/binary integrity, negotiates `review-integration/v1`, and rejects PATH, global, sibling, symlink, and mode fallbacks. |
|
|
62
62
|
| **Runtime safety** | Blocks destructive shell commands, asks for confirmation for sensitive operations, and blocks direct read/write/edit access to sensitive paths. |
|
|
63
63
|
|
|
64
64
|
## Install
|
|
@@ -67,7 +67,7 @@ Most coding-agent sessions fail for operational reasons, not model reasons:
|
|
|
67
67
|
pi install npm:gentle-pi
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
The npm postinstall downloads the exact platform-specific official Gentle AI v2.1.
|
|
70
|
+
The npm postinstall downloads the exact platform-specific official Gentle AI v2.1.8 archive into this package's private `.gentle-ai/v2.1.8/` directory and verifies its pinned archive and executable SHA-256 values before extraction. It never uses `PATH` or a global `gentle-ai` installation. For development or offline installs only, set `GENTLE_PI_SKIP_GENTLE_AI_INSTALL=1`; native review operations then fail closed with an actionable `package-local-binary-missing` error until the package is reinstalled normally.
|
|
71
71
|
|
|
72
72
|
Recommended companion packages:
|
|
73
73
|
|
|
@@ -99,6 +99,8 @@ pi
|
|
|
99
99
|
/gentle:models Assign global model/effort routing to SDD/custom agents.
|
|
100
100
|
/gentle:persona Switch between gentleman and neutral persona modes.
|
|
101
101
|
/gentle:banner Configure startup rose, text logo, and color preset.
|
|
102
|
+
/gentle:commit-status Inspect an unresolved durable commit transaction.
|
|
103
|
+
/gentle:commit-abort Abandon safe recovery state without changing HEAD or the index.
|
|
102
104
|
```
|
|
103
105
|
|
|
104
106
|
Typical flow:
|
|
@@ -189,9 +191,9 @@ flowchart TD
|
|
|
189
191
|
D --> F
|
|
190
192
|
E --> F
|
|
191
193
|
F --> G["Independent verification"]
|
|
192
|
-
G --> H["
|
|
193
|
-
H -->|
|
|
194
|
-
H -->|
|
|
194
|
+
G --> H["Target-scoped native status"]
|
|
195
|
+
H -->|Ambiguous or corrupted| X["Blocked: native maintainer action"]
|
|
196
|
+
H -->|Unrelated| I["START freezes candidate, scope, tier, lenses, and budget"]
|
|
195
197
|
|
|
196
198
|
subgraph Ordinary_review["Ordinary bounded review"]
|
|
197
199
|
I --> R["reviewing"]
|
|
@@ -203,16 +205,17 @@ flowchart TD
|
|
|
203
205
|
C2 --> C3["Apply scoped fix"]
|
|
204
206
|
C3 --> V["validating"]
|
|
205
207
|
V -->|Validator passes| A1
|
|
206
|
-
|
|
207
|
-
V -->|Malformed, out of scope, or exhausted| E1["escalated"]
|
|
208
|
+
V -->|Fails, malformed, or out of scope| E1["escalated"]
|
|
208
209
|
end
|
|
209
210
|
|
|
210
211
|
A1 --> P["Receipt binds the exact candidate tree"]
|
|
211
212
|
P --> PC["Stage reviewed paths"]
|
|
212
|
-
PC --> G1{"
|
|
213
|
-
G1
|
|
214
|
-
|
|
215
|
-
|
|
213
|
+
PC --> G1{"durable commit transaction"}
|
|
214
|
+
G1 --> HK["Run effective pre-commit hook once"]
|
|
215
|
+
HK --> NV{"validate exact post-hook tree"}
|
|
216
|
+
NV -->|allow| CM["Commit through hook proxies and prove HEAD tree"]
|
|
217
|
+
NV -->|scope changed| N["Review post-hook tree; exact retry skips completed hook"]
|
|
218
|
+
NV -->|invalidated or escalated| X
|
|
216
219
|
CM --> G2{"pre-push validate"}
|
|
217
220
|
G2 -->|allow| PS["Push"]
|
|
218
221
|
G2 -->|deny| X
|
|
@@ -230,9 +233,13 @@ flowchart TD
|
|
|
230
233
|
|
|
231
234
|
Lifecycle gates never launch review actors. They rederive Git and publication targets, validate the existing receipt, and authorize one exact command. Any target drift, stale evidence, malformed authority, or unprovable state blocks delivery instead of silently reopening review.
|
|
232
235
|
|
|
233
|
-
Native contract pairing is exact: this adapter
|
|
236
|
+
Native contract pairing is exact: this adapter resolves only the integrity-verified package-local Gentle AI v2.1.8 executable, independently hashes it, then negotiates `gentle-ai.review-integration/v1` outside the repository. Capabilities are cached by that executable digest. Every START, target status, FINALIZE, validate, and BIND-SDD request passes the same contract identifier. Current protocol 1.0 envelopes decode exactly against the vendored schemas; optional additions require a future compatible schema/minor that the provider explicitly advertises and the consumer negotiates.
|
|
234
237
|
|
|
235
|
-
|
|
238
|
+
Target status owns `current_target`, `unrelated`, `ambiguous`, and `corrupted` applicability and returns one native action. Pi does not reconstruct ordinary authority from provider-private files or choose a lineage from repository-wide history. Restart recovery rebuilds only the derived candidate view from the native Git/content projection, including intended-untracked paths, symlinks, and immutable gitlink identities. Native failure envelopes retain their exact mutation outcome, replayability, required inputs, request digest, and next action. After an unknown or lost mutating result, Pi calls target status before any replay decision and returns only the provider-declared action.
|
|
239
|
+
|
|
240
|
+
Direct authorized `git commit` commands use a durable recovery record under the Git common directory. The package runs the effective pre-commit hook once, captures the post-hook index, performs final native validation against that tree, suppresses only the already-completed pre-commit hook while preserving message/post hooks through proxies, and proves `HEAD^{tree}` before the tool result succeeds. Any unresolved, interrupted, failed, or mismatched transaction blocks push, PR, and release. Recovery never resets HEAD or the index automatically.
|
|
241
|
+
|
|
242
|
+
Once v2.1.8 has written review authority, rollback MUST preserve every native store and receipt and MUST NOT run a downgraded binary against that repository. Disable the Pi route or roll forward to a compatible authority-aware release instead; deleting authority data or reinstalling an older binary is not a rollback path.
|
|
236
243
|
|
|
237
244
|
### FINALIZE wrapper input
|
|
238
245
|
|
|
@@ -268,13 +275,13 @@ Refuter proof may be independent concrete reproduction evidence; it does not nee
|
|
|
268
275
|
|
|
269
276
|
When native IDs are assigned to inferential findings, the first FINALIZE returns their canonical rows and a content-derived request hash without mutation; the second replays identical lens input with that hash and one complete refuter batch.
|
|
270
277
|
|
|
271
|
-
Ordinary permits
|
|
278
|
+
Ordinary permits one correction transaction within the original budget. FINALIZE requires a positive forecast before editing and derives actual correction lines from Git; one targeted validator and final verification close that transaction. Initial lenses are never rerun, while frozen findings and genesis scope remain unchanged.
|
|
272
279
|
|
|
273
280
|
The validator checks original criteria and correction regression only and cannot add scope or findings. Final evidence is hashed during FINALIZE, never at START.
|
|
274
281
|
|
|
275
282
|
Compact ordinary has five states: `reviewing`, `correction_required`, `validating`, `approved`, and `escalated`.
|
|
276
283
|
|
|
277
|
-
|
|
284
|
+
The validator cannot change claims, add findings, request fixes, launch actors, or request another attempt. A failed correction escalates instead of opening another review budget.
|
|
278
285
|
|
|
279
286
|
Compact authority uses content-derived CAS under the Git common directory. Exact retries are idempotent; stale/semantic retries, terminal mutation, and same-lineage graph-v1/compact-v2 ambiguity fail closed.
|
|
280
287
|
|
|
@@ -303,7 +310,7 @@ Dangerous-command safety remains independent and authoritative.
|
|
|
303
310
|
|
|
304
311
|
SDD completion adds no review or Judgment Day pass.
|
|
305
312
|
|
|
306
|
-
Review
|
|
313
|
+
Review operations, validation, and SDD perform no push, PR creation, release, or publication. The separate durable commit runner may create exactly one local commit only after final native pre-commit validation and post-commit tree proof.
|
|
307
314
|
|
|
308
315
|
`review-refuter` uses exactly `read`, `grep`, and `find` in a package-managed isolated installation. Project and user overrides may shadow the package asset; `gentle-pi` preserves those definitions and does not claim their effective permissions are package-compliant.
|
|
309
316
|
|
|
@@ -625,9 +632,12 @@ Memory contract for SDD delegation:
|
|
|
625
632
|
| ------------------------------ | ---------------------------------------------------------------------------------------------------------- |
|
|
626
633
|
| `extensions/gentle-ai.ts` | Injects identity, orchestrates native review authority and lifecycle gates, refreshes global SDD assets, registers commands, applies model/persona config, and enforces runtime safety. |
|
|
627
634
|
| `lib/native-review-cli.ts` | Strict package-local adapter for Gentle AI START, FINALIZE, VALIDATE, SDD binding, and status contracts. |
|
|
635
|
+
| `lib/review-integration-v1.ts` | Strict consumer decoder for negotiated capabilities, operations, target status, projections, and failures. |
|
|
636
|
+
| `lib/git-commit-transaction.ts` | Durable hook/native-validation/commit/recovery transaction with publication blocking and HEAD proof. |
|
|
628
637
|
| `lib/review-candidate-view.ts` | Builds immutable changed-scope actor views while preserving full-tree, path, mode, symlink, and index integrity. |
|
|
629
638
|
| `lib/gentle-ai-binary.ts` | Resolves and verifies the confined package-local Gentle AI runtime without global or PATH fallback. |
|
|
630
639
|
| `scripts/gentle-ai-installer.mjs` | Downloads, verifies, extracts, and atomically promotes the pinned native runtime for six platform targets. |
|
|
640
|
+
| `contracts/review-integration/v1/` | Exact v2.1.8 provider schemas and conformance fixtures, hash-checked before packaging. |
|
|
631
641
|
| `extensions/startup-banner.ts` | Shows and configures the startup intro, color presets, compact runtime panel, and collaboration credit. |
|
|
632
642
|
| `extensions/sdd-init.ts` | Registers `/sdd-init` for OpenSpec initialization. |
|
|
633
643
|
| `extensions/skill-registry.ts` | Maintains `.atl/skill-registry.md` from project/user skills and closes file watchers on shutdown. |
|
|
@@ -179,17 +179,19 @@ If multiple rows match, run the narrow set that covers the risk. Example: shell
|
|
|
179
179
|
|
|
180
180
|
### Compact Controller Routing
|
|
181
181
|
|
|
182
|
-
Call `gentle_review` INSPECT before START.
|
|
182
|
+
Call `gentle_review` INSPECT before START. INSPECT delegates to negotiated target-scoped native status. When applicability is `unrelated` and native action is `start`, new ordinary review uses compact v2:
|
|
183
183
|
|
|
184
184
|
```json
|
|
185
|
-
{"operation":"start","
|
|
185
|
+
{"operation":"start","input":"{\"mode\":\"ordinary\",\"policyPath\":\"<optional-repository-local-path>\"}"}
|
|
186
186
|
```
|
|
187
187
|
|
|
188
188
|
Use `start -> finalize -> validate` for ordinary review. START derives complete Git/untracked scope, lineage, tier, selected lenses, authored changed lines, and the correction budget. Use graph-v1 `judgment-day` only when explicitly selected.
|
|
189
189
|
|
|
190
|
-
When
|
|
190
|
+
When target status is `current_target`, follow its single native action. `ambiguous` requires native lineage selection and `corrupted` requires native authority repair; Pi never guesses, resets, quarantines, migrates, or creates a lineage implicitly. Legacy/Pi ordinary authority stays compatibility-read-only. A `blocked-legacy` result requires explicit authorization for its exact compatibility challenge. Destructive RESET/RECOVER exists only for that historical lane and requires exact fresh interactive authorization; it is never a normal-lane fallback.
|
|
191
191
|
|
|
192
|
-
|
|
192
|
+
Preserve the negotiated failure envelope exactly. `mutation_outcome: not_started` proves no mutation. For `unknown` or lost mutating output, the controller immediately calls target-scoped status and returns its exact action; it never emits a generic replay instruction. Replay the exact START or FINALIZE only when that provider result declares `exact_replay_safe` for the same canonical request and required lineage. Never choose a lineage merely because output was lost.
|
|
193
|
+
|
|
194
|
+
Before authority access, `mutation_outcome: not_started` means no lineage was created. In the historical lane only, RESET and RECOVER internally INSPECT and may proceed only after verified clean authority.
|
|
193
195
|
|
|
194
196
|
Ordinary review runs the selected zero, one, or four lenses exactly once against `initial_review_tree`.
|
|
195
197
|
|
|
@@ -205,13 +207,13 @@ Inferential blockers use exactly one complete read-only refuter batch.
|
|
|
205
207
|
|
|
206
208
|
Invalid, missing, duplicate, unknown, or inconclusive refuter output escalates without a replacement refuter.
|
|
207
209
|
|
|
208
|
-
Ordinary permits
|
|
210
|
+
Ordinary permits one correction transaction within the original budget. FINALIZE requires a positive pre-edit forecast and accounts Git-derived actual lines. After the bounded edit, run one targeted validator and final verification; failure escalates without another correction or review budget.
|
|
209
211
|
|
|
210
|
-
Initial lenses never rerun.
|
|
212
|
+
Initial lenses never rerun. The correction preserves frozen findings and genesis scope: the original candidate, paths, untracked set, and correction IDs. Targeted validation checks original criteria and correction regression only and adds no scope.
|
|
211
213
|
|
|
212
214
|
Final evidence is hashed during FINALIZE, not supplied at START.
|
|
213
215
|
|
|
214
|
-
|
|
216
|
+
The validator cannot change claims, add findings, request fixes, launch actors, or request another attempt.
|
|
215
217
|
|
|
216
218
|
Compact ordinary uses only `reviewing`, `correction_required`, `validating`, `approved`, and `escalated`.
|
|
217
219
|
|
package/assets/orchestrator.md
CHANGED
|
@@ -59,7 +59,7 @@ Mandatory Delegation Triggers — stop rules; once fired, delegate through the b
|
|
|
59
59
|
|
|
60
60
|
1. **4-file rule** — 4+ files to understand → delegate a scout/mapping task.
|
|
61
61
|
2. **Multi-file write rule** — 2+ non-trivial files touched → delegate one writer.
|
|
62
|
-
3. **Lifecycle gate rule** — commit/push/PR/release validates
|
|
62
|
+
3. **Lifecycle gate rule** — commit/push/PR/release validates one receipt and exact target with zero actors. Direct commit uses the durable native-validated transaction; unresolved state blocks publication. Changed authority fails closed.
|
|
63
63
|
4. **Incident rule** — diagnose wrong cwd/worktree/git/tooling incidents separately. An incident never reopens a closed review lineage or resets its budget.
|
|
64
64
|
5. **Verification rule** — executing/delegating verification commands → `gentle-ai-verify`; only the 1-3-file read-only check stays inline.
|
|
65
65
|
6. **Long-session rule** — ~20 tool calls, 5 exploratory reads, or 2 non-mechanical edits without delegation → pause and delegate.
|
|
@@ -108,9 +108,9 @@ For skill-shaped requests, do not treat injected `<available_skills>` as complet
|
|
|
108
108
|
|
|
109
109
|
## Bounded Review Transactions
|
|
110
110
|
|
|
111
|
-
New ordinary review uses `gentle_review` `start -> finalize -> validate`. START freezes scope, findings,
|
|
111
|
+
New ordinary review uses negotiated v1 `gentle_review` `start -> finalize -> validate`. Target status owns one action. START freezes scope, findings, risk, and budget. FINALIZE permits one correction; failure escalates.
|
|
112
112
|
|
|
113
|
-
Compact gates use zero actors and rederive authority,
|
|
113
|
+
Compact gates use zero actors and rederive authority, target, and evidence. Pi adds one-shot authorization. Legacy authority is read-only; Judgment Day is separate.
|
|
114
114
|
Release from protected `main` may bypass receipt validation only when its immutable remote SHA and required CI are proven; otherwise native receipt validation applies.
|
|
115
115
|
Major and post-incident releases require explicit extraordinary review even when fast-path checks pass.
|
|
116
116
|
|
|
@@ -118,6 +118,6 @@ Dangerous-command safety remains independent and authoritative.
|
|
|
118
118
|
|
|
119
119
|
SDD completion adds no review or Judgment Day pass.
|
|
120
120
|
|
|
121
|
-
Review
|
|
121
|
+
Review/SDD never publish. The durable transaction may create one local commit after native validation and HEAD proof.
|
|
122
122
|
|
|
123
123
|
Controller and actor contract: `{{GENTLE_PI_DELEGATION_PATH}}`.
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "gentle-ai.review-integration.capabilities/v1.1",
|
|
3
|
+
"contract": "gentle-ai.review-integration/v1",
|
|
4
|
+
"protocol": {
|
|
5
|
+
"major": 1,
|
|
6
|
+
"minor": 1
|
|
7
|
+
},
|
|
8
|
+
"package": {
|
|
9
|
+
"name": "gentle-ai",
|
|
10
|
+
"version": "2.1.7-test",
|
|
11
|
+
"release_channel": "prerelease"
|
|
12
|
+
},
|
|
13
|
+
"build": {
|
|
14
|
+
"id": "sha256:444a9f0608eb22c4697fd2092f3afcfab040c0918343e7e04087730fd33fd5e1",
|
|
15
|
+
"go_version": "go1.25.10",
|
|
16
|
+
"module_version": "v2.1.7",
|
|
17
|
+
"vcs": "git",
|
|
18
|
+
"vcs_revision": "0123456789abcdef0123456789abcdef01234567",
|
|
19
|
+
"vcs_time": "2026-07-15T18:00:00Z",
|
|
20
|
+
"vcs_modified": "false"
|
|
21
|
+
},
|
|
22
|
+
"executable": {
|
|
23
|
+
"sha256": "sha256:dcc846103b16d365eaeeb9d7f289c23fc4f2897f23def1cb3fe7f05557b64705",
|
|
24
|
+
"evidence": "self-reported",
|
|
25
|
+
"verification": "compare-with-published-manifest"
|
|
26
|
+
},
|
|
27
|
+
"operations": [
|
|
28
|
+
"review.bind_sdd",
|
|
29
|
+
"review.capabilities",
|
|
30
|
+
"review.finalize",
|
|
31
|
+
"review.start",
|
|
32
|
+
"review.status",
|
|
33
|
+
"review.validate"
|
|
34
|
+
],
|
|
35
|
+
"gates": [
|
|
36
|
+
"post-apply",
|
|
37
|
+
"pre-commit",
|
|
38
|
+
"pre-push",
|
|
39
|
+
"pre-pr",
|
|
40
|
+
"release"
|
|
41
|
+
],
|
|
42
|
+
"projections": [
|
|
43
|
+
"staged",
|
|
44
|
+
"workspace"
|
|
45
|
+
],
|
|
46
|
+
"schemas": [
|
|
47
|
+
"gentle-ai.review-authority-status/v1",
|
|
48
|
+
"gentle-ai.review-gate-request/v1",
|
|
49
|
+
"gentle-ai.review-integration.capabilities/v1.1",
|
|
50
|
+
"gentle-ai.review-integration.failure/v1",
|
|
51
|
+
"gentle-ai.review-integration.operation/v1",
|
|
52
|
+
"gentle-ai.review-integration.projection/v1",
|
|
53
|
+
"gentle-ai.review-integration.start/v1",
|
|
54
|
+
"gentle-ai.review-integration.status/v1",
|
|
55
|
+
"gentle-ai.review-receipt/v1",
|
|
56
|
+
"gentle-ai.review-receipt/v2",
|
|
57
|
+
"gentle-ai.review-result-artifact/v1",
|
|
58
|
+
"https://gentle-ai.dev/schema/review/refuter/v1",
|
|
59
|
+
"https://gentle-ai.dev/schema/review/reviewer/v1",
|
|
60
|
+
"https://gentle-ai.dev/schema/review/validator/v1"
|
|
61
|
+
],
|
|
62
|
+
"features": {
|
|
63
|
+
"mandatory": [
|
|
64
|
+
{
|
|
65
|
+
"name": "compact_v2_authority",
|
|
66
|
+
"supported": true,
|
|
67
|
+
"requires": []
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "exact_receipt_replay",
|
|
71
|
+
"supported": true,
|
|
72
|
+
"requires": [
|
|
73
|
+
"compact_v2_authority"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "five_delivery_gates",
|
|
78
|
+
"supported": true,
|
|
79
|
+
"requires": [
|
|
80
|
+
"compact_v2_authority"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "immutable_snapshot",
|
|
85
|
+
"supported": true,
|
|
86
|
+
"requires": []
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "legacy_v1_target_scoped_read_only",
|
|
90
|
+
"supported": true,
|
|
91
|
+
"requires": [
|
|
92
|
+
"target_scoped_status"
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"name": "repository_independent_capabilities",
|
|
97
|
+
"supported": true,
|
|
98
|
+
"requires": []
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"name": "restart_safe_projection",
|
|
102
|
+
"supported": true,
|
|
103
|
+
"requires": [
|
|
104
|
+
"target_scoped_status"
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"name": "sdd_receipt_binding",
|
|
109
|
+
"supported": true,
|
|
110
|
+
"requires": [
|
|
111
|
+
"compact_v2_authority"
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"name": "target_scoped_status",
|
|
116
|
+
"supported": true,
|
|
117
|
+
"requires": [
|
|
118
|
+
"repository_independent_capabilities"
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"name": "uniform_failure_envelope",
|
|
123
|
+
"supported": true,
|
|
124
|
+
"requires": [
|
|
125
|
+
"repository_independent_capabilities"
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
"optional": [
|
|
130
|
+
{
|
|
131
|
+
"name": "base_ref_workspace_overlay",
|
|
132
|
+
"supported": true,
|
|
133
|
+
"requires": [
|
|
134
|
+
"immutable_snapshot",
|
|
135
|
+
"restart_safe_projection"
|
|
136
|
+
]
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"name": "bounded_process_waits",
|
|
140
|
+
"supported": true,
|
|
141
|
+
"requires": [
|
|
142
|
+
"uniform_failure_envelope"
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"name": "exact_gate_receipt_discovery",
|
|
147
|
+
"supported": true,
|
|
148
|
+
"requires": [
|
|
149
|
+
"five_delivery_gates"
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"name": "native_low_risk_verification",
|
|
154
|
+
"supported": true,
|
|
155
|
+
"requires": [
|
|
156
|
+
"compact_v2_authority"
|
|
157
|
+
]
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"name": "risk_reasons",
|
|
161
|
+
"supported": true,
|
|
162
|
+
"requires": [
|
|
163
|
+
"repository_independent_capabilities"
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "scope_change_diagnostics",
|
|
168
|
+
"supported": true,
|
|
169
|
+
"requires": [
|
|
170
|
+
"uniform_failure_envelope"
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
"compatibility": {
|
|
176
|
+
"minimum_protocol_major": 1,
|
|
177
|
+
"maximum_protocol_major": 1,
|
|
178
|
+
"additive_minor_policy": "optional-fields-only",
|
|
179
|
+
"unknown_mandatory": "reject",
|
|
180
|
+
"unknown_optional": "ignore",
|
|
181
|
+
"modes": [
|
|
182
|
+
"compact-v2",
|
|
183
|
+
"legacy-v1"
|
|
184
|
+
],
|
|
185
|
+
"legacy_window": {
|
|
186
|
+
"mode": "legacy-v1",
|
|
187
|
+
"state": "active",
|
|
188
|
+
"read_only": true,
|
|
189
|
+
"deprecation_started": true,
|
|
190
|
+
"removal": "not-scheduled",
|
|
191
|
+
"minimum_compatibility_releases": 1
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "gentle-ai.review-integration.capabilities/v1",
|
|
3
|
+
"contract": "gentle-ai.review-integration/v1",
|
|
4
|
+
"protocol": {
|
|
5
|
+
"major": 1,
|
|
6
|
+
"minor": 0
|
|
7
|
+
},
|
|
8
|
+
"package": {
|
|
9
|
+
"name": "gentle-ai",
|
|
10
|
+
"version": "2.1.7-test",
|
|
11
|
+
"release_channel": "prerelease"
|
|
12
|
+
},
|
|
13
|
+
"build": {
|
|
14
|
+
"id": "sha256:444a9f0608eb22c4697fd2092f3afcfab040c0918343e7e04087730fd33fd5e1",
|
|
15
|
+
"go_version": "go1.25.10",
|
|
16
|
+
"module_version": "v2.1.7",
|
|
17
|
+
"vcs": "git",
|
|
18
|
+
"vcs_revision": "0123456789abcdef0123456789abcdef01234567",
|
|
19
|
+
"vcs_time": "2026-07-15T18:00:00Z",
|
|
20
|
+
"vcs_modified": "false"
|
|
21
|
+
},
|
|
22
|
+
"executable": {
|
|
23
|
+
"sha256": "sha256:dcc846103b16d365eaeeb9d7f289c23fc4f2897f23def1cb3fe7f05557b64705",
|
|
24
|
+
"evidence": "self-reported",
|
|
25
|
+
"verification": "compare-with-published-manifest"
|
|
26
|
+
},
|
|
27
|
+
"operations": [
|
|
28
|
+
"review.bind_sdd",
|
|
29
|
+
"review.capabilities",
|
|
30
|
+
"review.finalize",
|
|
31
|
+
"review.start",
|
|
32
|
+
"review.status",
|
|
33
|
+
"review.validate"
|
|
34
|
+
],
|
|
35
|
+
"gates": [
|
|
36
|
+
"post-apply",
|
|
37
|
+
"pre-commit",
|
|
38
|
+
"pre-push",
|
|
39
|
+
"pre-pr",
|
|
40
|
+
"release"
|
|
41
|
+
],
|
|
42
|
+
"projections": [
|
|
43
|
+
"staged",
|
|
44
|
+
"workspace"
|
|
45
|
+
],
|
|
46
|
+
"schemas": [
|
|
47
|
+
"gentle-ai.review-authority-status/v1",
|
|
48
|
+
"gentle-ai.review-gate-request/v1",
|
|
49
|
+
"gentle-ai.review-integration.capabilities/v1",
|
|
50
|
+
"gentle-ai.review-integration.failure/v1",
|
|
51
|
+
"gentle-ai.review-integration.operation/v1",
|
|
52
|
+
"gentle-ai.review-integration.projection/v1",
|
|
53
|
+
"gentle-ai.review-integration.start/v1",
|
|
54
|
+
"gentle-ai.review-integration.status/v1",
|
|
55
|
+
"gentle-ai.review-receipt/v1",
|
|
56
|
+
"gentle-ai.review-receipt/v2",
|
|
57
|
+
"gentle-ai.review-result-artifact/v1",
|
|
58
|
+
"https://gentle-ai.dev/schema/review/refuter/v1",
|
|
59
|
+
"https://gentle-ai.dev/schema/review/reviewer/v1",
|
|
60
|
+
"https://gentle-ai.dev/schema/review/validator/v1"
|
|
61
|
+
],
|
|
62
|
+
"features": {
|
|
63
|
+
"mandatory": [
|
|
64
|
+
{
|
|
65
|
+
"name": "compact_v2_authority",
|
|
66
|
+
"supported": true,
|
|
67
|
+
"requires": []
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "exact_receipt_replay",
|
|
71
|
+
"supported": true,
|
|
72
|
+
"requires": [
|
|
73
|
+
"compact_v2_authority"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "five_delivery_gates",
|
|
78
|
+
"supported": true,
|
|
79
|
+
"requires": [
|
|
80
|
+
"compact_v2_authority"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "immutable_snapshot",
|
|
85
|
+
"supported": true,
|
|
86
|
+
"requires": []
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "legacy_v1_target_scoped_read_only",
|
|
90
|
+
"supported": true,
|
|
91
|
+
"requires": [
|
|
92
|
+
"target_scoped_status"
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"name": "repository_independent_capabilities",
|
|
97
|
+
"supported": true,
|
|
98
|
+
"requires": []
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"name": "restart_safe_projection",
|
|
102
|
+
"supported": true,
|
|
103
|
+
"requires": [
|
|
104
|
+
"target_scoped_status"
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"name": "sdd_receipt_binding",
|
|
109
|
+
"supported": true,
|
|
110
|
+
"requires": [
|
|
111
|
+
"compact_v2_authority"
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"name": "target_scoped_status",
|
|
116
|
+
"supported": true,
|
|
117
|
+
"requires": [
|
|
118
|
+
"repository_independent_capabilities"
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"name": "uniform_failure_envelope",
|
|
123
|
+
"supported": true,
|
|
124
|
+
"requires": [
|
|
125
|
+
"repository_independent_capabilities"
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
"optional": [
|
|
130
|
+
{
|
|
131
|
+
"name": "bounded_process_waits",
|
|
132
|
+
"supported": true,
|
|
133
|
+
"requires": [
|
|
134
|
+
"uniform_failure_envelope"
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"name": "exact_gate_receipt_discovery",
|
|
139
|
+
"supported": true,
|
|
140
|
+
"requires": [
|
|
141
|
+
"five_delivery_gates"
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"name": "native_low_risk_verification",
|
|
146
|
+
"supported": true,
|
|
147
|
+
"requires": [
|
|
148
|
+
"compact_v2_authority"
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"name": "risk_reasons",
|
|
153
|
+
"supported": true,
|
|
154
|
+
"requires": [
|
|
155
|
+
"repository_independent_capabilities"
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"name": "scope_change_diagnostics",
|
|
160
|
+
"supported": true,
|
|
161
|
+
"requires": [
|
|
162
|
+
"uniform_failure_envelope"
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
"compatibility": {
|
|
168
|
+
"minimum_protocol_major": 1,
|
|
169
|
+
"maximum_protocol_major": 1,
|
|
170
|
+
"additive_minor_policy": "optional-fields-only",
|
|
171
|
+
"unknown_mandatory": "reject",
|
|
172
|
+
"unknown_optional": "ignore",
|
|
173
|
+
"modes": [
|
|
174
|
+
"compact-v2",
|
|
175
|
+
"legacy-v1"
|
|
176
|
+
],
|
|
177
|
+
"legacy_window": {
|
|
178
|
+
"mode": "legacy-v1",
|
|
179
|
+
"state": "active",
|
|
180
|
+
"read_only": true,
|
|
181
|
+
"deprecation_started": true,
|
|
182
|
+
"removal": "not-scheduled",
|
|
183
|
+
"minimum_compatibility_releases": 1
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|