@reviewsensei/cli-win32-x64 0.1.1 → 0.6.6

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 (42) hide show
  1. package/bin/_internal/base_library.zip +0 -0
  2. package/bin/_internal/jsonschema-4.26.0.dist-info/RECORD +1 -1
  3. package/bin/_internal/review_sensei/default_stages/01-default-review.json +1 -1
  4. package/bin/_internal/review_sensei/schemas/blocker-admission.schema.json +97 -0
  5. package/bin/_internal/review_sensei/schemas/canary-binding.schema.json +22 -0
  6. package/bin/_internal/review_sensei/schemas/candidate-finding.schema.json +59 -0
  7. package/bin/_internal/review_sensei/schemas/channel-promotion.schema.json +30 -0
  8. package/bin/_internal/review_sensei/schemas/compatibility-manifest.schema.json +44 -0
  9. package/bin/_internal/review_sensei/schemas/convergence-sequence-report.schema.json +72 -0
  10. package/bin/_internal/review_sensei/schemas/conversation-reply.schema.json +6 -1
  11. package/bin/_internal/review_sensei/schemas/coverage-manifest.schema.json +99 -0
  12. package/bin/_internal/review_sensei/schemas/evaluation-report.schema.json +17 -0
  13. package/bin/_internal/review_sensei/schemas/later-finding-classification.schema.json +81 -0
  14. package/bin/_internal/review_sensei/schemas/learning-entry.schema.json +11 -1
  15. package/bin/_internal/review_sensei/schemas/learning-feedback.schema.json +56 -0
  16. package/bin/_internal/review_sensei/schemas/observed-convergence-report.schema.json +93 -0
  17. package/bin/_internal/review_sensei/schemas/openrouter-qualification.schema.json +108 -0
  18. package/bin/_internal/review_sensei/schemas/promotion-record.schema.json +39 -0
  19. package/bin/_internal/review_sensei/schemas/recovery-artifact.schema.json +26 -0
  20. package/bin/_internal/review_sensei/schemas/review-comment.schema.json +22 -3
  21. package/bin/_internal/review_sensei/schemas/review-convergence-policy.schema.json +49 -0
  22. package/bin/_internal/review_sensei/schemas/review-result.schema.json +109 -3
  23. package/bin/_internal/review_sensei/schemas/review-round-decision.schema.json +58 -0
  24. package/bin/_internal/review_sensei/schemas/review-stage.schema.json +13 -0
  25. package/bin/_internal/review_sensei/schemas/review-transaction.schema.json +71 -0
  26. package/bin/_internal/review_sensei/schemas/run-outcome.schema.json +29 -0
  27. package/bin/_internal/review_sensei/schemas/session-record.schema.json +312 -0
  28. package/bin/_internal/review_sensei/schemas/stage.schema.json +6 -0
  29. package/bin/_internal/review_sensei/schemas/verification-result.schema.json +14 -0
  30. package/bin/_internal/review_sensei/schemas/verification-scope.schema.json +80 -0
  31. package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.6.dist-info}/METADATA +217 -63
  32. package/bin/_internal/review_sensei-0.6.6.dist-info/RECORD +175 -0
  33. package/bin/review-sensei.exe +0 -0
  34. package/package.json +1 -1
  35. package/bin/_internal/review_sensei-0.1.1.dist-info/RECORD +0 -103
  36. /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.6.dist-info}/INSTALLER +0 -0
  37. /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.6.dist-info}/REQUESTED +0 -0
  38. /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.6.dist-info}/WHEEL +0 -0
  39. /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.6.dist-info}/direct_url.json +0 -0
  40. /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.6.dist-info}/entry_points.txt +0 -0
  41. /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.6.dist-info}/licenses/LICENSE +0 -0
  42. /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.6.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,56 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/learning-feedback.schema.json",
