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.
- package/README.md +40 -9
- package/assets/agents/review-readability.md +0 -1
- package/assets/agents/review-reliability.md +0 -1
- package/assets/agents/review-resilience.md +0 -1
- package/assets/agents/review-risk.md +0 -1
- package/contracts/review-integration/v1/fixtures/binding-revision-conflict.fixture.json +25 -0
- package/contracts/review-integration/v1/fixtures/capabilities-v1.2.fixture.json +263 -0
- package/contracts/review-integration/v1/fixtures/capabilities-v1.3.fixture.json +301 -0
- package/contracts/review-integration/v1/fixtures/capabilities-v1.4.fixture.json +312 -0
- package/contracts/review-integration/v1/fixtures/capabilities-v1.5.fixture.json +321 -0
- package/contracts/review-integration/v1/fixtures/consent.fixture.json +36 -0
- package/contracts/review-integration/v1/fixtures/final-verification-incident.fixture.json +1 -0
- package/contracts/review-integration/v1/fixtures/operation.fixture.json +4 -0
- package/contracts/review-integration/v1/fixtures/repair-preflight.fixture.json +54 -0
- package/contracts/review-integration/v1/fixtures/start-v2.fixture.json +97 -0
- package/contracts/review-integration/v1/fixtures/start.fixture.json +25 -1
- package/contracts/review-integration/v1/fixtures/status-ambiguous.fixture.json +4 -0
- package/contracts/review-integration/v1/fixtures/status-corrupted.fixture.json +4 -0
- package/contracts/review-integration/v1/fixtures/status-recover.fixture.json +4 -0
- package/contracts/review-integration/v1/fixtures/status-unrelated.fixture.json +4 -0
- package/contracts/review-integration/v1/fixtures/status-v2-ambiguous.fixture.json +110 -0
- package/contracts/review-integration/v1/fixtures/status-v2-corrupted.fixture.json +107 -0
- package/contracts/review-integration/v1/fixtures/status-v2-final-verification-retry.fixture.json +192 -0
- package/contracts/review-integration/v1/fixtures/status-v2-recover.fixture.json +130 -0
- package/contracts/review-integration/v1/fixtures/status-v2-repair.fixture.json +161 -0
- package/contracts/review-integration/v1/fixtures/status-v2-unrelated.fixture.json +103 -0
- package/contracts/review-integration/v1/fixtures/status-v2.fixture.json +193 -0
- package/contracts/review-integration/v1/fixtures/status.fixture.json +19 -5
- package/contracts/review-integration/v1/fixtures/verification-evidence.fixture.json +1 -0
- package/contracts/review-integration/v1/schemas/admitted-result.schema.json +35 -0
- package/contracts/review-integration/v1/schemas/artifact-subject.schema.json +33 -0
- package/contracts/review-integration/v1/schemas/authority-repair-assessment.schema.json +247 -0
- package/contracts/review-integration/v1/schemas/capabilities-v1.2.schema.json +249 -0
- package/contracts/review-integration/v1/schemas/capabilities-v1.3.schema.json +429 -0
- package/contracts/review-integration/v1/schemas/capabilities-v1.4.schema.json +432 -0
- package/contracts/review-integration/v1/schemas/capabilities-v1.5.schema.json +154 -0
- package/contracts/review-integration/v1/schemas/consent.schema.json +86 -0
- package/contracts/review-integration/v1/schemas/failure.schema.json +54 -8
- package/contracts/review-integration/v1/schemas/final-verification-incident.schema.json +51 -0
- package/contracts/review-integration/v1/schemas/operation.schema.json +204 -31
- package/contracts/review-integration/v1/schemas/repair.schema.json +251 -0
- package/contracts/review-integration/v1/schemas/result-artifact-v2.schema.json +38 -0
- package/contracts/review-integration/v1/schemas/start-v2.schema.json +216 -0
- package/contracts/review-integration/v1/schemas/start.schema.json +79 -3
- package/contracts/review-integration/v1/schemas/status-v2.schema.json +313 -0
- package/contracts/review-integration/v1/schemas/status.schema.json +37 -10
- package/contracts/review-integration/v1/schemas/targeted-validation-request.schema.json +46 -0
- package/contracts/review-integration/v1/schemas/verification-evidence.schema.json +64 -0
- package/contracts/review-integration/v2/fixtures/capabilities.fixture.json +111 -0
- package/contracts/review-integration/v2/fixtures/consent.fixture.json +36 -0
- package/contracts/review-integration/v2/fixtures/start.fixture.json +93 -0
- package/contracts/review-integration/v2/fixtures/status.fixture.json +113 -0
- package/contracts/review-integration/v2/schemas/admitted-result.schema.json +14 -0
- package/contracts/review-integration/v2/schemas/artifact-subject.schema.json +36 -0
- package/contracts/review-integration/v2/schemas/capabilities.schema.json +111 -0
- package/contracts/review-integration/v2/schemas/consent.schema.json +70 -0
- package/contracts/review-integration/v2/schemas/failure.schema.json +35 -0
- package/contracts/review-integration/v2/schemas/operation.schema.json +46 -0
- package/contracts/review-integration/v2/schemas/repair.schema.json +22 -0
- package/contracts/review-integration/v2/schemas/start.schema.json +106 -0
- package/contracts/review-integration/v2/schemas/status.schema.json +104 -0
- package/docs/native-authority-architecture.md +18 -3
- package/docs/review-integration.md +175 -27
- package/extensions/gentle-ai.ts +414 -19
- package/lib/gentle-ai-binary.ts +1 -1
- package/lib/native-review-cli.ts +679 -57
- package/lib/review-candidate-view.ts +131 -1
- package/lib/review-compact-contract.ts +12 -3
- package/lib/review-consent-latch.ts +51 -0
- package/lib/review-correction-lifecycle.ts +170 -0
- package/lib/review-integration-v2.ts +1563 -0
- package/package.json +15 -11
- package/runtime/gentle-ai-binary.mjs +1 -1
- package/runtime/native-review-cli.mjs +663 -41
- package/runtime/review-integration-v2.mjs +1564 -0
- package/scripts/build-git-commit-transaction-runner.mjs +1 -1
- package/scripts/gentle-ai-installer.mjs +16 -11
- package/scripts/install-gentle-ai.mjs +7 -3
- package/scripts/test-packed-runner.mjs +2 -2
- package/scripts/verify-package-files.mjs +216 -64
- package/skills/release/SKILL.md +38 -11
- package/tests/devbinary/native-review-parity.devtest.ts +348 -0
- package/tests/gentle-ai-binary.test.ts +8 -1
- package/tests/gentle-ai-installer.test.ts +24 -21
- package/tests/native-binary-gate.test.ts +145 -0
- package/tests/native-review-capability-contract.test.ts +87 -0
- package/tests/native-review-cli.test.ts +44 -1
- package/tests/native-review-parity-runtime.test.ts +70 -23
- package/tests/native-review-parity.test.ts +673 -0
- package/tests/native-risk-evidence-parity.test.ts +91 -0
- package/tests/package-manifest.test.ts +72 -7
- package/tests/review-actor-tool-deny.test.ts +20 -5
- package/tests/review-candidate-view.test.ts +331 -1
- package/tests/review-compact-contract.test.ts +5 -0
- package/tests/review-consent-latch.test.ts +67 -0
- package/tests/review-controller-native-recovery.test.ts +180 -5
- package/tests/review-controller-native-routing.test.ts +385 -12
- package/tests/review-controller-workspace-root.test.ts +26 -6
- package/tests/review-correction-lifecycle.test.ts +174 -0
- package/tests/review-integration-v2.test.ts +539 -0
- package/tests/runtime-harness.mjs +187 -0
- package/tests/support/native-binary-gate.ts +86 -0
- package/tests/verify-package-files.test.ts +119 -0
- package/lib/review-integration-v1.ts +0 -795
- package/runtime/review-integration-v1.mjs +0 -796
- package/tests/native-review-integration-v1.test.ts +0 -102
- 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
|
+
}
|