gentle-pi 1.2.0 → 2.0.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 (107) hide show
  1. package/README.md +40 -9
  2. package/assets/agents/review-readability.md +0 -1
  3. package/assets/agents/review-reliability.md +0 -1
  4. package/assets/agents/review-resilience.md +0 -1
  5. package/assets/agents/review-risk.md +0 -1
  6. package/contracts/review-integration/v1/fixtures/binding-revision-conflict.fixture.json +25 -0
  7. package/contracts/review-integration/v1/fixtures/capabilities-v1.2.fixture.json +263 -0
  8. package/contracts/review-integration/v1/fixtures/capabilities-v1.3.fixture.json +301 -0
  9. package/contracts/review-integration/v1/fixtures/capabilities-v1.4.fixture.json +312 -0
  10. package/contracts/review-integration/v1/fixtures/capabilities-v1.5.fixture.json +321 -0
  11. package/contracts/review-integration/v1/fixtures/consent.fixture.json +36 -0
  12. package/contracts/review-integration/v1/fixtures/final-verification-incident.fixture.json +1 -0
  13. package/contracts/review-integration/v1/fixtures/operation.fixture.json +4 -0
  14. package/contracts/review-integration/v1/fixtures/repair-preflight.fixture.json +54 -0
  15. package/contracts/review-integration/v1/fixtures/start-v2.fixture.json +97 -0
  16. package/contracts/review-integration/v1/fixtures/start.fixture.json +25 -1
  17. package/contracts/review-integration/v1/fixtures/status-ambiguous.fixture.json +4 -0
  18. package/contracts/review-integration/v1/fixtures/status-corrupted.fixture.json +4 -0
  19. package/contracts/review-integration/v1/fixtures/status-recover.fixture.json +4 -0
  20. package/contracts/review-integration/v1/fixtures/status-unrelated.fixture.json +4 -0
  21. package/contracts/review-integration/v1/fixtures/status-v2-ambiguous.fixture.json +110 -0
  22. package/contracts/review-integration/v1/fixtures/status-v2-corrupted.fixture.json +107 -0
  23. package/contracts/review-integration/v1/fixtures/status-v2-final-verification-retry.fixture.json +192 -0
  24. package/contracts/review-integration/v1/fixtures/status-v2-recover.fixture.json +130 -0
  25. package/contracts/review-integration/v1/fixtures/status-v2-repair.fixture.json +161 -0
  26. package/contracts/review-integration/v1/fixtures/status-v2-unrelated.fixture.json +103 -0
  27. package/contracts/review-integration/v1/fixtures/status-v2.fixture.json +193 -0
  28. package/contracts/review-integration/v1/fixtures/status.fixture.json +19 -5
  29. package/contracts/review-integration/v1/fixtures/verification-evidence.fixture.json +1 -0
  30. package/contracts/review-integration/v1/schemas/admitted-result.schema.json +35 -0
  31. package/contracts/review-integration/v1/schemas/artifact-subject.schema.json +33 -0
  32. package/contracts/review-integration/v1/schemas/authority-repair-assessment.schema.json +247 -0
  33. package/contracts/review-integration/v1/schemas/capabilities-v1.2.schema.json +249 -0
  34. package/contracts/review-integration/v1/schemas/capabilities-v1.3.schema.json +429 -0
  35. package/contracts/review-integration/v1/schemas/capabilities-v1.4.schema.json +432 -0
  36. package/contracts/review-integration/v1/schemas/capabilities-v1.5.schema.json +154 -0
  37. package/contracts/review-integration/v1/schemas/consent.schema.json +86 -0
  38. package/contracts/review-integration/v1/schemas/failure.schema.json +54 -8
  39. package/contracts/review-integration/v1/schemas/final-verification-incident.schema.json +51 -0
  40. package/contracts/review-integration/v1/schemas/operation.schema.json +204 -31
  41. package/contracts/review-integration/v1/schemas/repair.schema.json +251 -0
  42. package/contracts/review-integration/v1/schemas/result-artifact-v2.schema.json +38 -0
  43. package/contracts/review-integration/v1/schemas/start-v2.schema.json +216 -0
  44. package/contracts/review-integration/v1/schemas/start.schema.json +79 -3
  45. package/contracts/review-integration/v1/schemas/status-v2.schema.json +313 -0
  46. package/contracts/review-integration/v1/schemas/status.schema.json +37 -10
  47. package/contracts/review-integration/v1/schemas/targeted-validation-request.schema.json +46 -0
  48. package/contracts/review-integration/v1/schemas/verification-evidence.schema.json +64 -0
  49. package/contracts/review-integration/v2/fixtures/capabilities.fixture.json +111 -0
  50. package/contracts/review-integration/v2/fixtures/consent.fixture.json +36 -0
  51. package/contracts/review-integration/v2/fixtures/start.fixture.json +93 -0
  52. package/contracts/review-integration/v2/fixtures/status.fixture.json +113 -0
  53. package/contracts/review-integration/v2/schemas/admitted-result.schema.json +14 -0
  54. package/contracts/review-integration/v2/schemas/artifact-subject.schema.json +36 -0
  55. package/contracts/review-integration/v2/schemas/capabilities.schema.json +111 -0
  56. package/contracts/review-integration/v2/schemas/consent.schema.json +70 -0
  57. package/contracts/review-integration/v2/schemas/failure.schema.json +35 -0
  58. package/contracts/review-integration/v2/schemas/operation.schema.json +46 -0
  59. package/contracts/review-integration/v2/schemas/repair.schema.json +22 -0
  60. package/contracts/review-integration/v2/schemas/start.schema.json +106 -0
  61. package/contracts/review-integration/v2/schemas/status.schema.json +104 -0
  62. package/docs/native-authority-architecture.md +18 -3
  63. package/docs/review-integration.md +175 -27
  64. package/extensions/gentle-ai.ts +414 -19
  65. package/lib/gentle-ai-binary.ts +1 -1
  66. package/lib/native-review-cli.ts +679 -57
  67. package/lib/review-candidate-view.ts +131 -1
  68. package/lib/review-compact-contract.ts +12 -3
  69. package/lib/review-consent-latch.ts +51 -0
  70. package/lib/review-correction-lifecycle.ts +170 -0
  71. package/lib/review-integration-v2.ts +1563 -0
  72. package/package.json +15 -11
  73. package/runtime/gentle-ai-binary.mjs +1 -1
  74. package/runtime/native-review-cli.mjs +663 -41
  75. package/runtime/review-integration-v2.mjs +1564 -0
  76. package/scripts/build-git-commit-transaction-runner.mjs +1 -1
  77. package/scripts/gentle-ai-installer.mjs +16 -11
  78. package/scripts/install-gentle-ai.mjs +7 -3
  79. package/scripts/test-packed-runner.mjs +2 -2
  80. package/scripts/verify-package-files.mjs +216 -64
  81. package/skills/release/SKILL.md +38 -11
  82. package/tests/devbinary/native-review-parity.devtest.ts +348 -0
  83. package/tests/gentle-ai-binary.test.ts +8 -1
  84. package/tests/gentle-ai-installer.test.ts +24 -21
  85. package/tests/native-binary-gate.test.ts +145 -0
  86. package/tests/native-review-capability-contract.test.ts +87 -0
  87. package/tests/native-review-cli.test.ts +44 -1
  88. package/tests/native-review-parity-runtime.test.ts +70 -23
  89. package/tests/native-review-parity.test.ts +673 -0
  90. package/tests/native-risk-evidence-parity.test.ts +91 -0
  91. package/tests/package-manifest.test.ts +72 -7
  92. package/tests/review-actor-tool-deny.test.ts +20 -5
  93. package/tests/review-candidate-view.test.ts +331 -1
  94. package/tests/review-compact-contract.test.ts +5 -0
  95. package/tests/review-consent-latch.test.ts +67 -0
  96. package/tests/review-controller-native-recovery.test.ts +180 -5
  97. package/tests/review-controller-native-routing.test.ts +385 -12
  98. package/tests/review-controller-workspace-root.test.ts +26 -6
  99. package/tests/review-correction-lifecycle.test.ts +174 -0
  100. package/tests/review-integration-v2.test.ts +539 -0
  101. package/tests/runtime-harness.mjs +187 -0
  102. package/tests/support/native-binary-gate.ts +86 -0
  103. package/tests/verify-package-files.test.ts +119 -0
  104. package/lib/review-integration-v1.ts +0 -795
  105. package/runtime/review-integration-v1.mjs +0 -796
  106. package/tests/native-review-integration-v1.test.ts +0 -102
  107. package/tests/review-integration-v1.test.ts +0 -530