4
+ "title": "ReviewSensei learning feedback v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schema_version", "records"],
8
+ "properties": {
9
+ "schema_version": {"const": "1.0"},
10
+ "records": {
11
+ "type": "array",
12
+ "maxItems": 256,
13
+ "items": {
14
+ "type": "object",
15
+ "additionalProperties": false,
16
+ "required": ["learning_id", "finding_id", "outcome"],
17
+ "properties": {
18
+ "learning_id": {
19
+ "type": "string",
20
+ "pattern": "^[a-z0-9][a-z0-9._-]*$"
21
+ },
22
+ "finding_id": {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "maxLength": 256,
26
+ "pattern": "\\S",
27
+ "description": "Must contain a non-whitespace character. maxLength counts characters; the loader additionally enforces an authoritative 256 UTF-8 byte bound, so a multibyte value can satisfy this schema and still be rejected."
28
+ },
29
+ "outcome": {
30
+ "type": "string",
31
+ "enum": ["useful", "incorrect", "obsolete", "unverified"]
32
+ },
33
+ "note": {
34
+ "type": "string",
35
+ "minLength": 1,
36
+ "maxLength": 512,
37
+ "pattern": "\\S",
38
+ "description": "Must contain a non-whitespace character. maxLength counts characters; the loader additionally enforces an authoritative 512 UTF-8 byte bound, so a multibyte value can satisfy this schema and still be rejected."
39
+ }
40
+ }
41
+ }
42
+ }
43
+ },
44
+ "examples": [
45
+ {
46
+ "schema_version": "1.0",
47
+ "records": [
48
+ {
49
+ "learning_id": "provider-boundary",
50
+ "finding_id": "finding-1",
51
+ "outcome": "useful"
52
+ }
53
+ ]
54
+ }
55
+ ]
56
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/observed-convergence-report.schema.json",
4
+ "title": "ReviewSensei observed convergence evidence report v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schema_version", "mode", "events", "baseline_events", "command_events", "finding_metrics", "execution_metrics", "shadow_isolated", "evidence_identity", "approval_events", "cap_created_approval", "cutover_status", "unmet_criteria", "limitations"],
8
+ "properties": {
9
+ "schema_version": {"const": "1.0"},
10
+ "mode": {"type": "string", "enum": ["advisory", "merge-focused", "strict"]},
11
+ "events": {
12
+ "type": "array",
13
+ "minItems": 1,
14
+ "maxItems": 32,
15
+ "items": {
16
+ "type": "object",
17
+ "additionalProperties": false,
18
+ "required": ["label", "provider_calls", "baseline_loaded", "publication_status", "handoff_reason", "approval_events"],
19
+ "allOf": [
20
+ {
21
+ "if": {
22
+ "properties": {"publication_status": {"const": "handoff"}},
23
+ "required": ["publication_status"]
24
+ },
25
+ "else": {"properties": {"handoff_reason": {"type": "null"}}}
26
+ }
27
+ ],
28
+ "properties": {
29
+ "label": {"type": "string", "minLength": 1, "maxLength": 128},
30
+ "provider_calls": {"type": "integer", "minimum": 0, "maximum": 32},
31
+ "baseline_loaded": {"type": "boolean"},
32
+ "publication_status": {"type": "string", "enum": ["published", "handoff", "disabled", "already_published"]},
33
+ "handoff_reason": {
34
+ "anyOf": [
35
+ {"type": "string", "minLength": 1, "maxLength": 128},
36
+ {"type": "null"}
37
+ ]
38
+ },
39
+ "approval_events": {"type": "integer", "minimum": 0, "maximum": 32}
40
+ }
41
+ }
42
+ },
43
+ "baseline_events": {"type": "integer", "minimum": 0, "maximum": 32},
44
+ "command_events": {"type": "array", "minItems": 2, "maxItems": 8, "items": {"type": "string", "minLength": 1, "maxLength": 128}},
45
+ "finding_metrics": {
46
+ "type": "object",
47
+ "additionalProperties": false,
48
+ "required": ["expected_material_findings", "observed_material_findings", "matched_material_findings", "missed_material_findings", "unjustified_late_blockers", "blocker_precision", "seeded_material_regressions_detected", "duplicate_findings", "reopened_findings", "contradictions"],
49
+ "properties": {
50
+ "expected_material_findings": {"type": "integer", "minimum": 0, "maximum": 512},
51
+ "observed_material_findings": {"type": "integer", "minimum": 0, "maximum": 512},
52
+ "matched_material_findings": {"type": "integer", "minimum": 0, "maximum": 512},
53
+ "missed_material_findings": {"type": "integer", "minimum": 0, "maximum": 512},
54
+ "unjustified_late_blockers": {"type": "integer", "minimum": 0, "maximum": 512},
55
+ "blocker_precision": {"type": ["number", "null"], "minimum": 0, "maximum": 1},
56
+ "seeded_material_regressions_detected": {"type": "integer", "minimum": 0, "maximum": 512},
57
+ "duplicate_findings": {"type": "integer", "minimum": 0, "maximum": 512},
58
+ "reopened_findings": {"type": "integer", "minimum": 0, "maximum": 512},
59
+ "contradictions": {"type": "integer", "minimum": 0, "maximum": 512}
60
+ }
61
+ },
62
+ "execution_metrics": {
63
+ "type": "object",
64
+ "additionalProperties": false,
65
+ "required": ["completed_rounds", "handoffs", "provider_calls", "failed_attempts"],
66
+ "properties": {
67
+ "completed_rounds": {"type": "integer", "minimum": 0, "maximum": 32},
68
+ "handoffs": {"type": "integer", "minimum": 0, "maximum": 32},
69
+ "provider_calls": {"type": "integer", "minimum": 0, "maximum": 512},
70
+ "failed_attempts": {"type": "integer", "minimum": 0, "maximum": 32}
71
+ }
72
+ },
73
+ "shadow_isolated": {"type": "boolean"},
74
+ "evidence_identity": {
75
+ "type": "object",
76
+ "additionalProperties": false,
77
+ "required": ["source_identity", "package_identity", "workflow_identity", "configuration_digest", "fixture_identity", "command"],
78
+ "properties": {
79
+ "source_identity": {"type": "string", "minLength": 1, "maxLength": 256},
80
+ "package_identity": {"type": "string", "minLength": 1, "maxLength": 256},
81
+ "workflow_identity": {"type": "string", "minLength": 1, "maxLength": 256},
82
+ "configuration_digest": {"type": "string", "minLength": 1, "maxLength": 256},
83
+ "fixture_identity": {"type": "string", "minLength": 1, "maxLength": 256},
84
+ "command": {"type": "string", "minLength": 1, "maxLength": 256}
85
+ }
86
+ },
87
+ "approval_events": {"type": ["integer", "null"], "minimum": 0, "maximum": 32},
88
+ "cap_created_approval": {"type": ["boolean", "null"]},
89
+ "cutover_status": {"type": "string", "enum": ["passed", "not_ready"]},
90
+ "unmet_criteria": {"type": "array", "maxItems": 16, "items": {"type": "string", "minLength": 1, "maxLength": 256}},
91
+ "limitations": {"type": "array", "minItems": 1, "maxItems": 8, "items": {"type": "string", "minLength": 1, "maxLength": 256}}
92
+ }
93
+ }
@@ -0,0 +1,108 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/openrouter-qualification.schema.json",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "schema_version",
8
+ "engine_digest",
9
+ "prompt_digest",
10
+ "configuration_digest",
11
+ "corpus_digest",
12
+ "provider",
13
+ "model",
14
+ "observed_revision",
15
+ "run_count",
16
+ "evaluated_at",
17
+ "reproducibility",
18
+ "status",
19
+ "rollback_decision",
20
+ "qualification_target",
21
+ "evidence_references",
22
+ "limitations"
23
+ ],
24
+ "properties": {
25
+ "schema_version": {"const": "1.0"},
26
+ "engine_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
27
+ "prompt_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
28
+ "configuration_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
29
+ "corpus_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
30
+ "provider": {"const": "openrouter"},
31
+ "model": {"type": "string", "minLength": 1, "maxLength": 256},
32
+ "observed_revision": {"type": "string", "minLength": 1, "maxLength": 256},
33
+ "run_count": {"type": "integer", "minimum": 1},
34
+ "evaluated_at": {"type": "string", "minLength": 1, "maxLength": 64},
35
+ "reproducibility": {"type": "object", "minProperties": 1, "maxProperties": 32},
36
+ "status": {"enum": ["supported", "insufficient", "unsupported"]},
37
+ "rollback_decision": {"enum": ["revert-to-baseline", "hold", "none"]},
38
+ "qualification_target": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": [
42
+ "provider",
43
+ "model",
44
+ "upstream_provider",
45
+ "base_url",
46
+ "routing_policy_digest"
47
+ ],
48
+ "properties": {
49
+ "provider": {"const": "openrouter"},
50
+ "model": {"type": "string", "minLength": 1, "maxLength": 256},
51
+ "upstream_provider": {"type": "string", "minLength": 1, "maxLength": 128},
52
+ "base_url": {"type": "string", "minLength": 1, "maxLength": 256},
53
+ "routing_policy_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"}
54
+ }
55
+ },
56
+ "evidence_references": {
57
+ "type": "array",
58
+ "items": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
59
+ "maxItems": 32
60
+ },
61
+ "evidence_reference_kind": {
62
+ "description": "What evidence_references are digests of. Digests are taken over the retained report bytes; a digest of a re-serialized document is not interchangeable.",
63
+ "const": "retained-bytes-v1"
64
+ },
65
+ "limitations": {
66
+ "type": "array",
67
+ "items": {"type": "string", "minLength": 1, "maxLength": 512},
68
+ "maxItems": 32
69
+ }
70
+ },
71
+ "allOf": [
72
+ {
73
+ "if": {"properties": {"status": {"const": "supported"}}, "required": ["status"]},
74
+ "then": {
75
+ "properties": {"evidence_references": {"minItems": 3}},
76
+ "required": ["evidence_reference_kind"]
77
+ }
78
+ }
79
+ ],
80
+ "examples": [
81
+ {
82
+ "schema_version": "1.0",
83
+ "engine_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
84
+ "prompt_digest": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
85
+ "configuration_digest": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
86
+ "corpus_digest": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
87
+ "provider": "openrouter",
88
+ "model": "anthropic/claude-3.5-haiku",
89
+ "observed_revision": "pending-operator-live-evidence",
90
+ "run_count": 1,
91
+ "evaluated_at": "2026-09-16T00:00:00Z",
92
+ "reproducibility": {"temperature": 0},
93
+ "status": "insufficient",
94
+ "rollback_decision": "hold",
95
+ "qualification_target": {
96
+ "provider": "openrouter",
97
+ "model": "anthropic/claude-3.5-haiku",
98
+ "upstream_provider": "anthropic",
99
+ "base_url": "https://openrouter.ai/api/v1",
100
+ "routing_policy_digest": "97ee4e2219c11ea18a569068db74dbcce5eb8df5366eb8ffeb56ec98b81f11dd"
101
+ },
102
+ "evidence_references": [],
103
+ "limitations": [
104
+ "Harness-only record; live operator evidence is required before supported status."
105
+ ]
106
+ }
107
+ ]
108
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/promotion-record.schema.json",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["schema_version", "engine_digest", "prompt_digest", "configuration_digest", "corpus_digest", "provider", "model", "observed_revision", "run_count", "evaluated_at", "reproducibility", "status", "rollback_decision"],
7
+ "properties": {
8
+ "schema_version": {"const": "1.0"},
9
+ "engine_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
10
+ "prompt_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
11
+ "configuration_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
12
+ "corpus_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
13
+ "provider": {"type": "string", "minLength": 1, "maxLength": 128},
14
+ "model": {"type": "string", "minLength": 1, "maxLength": 256},
15
+ "observed_revision": {"type": "string", "minLength": 1, "maxLength": 256},
16
+ "run_count": {"type": "integer", "minimum": 1, "description": "At least one observed run is required for every status; supported promotions require at least three."},
17
+ "evaluated_at": {"type": "string", "minLength": 1, "maxLength": 64},
18
+ "reproducibility": {"type": "object", "minProperties": 1, "maxProperties": 32, "description": "Reproducibility settings are required for every status."},
19
+ "status": {"enum": ["supported", "insufficient", "unsupported"], "description": "Only supported with at least three runs can authorize promotion."},
20
+ "rollback_decision": {"enum": ["revert-to-baseline", "hold", "none"]}
21
+ },
22
+ "examples": [
23
+ {
24
+ "schema_version": "1.0",
25
+ "engine_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
26
+ "prompt_digest": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
27
+ "configuration_digest": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
28
+ "corpus_digest": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
29
+ "provider": "ollama",
30
+ "model": "qwen3.5:4b",
31
+ "observed_revision": "local-ollama-1",
32
+ "run_count": 3,
33
+ "evaluated_at": "2026-09-16T00:00:00Z",
34
+ "reproducibility": {"seed": "fixed", "temperature": 0},
35
+ "status": "supported",
36
+ "rollback_decision": "revert-to-baseline"
37
+ }
38
+ ]
39
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/recovery-artifact.schema.json",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["schema_version", "repository", "pull_request_number", "base_sha", "head_sha", "result", "created_at", "expires_at", "result_sha256"],
7
+ "properties": {
8
+ "schema_version": {"const": "1.0"},
9
+ "repository": {"type": "string", "minLength": 1, "maxLength": 256},
10
+ "pull_request_number": {"type": "integer", "minimum": 1},
11
+ "base_sha": {"type": "string", "pattern": "^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},
12
+ "head_sha": {"type": "string", "pattern": "^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},
13
+ "result": {"$ref": "https://reviewsensei.dev/schemas/v1/review-result.schema.json"},
14
+ "created_at": {
15
+ "type": "string",
16
+ "format": "date-time",
17
+ "pattern": "^(?:\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2}))$"
18
+ },
19
+ "expires_at": {
20
+ "type": "string",
21
+ "format": "date-time",
22
+ "pattern": "^(?:\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2}))$"
23
+ },
24
+ "result_sha256": {"type": "string", "pattern": "^[a-f0-9]{64}$"}
25
+ }
26
+ }
@@ -4,13 +4,32 @@
4
4
  "title": "ReviewSensei review comment v1",
5
5
  "type": "object",
6
6
  "additionalProperties": false,
7
- "required": ["path", "line", "body"],
7
+ "required": ["path", "body"],
8
8
  "properties": {
9
9
  "path": {"type": "string", "minLength": 1},
10
10
  "line": {"type": "integer", "minimum": 1},
11
11
  "body": {"type": "string", "minLength": 1},
12
+ "side": {"type": "string", "enum": ["LEFT", "RIGHT", "FILE"]},
12
13
  "severity": {"type": "string", "minLength": 1},
13
14
  "fix_effort": {"type": "string", "minLength": 1},
14
- "category": {"type": "string", "minLength": 1}
15
- }
15
+ "blocking": {"type": "boolean"},
16
+ "category": {"type": "string", "minLength": 1},
17
+ "symbol": {"type": "string", "minLength": 1},
18
+ "defect_kind": {"type": "string", "minLength": 1},
19
+ "evidence_id": {"type": "string", "minLength": 1}
20
+ },
21
+ "allOf": [
22
+ {
23
+ "if": {
24
+ "properties": {"side": {"const": "FILE"}},
25
+ "required": ["side"]
26
+ },
27
+ "then": {
28
+ "not": {"required": ["line"]}
29
+ },
30
+ "else": {
31
+ "required": ["line"]
32
+ }
33
+ }
34
+ ]
16
35
  }
