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,38 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://gentle-ai.dev/contracts/review-integration/v1/schemas/result-artifact-v2.schema.json",
4
+ "title": "Gentle AI native reviewer result artifact v2",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema",
9
+ "capability",
10
+ "sha256",
11
+ "lineage_id",
12
+ "target_identity",
13
+ "lens",
14
+ "selected_order",
15
+ "subject_hash",
16
+ "admission_decision"
17
+ ],
18
+ "properties": {
19
+ "schema": {"const": "gentle-ai.review-result-artifact/v2"},
20
+ "capability": {"const": "review.native_result_artifact"},
21
+ "path": {"type": "string", "minLength": 1},
22
+ "reference": {"type": "string", "pattern": "^rart1_[0-9a-f]{64}$"},
23
+ "sha256": {"$ref": "#/$defs/sha256"},
24
+ "lineage_id": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"},
25
+ "target_identity": {"$ref": "#/$defs/sha256"},
26
+ "lens": {"enum": ["review-risk", "review-resilience", "review-readability", "review-reliability"]},
27
+ "selected_order": {"type": "integer", "minimum": 0, "maximum": 3},
28
+ "subject_hash": {"$ref": "#/$defs/sha256"},
29
+ "admission_decision": {"const": "completed"}
30
+ },
31
+ "oneOf": [
32
+ {"required": ["path"], "not": {"required": ["reference"]}},
33
+ {"required": ["reference"], "not": {"required": ["path"]}}
34
+ ],
35
+ "$defs": {
36
+ "sha256": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"}
37
+ }
38
+ }
@@ -0,0 +1,216 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://gentle-ai.dev/contracts/review-integration/v1/schemas/start-v2.schema.json",
4
+ "title": "Gentle AI negotiated review START response",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "dependentRequired": {
8
+ "target_mode": ["target_identity", "base_tree", "candidate_tree"],
9
+ "target_identity": ["target_mode", "base_tree", "candidate_tree"],
10
+ "base_tree": ["target_mode", "target_identity", "candidate_tree"],
11
+ "candidate_tree": ["target_mode", "target_identity", "base_tree"],
12
+ "candidate_diff": ["changed_path_manifest"],
13
+ "changed_path_manifest": ["candidate_diff"]
14
+ },
15
+ "allOf": [
16
+ {
17
+ "if": {
18
+ "properties": {"selected_lenses": {"minItems": 1}},
19
+ "required": ["selected_lenses"]
20
+ },
21
+ "then": {"required": ["candidate_diff", "changed_path_manifest"]}
22
+ },
23
+ {
24
+ "if": {
25
+ "properties": {
26
+ "action": {"enum": ["created", "resumed"]},
27
+ "state": {"const": "reviewing"}
28
+ },
29
+ "required": ["action", "state"]
30
+ },
31
+ "then": {"required": ["repository_context"]},
32
+ "else": {"not": {"required": ["repository_context"]}}
33
+ }
34
+ ],
35
+ "required": [
36
+ "schema",
37
+ "contract",
38
+ "operation",
39
+ "action",
40
+ "lenses_required",
41
+ "lineage_id",
42
+ "state",
43
+ "risk_level",
44
+ "selected_lenses",
45
+ "projection",
46
+ "changed_files",
47
+ "changed_lines",
48
+ "correction_budget",
49
+ "risk_reasons",
50
+ "artifact_subjects"
51
+ ],
52
+ "properties": {
53
+ "schema": {"const": "gentle-ai.review-integration.start/v2"},
54
+ "contract": {"const": "gentle-ai.review-integration/v1"},
55
+ "operation": {"const": "review.start"},
56
+ "action": {"enum": ["created", "resumed", "reuse-receipt", "blocked-scope-action"]},
57
+ "lenses_required": {"type": "boolean"},
58
+ "lineage_id": {"type": "string", "minLength": 1},
59
+ "state": {
60
+ "enum": [
61
+ "unreviewed",
62
+ "reviewing",
63
+ "judges_confirmed",
64
+ "findings_frozen",
65
+ "evidence_classified",
66
+ "fix_required",
67
+ "fixing",
68
+ "fix_validating",
69
+ "correction_required",
70
+ "validating",
71
+ "ready_final_verification",
72
+ "final_verifying",
73
+ "approved",
74
+ "escalated",
75
+ "invalidated"
76
+ ]
77
+ },
78
+ "risk_level": {"enum": ["low", "medium", "high"]},
79
+ "selected_lenses": {
80
+ "type": "array",
81
+ "maxItems": 4,
82
+ "uniqueItems": true,
83
+ "items": {"enum": ["review-risk", "review-resilience", "review-readability", "review-reliability"]}
84
+ },
85
+ "projection": {"enum": ["workspace", "staged"]},
86
+ "target_mode": {"const": "base-workspace-overlay"},
87
+ "target_identity": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
88
+ "base_tree": {"type": "string", "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$"},
89
+ "candidate_tree": {"type": "string", "pattern": "^[0-9a-f]{40}([0-9a-f]{24})?$"},
90
+ "changed_files": {"type": "integer", "minimum": 0},
91
+ "changed_lines": {"type": "integer", "minimum": 0},
92
+ "correction_budget": {"type": "integer", "minimum": 0, "maximum": 200},
93
+ "risk_reasons": {
94
+ "type": "array",
95
+ "minItems": 1,
96
+ "uniqueItems": true,
97
+ "items": {"$ref": "#/$defs/risk_reason"}
98
+ },
99
+ "artifact_subjects": {
100
+ "type": "array",
101
+ "maxItems": 4,
102
+ "items": {"$ref": "#/$defs/artifact_subject"}
103
+ },
104
+ "candidate_diff": {"$ref": "#/$defs/frozen_candidate_diff"},
105
+ "changed_path_manifest": {
106
+ "type": "array",
107
+ "uniqueItems": true,
108
+ "items": {"$ref": "#/$defs/changed_path"}
109
+ },
110
+ "repository_context": {
111
+ "type": "object",
112
+ "additionalProperties": false,
113
+ "required": ["capability", "handle", "revision", "target_identity"],
114
+ "properties": {
115
+ "capability": {"const": "review.opaque_repository_context"},
116
+ "handle": {"type": "string", "pattern": "^rctx1_[0-9a-f]{64}$"},
117
+ "revision": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
118
+ "target_identity": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"}
119
+ }
120
+ }
121
+ },
122
+ "$defs": {
123
+ "artifact_subject": {
124
+ "type": "object",
125
+ "additionalProperties": false,
126
+ "required": [
127
+ "schema",
128
+ "subject_hash",
129
+ "lineage_id",
130
+ "authority_revision",
131
+ "target_identity",
132
+ "candidate_diff_sha256",
133
+ "changed_path_manifest_sha256",
134
+ "lens",
135
+ "selected_order"
136
+ ],
137
+ "properties": {
138
+ "schema": {"const": "gentle-ai.review-artifact-subject/v1"},
139
+ "subject_hash": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
140
+ "lineage_id": {"type": "string", "minLength": 1},
141
+ "authority_revision": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
142
+ "target_identity": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
143
+ "candidate_diff_sha256": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
144
+ "changed_path_manifest_sha256": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
145
+ "lens": {"enum": ["review-risk", "review-resilience", "review-readability", "review-reliability"]},
146
+ "selected_order": {"type": "integer", "minimum": 0, "maximum": 3},
147
+ "correction_target_identity": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"}
148
+ }
149
+ },
150
+ "frozen_candidate_diff": {
151
+ "type": "object",
152
+ "additionalProperties": false,
153
+ "required": ["encoding", "data", "sha256", "byte_size"],
154
+ "properties": {
155
+ "encoding": {"const": "base64"},
156
+ "data": {
157
+ "type": "string",
158
+ "maxLength": 5592408,
159
+ "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
160
+ },
161
+ "sha256": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
162
+ "byte_size": {"type": "integer", "minimum": 0, "maximum": 4194304}
163
+ }
164
+ },
165
+ "changed_path": {
166
+ "type": "object",
167
+ "additionalProperties": false,
168
+ "required": [
169
+ "path",
170
+ "status",
171
+ "old_mode",
172
+ "new_mode",
173
+ "deleted",
174
+ "type_changed",
175
+ "mode_only",
176
+ "intended_untracked"
177
+ ],
178
+ "properties": {
179
+ "path": {"type": "string", "minLength": 1},
180
+ "status": {"enum": ["A", "D", "M", "T"]},
181
+ "old_mode": {"type": "string", "pattern": "^[0-7]{6}$"},
182
+ "new_mode": {"type": "string", "pattern": "^[0-7]{6}$"},
183
+ "deleted": {"type": "boolean"},
184
+ "type_changed": {"type": "boolean"},
185
+ "mode_only": {"type": "boolean"},
186
+ "intended_untracked": {"type": "boolean"}
187
+ }
188
+ },
189
+ "risk_reason": {
190
+ "type": "object",
191
+ "additionalProperties": false,
192
+ "required": ["code"],
193
+ "properties": {
194
+ "code": {
195
+ "enum": [
196
+ "configuration_change",
197
+ "empty_content",
198
+ "executable_change",
199
+ "executable_mode",
200
+ "hot_path",
201
+ "large_change",
202
+ "non_executable_only",
203
+ "process_boundary",
204
+ "process_scan_limit",
205
+ "service_token",
206
+ "shell_source"
207
+ ]
208
+ },
209
+ "signal": {"enum": ["auth", "update", "security", "payments", "permissions", "shell_process"]},
210
+ "path": {"type": "string", "minLength": 1},
211
+ "old_mode": {"type": "string", "pattern": "^[0-7]{6}$"},
212
+ "new_mode": {"type": "string", "pattern": "^[0-7]{6}$"}
213
+ }
214
+ }
215
+ }
216
+ }
@@ -8,8 +8,30 @@
8
8
  "target_mode": ["target_identity", "base_tree", "candidate_tree"],