@@ -0,0 +1,111 @@
1
+ {
2
+ "schema": "gentle-ai.review-integration.capabilities/v2",
3
+ "contract": "gentle-ai.review-integration/v2",
4
+ "protocol": {"major": 2, "minor": 0},
5
+ "package": {"name": "gentle-ai", "version": "2.1.7-test", "release_channel": "prerelease"},
6
+ "build": {
7
+ "id": "sha256:444a9f0608eb22c4697fd2092f3afcfab040c0918343e7e04087730fd33fd5e1",
8
+ "go_version": "go1.25.10",
9
+ "module_version": "v2.1.7",
10
+ "vcs": "git",
11
+ "vcs_revision": "0123456789abcdef0123456789abcdef01234567",
12
+ "vcs_time": "2026-07-15T18:00:00Z",
13
+ "vcs_modified": "false"
14
+ },
15
+ "executable": {
16
+ "sha256": "sha256:dcc846103b16d365eaeeb9d7f289c23fc4f2897f23def1cb3fe7f05557b64705",
17
+ "evidence": "self-reported",
18
+ "verification": "compare-with-published-manifest"
19
+ },
20
+ "operations": [
21
+ "review.bind_sdd", "review.capabilities", "review.finalize", "review.repair",
22
+ "review.retry_final_verification", "review.start", "review.status", "review.validate"
23
+ ],
24
+ "gates": ["post-apply", "pre-commit", "pre-push", "pre-pr", "release"],
25
+ "projections": ["staged", "workspace"],
26
+ "schemas": [
27
+ "gentle-ai.review-admitted-result/v2",
28
+ "gentle-ai.review-artifact-subject/v2",
29
+ "gentle-ai.review-authority-repair-assessment/v1",
30
+ "gentle-ai.review-authority-status/v1",
31
+ "gentle-ai.review-gate-request/v1",
32
+ "gentle-ai.review-integration.capabilities/v2",
33
+ "gentle-ai.review-integration.failure/v2",
34
+ "gentle-ai.review-final-verification-incident/v1",
35
+ "gentle-ai.review-integration.operation/v2",
36
+ "gentle-ai.review-integration.projection/v1",
37
+ "gentle-ai.review-integration.repair/v2",
38
+ "gentle-ai.review-integration.start/v3",
39
+ "gentle-ai.review-integration.status/v3",
40
+ "gentle-ai.review-receipt/v1",
41
+ "gentle-ai.review-receipt/v2",
42
+ "gentle-ai.review-result-artifact/v2",
43
+ "gentle-ai.review-targeted-validation-request/v1",
44
+ "gentle-ai.review-verification-evidence/v2",
45
+ "https://gentle-ai.dev/schema/review/refuter/v1",
46
+ "https://gentle-ai.dev/schema/review/reviewer/v1",
47
+ "https://gentle-ai.dev/schema/review/validator/v1",
48
+ "gentle-ai.review-integration.consent/v2"
49
+ ],
50
+ "features": {
51
+ "mandatory": [
52
+ {"name": "compact_v2_authority", "supported": true, "requires": []},
53
+ {"name": "exact_receipt_replay", "supported": true, "requires": ["compact_v2_authority"]},
54
+ {"name": "five_delivery_gates", "supported": true, "requires": ["compact_v2_authority"]},
55
+ {"name": "immutable_snapshot", "supported": true, "requires": []},
56
+ {"name": "legacy_v1_target_scoped_read_only", "supported": true, "requires": ["target_scoped_status"]},
57
+ {"name": "repository_independent_capabilities", "supported": true, "requires": []},
58
+ {"name": "restart_safe_projection", "supported": true, "requires": ["target_scoped_status"]},
59
+ {"name": "sdd_receipt_binding", "supported": true, "requires": ["compact_v2_authority"]},
60
+ {"name": "target_scoped_status", "supported": true, "requires": ["repository_independent_capabilities"]},
61
+ {"name": "uniform_failure_envelope", "supported": true, "requires": ["repository_independent_capabilities"]}
62
+ ],
63
+ "optional": [
64
+ {"name": "base_ref_workspace_overlay", "supported": true, "requires": ["immutable_snapshot", "restart_safe_projection"]},
65
+ {"name": "bounded_process_waits", "supported": true, "requires": ["uniform_failure_envelope"]},
66
+ {"name": "classified_authority_repair", "supported": true, "requires": ["native_next_transition", "uniform_failure_envelope"]},
67
+ {"name": "exact_gate_receipt_discovery", "supported": true, "requires": ["five_delivery_gates"]},
68
+ {"name": "native_frozen_candidate_context", "supported": true, "requires": ["immutable_snapshot"]},
69
+ {"name": "native_low_risk_verification", "supported": true, "requires": ["compact_v2_authority"]},
70
+ {"name": "native_next_transition", "supported": true, "requires": ["target_scoped_status"]},
71
+ {"name": "one_shot_final_verification_retry", "supported": true, "requires": ["compact_v2_authority", "exact_receipt_replay", "native_next_transition"]},
72
+ {"name": "opaque_repository_context", "supported": true, "requires": ["compact_v2_authority", "native_next_transition"]},
73
+ {"name": "outcome_bound_verification_evidence", "supported": true, "requires": ["compact_v2_authority", "native_next_transition"]},
74
+ {"name": "provider_artifact_admission", "supported": true, "requires": ["compact_v2_authority", "native_frozen_candidate_context", "opaque_repository_context"]},
75
+ {"name": "provider_targeted_validation_request", "supported": true, "requires": ["compact_v2_authority", "native_next_transition"]},
76
+ {"name": "recovered_correction_evidence", "supported": true, "requires": ["compact_v2_authority", "provider_targeted_validation_request"]},
77
+ {"name": "risk_reasons", "supported": true, "requires": ["repository_independent_capabilities"]},
78
+ {"name": "scope_change_diagnostics", "supported": true, "requires": ["uniform_failure_envelope"]},
79
+ {"name": "validating_result_reopen", "supported": true, "requires": ["compact_v2_authority", "provider_artifact_admission"]},
80
+ {"name": "provider_bound_native_git_context", "supported": true, "requires": ["native_frozen_candidate_context", "opaque_repository_context", "provider_artifact_admission"]}
81
+ ]
82
+ },
83
+ "bootstrap": {
84
+ "command": "gentle-ai review status --cwd \u003crepo\u003e --contract gentle-ai.review-integration/v2 --next-transition",
85
+ "target_selector_variants": [
86
+ {"target_type": "staged", "arguments": ["--projection", "staged"]},
87
+ {"target_type": "base_ref", "arguments": ["--base-ref", "\u003cref\u003e"]},
88
+ {"target_type": "workspace_overlay_base_ref", "arguments": ["--workspace-overlay", "--base-ref", "\u003cref\u003e"]},
89
+ {"target_type": "workspace_overlay_base_tree", "arguments": ["--workspace-overlay", "--base-tree", "\u003ctree\u003e"]}
90
+ ],
91
+ "required_feature": "native_next_transition",
92
+ "unsupported_outcome": "unsupported-capability",
93
+ "parent_only": true
94
+ },
95
+ "compatibility": {
96
+ "minimum_protocol_major": 2,
97
+ "maximum_protocol_major": 2,
98
+ "additive_minor_policy": "optional-fields-only",
99
+ "unknown_mandatory": "reject",
100
+ "unknown_optional": "ignore",
101
+ "modes": ["compact-v2", "legacy-v1"],
102
+ "legacy_window": {
103
+ "mode": "legacy-v1",
104
+ "state": "active",
105
+ "read_only": true,
106
+ "deprecation_started": true,
107
+ "removal": "not-scheduled",
108
+ "minimum_compatibility_releases": 1
109
+ }
110
+ }
111
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "schema": "gentle-ai.review-integration.consent/v2",
3
+ "contract": "gentle-ai.review-integration/v2",
4
+ "operation": "review.start",
5
+ "action": "consent_required",
6
+ "blocking": true,
7
+ "target_identity": "sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5",
8
+ "projection": "workspace",
9
+ "risk_level": "high",
10
+ "changed_files": 1,
11
+ "changed_lines": 1,
12
+ "headline": "Gentle AI can review this change before you call it done.",
13
+ "reason": "this change gets a deeper review because it touches shell scripting in scripts/deploy.sh.",
14
+ "value": "Reviewing takes a bit longer, and it makes the result substantially safer.",
15
+ "risk_evidence": [
16
+ "shell scripting in scripts/deploy.sh"
17
+ ],
18
+ "choices": [
19
+ {
20
+ "answer": "granted",
21
+ "label": "Run the review now",
22
+ "effect": "Reviews this exact frozen candidate now; nothing is granted for later candidates, so each later medium- or high-risk candidate asks again.",
23
+ "invocation": "gentle-ai review start --contract gentle-ai.review-integration/v2 --cwd /repo --target sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5 --projection workspace --lineage review-consent-fixture --consent granted"
24
+ },
25
+ {
26
+ "answer": "declined",
27
+ "label": "Not now, just this once",
28
+ "effect": "Skips the review for this candidate only; nothing is persisted and the next candidate is asked again. This is not the kill switch.",
29
+ "invocation": "gentle-ai review start --contract gentle-ai.review-integration/v2 --cwd /repo --target sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5 --projection workspace --lineage review-consent-fixture --consent declined"
30
+ }
31
+ ],
32
+ "off_path": {
33
+ "note": "To turn reviews off for good, run 'gentle-ai review mode disable'.",
34
+ "command": "gentle-ai review mode disable"
35
+ }
36
+ }
@@ -0,0 +1,93 @@
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-start-fixture",
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": "3e21a205dd9b55021aeae87965092623807e455f",
18
+ "candidate_tree": "556e838994d4e5669ffafda7b72226598bc38297",
19
+ "changed_files": 1,
20
+ "changed_lines": 1,
21
+ "correction_budget": 1,
22
+ "risk_reasons": [
23
+ {"code": "shell_source", "signal": "shell_process", "path": "scripts/deploy.sh"}
24
+ ],
25
+ "artifact_subjects": [
26
+ {
27
+ "schema": "gentle-ai.review-artifact-subject/v2",
28
+ "subject_hash": "sha256:2ec775b2a519da488fd76212470e9e42160179e394cfae2819f1f8ac3c7842e0",
29
+ "lineage_id": "review-start-fixture",
30
+ "authority_revision": "sha256:3411d049f39e891b50adfc76473199b473927d10245a227a3bc967eae0caf68c",
31
+ "target_identity": "sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5",
32
+ "base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
33
+ "candidate_tree": "556e838994d4e5669ffafda7b72226598bc38297",
34
+ "changed_path_manifest_sha256": "sha256:049219ea30e21c409608ea8527e65bcc6774d764363031a6cf0cb05e35c734ef",
35
+ "lens": "review-risk",
36
+ "selected_order": 0
37
+ },
38
+ {
39
+ "schema": "gentle-ai.review-artifact-subject/v2",
40
+ "subject_hash": "sha256:1800117ac48276e0039e3791287aed7af08ee65112476f9f0cbe5d11ca1044fe",
41
+ "lineage_id": "review-start-fixture",
42
+ "authority_revision": "sha256:3411d049f39e891b50adfc76473199b473927d10245a227a3bc967eae0caf68c",
43
+ "target_identity": "sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5",
44
+ "base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
45
+ "candidate_tree": "556e838994d4e5669ffafda7b72226598bc38297",
46
+ "changed_path_manifest_sha256": "sha256:049219ea30e21c409608ea8527e65bcc6774d764363031a6cf0cb05e35c734ef",
47
+ "lens": "review-resilience",
48
+ "selected_order": 1
49
+ },
50
+ {
51
+ "schema": "gentle-ai.review-artifact-subject/v2",
52
+ "subject_hash": "sha256:b426bc54f5f4f3ea446a84b7957e14492c803e8748f07425cd2e0652b485d7a5",
53
+ "lineage_id": "review-start-fixture",
54
+ "authority_revision": "sha256:3411d049f39e891b50adfc76473199b473927d10245a227a3bc967eae0caf68c",
55
+ "target_identity": "sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5",
56
+ "base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
57
+ "candidate_tree": "556e838994d4e5669ffafda7b72226598bc38297",
58
+ "changed_path_manifest_sha256": "sha256:049219ea30e21c409608ea8527e65bcc6774d764363031a6cf0cb05e35c734ef",
59
+ "lens": "review-readability",
60
+ "selected_order": 2
61
+ },
62
+ {
63
+ "schema": "gentle-ai.review-artifact-subject/v2",
64
+ "subject_hash": "sha256:1b43f90a9391e996e28d478c0aef85b1fd26229c1ccb2ef8bc56b418ab0b4a7f",
65
+ "lineage_id": "review-start-fixture",
66
+ "authority_revision": "sha256:3411d049f39e891b50adfc76473199b473927d10245a227a3bc967eae0caf68c",
67
+ "target_identity": "sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5",
68
+ "base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
69
+ "candidate_tree": "556e838994d4e5669ffafda7b72226598bc38297",
70
+ "changed_path_manifest_sha256": "sha256:049219ea30e21c409608ea8527e65bcc6774d764363031a6cf0cb05e35c734ef",
71
+ "lens": "review-reliability",
72
+ "selected_order": 3
73
+ }
74
+ ],
75
+ "changed_path_manifest": [
76
+ {
77
+ "path": "scripts/deploy.sh",
78
+ "status": "A",
79
+ "old_mode": "000000",
80
+ "new_mode": "100644",
81
+ "deleted": false,
82
+ "type_changed": false,
83
+ "mode_only": false,
84
+ "intended_untracked": true
85
+ }
86
+ ],
87
+ "repository_context": {
88
+ "capability": "review.opaque_repository_context",
89
+ "handle": "rctx1_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
90
+ "revision": "sha256:3411d049f39e891b50adfc76473199b473927d10245a227a3bc967eae0caf68c",
91
+ "target_identity": "sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5"
92
+ }
93
+ }
@@ -0,0 +1,113 @@
1
+ {
2
+ "schema": "gentle-ai.review-integration.status/v3",
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-status-fixture",
9
+ "state": "reviewing",
10
+ "generation": 1,
11
+ "revision": "sha256:81cdad8f3182d4919147d3c4fe8f614814068e5ef68417e3dcbd5e326dd3e390"
12
+ },
13
+ "receipt": {"status": "expected_missing"},
14
+ "action": "finalize",
15
+ "replayability": "not_replayable",
16
+ "frozen": {"tier": "medium", "original_changed_lines": 2, "correction_budget": 1},
17
+ "target_identity": "sha256:e6faad1cb9ceb2db170e0ec9ea5394b44c3991dff6cbd02fb6787539715968f6",
18
+ "projection": {
19
+ "schema": "gentle-ai.review-integration.projection/v1",
20
+ "kind": "current-changes",
21
+ "projection": "workspace",
22
+ "base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
23
+ "initial_review_tree": "1c3325617279b38743f073302ba190fc421b5a09",
24
+ "current_candidate_tree": "1c3325617279b38743f073302ba190fc421b5a09",
25
+ "paths_digest": "sha256:b93fca961a97d240c2b7023e98772f49ebd2995eda7db07043270b57bed75d71",
26
+ "paths": ["tracked.txt"],
27
+ "intended_untracked": [],
28
+ "intended_untracked_proof": "sha256:b97229718d4c7fe50a8892eb474ae5aa6491697bccb400e3e31dbaca4894d2f3",
29
+ "initial_snapshot_identity": "sha256:e6faad1cb9ceb2db170e0ec9ea5394b44c3991dff6cbd02fb6787539715968f6",
30
+ "current_snapshot_identity": "sha256:e6faad1cb9ceb2db170e0ec9ea5394b44c3991dff6cbd02fb6787539715968f6"
31
+ },
32
+ "repair": {
33
+ "schema": "gentle-ai.review-authority-repair-assessment/v1",
34
+ "status": "unsupported",
35
+ "counts": {
36
+ "lineages": 0,
37
+ "compact_lineages": 0,
38
+ "legacy_lineages": 0,
39
+ "events": 0,
40
+ "bytes": 0,
41
+ "eligible_candidates": 0,
42
+ "unsupported_lineages": 0,
43
+ "conflicts": 0
44
+ },
45
+ "supported_operations": ["review/complete-fix", "review/validate-fix"],
46
+ "authorization_schema": "gentle-ai.review-repair-authorization/v1"
47
+ },
48
+ "candidates": [],
49
+ "next_transition": {
50
+ "kind": "collect",
51
+ "reason_code": "reviewer_results_required",
52
+ "collect": {
53
+ "inputs": [
54
+ {
55
+ "name": "reviewer_result",
56
+ "schema": "https://gentle-ai.dev/schema/review/reviewer/v1",
57
+ "capture_operation": "review.capture-result",
58
+ "arguments": [
59
+ {"name": "lineage", "value": "review-status-fixture", "token": "--lineage=review-status-fixture"},
60
+ {
61
+ "name": "expected-revision",
62
+ "value": "sha256:81cdad8f3182d4919147d3c4fe8f614814068e5ef68417e3dcbd5e326dd3e390",
63
+ "token": "--expected-revision=sha256:81cdad8f3182d4919147d3c4fe8f614814068e5ef68417e3dcbd5e326dd3e390"
64
+ },
65
+ {
66
+ "name": "target",
67
+ "value": "sha256:e6faad1cb9ceb2db170e0ec9ea5394b44c3991dff6cbd02fb6787539715968f6",
68
+ "token": "--target=sha256:e6faad1cb9ceb2db170e0ec9ea5394b44c3991dff6cbd02fb6787539715968f6"
69
+ },
70
+ {
71
+ "name": "repository-context",
72
+ "value": "rctx1_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
73
+ "token": "--repository-context=rctx1_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
74
+ },
75
+ {"name": "lens", "value": "review-reliability", "token": "--lens=review-reliability"},
76
+ {"name": "order", "value": "0", "token": "--order=0"},
77
+ {
78
+ "name": "subject-hash",
79
+ "value": "sha256:34c226ef1586f0c77b30311320d4d2529819097fbb073ee31634f4d87a19da6a",
80
+ "token": "--subject-hash=sha256:34c226ef1586f0c77b30311320d4d2529819097fbb073ee31634f4d87a19da6a"
81
+ }
82
+ ],
83
+ "artifact_subject": {
84
+ "schema": "gentle-ai.review-artifact-subject/v2",
85
+ "subject_hash": "sha256:34c226ef1586f0c77b30311320d4d2529819097fbb073ee31634f4d87a19da6a",
86
+ "lineage_id": "review-status-fixture",
87
+ "authority_revision": "sha256:81cdad8f3182d4919147d3c4fe8f614814068e5ef68417e3dcbd5e326dd3e390",
88
+ "target_identity": "sha256:e6faad1cb9ceb2db170e0ec9ea5394b44c3991dff6cbd02fb6787539715968f6",
89
+ "base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
90
+ "candidate_tree": "1c3325617279b38743f073302ba190fc421b5a09",
91
+ "changed_path_manifest_sha256": "sha256:64d028ff676fb4ef10f2d4a3488d568854b364b4cc4399578b5932d144d2347b",
92
+ "lens": "review-reliability",
93
+ "selected_order": 0
94
+ },
95
+ "base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
96
+ "candidate_tree": "1c3325617279b38743f073302ba190fc421b5a09",
97
+ "changed_path_manifest": [
98
+ {
99
+ "path": "tracked.txt",
100
+ "status": "M",
101
+ "old_mode": "100644",
102
+ "new_mode": "100644",
103
+ "deleted": false,
104
+ "type_changed": false,
105
+ "mode_only": false,
106
+ "intended_untracked": false
107
+ }
108
+ ]
109
+ }
110
+ ]
111
+ }
112
+ }
113
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://gentle-ai.dev/contracts/review-integration/v2/schemas/admitted-result.schema.json",
4
+ "title": "Gentle AI provider-admitted native Git reviewer result v2",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schema", "subject", "admission", "result"],
8
+ "properties": {
9
+ "schema": {"const": "gentle-ai.review-admitted-result/v2"},
10
+ "subject": {"$ref": "artifact-subject.schema.json"},
11
+ "admission": {"$ref": "../../v1/schemas/admitted-result.schema.json#/$defs/admission"},
12
+ "result": {"type": "object"}
13
+ }
14
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://gentle-ai.dev/contracts/review-integration/v2/schemas/artifact-subject.schema.json",
4
+ "title": "Gentle AI provider-owned native Git reviewer artifact subject v2",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema",
9
+ "subject_hash",
10
+ "lineage_id",
11
+ "authority_revision",
12
+ "target_identity",
13
+ "base_tree",
14
+ "candidate_tree",
15
+ "changed_path_manifest_sha256",
16
+ "lens",
17
+ "selected_order"
18
+ ],
19
+ "properties": {
20
+ "schema": {"const": "gentle-ai.review-artifact-subject/v2"},
21
+ "subject_hash": {"$ref": "#/$defs/sha256"},
22
+ "lineage_id": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"},
23
+ "authority_revision": {"$ref": "#/$defs/sha256"},
24
+ "target_identity": {"$ref": "#/$defs/sha256"},
25
+ "base_tree": {"$ref": "#/$defs/git_tree"},
26
+ "candidate_tree": {"$ref": "#/$defs/git_tree"},
27
+ "changed_path_manifest_sha256": {"$ref": "#/$defs/sha256"},
28
+ "lens": {"enum": ["review-risk", "review-resilience", "review-readability", "review-reliability"]},
29
+ "selected_order": {"type": "integer", "minimum": 0, "maximum": 3},
30
+ "correction_target_identity": {"$ref": "#/$defs/sha256"}
31
+ },
32
+ "$defs": {
33
+ "sha256": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
34
+ "git_tree": {"type": "string", "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$"}
35
+ }
36
+ }
@@ -0,0 +1,111 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://gentle-ai.dev/contracts/review-integration/v2/schemas/capabilities.schema.json",
4
+ "title": "Gentle AI review integration capabilities protocol 2.0",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema", "contract", "protocol", "package", "build", "executable", "operations", "gates",
9
+ "projections", "schemas", "features", "compatibility"
10
+ ],
11
+ "properties": {
12
+ "schema": {"const": "gentle-ai.review-integration.capabilities/v2"},
13
+ "contract": {"const": "gentle-ai.review-integration/v2"},
14
+ "protocol": {
15
+ "type": "object", "additionalProperties": false, "required": ["major", "minor"],
16
+ "properties": {"major": {"const": 2}, "minor": {"const": 0}}
17
+ },
18
+ "package": {"$ref": "../../v1/schemas/capabilities-v1.4.schema.json#/properties/package"},
19
+ "build": {"$ref": "../../v1/schemas/capabilities-v1.4.schema.json#/properties/build"},
20
+ "executable": {"$ref": "../../v1/schemas/capabilities-v1.4.schema.json#/properties/executable"},
21
+ "operations": {"$ref": "../../v1/schemas/capabilities-v1.4.schema.json#/properties/operations"},
22
+ "gates": {"$ref": "../../v1/schemas/capabilities-v1.4.schema.json#/properties/gates"},
23
+ "projections": {"$ref": "../../v1/schemas/capabilities-v1.4.schema.json#/properties/projections"},
24
+ "schemas": {
25
+ "type": "array", "minItems": 22, "maxItems": 22, "uniqueItems": true,
26
+ "items": {
27
+ "enum": [
28
+ "gentle-ai.review-admitted-result/v2",
29
+ "gentle-ai.review-artifact-subject/v2",
30
+ "gentle-ai.review-authority-repair-assessment/v1",
31
+ "gentle-ai.review-authority-status/v1",
32
+ "gentle-ai.review-gate-request/v1",
33
+ "gentle-ai.review-integration.capabilities/v2",
34
+ "gentle-ai.review-integration.consent/v2",
35
+ "gentle-ai.review-integration.failure/v2",
36
+ "gentle-ai.review-final-verification-incident/v1",
37
+ "gentle-ai.review-integration.operation/v2",
38
+ "gentle-ai.review-integration.projection/v1",
39
+ "gentle-ai.review-integration.repair/v2",
40
+ "gentle-ai.review-integration.start/v3",
41
+ "gentle-ai.review-integration.status/v3",
42
+ "gentle-ai.review-receipt/v1",
43
+ "gentle-ai.review-receipt/v2",
44
+ "gentle-ai.review-result-artifact/v2",
45
+ "gentle-ai.review-targeted-validation-request/v1",
46
+ "gentle-ai.review-verification-evidence/v2",
47
+ "https://gentle-ai.dev/schema/review/refuter/v1",
48
+ "https://gentle-ai.dev/schema/review/reviewer/v1",
49
+ "https://gentle-ai.dev/schema/review/validator/v1"
50
+ ]
51
+ }
52
+ },
53
+ "features": {
54
+ "type": "object", "additionalProperties": false, "required": ["mandatory", "optional"],
55
+ "properties": {
56
+ "mandatory": {"type": "array", "minItems": 10, "maxItems": 10, "items": {"$ref": "#/$defs/feature"}},
57
+ "optional": {"type": "array", "minItems": 17, "maxItems": 17, "items": {"$ref": "#/$defs/feature"}}
58
+ }
59
+ },
60
+ "bootstrap": {"$ref": "#/$defs/bootstrap"},
61
+ "compatibility": {
62
+ "type": "object", "additionalProperties": false,
63
+ "required": [
64
+ "minimum_protocol_major", "maximum_protocol_major", "additive_minor_policy", "unknown_mandatory",
65
+ "unknown_optional", "modes", "legacy_window"
66
+ ],
67
+ "properties": {
68
+ "minimum_protocol_major": {"const": 2},
69
+ "maximum_protocol_major": {"const": 2},
70
+ "additive_minor_policy": {"const": "optional-fields-only"},
71
+ "unknown_mandatory": {"const": "reject"},
72
+ "unknown_optional": {"const": "ignore"},
73
+ "modes": {"$ref": "../../v1/schemas/capabilities-v1.4.schema.json#/properties/compatibility/properties/modes"},
74
+ "legacy_window": {"$ref": "../../v1/schemas/capabilities-v1.4.schema.json#/properties/compatibility/properties/legacy_window"}
75
+ }
76
+ }
77
+ },
78
+ "$defs": {
79
+ "feature": {
80
+ "type": "object", "additionalProperties": false, "required": ["name", "supported", "requires"],
81
+ "properties": {
82
+ "name": {
83
+ "enum": [
84
+ "base_ref_workspace_overlay", "bounded_process_waits", "classified_authority_repair", "compact_v2_authority",
85
+ "exact_gate_receipt_discovery", "exact_receipt_replay", "five_delivery_gates", "immutable_snapshot",
86
+ "legacy_v1_target_scoped_read_only", "native_frozen_candidate_context", "native_low_risk_verification",
87
+ "native_next_transition", "one_shot_final_verification_retry", "opaque_repository_context",
88
+ "outcome_bound_verification_evidence",
89
+ "provider_artifact_admission", "provider_bound_native_git_context", "provider_targeted_validation_request",
90
+ "recovered_correction_evidence", "repository_independent_capabilities", "restart_safe_projection", "risk_reasons",
91
+ "scope_change_diagnostics", "sdd_receipt_binding", "target_scoped_status", "uniform_failure_envelope",
92
+ "validating_result_reopen"
93
+ ]
94
+ },
95
+ "supported": {"type": "boolean"},
96
+ "requires": {"type": "array", "uniqueItems": true, "items": {"type": "string", "minLength": 1}}
97
+ }
98
+ },
99
+ "bootstrap": {
100
+ "type": "object", "additionalProperties": false,
101
+ "required": ["command", "target_selector_variants", "required_feature", "unsupported_outcome", "parent_only"],
102
+ "properties": {
103
+ "command": {"const": "gentle-ai review status --cwd <repo> --contract gentle-ai.review-integration/v2 --next-transition"},
104
+ "target_selector_variants": {"$ref": "../../v1/schemas/capabilities-v1.4.schema.json#/$defs/bootstrap/properties/target_selector_variants"},
105
+ "required_feature": {"const": "native_next_transition"},
106
+ "unsupported_outcome": {"const": "unsupported-capability"},
107
+ "parent_only": {"const": true}
108
+ }
109
+ }
110
+ }
111
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://gentle-ai.dev/contracts/review-integration/v2/schemas/consent.schema.json",
4
+ "title": "Gentle AI negotiated review v2 consent question",
5
+ "description": "The typed per-candidate blocking consent question emitted by negotiated v2 START when the caller declared --consent relay.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schema", "contract", "operation", "action", "blocking", "target_identity", "projection",
10
+ "risk_level", "changed_files", "changed_lines", "headline", "reason", "value", "risk_evidence",
11
+ "choices", "off_path"
12
+ ],
13
+ "properties": {
14
+ "schema": {"const": "gentle-ai.review-integration.consent/v2"},
15
+ "contract": {"const": "gentle-ai.review-integration/v2"},
16
+ "operation": {"const": "review.start"},
17
+ "action": {"const": "consent_required"},
18
+ "blocking": {"const": true},
19
+ "target_identity": {"$ref": "#/$defs/sha256"},
20
+ "projection": {"enum": ["workspace", "staged"]},
21
+ "risk_level": {"enum": ["medium", "high"]},
22
+ "changed_files": {"type": "integer", "minimum": 0},
23
+ "changed_lines": {"type": "integer", "minimum": 0},
24
+ "headline": {"type": "string", "minLength": 1},
25
+ "reason": {"type": "string", "minLength": 1},
26
+ "value": {"type": "string", "minLength": 1},
27
+ "risk_evidence": {"type": "array", "items": {"type": "string", "minLength": 1}},
28
+ "choices": {
29
+ "type": "array",
30
+ "minItems": 2,
31
+ "maxItems": 2,
32
+ "prefixItems": [
33
+ {"$ref": "#/$defs/choice_granted"},
34
+ {"$ref": "#/$defs/choice_declined"}
35
+ ],
36
+ "items": false
37
+ },
38
+ "off_path": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": ["note", "command"],
42
+ "properties": {
43
+ "note": {"type": "string", "minLength": 1},
44
+ "command": {"const": "gentle-ai review mode disable"}
45
+ }
46
+ }
47
+ },
48
+ "$defs": {
49
+ "sha256": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
50
+ "choice": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "required": ["answer", "label", "effect", "invocation"],
54
+ "properties": {
55
+ "answer": {"enum": ["granted", "declined"]},
56
+ "label": {"type": "string", "minLength": 1},
57
+ "effect": {"type": "string", "minLength": 1},
58
+ "invocation": {"type": "string", "pattern": "^gentle-ai review start --contract gentle-ai\\.review-integration/v2 .* --consent (granted|declined)$"}
59
+ }
60
+ },
61
+ "choice_granted": {
62
+ "allOf": [{"$ref": "#/$defs/choice"}],
63
+ "properties": {"answer": {"const": "granted"}}
64
+ },
65
+ "choice_declined": {
66
+ "allOf": [{"$ref": "#/$defs/choice"}],
67
+ "properties": {"answer": {"const": "declined"}}
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://gentle-ai.dev/contracts/review-integration/v2/schemas/failure.schema.json",
4
+ "title": "Gentle AI negotiated review v2 failure",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema", "contract", "operation", "phase", "code", "message", "mutation_outcome",
9
+ "authority_applicability", "retry_safe", "replayability", "required_inputs", "next_action"
10
+ ],
11
+ "properties": {
12
+ "schema": {"const": "gentle-ai.review-integration.failure/v2"},
13
+ "contract": {"const": "gentle-ai.review-integration/v2"},
14
+ "operation": {"$ref": "../../v1/schemas/failure.schema.json#/properties/operation"},
15
+ "phase": {"$ref": "../../v1/schemas/failure.schema.json#/properties/phase"},
16
+ "code": {"$ref": "../../v1/schemas/failure.schema.json#/properties/code"},
17
+ "message": {"$ref": "../../v1/schemas/failure.schema.json#/properties/message"},
18
+ "mutation_outcome": {"$ref": "../../v1/schemas/failure.schema.json#/properties/mutation_outcome"},
19
+ "authority_applicability": {"$ref": "../../v1/schemas/failure.schema.json#/properties/authority_applicability"},
20
+ "retry_safe": {"type": "boolean"},
21
+ "replayability": {"$ref": "../../v1/schemas/failure.schema.json#/properties/replayability"},
22
+ "lineage_id": {"$ref": "../../v1/schemas/failure.schema.json#/properties/lineage_id"},
23
+ "request_digest": {"$ref": "../../v1/schemas/failure.schema.json#/properties/request_digest"},
24
+ "progress_identity": {"$ref": "../../v1/schemas/failure.schema.json#/properties/progress_identity"},
25
+ "required_inputs": {"$ref": "../../v1/schemas/failure.schema.json#/properties/required_inputs"},
26
+ "next_action": {"$ref": "../../v1/schemas/failure.schema.json#/properties/next_action"},
27
+ "cause_category": {"$ref": "../../v1/schemas/failure.schema.json#/properties/cause_category"},
28
+ "cause": {"$ref": "../../v1/schemas/failure.schema.json#/properties/cause"},
29
+ "context": {"$ref": "../../v1/schemas/failure.schema.json#/properties/context"}
30
+ },
31
+ "allOf": [
32
+ {"$ref": "../../v1/schemas/failure.schema.json#/allOf/0"},
33
+ {"$ref": "../../v1/schemas/failure.schema.json#/allOf/1"}
34
+ ]
35
+ }