@@ -0,0 +1,49 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/review-convergence-policy.schema.json",
4
+ "title": "ReviewSensei review-convergence policy v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "mode",
10
+ "enforcement",
11
+ "max_completed_initial_reviews",
12
+ "max_completed_verification_rounds",
13
+ "max_failed_attempts",
14
+ "automatic_github_review_events",
15
+ "inline_advisory_threads"
16
+ ],
17
+ "properties": {
18
+ "schema_version": {"const": "1.0"},
19
+ "mode": {
20
+ "type": "string",
21
+ "enum": ["legacy", "advisory", "merge-focused", "strict"]
22
+ },
23
+ "enforcement": {
24
+ "type": "string",
25
+ "enum": ["display-only", "publication"]
26
+ },
27
+ "max_completed_initial_reviews": {
28
+ "type": "integer",
29
+ "minimum": 1,
30
+ "maximum": 8
31
+ },
32
+ "max_completed_verification_rounds": {
33
+ "type": "integer",
34
+ "minimum": 0,
35
+ "maximum": 8
36
+ },
37
+ "max_failed_attempts": {
38
+ "type": "integer",
39
+ "minimum": 1,
40
+ "maximum": 32
41
+ },
42
+ "automatic_github_review_events": {"type": "boolean"},
43
+ "inline_advisory_threads": {"type": "boolean"},
44
+ "policy_digest": {
45
+ "type": "string",
46
+ "pattern": "^[a-f0-9]{64}$"
47
+ }
48
+ }
49
+ }
@@ -12,18 +12,73 @@
12
12
  "items": {
13
13
  "type": "object",
14
14
  "additionalProperties": false,
15
- "required": ["path", "line", "body"],
15
+ "required": ["path", "body"],
16
16
  "properties": {
17
17
  "path": {"type": "string", "minLength": 1},
18
18
  "line": {"type": "integer", "minimum": 1},
19
19
  "body": {"type": "string", "minLength": 1},
20
+ "side": {"type": "string", "enum": ["LEFT", "RIGHT", "FILE"]},
20
21
  "severity": {"type": "string", "minLength": 1},
21
22
  "fix_effort": {"type": "string", "minLength": 1},
22
- "category": {"type": "string", "minLength": 1}
23
- }
23
+ "blocking": {"type": "boolean"},
24
+ "category": {"type": "string", "minLength": 1},
25
+ "symbol": {"type": "string", "minLength": 1},
26
+ "defect_kind": {"type": "string", "minLength": 1},
27
+ "evidence_id": {"type": "string", "minLength": 1}
28
+ },
29
+ "allOf": [
30
+ {
31
+ "if": {
32
+ "properties": {"side": {"const": "FILE"}},
33
+ "required": ["side"]
34
+ },
35
+ "then": {
36
+ "not": {"required": ["line"]}
37
+ },
38
+ "else": {
39
+ "required": ["line"]
40
+ }
41
+ }
42
+ ]
24
43
  }