9
9
  "target_identity": ["target_mode", "base_tree", "candidate_tree"],
10
10
  "base_tree": ["target_mode", "target_identity", "candidate_tree"],
11
- "candidate_tree": ["target_mode", "target_identity", "base_tree"]
11
+ "candidate_tree": ["target_mode", "target_identity", "base_tree"],
12
+ "candidate_diff": ["changed_path_manifest"],
13
+ "changed_path_manifest": ["candidate_diff"]
12
14
  },
15
+ "allOf": [
16
+ {
17
+ "if": {
18
+ "properties": {"selected_lenses": {"minItems": 1}},
19
+ "required": ["selected_lenses"]
20
+ },
21
+ "then": {"required": ["candidate_diff", "changed_path_manifest"]}
22
+ },
23
+ {
24
+ "if": {
25
+ "properties": {
26
+ "action": {"enum": ["created", "resumed"]},
27
+ "state": {"const": "reviewing"}
28
+ },
29
+ "required": ["action", "state"]
30
+ },
31
+ "then": {"required": ["repository_context"]},
32
+ "else": {"not": {"required": ["repository_context"]}}
33
+ }
34
+ ],
13
35
  "required": [
14
36
  "schema",
15
37
  "contract",
@@ -70,9 +92,65 @@
70
92
  "minItems": 1,
71
93
  "uniqueItems": true,
72
94
  "items": {"$ref": "#/$defs/risk_reason"}
95
+ },
96
+ "candidate_diff": {"$ref": "#/$defs/frozen_candidate_diff"},
97
+ "changed_path_manifest": {
98
+ "type": "array",
99
+ "uniqueItems": true,
100
+ "items": {"$ref": "#/$defs/changed_path"}
101
+ },
102
+ "repository_context": {
103
+ "type": "object",
104
+ "additionalProperties": false,
105
+ "required": ["capability", "handle", "revision", "target_identity"],
106
+ "properties": {
107
+ "capability": {"const": "review.opaque_repository_context"},
108
+ "handle": {"type": "string", "pattern": "^rctx1_[0-9a-f]{64}$"},
109
+ "revision": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
110
+ "target_identity": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"}
111
+ }
73
112
  }
