Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 111 additions & 0 deletions contracts/review-integration/v2/fixtures/capabilities.fixture.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
{
"schema": "gentle-ai.review-integration.capabilities/v2",
"contract": "gentle-ai.review-integration/v2",
"protocol": {"major": 2, "minor": 0},
"package": {"name": "gentle-ai", "version": "2.1.7-test", "release_channel": "prerelease"},
"build": {
"id": "sha256:444a9f0608eb22c4697fd2092f3afcfab040c0918343e7e04087730fd33fd5e1",
"go_version": "go1.25.10",
"module_version": "v2.1.7",
"vcs": "git",
"vcs_revision": "0123456789abcdef0123456789abcdef01234567",
"vcs_time": "2026-07-15T18:00:00Z",
"vcs_modified": "false"
},
"executable": {
"sha256": "sha256:dcc846103b16d365eaeeb9d7f289c23fc4f2897f23def1cb3fe7f05557b64705",
"evidence": "self-reported",
"verification": "compare-with-published-manifest"
},
"operations": [
"review.bind_sdd", "review.capabilities", "review.finalize", "review.repair",
"review.retry_final_verification", "review.start", "review.status", "review.validate"
],
"gates": ["post-apply", "pre-commit", "pre-push", "pre-pr", "release"],
"projections": ["staged", "workspace"],
"schemas": [
"gentle-ai.review-admitted-result/v2",
"gentle-ai.review-artifact-subject/v2",
"gentle-ai.review-authority-repair-assessment/v1",
"gentle-ai.review-authority-status/v1",
"gentle-ai.review-gate-request/v1",
"gentle-ai.review-integration.capabilities/v2",
"gentle-ai.review-integration.failure/v2",
"gentle-ai.review-final-verification-incident/v1",
"gentle-ai.review-integration.operation/v2",
"gentle-ai.review-integration.projection/v1",
"gentle-ai.review-integration.repair/v2",
"gentle-ai.review-integration.start/v3",
"gentle-ai.review-integration.status/v3",
"gentle-ai.review-receipt/v1",
"gentle-ai.review-receipt/v2",
"gentle-ai.review-result-artifact/v2",
"gentle-ai.review-targeted-validation-request/v1",
"gentle-ai.review-verification-evidence/v2",
"https://gentle-ai.dev/schema/review/refuter/v1",
"https://gentle-ai.dev/schema/review/reviewer/v1",
"https://gentle-ai.dev/schema/review/validator/v1",
"gentle-ai.review-integration.consent/v2"
],
"features": {
"mandatory": [
{"name": "compact_v2_authority", "supported": true, "requires": []},
{"name": "exact_receipt_replay", "supported": true, "requires": ["compact_v2_authority"]},
{"name": "five_delivery_gates", "supported": true, "requires": ["compact_v2_authority"]},
{"name": "immutable_snapshot", "supported": true, "requires": []},
{"name": "legacy_v1_target_scoped_read_only", "supported": true, "requires": ["target_scoped_status"]},
{"name": "repository_independent_capabilities", "supported": true, "requires": []},
{"name": "restart_safe_projection", "supported": true, "requires": ["target_scoped_status"]},
{"name": "sdd_receipt_binding", "supported": true, "requires": ["compact_v2_authority"]},
{"name": "target_scoped_status", "supported": true, "requires": ["repository_independent_capabilities"]},
{"name": "uniform_failure_envelope", "supported": true, "requires": ["repository_independent_capabilities"]}
],
"optional": [
{"name": "base_ref_workspace_overlay", "supported": true, "requires": ["immutable_snapshot", "restart_safe_projection"]},
{"name": "bounded_process_waits", "supported": true, "requires": ["uniform_failure_envelope"]},
{"name": "classified_authority_repair", "supported": true, "requires": ["native_next_transition", "uniform_failure_envelope"]},
{"name": "exact_gate_receipt_discovery", "supported": true, "requires": ["five_delivery_gates"]},
{"name": "native_frozen_candidate_context", "supported": true, "requires": ["immutable_snapshot"]},
{"name": "native_low_risk_verification", "supported": true, "requires": ["compact_v2_authority"]},
{"name": "native_next_transition", "supported": true, "requires": ["target_scoped_status"]},
{"name": "one_shot_final_verification_retry", "supported": true, "requires": ["compact_v2_authority", "exact_receipt_replay", "native_next_transition"]},
{"name": "opaque_repository_context", "supported": true, "requires": ["compact_v2_authority", "native_next_transition"]},
{"name": "outcome_bound_verification_evidence", "supported": true, "requires": ["compact_v2_authority", "native_next_transition"]},
{"name": "provider_artifact_admission", "supported": true, "requires": ["compact_v2_authority", "native_frozen_candidate_context", "opaque_repository_context"]},
{"name": "provider_targeted_validation_request", "supported": true, "requires": ["compact_v2_authority", "native_next_transition"]},
{"name": "recovered_correction_evidence", "supported": true, "requires": ["compact_v2_authority", "provider_targeted_validation_request"]},
{"name": "risk_reasons", "supported": true, "requires": ["repository_independent_capabilities"]},
{"name": "scope_change_diagnostics", "supported": true, "requires": ["uniform_failure_envelope"]},
{"name": "validating_result_reopen", "supported": true, "requires": ["compact_v2_authority", "provider_artifact_admission"]},
{"name": "provider_bound_native_git_context", "supported": true, "requires": ["native_frozen_candidate_context", "opaque_repository_context", "provider_artifact_admission"]}
]
},
"bootstrap": {
"command": "gentle-ai review status --cwd \u003crepo\u003e --contract gentle-ai.review-integration/v2 --next-transition",
"target_selector_variants": [
{"target_type": "staged", "arguments": ["--projection", "staged"]},
{"target_type": "base_ref", "arguments": ["--base-ref", "\u003cref\u003e"]},
{"target_type": "workspace_overlay_base_ref", "arguments": ["--workspace-overlay", "--base-ref", "\u003cref\u003e"]},
{"target_type": "workspace_overlay_base_tree", "arguments": ["--workspace-overlay", "--base-tree", "\u003ctree\u003e"]}
],
"required_feature": "native_next_transition",
"unsupported_outcome": "unsupported-capability",
"parent_only": true
},
"compatibility": {
"minimum_protocol_major": 2,
"maximum_protocol_major": 2,
"additive_minor_policy": "optional-fields-only",
"unknown_mandatory": "reject",
"unknown_optional": "ignore",
"modes": ["compact-v2", "legacy-v1"],
"legacy_window": {
"mode": "legacy-v1",
"state": "active",
"read_only": true,
"deprecation_started": true,
"removal": "not-scheduled",
"minimum_compatibility_releases": 1
}
}
}
36 changes: 36 additions & 0 deletions contracts/review-integration/v2/fixtures/consent.fixture.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"schema": "gentle-ai.review-integration.consent/v2",
"contract": "gentle-ai.review-integration/v2",
"operation": "review.start",
"action": "consent_required",
"blocking": true,
"target_identity": "sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5",
"projection": "workspace",
"risk_level": "high",
"changed_files": 1,
"changed_lines": 1,
"headline": "Gentle AI can review this change before you call it done.",
"reason": "this change gets a deeper review because it touches shell scripting in scripts/deploy.sh.",
"value": "Reviewing takes a bit longer, and it makes the result substantially safer.",
"risk_evidence": [
"shell scripting in scripts/deploy.sh"
],
"choices": [
{
"answer": "granted",
"label": "Run the review now",
"effect": "Reviews this candidate now and records the one-time question as answered, so future candidates are reviewed without asking again.",
"invocation": "gentle-ai review start --contract gentle-ai.review-integration/v2 --cwd /repo --target sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5 --projection workspace --lineage review-consent-fixture --consent granted"
},
{
"answer": "declined",
"label": "Not now, just this once",
"effect": "Skips the review for this candidate only; nothing is persisted and the next candidate is asked again. This is not the kill switch.",
"invocation": "gentle-ai review start --contract gentle-ai.review-integration/v2 --cwd /repo --target sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5 --projection workspace --lineage review-consent-fixture --consent declined"
}
],
"off_path": {
"note": "To turn reviews off for good, run 'gentle-ai review mode disable'.",
"command": "gentle-ai review mode disable"
}
}
93 changes: 93 additions & 0 deletions contracts/review-integration/v2/fixtures/start.fixture.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
{
"schema": "gentle-ai.review-integration.start/v3",
"contract": "gentle-ai.review-integration/v2",
"operation": "review.start",
"action": "created",
"lenses_required": true,
"lineage_id": "review-start-fixture",
"state": "reviewing",
"risk_level": "high",
"selected_lenses": [
"review-risk",
"review-resilience",
"review-readability",
"review-reliability"
],
"projection": "workspace",
"base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
"candidate_tree": "556e838994d4e5669ffafda7b72226598bc38297",
"changed_files": 1,
"changed_lines": 1,
"correction_budget": 1,
"risk_reasons": [
{"code": "shell_source", "signal": "shell_process", "path": "scripts/deploy.sh"}
],
"artifact_subjects": [
{
"schema": "gentle-ai.review-artifact-subject/v2",
"subject_hash": "sha256:2ec775b2a519da488fd76212470e9e42160179e394cfae2819f1f8ac3c7842e0",
"lineage_id": "review-start-fixture",
"authority_revision": "sha256:3411d049f39e891b50adfc76473199b473927d10245a227a3bc967eae0caf68c",
"target_identity": "sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5",
"base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
"candidate_tree": "556e838994d4e5669ffafda7b72226598bc38297",
"changed_path_manifest_sha256": "sha256:049219ea30e21c409608ea8527e65bcc6774d764363031a6cf0cb05e35c734ef",
"lens": "review-risk",
"selected_order": 0
},
{
"schema": "gentle-ai.review-artifact-subject/v2",
"subject_hash": "sha256:1800117ac48276e0039e3791287aed7af08ee65112476f9f0cbe5d11ca1044fe",
"lineage_id": "review-start-fixture",
"authority_revision": "sha256:3411d049f39e891b50adfc76473199b473927d10245a227a3bc967eae0caf68c",
"target_identity": "sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5",
"base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
"candidate_tree": "556e838994d4e5669ffafda7b72226598bc38297",
"changed_path_manifest_sha256": "sha256:049219ea30e21c409608ea8527e65bcc6774d764363031a6cf0cb05e35c734ef",
"lens": "review-resilience",
"selected_order": 1
},
{
"schema": "gentle-ai.review-artifact-subject/v2",
"subject_hash": "sha256:b426bc54f5f4f3ea446a84b7957e14492c803e8748f07425cd2e0652b485d7a5",
"lineage_id": "review-start-fixture",
"authority_revision": "sha256:3411d049f39e891b50adfc76473199b473927d10245a227a3bc967eae0caf68c",
"target_identity": "sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5",
"base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
"candidate_tree": "556e838994d4e5669ffafda7b72226598bc38297",
"changed_path_manifest_sha256": "sha256:049219ea30e21c409608ea8527e65bcc6774d764363031a6cf0cb05e35c734ef",
"lens": "review-readability",
"selected_order": 2
},
{
"schema": "gentle-ai.review-artifact-subject/v2",
"subject_hash": "sha256:1b43f90a9391e996e28d478c0aef85b1fd26229c1ccb2ef8bc56b418ab0b4a7f",
"lineage_id": "review-start-fixture",
"authority_revision": "sha256:3411d049f39e891b50adfc76473199b473927d10245a227a3bc967eae0caf68c",
"target_identity": "sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5",
"base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
"candidate_tree": "556e838994d4e5669ffafda7b72226598bc38297",
"changed_path_manifest_sha256": "sha256:049219ea30e21c409608ea8527e65bcc6774d764363031a6cf0cb05e35c734ef",
"lens": "review-reliability",
"selected_order": 3
}
],
"changed_path_manifest": [
{
"path": "scripts/deploy.sh",
"status": "A",
"old_mode": "000000",
"new_mode": "100644",
"deleted": false,
"type_changed": false,
"mode_only": false,
"intended_untracked": true
}
],
"repository_context": {
"capability": "review.opaque_repository_context",
"handle": "rctx1_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"revision": "sha256:3411d049f39e891b50adfc76473199b473927d10245a227a3bc967eae0caf68c",
"target_identity": "sha256:136dc6556e3bac8c2e7f7af7cc5ec361f449e383a997638128729059fefa06a5"
}
}
113 changes: 113 additions & 0 deletions contracts/review-integration/v2/fixtures/status.fixture.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
{
"schema": "gentle-ai.review-integration.status/v3",
"contract": "gentle-ai.review-integration/v2",
"operation": "review.status",
"applicability": "current_target",
"authority": {
"version": "compact-v2",
"lineage_id": "review-status-fixture",
"state": "reviewing",
"generation": 1,
"revision": "sha256:81cdad8f3182d4919147d3c4fe8f614814068e5ef68417e3dcbd5e326dd3e390"
},
"receipt": {"status": "expected_missing"},
"action": "finalize",
"replayability": "not_replayable",
"frozen": {"tier": "medium", "original_changed_lines": 2, "correction_budget": 1},
"target_identity": "sha256:e6faad1cb9ceb2db170e0ec9ea5394b44c3991dff6cbd02fb6787539715968f6",
"projection": {
"schema": "gentle-ai.review-integration.projection/v1",
"kind": "current-changes",
"projection": "workspace",
"base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
"initial_review_tree": "1c3325617279b38743f073302ba190fc421b5a09",
"current_candidate_tree": "1c3325617279b38743f073302ba190fc421b5a09",
"paths_digest": "sha256:b93fca961a97d240c2b7023e98772f49ebd2995eda7db07043270b57bed75d71",
"paths": ["tracked.txt"],
"intended_untracked": [],
"intended_untracked_proof": "sha256:b97229718d4c7fe50a8892eb474ae5aa6491697bccb400e3e31dbaca4894d2f3",
"initial_snapshot_identity": "sha256:e6faad1cb9ceb2db170e0ec9ea5394b44c3991dff6cbd02fb6787539715968f6",
"current_snapshot_identity": "sha256:e6faad1cb9ceb2db170e0ec9ea5394b44c3991dff6cbd02fb6787539715968f6"
},
"repair": {
"schema": "gentle-ai.review-authority-repair-assessment/v1",
"status": "unsupported",
"counts": {
"lineages": 0,
"compact_lineages": 0,
"legacy_lineages": 0,
"events": 0,
"bytes": 0,
"eligible_candidates": 0,
"unsupported_lineages": 0,
"conflicts": 0
},
"supported_operations": ["review/complete-fix", "review/validate-fix"],
"authorization_schema": "gentle-ai.review-repair-authorization/v1"
},
"candidates": [],
"next_transition": {
"kind": "collect",
"reason_code": "reviewer_results_required",
"collect": {
"inputs": [
{
"name": "reviewer_result",
"schema": "https://gentle-ai.dev/schema/review/reviewer/v1",
"capture_operation": "review.capture-result",
"arguments": [
{"name": "lineage", "value": "review-status-fixture", "token": "--lineage=review-status-fixture"},
{
"name": "expected-revision",
"value": "sha256:81cdad8f3182d4919147d3c4fe8f614814068e5ef68417e3dcbd5e326dd3e390",
"token": "--expected-revision=sha256:81cdad8f3182d4919147d3c4fe8f614814068e5ef68417e3dcbd5e326dd3e390"
},
{
"name": "target",
"value": "sha256:e6faad1cb9ceb2db170e0ec9ea5394b44c3991dff6cbd02fb6787539715968f6",
"token": "--target=sha256:e6faad1cb9ceb2db170e0ec9ea5394b44c3991dff6cbd02fb6787539715968f6"
},
{
"name": "repository-context",
"value": "rctx1_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"token": "--repository-context=rctx1_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
{"name": "lens", "value": "review-reliability", "token": "--lens=review-reliability"},
{"name": "order", "value": "0", "token": "--order=0"},
{
"name": "subject-hash",
"value": "sha256:34c226ef1586f0c77b30311320d4d2529819097fbb073ee31634f4d87a19da6a",
"token": "--subject-hash=sha256:34c226ef1586f0c77b30311320d4d2529819097fbb073ee31634f4d87a19da6a"
}
],
"artifact_subject": {
"schema": "gentle-ai.review-artifact-subject/v2",
"subject_hash": "sha256:34c226ef1586f0c77b30311320d4d2529819097fbb073ee31634f4d87a19da6a",
"lineage_id": "review-status-fixture",
"authority_revision": "sha256:81cdad8f3182d4919147d3c4fe8f614814068e5ef68417e3dcbd5e326dd3e390",
"target_identity": "sha256:e6faad1cb9ceb2db170e0ec9ea5394b44c3991dff6cbd02fb6787539715968f6",
"base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
"candidate_tree": "1c3325617279b38743f073302ba190fc421b5a09",
"changed_path_manifest_sha256": "sha256:64d028ff676fb4ef10f2d4a3488d568854b364b4cc4399578b5932d144d2347b",
"lens": "review-reliability",
"selected_order": 0
},
"base_tree": "3e21a205dd9b55021aeae87965092623807e455f",
"candidate_tree": "1c3325617279b38743f073302ba190fc421b5a09",
"changed_path_manifest": [
{
"path": "tracked.txt",
"status": "M",
"old_mode": "100644",
"new_mode": "100644",
"deleted": false,
"type_changed": false,
"mode_only": false,
"intended_untracked": false
}
]
}
]
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://gentle-ai.dev/contracts/review-integration/v2/schemas/admitted-result.schema.json",
"title": "Gentle AI provider-admitted native Git reviewer result v2",
"type": "object",
"additionalProperties": false,
"required": ["schema", "subject", "admission", "result"],
"properties": {
"schema": {"const": "gentle-ai.review-admitted-result/v2"},
"subject": {"$ref": "artifact-subject.schema.json"},
"admission": {"$ref": "../../v1/schemas/admitted-result.schema.json#/$defs/admission"},
"result": {"type": "object"}
}
}
Loading
Loading