25
44
  },
26
45
  "provider": {"type": "string", "minLength": 1},
46
+ "review_status": {
47
+ "type": "string",
48
+ "enum": ["complete", "partial", "incomplete", "summary-only"]
49
+ },
50
+ "evidence_policy": {
51
+ "type": "string",
52
+ "enum": ["legacy", "confirmed"]
53
+ },
54
+ "coverage_mode": {
55
+ "type": "string",
56
+ "enum": ["full", "incremental", "fallback-full"]
57
+ },
58
+ "finding_lifecycles": {
59
+ "type": "array",
60
+ "items": {
61
+ "type": "object",
62
+ "additionalProperties": false,
63
+ "required": ["fingerprint", "state"],
64
+ "properties": {
65
+ "fingerprint": {
66
+ "type": "string",
67
+ "pattern": "^[a-f0-9]{64}$"
68
+ },
69
+ "state": {
70
+ "type": "string",
71
+ "enum": ["new", "still-present", "fixed", "outdated", "uncertain"]
72
+ }
73
+ }
74
+ }
75
+ },
76
+ "coverage": {
77
+ "$ref": "https://reviewsensei.dev/schemas/v1/coverage-manifest.schema.json"
78
+ },
79
+ "transaction": {
80
+ "$ref": "https://reviewsensei.dev/schemas/v1/review-transaction.schema.json"
81
+ },
27
82
  "model": {
28
83
  "anyOf": [
29
84
  {"type": "string", "minLength": 1},
@@ -48,6 +103,57 @@
48
103
  "category": {"type": "string", "minLength": 1}
49
104
  }
50
105
  }
