@reviewsensei/cli-win32-x64 0.1.1 → 0.6.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/bin/_internal/base_library.zip +0 -0
- package/bin/_internal/jsonschema-4.26.0.dist-info/RECORD +1 -1
- package/bin/_internal/review_sensei/default_stages/01-default-review.json +1 -1
- package/bin/_internal/review_sensei/schemas/blocker-admission.schema.json +97 -0
- package/bin/_internal/review_sensei/schemas/canary-binding.schema.json +22 -0
- package/bin/_internal/review_sensei/schemas/candidate-finding.schema.json +59 -0
- package/bin/_internal/review_sensei/schemas/channel-promotion.schema.json +30 -0
- package/bin/_internal/review_sensei/schemas/compatibility-manifest.schema.json +44 -0
- package/bin/_internal/review_sensei/schemas/convergence-sequence-report.schema.json +72 -0
- package/bin/_internal/review_sensei/schemas/conversation-reply.schema.json +6 -1
- package/bin/_internal/review_sensei/schemas/coverage-manifest.schema.json +99 -0
- package/bin/_internal/review_sensei/schemas/evaluation-report.schema.json +17 -0
- package/bin/_internal/review_sensei/schemas/later-finding-classification.schema.json +81 -0
- package/bin/_internal/review_sensei/schemas/learning-entry.schema.json +11 -1
- package/bin/_internal/review_sensei/schemas/learning-feedback.schema.json +56 -0
- package/bin/_internal/review_sensei/schemas/openrouter-qualification.schema.json +108 -0
- package/bin/_internal/review_sensei/schemas/promotion-record.schema.json +39 -0
- package/bin/_internal/review_sensei/schemas/recovery-artifact.schema.json +26 -0
- package/bin/_internal/review_sensei/schemas/review-comment.schema.json +22 -3
- package/bin/_internal/review_sensei/schemas/review-convergence-policy.schema.json +49 -0
- package/bin/_internal/review_sensei/schemas/review-result.schema.json +109 -3
- package/bin/_internal/review_sensei/schemas/review-round-decision.schema.json +58 -0
- package/bin/_internal/review_sensei/schemas/review-stage.schema.json +13 -0
- package/bin/_internal/review_sensei/schemas/review-transaction.schema.json +71 -0
- package/bin/_internal/review_sensei/schemas/run-outcome.schema.json +29 -0
- package/bin/_internal/review_sensei/schemas/session-record.schema.json +312 -0
- package/bin/_internal/review_sensei/schemas/stage.schema.json +6 -0
- package/bin/_internal/review_sensei/schemas/verification-result.schema.json +14 -0
- package/bin/_internal/review_sensei/schemas/verification-scope.schema.json +80 -0
- package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.0.dist-info}/METADATA +208 -56
- package/bin/_internal/review_sensei-0.6.0.dist-info/RECORD +169 -0
- package/bin/review-sensei.exe +0 -0
- package/package.json +1 -1
- package/bin/_internal/review_sensei-0.1.1.dist-info/RECORD +0 -103
- /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.0.dist-info}/INSTALLER +0 -0
- /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.0.dist-info}/REQUESTED +0 -0
- /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.0.dist-info}/WHEEL +0 -0
- /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.0.dist-info}/direct_url.json +0 -0
- /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.0.dist-info}/entry_points.txt +0 -0
- /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.0.dist-info}/licenses/LICENSE +0 -0
- /package/bin/_internal/{review_sensei-0.1.1.dist-info → review_sensei-0.6.0.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,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", "
|
|
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
|
-
"
|
|
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", "
|
|
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
|
-
"
|
|
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
|
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://reviewsensei.dev/schemas/v1/review-transaction.schema.json",
|
|
4
|
+
"title": "ReviewSensei logical review transaction v1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"transaction_id",
|
|
9
|
+
"repository",
|
|
10
|
+
"pull_request",
|
|
11
|
+
"base_sha",
|
|
12
|
+
"head_sha",
|
|
13
|
+
"policy_digest",
|
|
14
|
+
"configuration_digest",
|
|
15
|
+
"evidence_digest",
|
|
16
|
+
"reservation_id",
|
|
17
|
+
"generation",
|
|
18
|
+
"phase"
|
|
19
|
+
],
|
|
20
|
+
"properties": {
|
|
21
|
+
"transaction_id": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
|
|
22
|
+
"repository": {"type": "string", "minLength": 1, "maxLength": 140},
|
|
23
|
+
"pull_request": {"type": "integer", "minimum": 1, "maximum": 2147483647},
|
|
24
|
+
"base_sha": {"type": "string", "pattern": "^[a-f0-9]{40}$"},
|
|
25
|
+
"head_sha": {"type": "string", "pattern": "^[a-f0-9]{40}$"},
|
|
26
|
+
"policy_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
|
|
27
|
+
"configuration_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
|
|
28
|
+
"evidence_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
|
|
29
|
+
"reservation_id": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
|
|
30
|
+
"generation": {"type": "integer", "minimum": 1, "maximum": 2147483647},
|
|
31
|
+
"phase": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"enum": [
|
|
34
|
+
"analysis",
|
|
35
|
+
"analysis_failed",
|
|
36
|
+
"publication_pending",
|
|
37
|
+
"publication_failed",
|
|
38
|
+
"publication_succeeded",
|
|
39
|
+
"publication_suppressed"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"result_sha256": {"type": "string", "pattern": "^[a-f0-9]{64}$"}
|
|
43
|
+
},
|
|
44
|
+
"allOf": [
|
|
45
|
+
{
|
|
46
|
+
"if": {
|
|
47
|
+
"required": ["phase"],
|
|
48
|
+
"properties": {
|
|
49
|
+
"phase": {"enum": ["analysis", "analysis_failed"]}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"then": {"not": {"required": ["result_sha256"]}}
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"if": {
|
|
56
|
+
"required": ["phase"],
|
|
57
|
+
"properties": {
|
|
58
|
+
"phase": {
|
|
59
|
+
"enum": [
|
|
60
|
+
"publication_pending",
|
|
61
|
+
"publication_failed",
|
|
62
|
+
"publication_succeeded",
|
|
63
|
+
"publication_suppressed"
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"then": {"required": ["result_sha256"]}
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://reviewsensei.dev/schemas/v1/run-outcome.schema.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": ["schema_version", "status", "stage_summary", "provider_calls", "retry_attempts", "prompt_bytes", "response_bytes", "elapsed_ms", "diagnostic"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schema_version": {"const": "1.0"},
|
|
9
|
+
"status": {"enum": ["reviewed", "partial", "skipped_stale", "skipped_policy", "provider_failed", "budget_exhausted", "publication_failed", "already_published", "action_required"]},
|
|
10
|
+
"repository": {"type": ["string", "null"], "maxLength": 256},
|
|
11
|
+
"pull_request_number": {"type": ["integer", "null"], "minimum": 1},
|
|
12
|
+
"base_sha": {"type": ["string", "null"], "pattern": "^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},
|
|
13
|
+
"head_sha": {"type": ["string", "null"], "pattern": "^(?:[a-f0-9]{40}|[a-f0-9]{64})$"},
|
|
14
|
+
"stage_summary": {
|
|
15
|
+
"description": "Structural bounds only; runtime validation additionally requires printable Unicode keys and values without control characters.",
|
|
16
|
+
"type": "object",
|
|
17
|
+
"maxProperties": 64,
|
|
18
|
+
"propertyNames": {"type": "string", "minLength": 1, "maxLength": 128},
|
|
19
|
+
"additionalProperties": {"type": "string", "minLength": 1, "maxLength": 128}
|
|
20
|
+
},
|
|
21
|
+
"provider_calls": {"type": "integer", "minimum": 0},
|
|
22
|
+
"retry_attempts": {"type": "integer", "minimum": 0},
|
|
23
|
+
"structural_retries": {"type": "integer", "minimum": 0},
|
|
24
|
+
"prompt_bytes": {"type": "integer", "minimum": 0},
|
|
25
|
+
"response_bytes": {"type": "integer", "minimum": 0},
|
|
26
|
+
"elapsed_ms": {"type": "integer", "minimum": 0},
|
|
27
|
+
"diagnostic": {"type": ["string", "null"], "maxLength": 512}
|
|
28
|
+
}
|
|
29
|
+
}
|