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,247 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://gentle-ai.dev/contracts/review-integration/v1/schemas/authority-repair-assessment.schema.json",
4
+ "title": "Gentle AI classified authority repair assessment",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema",
9
+ "status",
10
+ "counts",
11
+ "supported_operations",
12
+ "authorization_schema"
13
+ ],
14
+ "properties": {
15
+ "schema": {
16
+ "const": "gentle-ai.review-authority-repair-assessment/v1"
17
+ },
18
+ "status": {
19
+ "enum": [
20
+ "eligible",
21
+ "unsupported",
22
+ "ambiguous",
23
+ "conflicting",
24
+ "truncated"
25
+ ]
26
+ },
27
+ "class": {
28
+ "const": "legacy_v1_historical_alias"
29
+ },
30
+ "cause": {
31
+ "const": "unsupported_historical_v1_operation_alias"
32
+ },
33
+ "disposition": {
34
+ "const": "quarantine-approved-historical-alias"
35
+ },
36
+ "repository_binding": {
37
+ "$ref": "#/$defs/sha256"
38
+ },
39
+ "candidate": {
40
+ "$ref": "#/$defs/candidate"
41
+ },
42
+ "counts": {
43
+ "$ref": "#/$defs/counts"
44
+ },
45
+ "supported_operations": {
46
+ "type": "array",
47
+ "minItems": 2,
48
+ "maxItems": 2,
49
+ "prefixItems": [
50
+ {
51
+ "const": "review/complete-fix"
52
+ },
53
+ {
54
+ "const": "review/validate-fix"
55
+ }
56
+ ],
57
+ "items": false
58
+ },
59
+ "authorization_schema": {
60
+ "const": "gentle-ai.review-repair-authorization/v1"
61
+ }
62
+ },
63
+ "allOf": [
64
+ {
65
+ "if": {
66
+ "properties": {
67
+ "status": {
68
+ "const": "eligible"
69
+ }
70
+ },
71
+ "required": [
72
+ "status"
73
+ ]
74
+ },
75
+ "then": {
76
+ "required": [
77
+ "class",
78
+ "cause",
79
+ "disposition",
80
+ "repository_binding",
81
+ "candidate"
82
+ ],
83
+ "properties": {
84
+ "counts": {
85
+ "allOf": [
86
+ {
87
+ "$ref": "#/$defs/counts"
88
+ },
89
+ {
90
+ "properties": {
91
+ "eligible_candidates": {
92
+ "const": 1
93
+ },
94
+ "unsupported_lineages": {
95
+ "const": 0
96
+ },
97
+ "conflicts": {
98
+ "const": 0
99
+ }
100
+ }
101
+ }
102
+ ]
103
+ }
104
+ }
105
+ },
106
+ "else": {
107
+ "not": {
108
+ "anyOf": [
109
+ {
110
+ "required": [
111
+ "class"
112
+ ]
113
+ },
114
+ {
115
+ "required": [
116
+ "cause"
117
+ ]
118
+ },
119
+ {
120
+ "required": [
121
+ "disposition"
122
+ ]
123
+ },
124
+ {
125
+ "required": [
126
+ "repository_binding"
127
+ ]
128
+ },
129
+ {
130
+ "required": [
131
+ "candidate"
132
+ ]
133
+ }
134
+ ]
135
+ }
136
+ }
137
+ }
138
+ ],
139
+ "$defs": {
140
+ "sha256": {
141
+ "type": "string",
142
+ "pattern": "^sha256:[0-9a-f]{64}$"
143
+ },
144
+ "candidate": {
145
+ "type": "object",
146
+ "additionalProperties": false,
147
+ "required": [
148
+ "lineage_id",
149
+ "revision",
150
+ "chain_identity",
151
+ "event_count",
152
+ "alias_event_count",
153
+ "operations"
154
+ ],
155
+ "properties": {
156
+ "lineage_id": {
157
+ "type": "string",
158
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
159
+ },
160
+ "revision": {
161
+ "$ref": "#/$defs/sha256"
162
+ },
163
+ "chain_identity": {
164
+ "$ref": "#/$defs/sha256"
165
+ },
166
+ "event_count": {
167
+ "type": "integer",
168
+ "minimum": 2,
169
+ "maximum": 1024
170
+ },
171
+ "alias_event_count": {
172
+ "type": "integer",
173
+ "minimum": 1,
174
+ "maximum": 1024
175
+ },
176
+ "operations": {
177
+ "type": "array",
178
+ "minItems": 1,
179
+ "maxItems": 2,
180
+ "uniqueItems": true,
181
+ "items": {
182
+ "enum": [
183
+ "review/complete-fix",
184
+ "review/validate-fix"
185
+ ]
186
+ }
187
+ }
188
+ }
189
+ },
190
+ "counts": {
191
+ "type": "object",
192
+ "additionalProperties": false,
193
+ "required": [
194
+ "lineages",
195
+ "compact_lineages",
196
+ "legacy_lineages",
197
+ "events",
198
+ "bytes",
199
+ "eligible_candidates",
200
+ "unsupported_lineages",
201
+ "conflicts"
202
+ ],
203
+ "properties": {
204
+ "lineages": {
205
+ "type": "integer",
206
+ "minimum": 0,
207
+ "maximum": 256
208
+ },
209
+ "compact_lineages": {
210
+ "type": "integer",
211
+ "minimum": 0,
212
+ "maximum": 256
213
+ },
214
+ "legacy_lineages": {
215
+ "type": "integer",
216
+ "minimum": 0,
217
+ "maximum": 256
218
+ },
219
+ "events": {
220
+ "type": "integer",
221
+ "minimum": 0,
222
+ "maximum": 1024
223
+ },
224
+ "bytes": {
225
+ "type": "integer",
226
+ "minimum": 0,
227
+ "maximum": 8388608
228
+ },
229
+ "eligible_candidates": {
230
+ "type": "integer",
231
+ "minimum": 0,
232
+ "maximum": 256
233
+ },
234
+ "unsupported_lineages": {
235
+ "type": "integer",
236
+ "minimum": 0,
237
+ "maximum": 1024
238
+ },
239
+ "conflicts": {
240
+ "type": "integer",
241
+ "minimum": 0,
242
+ "maximum": 1024
243
+ }
244
+ }
245
+ }
246
+ }
247
+ }
@@ -0,0 +1,249 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://gentle-ai.dev/contracts/review-integration/v1/schemas/capabilities-v1.2.schema.json",
4
+ "title": "Gentle AI review integration capabilities protocol 1.2",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema",
9
+ "contract",
10
+ "protocol",
11
+ "package",
12
+ "build",
13
+ "executable",
14
+ "operations",
15
+ "gates",
16
+ "projections",
17
+ "schemas",
18
+ "features",
19
+ "compatibility"
20
+ ],
21
+ "properties": {
22
+ "schema": {
23
+ "const": "gentle-ai.review-integration.capabilities/v1.2"
24
+ },
25
+ "contract": {
26
+ "const": "gentle-ai.review-integration/v1"
27
+ },
28
+ "protocol": {
29
+ "type": "object",
30
+ "additionalProperties": false,
31
+ "required": ["major", "minor"],
32
+ "properties": {
33
+ "major": {"const": 1},
34
+ "minor": {"const": 2}
35
+ }
36
+ },
37
+ "package": {
38
+ "type": "object",
39
+ "additionalProperties": false,
40
+ "required": ["name", "version", "release_channel"],
41
+ "properties": {
42
+ "name": {"const": "gentle-ai"},
43
+ "version": {"type": "string", "minLength": 1},
44
+ "release_channel": {"enum": ["development", "prerelease", "stable"]}
45
+ }
46
+ },
47
+ "build": {
48
+ "type": "object",
49
+ "additionalProperties": false,
50
+ "required": ["id", "go_version", "module_version", "vcs", "vcs_revision", "vcs_time", "vcs_modified"],
51
+ "properties": {
52
+ "id": {"$ref": "#/$defs/sha256"},
53
+ "go_version": {"type": "string", "minLength": 1},
54
+ "module_version": {"type": "string"},
55
+ "vcs": {"type": "string"},
56
+ "vcs_revision": {"type": "string"},
57
+ "vcs_time": {"type": "string"},
58
+ "vcs_modified": {"enum": ["true", "false", "unknown"]}
59
+ }
60
+ },
61
+ "executable": {
62
+ "type": "object",
63
+ "additionalProperties": false,
64
+ "required": ["sha256", "evidence", "verification"],
65
+ "properties": {
66
+ "sha256": {"$ref": "#/$defs/sha256"},
67
+ "evidence": {"const": "self-reported"},
68
+ "verification": {"const": "compare-with-published-manifest"}
69
+ }
70
+ },
71
+ "operations": {
72
+ "type": "array",
73
+ "minItems": 6,
74
+ "maxItems": 6,
75
+ "uniqueItems": true,
76
+ "items": {
77
+ "enum": [
78
+ "review.bind_sdd",
79
+ "review.capabilities",
80
+ "review.finalize",
81
+ "review.start",
82
+ "review.status",
83
+ "review.validate"
84
+ ]
85
+ }
86
+ },
87
+ "gates": {
88
+ "type": "array",
89
+ "minItems": 5,
90
+ "maxItems": 5,
91
+ "uniqueItems": true,
92
+ "items": {"enum": ["post-apply", "pre-commit", "pre-push", "pre-pr", "release"]}
93
+ },
94
+ "projections": {
95
+ "type": "array",
96
+ "minItems": 2,
97
+ "maxItems": 2,
98
+ "uniqueItems": true,
99
+ "items": {"enum": ["staged", "workspace"]}
100
+ },
101
+ "schemas": {
102
+ "type": "array",
103
+ "minItems": 14,
104
+ "maxItems": 14,
105
+ "uniqueItems": true,
106
+ "items": {
107
+ "enum": [
108
+ "gentle-ai.review-authority-status/v1",
109
+ "gentle-ai.review-gate-request/v1",
110
+ "gentle-ai.review-integration.capabilities/v1.2",
111
+ "gentle-ai.review-integration.failure/v1",
112
+ "gentle-ai.review-integration.operation/v1",
113
+ "gentle-ai.review-integration.projection/v1",
114
+ "gentle-ai.review-integration.start/v1",
115
+ "gentle-ai.review-integration.status/v1",
116
+ "gentle-ai.review-receipt/v1",
117
+ "gentle-ai.review-receipt/v2",
118
+ "gentle-ai.review-result-artifact/v1",
119
+ "gentle-ai.review-targeted-validation-request/v1",
120
+ "https://gentle-ai.dev/schema/review/refuter/v1",
121
+ "https://gentle-ai.dev/schema/review/reviewer/v1",
122
+ "https://gentle-ai.dev/schema/review/validator/v1"
123
+ ]
124
+ }
125
+ },
126
+ "features": {
127
+ "type": "object",
128
+ "additionalProperties": false,
129
+ "required": ["mandatory", "optional"],
130
+ "properties": {
131
+ "mandatory": {
132
+ "type": "array",
133
+ "minItems": 10,
134
+ "maxItems": 10,
135
+ "items": {"$ref": "#/$defs/feature"}
136
+ },
137
+ "optional": {
138
+ "type": "array",
139
+ "minItems": 10,
140
+ "maxItems": 10,
141
+ "items": {"$ref": "#/$defs/feature"}
142
+ }
143
+ }
144
+ },
145
+ "bootstrap": {"$ref": "#/$defs/bootstrap"},
146
+ "compatibility": {
147
+ "type": "object",
148
+ "additionalProperties": false,
149
+ "required": [
150
+ "minimum_protocol_major",
151
+ "maximum_protocol_major",
152
+ "additive_minor_policy",
153
+ "unknown_mandatory",
154
+ "unknown_optional",
155
+ "modes",
156
+ "legacy_window"
157
+ ],
158
+ "properties": {
159
+ "minimum_protocol_major": {"const": 1},
160
+ "maximum_protocol_major": {"const": 1},
161
+ "additive_minor_policy": {"const": "optional-fields-only"},
162
+ "unknown_mandatory": {"const": "reject"},
163
+ "unknown_optional": {"const": "ignore"},
164
+ "modes": {
165
+ "type": "array",
166
+ "prefixItems": [{"const": "compact-v2"}, {"const": "legacy-v1"}],
167
+ "items": false
168
+ },
169
+ "legacy_window": {
170
+ "type": "object",
171
+ "additionalProperties": false,
172
+ "required": ["mode", "state", "read_only", "deprecation_started", "removal", "minimum_compatibility_releases"],
173
+ "properties": {
174
+ "mode": {"const": "legacy-v1"},
175
+ "state": {"enum": ["pre-fence", "active", "deprecated", "expired"]},
176
+ "read_only": {"type": "boolean"},
177
+ "deprecation_started": {"type": "boolean"},
178
+ "removal": {"type": "string", "minLength": 1},
179
+ "minimum_compatibility_releases": {"type": "integer", "minimum": 1}
180
+ }
181
+ }
182
+ }
183
+ }
184
+ },
185
+ "$defs": {
186
+ "sha256": {
187
+ "type": "string",
188
+ "pattern": "^sha256:[0-9a-f]{64}$"
189
+ },
190
+ "feature": {
191
+ "type": "object",
192
+ "additionalProperties": false,
193
+ "required": ["name", "supported", "requires"],
194
+ "properties": {
195
+ "name": {
196
+ "enum": [
197
+ "base_ref_workspace_overlay",
198
+ "bounded_process_waits",
199
+ "compact_v2_authority",
200
+ "exact_receipt_replay",
201
+ "exact_gate_receipt_discovery",
202
+ "five_delivery_gates",
203
+ "immutable_snapshot",
204
+ "legacy_v1_target_scoped_read_only",
205
+ "native_frozen_candidate_context",
206
+ "native_low_risk_verification",
207
+ "opaque_repository_context",
208
+ "provider_targeted_validation_request",
209
+ "repository_independent_capabilities",
210
+ "restart_safe_projection",
211
+ "risk_reasons",
212
+ "sdd_receipt_binding",
213
+ "scope_change_diagnostics",
214
+ "native_next_transition",
215
+ "target_scoped_status",
216
+ "uniform_failure_envelope"
217
+ ]
218
+ },
219
+ "supported": {"type": "boolean"},
220
+ "requires": {
221
+ "type": "array",
222
+ "uniqueItems": true,
223
+ "items": {"type": "string", "minLength": 1}
224
+ }
225
+ }
226
+ },
227
+ "bootstrap": {
228
+ "type": "object",
229
+ "additionalProperties": false,
230
+ "required": ["command", "target_selector_variants", "required_feature", "unsupported_outcome", "parent_only"],
231
+ "properties": {
232
+ "command": {"const": "gentle-ai review status --cwd <repo> --contract gentle-ai.review-integration/v1 --next-transition"},
233
+ "target_selector_variants": {"type": "array", "minItems": 4, "maxItems": 4, "items": {"$ref": "#/$defs/target_selector"}},
234
+ "required_feature": {"const": "native_next_transition"},
235
+ "unsupported_outcome": {"const": "unsupported-capability"},
236
+ "parent_only": {"const": true}
237
+ }
238
+ },
239
+ "target_selector": {
240
+ "type": "object",
241
+ "additionalProperties": false,
242
+ "required": ["target_type", "arguments"],
243
+ "properties": {
244
+ "target_type": {"enum": ["staged", "base_ref", "workspace_overlay_base_ref", "workspace_overlay_base_tree"]},
245
+ "arguments": {"type": "array", "minItems": 2, "items": {"type": "string", "minLength": 1}}
246
+ }
247
+ }
248
+ }
249
+ }