106
+ },
107
+ "source_context": {
108
+ "type": "object",
109
+ "additionalProperties": false,
110
+ "required": [
111
+ "enabled",
112
+ "complete",
113
+ "snapshot",
114
+ "languages",
115
+ "excerpt_count",
116
+ "outcomes"
117
+ ],
118
+ "properties": {
119
+ "enabled": {"type": "boolean"},
120
+ "complete": {"type": "boolean"},
121
+ "snapshot": {
122
+ "type": "object",
123
+ "additionalProperties": false,
124
+ "required": ["revision", "kind"],
125
+ "properties": {
126
+ "revision": {
127
+ "type": "string",
128
+ "pattern": "^[a-f0-9]{40}$"
129
+ },
130
+ "kind": {"type": "string", "const": "base"}
131
+ }
132
+ },
133
+ "languages": {
134
+ "type": "array",
135
+ "minItems": 1,
136
+ "maxItems": 1,
137
+ "items": {"type": "string", "const": "python"}
138
+ },
139
+ "excerpt_count": {"type": "integer", "minimum": 0},
140
+ "outcomes": {
141
+ "type": "array",
142
+ "items": {
143
+ "type": "object",
144
+ "additionalProperties": false,
145
+ "required": ["path", "status"],
146
+ "properties": {
147
+ "path": {"type": "string", "minLength": 1},
148
+ "status": {"type": "string", "minLength": 1}
149
+ }
150
+ }
151
+ },
152
+ "untrusted_head_sha": {
153
+ "type": "string",
154
+ "pattern": "^[a-f0-9]{40}$"
155
+ }
156
+ }
51
157
  }