74
113
  },
75
114
  "$defs": {
115
+ "frozen_candidate_diff": {
116
+ "type": "object",
117
+ "additionalProperties": false,
118
+ "required": ["encoding", "data", "sha256", "byte_size"],
119
+ "properties": {
120
+ "encoding": {"const": "base64"},
121
+ "data": {
122
+ "type": "string",
123
+ "maxLength": 5592408,
124
+ "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
125
+ },
126
+ "sha256": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
127
+ "byte_size": {"type": "integer", "minimum": 0, "maximum": 4194304}
128
+ }
129
+ },
130
+ "changed_path": {
131
+ "type": "object",
132
+ "additionalProperties": false,
133
+ "required": [
134
+ "path",
135
+ "status",
136
+ "old_mode",
137
+ "new_mode",
138
+ "deleted",
139
+ "type_changed",
140
+ "mode_only",
141
+ "intended_untracked"
142
+ ],
143
+ "properties": {
144
+ "path": {"type": "string", "minLength": 1},
145
+ "status": {"enum": ["A", "D", "M", "T"]},
146
+ "old_mode": {"type": "string", "pattern": "^[0-7]{6}$"},
147
+ "new_mode": {"type": "string", "pattern": "^[0-7]{6}$"},
148
+ "deleted": {"type": "boolean"},
149
+ "type_changed": {"type": "boolean"},
150
+ "mode_only": {"type": "boolean"},
151
+ "intended_untracked": {"type": "boolean"}
152
+ }
153
+ },
76
154
  "risk_reason": {
77
155
  "type": "object",
78
156
  "additionalProperties": false,
@@ -86,8 +164,6 @@
86
164
  "hot_path",
87
165
  "large_change",
88
166
  "non_executable_only",
89
- "process_boundary",
90
- "process_scan_limit",
91
167
  "service_token",
92
168
  "shell_source"
93
169
  ]