52
158
  }
53
159
  }
@@ -0,0 +1,58 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/review-round-decision.schema.json",
4
+ "title": "ReviewSensei review-round admission decision v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "mode",
10
+ "admit",
11
+ "count_as_completed_round",
12
+ "round_kind",
13
+ "remaining_initial_reviews",
14
+ "remaining_verification_rounds",
15
+ "handoff",
16
+ "handoff_reason",
17
+ "may_emit_approve",
18
+ "cap_creates_approval"
19
+ ],
20
+ "properties": {
21
+ "schema_version": {"const": "1.0"},
22
+ "mode": {
23
+ "type": "string",
24
+ "enum": ["legacy", "advisory", "merge-focused", "strict"]
25
+ },
26
+ "admit": {"type": "boolean"},
27
+ "count_as_completed_round": {"type": "boolean"},
28
+ "round_kind": {
29
+ "type": "string",
30
+ "enum": ["initial", "verification", "none"]
31
+ },
32
+ "remaining_initial_reviews": {
33
+ "type": "integer",
34
+ "minimum": 0,
35
+ "maximum": 8
36
+ },
37
+ "remaining_verification_rounds": {
38
+ "type": "integer",
39
+ "minimum": 0,
40
+ "maximum": 8
41
+ },
42
+ "handoff": {"type": "boolean"},
43
+ "handoff_reason": {
44
+ "type": ["string", "null"],
45
+ "enum": [
46
+ "round-budget-exhausted",
47
+ "failed-attempt-budget-exhausted",
48
+ "no-progress",
49
+ "incomplete-coverage",
50
+ "unreviewed-head",
51
+ "paused",
52
+ null
53
+ ]
54
+ },
55
+ "may_emit_approve": {"type": "boolean"},
56
+ "cap_creates_approval": {"type": "boolean", "const": false}
57
+ }
58
+ }
@@ -39,6 +39,13 @@
39
39
  "type": "string",
40
40
  "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$"
41
41
  }
42
+ },
43
+ "provider_profile": {
44
+ "type": "string",
45
+ "minLength": 1,
46
+ "maxLength": 64,
47
+ "pattern": "^(?:[a-z0-9]+(?:-[a-z0-9]+)*|local/private)$",
48
+ "description": "Named provider profile for this stage. Accepts canonical names and the local/private alias. Local/private runs cannot select a remote profile."
42
49
  }
43
50
  },
44
51
  "not": {
@@ -149,6 +156,12 @@
149
156
  "category_ids": ["correctness", "security"],
150
157
  "outputs": ["comments"],
151
158
  "prompt_template": "Review categories:\n{review_categories}\n{diff}"
159
+ },
160
+ {
161
+ "name": "Fast comments stage",
162
+ "provider_profile": "fast-triage",
163
+ "outputs": ["comments"],
164
+ "prompt_template": "Return JSON comments for {diff}"
152
165
  }
153
166
  ]
154
167
  }