@reviewsensei/cli-linux-x64-gnu 0.6.19 → 0.6.21

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 CHANGED
@@ -8,7 +8,7 @@ Install the public launcher, which selects the matching native package:
8
8
 
9
9
  <!-- release-installation:package-npm-1:start -->
10
10
  ```console
11
- npm install --save-dev @reviewsensei/cli@0.6.19
11
+ npm install --save-dev @reviewsensei/cli@0.6.21
12
12
  npx review-sensei --help
13
13
  ```
14
14
  <!-- release-installation:package-npm-1:end -->
Binary file
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "documents": [
18
18
  {"path": "AGENTS.md"},
19
- {"path": "docs/architecture.md"},
19
+ {"path": "docs", "include": ["architecture.md"]},
20
20
  {"path": "docs/architecture", "include": ["**/*.md"]},
21
21
  {"path": "docs/adr", "include": ["**/*.md"]}
22
22
  ]
@@ -0,0 +1,196 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/assessment-queue-root.schema.json",
4
+ "title": "ReviewSensei provisional durable assessment queue root v1",
5
+ "description": "Prototype queue-slot amendment; writers disabled by default. Runtime additionally enforces root/summary/session allocation, matching immutable generation, ordered UTC instants and actual plus reserved response bytes <= 1048576. C validates complete journal, receipts and original accounting.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schema_version",
10
+ "inventory_digest",
11
+ "inventory_generation",
12
+ "state_manifest",
13
+ "active_operation"
14
+ ],
15
+ "properties": {
16
+ "schema_version": {
17
+ "const": "1.0"
18
+ },
19
+ "inventory_digest": {
20
+ "type": "string",
21
+ "pattern": "^[a-f0-9]{64}$"
22
+ },
23
+ "inventory_generation": {
24
+ "type": "integer",
25
+ "minimum": 0,
26
+ "maximum": 2147483647
27
+ },
28
+ "state_manifest": {
29
+ "anyOf": [
30
+ {
31
+ "allOf": [
32
+ {
33
+ "$ref": "https://reviewsensei.dev/schemas/v1/evidence-manifest.schema.json"
34
+ },
35
+ {
36
+ "properties": {
37
+ "binding": {
38
+ "properties": {
39
+ "purpose": {
40
+ "const": "queue"
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ ]
47
+ },
48
+ {
49
+ "type": "object",
50
+ "additionalProperties": false,
51
+ "required": [
52
+ "encoding",
53
+ "binding",
54
+ "item_count",
55
+ "sha256",
56
+ "document"
57
+ ],
58
+ "properties": {
59
+ "encoding": {
60
+ "const": "inline-json-v1"
61
+ },
62
+ "binding": {
63
+ "type": "object",
64
+ "required": [
65
+ "purpose"
66
+ ],
67
+ "properties": {
68
+ "purpose": {
69
+ "const": "queue"
70
+ }
71
+ }
72
+ },
73
+ "item_count": {
74
+ "type": "integer",
75
+ "minimum": 0,
76
+ "maximum": 4096
77
+ },
78
+ "sha256": {
79
+ "type": "string",
80
+ "pattern": "^[a-f0-9]{64}$"
81
+ },
82
+ "document": {
83
+ "type": "object"
84
+ }
85
+ }
86
+ }
87
+ ]
88
+ },
89
+ "active_operation": {
90
+ "anyOf": [
91
+ {
92
+ "type": "null"
93
+ },
94
+ {
95
+ "type": "object",
96
+ "additionalProperties": false,
97
+ "required": [
98
+ "operation_id",
99
+ "source_digest",
100
+ "authority_digest",
101
+ "execution_identity",
102
+ "deadline_at",
103
+ "expires_at",
104
+ "provider_calls",
105
+ "transport_retries",
106
+ "structural_retries",
107
+ "prompt_bytes",
108
+ "response_bytes",
109
+ "response_bytes_reserved",
110
+ "read_accounting"
111
+ ],
112
+ "properties": {
113
+ "operation_id": {
114
+ "type": "string",
115
+ "pattern": "^[a-f0-9]{64}$"
116
+ },
117
+ "source_digest": {
118
+ "type": "string",
119
+ "pattern": "^[a-f0-9]{64}$"
120
+ },
121
+ "authority_digest": {
122
+ "type": "string",
123
+ "pattern": "^[a-f0-9]{64}$"
124
+ },
125
+ "execution_identity": {
126
+ "type": "string",
127
+ "pattern": "^[a-f0-9]{32}$"
128
+ },
129
+ "deadline_at": {
130
+ "type": "string",
131
+ "format": "date-time",
132
+ "maxLength": 32,
133
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,6})?(?:Z|\\+00:00)$"
134
+ },
135
+ "expires_at": {
136
+ "type": "string",
137
+ "format": "date-time",
138
+ "maxLength": 32,
139
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,6})?(?:Z|\\+00:00)$"
140
+ },
141
+ "provider_calls": {
142
+ "type": "integer",
143
+ "minimum": 0,
144
+ "maximum": 32
145
+ },
146
+ "transport_retries": {
147
+ "type": "integer",
148
+ "minimum": 0,
149
+ "maximum": 2
150
+ },
151
+ "structural_retries": {
152
+ "type": "integer",
153
+ "minimum": 0,
154
+ "maximum": 2
155
+ },
156
+ "prompt_bytes": {
157
+ "type": "integer",
158
+ "minimum": 0,
159
+ "maximum": 2097152
160
+ },
161
+ "response_bytes": {
162
+ "type": "integer",
163
+ "minimum": 0,
164
+ "maximum": 1048576
165
+ },
166
+ "response_bytes_reserved": {
167
+ "type": "integer",
168
+ "minimum": 0,
169
+ "maximum": 1048576
170
+ },
171
+ "read_accounting": {
172
+ "type": "object",
173
+ "additionalProperties": false,
174
+ "required": [
175
+ "calls",
176
+ "deadline_at_ms"
177
+ ],
178
+ "properties": {
179
+ "calls": {
180
+ "type": "integer",
181
+ "minimum": 0,
182
+ "maximum": 64
183
+ },
184
+ "deadline_at_ms": {
185
+ "type": "integer",
186
+ "minimum": 0,
187
+ "maximum": 253402300799999
188
+ }
189
+ }
190
+ }
191
+ }
192
+ }
193
+ ]
194
+ }
195
+ }
196
+ }
@@ -1,4 +1,9 @@
1
1
  {
2
+ "configuration_unavailable": {
3
+ "stage": "broker_configuration",
4
+ "action": "contact_operator",
5
+ "hint": "Broker configuration could not be used. Ask the broker operator to validate the existing configuration."
6
+ },
2
7
  "broker_capability_invalid": {
3
8
  "stage": "request_validation",
4
9
  "action": "check_request",
@@ -0,0 +1,193 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/eligibility-v4.schema.json",
4
+ "title": "Proposed reader-first result-bound eligibility v4",
5
+ "description": "Structural validation only; authenticated host context, exact digests/counts/ownership, fresh all-part readback and framed future root allocation remain runtime requirements. Writers remain disabled.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schema_version",
10
+ "head_sha",
11
+ "result_digest",
12
+ "facts",
13
+ "immutable_generation",
14
+ "activation_generation",
15
+ "human_inventory",
16
+ "visible_prose",
17
+ "human_resolution"
18
+ ],
19
+ "properties": {
20
+ "schema_version": {
21
+ "const": "4"
22
+ },
23
+ "head_sha": {
24
+ "type": "string",
25
+ "pattern": "^[a-f0-9]{40}$"
26
+ },
27
+ "result_digest": {
28
+ "type": "string",
29
+ "pattern": "^[a-f0-9]{64}$"
30
+ },
31
+ "facts": {
32
+ "type": "object",
33
+ "additionalProperties": false,
34
+ "required": [
35
+ "schema_version",
36
+ "enabled",
37
+ "app_authored",
38
+ "review_status",
39
+ "evidence_policy",
40
+ "has_blocking_findings",
41
+ "has_human_adjudication_findings",
42
+ "coverage_blocker",
43
+ "qualification",
44
+ "check_published"
45
+ ],
46
+ "properties": {
47
+ "schema_version": {
48
+ "const": "1"
49
+ },
50
+ "enabled": {
51
+ "type": "boolean"
52
+ },
53
+ "app_authored": {
54
+ "type": "boolean"
55
+ },
56
+ "review_status": {
57
+ "enum": [
58
+ "complete",
59
+ "partial",
60
+ "incomplete",
61
+ "summary-only"
62
+ ]
63
+ },
64
+ "evidence_policy": {
65
+ "enum": [
66
+ "legacy",
67
+ "confirmed"
68
+ ]
69
+ },
70
+ "has_blocking_findings": {
71
+ "type": "boolean"
72
+ },
73
+ "has_human_adjudication_findings": {
74
+ "type": "boolean"
75
+ },
76
+ "coverage_blocker": {
77
+ "enum": [
78
+ null,
79
+ "reviewed",
80
+ "partial",
81
+ "incomplete",
82
+ "unknown"
83
+ ]
84
+ },
85
+ "qualification": {
86
+ "enum": [
87
+ "not-required",
88
+ "qualified",
89
+ "missing",
90
+ "unverified"
91
+ ]
92
+ },
93
+ "check_published": {
94
+ "type": "boolean"
95
+ },
96
+ "persistence_status": {
97
+ "const": "capacity-exceeded"
98
+ }
99
+ },
100
+ "if": {
101
+ "required": [
102
+ "persistence_status"
103
+ ]
104
+ },
105
+ "then": {
106
+ "properties": {
107
+ "review_status": {
108
+ "const": "partial"
109
+ }
110
+ }
111
+ }
112
+ },
113
+ "immutable_generation": {
114
+ "type": "integer",
115
+ "minimum": 0,
116
+ "maximum": 2147483647
117
+ },
118
+ "activation_generation": {
119
+ "type": "integer",
120
+ "minimum": 0,
121
+ "maximum": 2147483647
122
+ },
123
+ "human_inventory": {
124
+ "allOf": [
125
+ {
126
+ "$ref": "https://reviewsensei.dev/schemas/v1/evidence-manifest.schema.json"
127
+ },
128
+ {
129
+ "properties": {
130
+ "binding": {
131
+ "properties": {
132
+ "purpose": {
133
+ "const": "human-inventory"
134
+ }
135
+ }
136
+ },
137
+ "item_count": {
138
+ "maximum": 250
139
+ }
140
+ }
141
+ }
142
+ ]
143
+ },
144
+ "visible_prose": {
145
+ "allOf": [
146
+ {
147
+ "$ref": "https://reviewsensei.dev/schemas/v1/evidence-manifest.schema.json"
148
+ },
149
+ {
150
+ "properties": {
151
+ "binding": {
152
+ "properties": {
153
+ "purpose": {
154
+ "const": "evidence"
155
+ }
156
+ }
157
+ },
158
+ "item_count": {
159
+ "maximum": 250
160
+ }
161
+ }
162
+ }
163
+ ]
164
+ },
165
+ "human_resolution": {
166
+ "type": "object",
167
+ "additionalProperties": false,
168
+ "required": [
169
+ "schema_version",
170
+ "inventory_digest",
171
+ "resolved"
172
+ ],
173
+ "properties": {
174
+ "schema_version": {
175
+ "const": "1"
176
+ },
177
+ "inventory_digest": {
178
+ "type": "string",
179
+ "pattern": "^[a-f0-9]{64}$"
180
+ },
181
+ "resolved": {
182
+ "type": "array",
183
+ "maxItems": 250,
184
+ "uniqueItems": true,
185
+ "items": {
186
+ "type": "string",
187
+ "pattern": "^[a-f0-9]{64}$"
188
+ }
189
+ }
190
+ }
191
+ }
192
+ }
193
+ }
@@ -0,0 +1,144 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/evidence-manifest.schema.json",
4
+ "title": "ReviewSensei authenticated partition reference manifest v1",
5
+ "description": "The owning control record authenticates this manifest. Integrity digests do not authenticate producers. Runtime additionally enforces canonical bytes, aggregates, unique opaque identities, deadline and exact owner/snapshot.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "encoding",
10
+ "binding",
11
+ "item_count",
12
+ "decoded_bytes",
13
+ "sha256",
14
+ "encoded_bytes",
15
+ "parts"
16
+ ],
17
+ "properties": {
18
+ "encoding": {
19
+ "const": "partitioned-json-v1"
20
+ },
21
+ "binding": {
22
+ "type": "object",
23
+ "additionalProperties": false,
24
+ "required": [
25
+ "repository",
26
+ "repository_id",
27
+ "pull_request",
28
+ "base_sha",
29
+ "head_sha",
30
+ "policy_digest",
31
+ "configuration_digest",
32
+ "generation",
33
+ "producer",
34
+ "purpose",
35
+ "schema_version"
36
+ ],
37
+ "properties": {
38
+ "repository": {
39
+ "type": "string",
40
+ "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$",
41
+ "maxLength": 256
42
+ },
43
+ "repository_id": {
44
+ "type": [
45
+ "integer",
46
+ "null"
47
+ ],
48
+ "minimum": 1,
49
+ "maximum": 2147483647
50
+ },
51
+ "pull_request": {
52
+ "type": "integer",
53
+ "minimum": 1,
54
+ "maximum": 2147483647
55
+ },
56
+ "base_sha": {
57
+ "type": "string",
58
+ "pattern": "^[a-f0-9]{40}$"
59
+ },
60
+ "head_sha": {
61
+ "type": "string",
62
+ "pattern": "^[a-f0-9]{40}$"
63
+ },
64
+ "policy_digest": {
65
+ "type": "string",
66
+ "pattern": "^[a-f0-9]{64}$"
67
+ },
68
+ "configuration_digest": {
69
+ "type": "string",
70
+ "pattern": "^[a-f0-9]{64}$"
71
+ },
72
+ "generation": {
73
+ "type": "integer",
74
+ "minimum": 0,
75
+ "maximum": 2147483647
76
+ },
77
+ "producer": {
78
+ "type": "string",
79
+ "pattern": "^(local-ledger|github-bot:[1-9][0-9]{0,18})$"
80
+ },
81
+ "purpose": {
82
+ "enum": [
83
+ "baseline",
84
+ "human-inventory",
85
+ "feedback",
86
+ "evidence",
87
+ "queue"
88
+ ]
89
+ },
90
+ "schema_version": {
91
+ "const": "1.0"
92
+ }
93
+ }
94
+ },
95
+ "item_count": {
96
+ "type": "integer",
97
+ "minimum": 0,
98
+ "maximum": 4096
99
+ },
100
+ "decoded_bytes": {
101
+ "type": "integer",
102
+ "minimum": 1,
103
+ "maximum": 2097152
104
+ },
105
+ "sha256": {
106
+ "type": "string",
107
+ "pattern": "^[a-f0-9]{64}$"
108
+ },
109
+ "encoded_bytes": {
110
+ "type": "integer",
111
+ "minimum": 1,
112
+ "maximum": 1048576
113
+ },
114
+ "parts": {
115
+ "type": "array",
116
+ "minItems": 1,
117
+ "maxItems": 32,
118
+ "items": {
119
+ "type": "object",
120
+ "additionalProperties": false,
121
+ "required": [
122
+ "storage_id",
123
+ "bytes",
124
+ "sha256"
125
+ ],
126
+ "properties": {
127
+ "storage_id": {
128
+ "type": "string",
129
+ "pattern": "^[A-Za-z0-9_-]{1,64}$"
130
+ },
131
+ "bytes": {
132
+ "type": "integer",
133
+ "minimum": 1,
134
+ "maximum": 32256
135
+ },
136
+ "sha256": {
137
+ "type": "string",
138
+ "pattern": "^[a-f0-9]{64}$"
139
+ }
140
+ }
141
+ }
142
+ }
143
+ }
144
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/human-file-receipt.schema.json",
4
+ "title": "human-file-receipt",
5
+ "description": "Bounded reference data. Runtime semantic validation and independent live host authentication are required; this document alone is not approval authority.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schema_version",
10
+ "request_digest",
11
+ "request_comment_id",
12
+ "source_comment_id",
13
+ "source_updated_at",
14
+ "source_sha256",
15
+ "actor_id",
16
+ "actor",
17
+ "selected_ids"
18
+ ],
19
+ "properties": {
20
+ "schema_version": {
21
+ "const": "human-file-receipt-v1"
22
+ },
23
+ "request_digest": {
24
+ "type": "string",
25
+ "pattern": "^[a-f0-9]{64}$"
26
+ },
27
+ "request_comment_id": {
28
+ "type": "integer",
29
+ "minimum": 1
30
+ },
31
+ "source_comment_id": {
32
+ "type": "integer",
33
+ "minimum": 1
34
+ },
35
+ "source_updated_at": {
36
+ "type": "string",
37
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$"
38
+ },
39
+ "source_sha256": {
40
+ "type": "string",
41
+ "pattern": "^[a-f0-9]{64}$"
42
+ },
43
+ "actor_id": {
44
+ "type": "integer",
45
+ "minimum": 1
46
+ },
47
+ "actor": {
48
+ "type": "string",
49
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9-]{0,38}$"
50
+ },
51
+ "selected_ids": {
52
+ "type": "array",
53
+ "minItems": 1,
54
+ "maxItems": 32,
55
+ "uniqueItems": true,
56
+ "items": {
57
+ "type": "string",
58
+ "pattern": "^[a-f0-9]{64}$"
59
+ }
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,134 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/human-file-review.schema.json",
4
+ "title": "human-file-review",
5
+ "description": "Bounded reference data. Runtime semantic validation and independent live host authentication are required; this document alone is not approval authority.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schema_version",
10
+ "repository",
11
+ "repository_id",
12
+ "pull_request",
13
+ "review_id",
14
+ "base_sha",
15
+ "head_sha",
16
+ "result_digest",
17
+ "files"
18
+ ],
19
+ "properties": {
20
+ "schema_version": {
21
+ "const": "human-file-review-v1"
22
+ },
23
+ "repository": {
24
+ "type": "string",
25
+ "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$"
26
+ },
27
+ "repository_id": {
28
+ "type": "integer",
29
+ "minimum": 1
30
+ },
31
+ "pull_request": {
32
+ "type": "integer",
33
+ "minimum": 1
34
+ },
35
+ "review_id": {
36
+ "type": "integer",
37
+ "minimum": 1
38
+ },
39
+ "base_sha": {
40
+ "type": "string",
41
+ "pattern": "^[a-f0-9]{40}$"
42
+ },
43
+ "head_sha": {
44
+ "type": "string",
45
+ "pattern": "^[a-f0-9]{40}$"
46
+ },
47
+ "result_digest": {
48
+ "type": "string",
49
+ "pattern": "^[a-f0-9]{64}$"
50
+ },
51
+ "files": {
52
+ "type": "array",
53
+ "minItems": 1,
54
+ "maxItems": 32,
55
+ "uniqueItems": true,
56
+ "items": {
57
+ "type": "object",
58
+ "additionalProperties": false,
59
+ "required": [
60
+ "path",
61
+ "change",
62
+ "old_blob",
63
+ "new_blob",
64
+ "old_path",
65
+ "old_mode",
66
+ "new_mode"
67
+ ],
68
+ "properties": {
69
+ "path": {
70
+ "type": "string",
71
+ "minLength": 1,
72
+ "maxLength": 4096
73
+ },
74
+ "change": {
75
+ "enum": [
76
+ "added",
77
+ "modified",
78
+ "removed",
79
+ "renamed"
80
+ ]
81
+ },
82
+ "old_blob": {
83
+ "anyOf": [
84
+ {
85
+ "type": "string",
86
+ "pattern": "^[a-f0-9]{40}$"
87
+ },
88
+ {
89
+ "type": "null"
90
+ }
91
+ ]
92
+ },
93
+ "new_blob": {
94
+ "anyOf": [
95
+ {
96
+ "type": "string",
97
+ "pattern": "^[a-f0-9]{40}$"
98
+ },
99
+ {
100
+ "type": "null"
101
+ }
102
+ ]
103
+ },
104
+ "old_path": {
105
+ "anyOf": [
106
+ {
107
+ "type": "string",
108
+ "minLength": 1,
109
+ "maxLength": 4096
110
+ },
111
+ {
112
+ "type": "null"
113
+ }
114
+ ]
115
+ },
116
+ "old_mode": {
117
+ "enum": [
118
+ null,
119
+ "100644",
120
+ "100755"
121
+ ]
122
+ },
123
+ "new_mode": {
124
+ "enum": [
125
+ null,
126
+ "100644",
127
+ "100755"
128
+ ]
129
+ }
130
+ }
131
+ }
132
+ }
133
+ }
134
+ }
@@ -44,6 +44,7 @@
44
44
  },
45
45
  "provider": {"type": "string", "minLength": 1},
46
46
  "persistence_status": {"const": "capacity-exceeded"},
47
+ "coverage_only_partial": {"type": "boolean"},
47
48
  "review_status": {
48
49
  "type": "string",
49
50
  "enum": ["complete", "partial", "incomplete", "summary-only"]
@@ -78,6 +78,7 @@
78
78
  },
79
79
  "record_sha256": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
80
80
  "operator_paused": {"type": "boolean"},
81
+ "assessment_queue": {"$ref": "https://reviewsensei.dev/schemas/v1/assessment-queue-root.schema.json"},
81
82
  "dispositions": {
82
83
  "type": "array",
83
84
  "maxItems": 4,
@@ -227,7 +228,8 @@
227
228
  "pattern": "^[A-Za-z0-9+/]*={0,2}$"
228
229
  }
229
230
  }
230
- }
231
+ },
232
+ {"$ref": "https://reviewsensei.dev/schemas/v1/evidence-manifest.schema.json"}
231
233
  ]
232
234
  },
233
235
  "progress": {
@@ -0,0 +1,83 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v1/unchanged-source-citation.schema.json",
4
+ "title": "ReviewSensei unchanged-source citation v1",
5
+ "description": "Exact snapshot citation for one regular file that is unchanged between base and head. kind unchanged-source-v1 is distinct from a diff hunk. An absent diff is not evidence. Runtime rejects unequal blob SHAs, non-regular modes, secret and excluded paths, escaped paths, truncated ranges, foreign objects, and the same blob cited from another path. The validator does not fetch URLs.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "kind",
10
+ "repository",
11
+ "pull_request",
12
+ "base_sha",
13
+ "head_sha",
14
+ "path",
15
+ "mode",
16
+ "base_blob_sha",
17
+ "head_blob_sha",
18
+ "range_start",
19
+ "range_end",
20
+ "content_sha256",
21
+ "content_bytes"
22
+ ],
23
+ "properties": {
24
+ "kind": {
25
+ "const": "unchanged-source-v1"
26
+ },
27
+ "repository": {
28
+ "type": "string",
29
+ "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$",
30
+ "maxLength": 256
31
+ },
32
+ "pull_request": {
33
+ "type": "integer",
34
+ "minimum": 1,
35
+ "maximum": 2147483647
36
+ },
37
+ "base_sha": {
38
+ "type": "string",
39
+ "pattern": "^[a-f0-9]{40}$"
40
+ },
41
+ "head_sha": {
42
+ "type": "string",
43
+ "pattern": "^[a-f0-9]{40}$"
44
+ },
45
+ "path": {
46
+ "type": "string",
47
+ "minLength": 1,
48
+ "maxLength": 4096,
49
+ "description": "Structural bounds only. parse_unchanged_source enforces a canonical repository-relative path and refuses escaped, secret, and excluded paths."
50
+ },
51
+ "mode": {
52
+ "type": "string",
53
+ "enum": ["100644", "100755"]
54
+ },
55
+ "base_blob_sha": {
56
+ "type": "string",
57
+ "pattern": "^[a-f0-9]{40}$"
58
+ },
59
+ "head_blob_sha": {
60
+ "type": "string",
61
+ "pattern": "^[a-f0-9]{40}$"
62
+ },
63
+ "range_start": {
64
+ "type": "integer",
65
+ "minimum": 1,
66
+ "maximum": 65536
67
+ },
68
+ "range_end": {
69
+ "type": "integer",
70
+ "minimum": 1,
71
+ "maximum": 65536
72
+ },
73
+ "content_sha256": {
74
+ "type": "string",
75
+ "pattern": "^[a-f0-9]{64}$"
76
+ },
77
+ "content_bytes": {
78
+ "type": "integer",
79
+ "minimum": 0,
80
+ "maximum": 65536
81
+ }
82
+ }
83
+ }
@@ -69,7 +69,7 @@
69
69
  "provider_calls": {
70
70
  "type": "integer",
71
71
  "minimum": 0,
72
- "maximum": 8
72
+ "maximum": 32
73
73
  },
74
74
  "transport_retries": {
75
75
  "type": "integer",
@@ -95,7 +95,7 @@
95
95
  },
96
96
  "completed": {
97
97
  "type": "array",
98
- "maxItems": 8,
98
+ "maxItems": 32,
99
99
  "items": {
100
100
  "type": "object",
101
101
  "additionalProperties": false,
@@ -134,7 +134,7 @@
134
134
  },
135
135
  "request_digests": {
136
136
  "type": "object",
137
- "maxProperties": 8,
137
+ "maxProperties": 32,
138
138
  "propertyNames": {
139
139
  "pattern": "^[a-f0-9]{64}$"
140
140
  },
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: review-sensei
3
- Version: 0.6.19
3
+ Version: 0.6.21
4
4
  Summary: Provider-neutral AI code review engine with an Ollama adapter.
5
5
  Author: Mohamad Alsabbagh
6
6
  License-Expression: MIT
@@ -140,8 +140,8 @@ provider-neutral `@reviewsensei/cli` launcher:
140
140
 
141
141
  <!-- release-installation:package-npm-1:start -->
142
142
  ```bash
143
- npx --yes @reviewsensei/cli@0.6.19 --version
144
- npx --yes @reviewsensei/cli@0.6.19 --help
143
+ npx --yes @reviewsensei/cli@0.6.21 --version
144
+ npx --yes @reviewsensei/cli@0.6.21 --help
145
145
  ```
146
146
  <!-- release-installation:package-npm-1:end -->
147
147
 
@@ -777,6 +777,15 @@ an explicitly named `--api-key-env` remains an operator opt-in.
777
777
  The canonical handle is `@reviewsensei`; `@ReviewSensei` and other ASCII case
778
778
  variants work too. `@sensei` remains supported, with its existing case behavior.
779
779
  Both handles use the same authorization, publication policy, and bounded context.
780
+ For concrete factual replies, verified operator commands, human-inventory
781
+ boundaries and the complete-feedback API's current integration status, see
782
+ [human assessment workflows](docs/human-assessment.md).
783
+
784
+ The local, opt-in [human file review library](docs/human-file-review.md) records
785
+ explicit selected binary-file confirmations with exact snapshot/content and
786
+ live reviewer checks. AI coverage stays unsupported; text findings remain open.
787
+ Confirmation defaults off, and released CLI/mention routing and automatic
788
+ approval are not enabled by this library change.
780
789
  Existing installations need a caller update as well as the matching runtime and
781
790
  broker update; see [the caller rollout guide](docs/mention-handle-rollout.md).
782
791
 
@@ -786,7 +795,11 @@ outcome. Follow-up mentions in the same inline or PR conversation include the
786
795
  bounded prior thread, diff context, findings, and trusted-base learnings. Cloud
787
796
  mode sends that bounded conversation context to Ollama Cloud; local mode keeps
788
797
  it on the configured local service. Published review summaries and inline
789
- findings also tell readers to reply with @reviewsensei followed by their question.
798
+ findings also tell readers to reply with @reviewsensei followed by their question,
799
+ and they include the maintainer commands for approving media and overriding a
800
+ finding by its `RS-` id. After an override, comment `@reviewsensei verify` to
801
+ apply it. An override applies to the current commit only. A new push needs a
802
+ new override.
790
803
  `review.json` is uploaded only when
791
804
  `github.artifacts: diagnostics` is set in `.reviewsensei.yml`; setup-v5 does not
792
805
  create a separate version artifact. See
@@ -12,14 +12,21 @@ docs/architecture.md
12
12
  docs/community.md
13
13
  docs/data-handling.md
14
14
  docs/diagnostics.md
15
+ docs/epic238-architecture-review.md
16
+ docs/epic238-b-interface.md
17
+ docs/epic238-integration-status.md
15
18
  docs/evaluation.md
19
+ docs/exhaustive-evidence.md
16
20
  docs/github-app-auth.md
17
21
  docs/github-app-registration.md
22
+ docs/human-assessment.md
23
+ docs/human-file-review.md
18
24
  docs/installation.md
19
25
  docs/mention-handle-rollout.md
20
26
  docs/openrouter-qualification.md
21
27
  docs/ownership-and-licensing.md
22
28
  docs/patch-suggestions.md
29
+ docs/prompt-context-admission.md
23
30
  docs/proposed-evidence-persistence.md
24
31
  docs/protection-policy.md
25
32
  docs/public-contracts.md
@@ -100,10 +107,21 @@ docs/adr/0069-verified-draft-github-release.md
100
107
  docs/adr/0070-bounded-checkpoint-overflow.md
101
108
  docs/adr/0071-generated-release-notes.md
102
109
  docs/adr/0072-lossless-inline-review-evidence.md
110
+ docs/adr/0073-authenticated-feedback-mutation-grants.md
111
+ docs/adr/0074-durable-original-attempt-accounting.md
112
+ docs/adr/0075-complete-provider-response-contract.md
113
+ docs/adr/0076-pr253-gap-closure-contracts.md
114
+ docs/adr/0077-explicit-human-file-review.md
103
115
  docs/adr/README.md
104
116
  docs/architecture/index.md
117
+ docs/architecture/mandatory-rules.md
105
118
  docs/process/adr-process.md
106
119
  docs/process/index.md
120
+ docs/proposals/issue-240-authenticated-partitions.md
121
+ docs/proposals/issue-241-eligibility-v4.md
122
+ docs/proposals/issue-242-durable-assessment-queue.md
123
+ docs/proposals/pr271-github-only-operation-entry.md
124
+ docs/proposals/pr271-request-reduction.md
107
125
  docs/releases/.gitattributes
108
126
  docs/releases/latest.md
109
127
  docs/releases/latest/files.json
@@ -177,6 +195,8 @@ examples/stages/02-comments.json
177
195
  examples/stages/03-learning-proposals.json
178
196
  src/review_sensei/__init__.py
179
197
  src/review_sensei/__main__.py
198
+ src/review_sensei/assessment_history_index.py
199
+ src/review_sensei/assessment_queue.py
180
200
  src/review_sensei/baseline.py
181
201
  src/review_sensei/bounded_evidence.py
182
202
  src/review_sensei/broker_diagnostics.py
@@ -198,9 +218,14 @@ src/review_sensei/errors.py
198
218
  src/review_sensei/evaluation.py
199
219
  src/review_sensei/evidence.py
200
220
  src/review_sensei/execution.py
221
+ src/review_sensei/feedback.py
222
+ src/review_sensei/history_association.py
201
223
  src/review_sensei/hosted.py
202
224
  src/review_sensei/human_assessment.py
225
+ src/review_sensei/human_file_review.py
226
+ src/review_sensei/human_inventory.py
203
227
  src/review_sensei/learnings.py
228
+ src/review_sensei/mixed_coverage.py
204
229
  src/review_sensei/models.py
205
230
  src/review_sensei/openrouter_qualification.py
206
231
  src/review_sensei/outcomes.py
@@ -217,6 +242,7 @@ src/review_sensei/sequence.py
217
242
  src/review_sensei/service.py
218
243
  src/review_sensei/session.py
219
244
  src/review_sensei/stages.py
245
+ src/review_sensei/unchanged_source.py
220
246
  src/review_sensei/validation.py
221
247
  src/review_sensei/verifier.py
222
248
  src/review_sensei/work_recovery.py
@@ -237,14 +263,22 @@ src/review_sensei/hosting/github/broker.py
237
263
  src/review_sensei/hosting/github/broker_client.py
238
264
  src/review_sensei/hosting/github/checks.py
239
265
  src/review_sensei/hosting/github/conversation.py
266
+ src/review_sensei/hosting/github/eligibility_parts.py
240
267
  src/review_sensei/hosting/github/errors.py
268
+ src/review_sensei/hosting/github/feedback_attestation.py
241
269
  src/review_sensei/hosting/github/http.py
242
270
  src/review_sensei/hosting/github/human_assessment.py
271
+ src/review_sensei/hosting/github/human_file_review.py
243
272
  src/review_sensei/hosting/github/jwt.py
244
273
  src/review_sensei/hosting/github/learning_pr.py
245
274
  src/review_sensei/hosting/github/observed.py
246
275
  src/review_sensei/hosting/github/oidc.py
276
+ src/review_sensei/hosting/github/operation_comments.py
277
+ src/review_sensei/hosting/github/operation_entry.py
278
+ src/review_sensei/hosting/github/operation_host.py
279
+ src/review_sensei/hosting/github/prose_publication.py
247
280
  src/review_sensei/hosting/github/publication.py
281
+ src/review_sensei/hosting/github/publication_parts.py
248
282
  src/review_sensei/hosting/github/reservation_recovery.py
249
283
  src/review_sensei/hosting/github/session_ledger.py
250
284
  src/review_sensei/hosting/github/setup.py
@@ -266,6 +300,7 @@ src/review_sensei/providers/profiles.py
266
300
  src/review_sensei/providers/registry.py
267
301
  src/review_sensei/providers/routing.py
268
302
  src/review_sensei/providers/transport.py
303
+ src/review_sensei/schemas/assessment-queue-root.schema.json
269
304
  src/review_sensei/schemas/baseline-evidence.schema.json
270
305
  src/review_sensei/schemas/blocker-admission.schema.json
271
306
  src/review_sensei/schemas/broker-diagnostics.json
@@ -279,8 +314,12 @@ src/review_sensei/schemas/concurrency-plan.schema.json
279
314
  src/review_sensei/schemas/convergence-sequence-report.schema.json
280
315
  src/review_sensei/schemas/conversation-reply.schema.json
281
316
  src/review_sensei/schemas/coverage-manifest.schema.json
317
+ src/review_sensei/schemas/eligibility-v4.schema.json
282
318
  src/review_sensei/schemas/evaluation-corpus.schema.json
283
319
  src/review_sensei/schemas/evaluation-report.schema.json
320
+ src/review_sensei/schemas/evidence-manifest.schema.json
321
+ src/review_sensei/schemas/human-file-receipt.schema.json
322
+ src/review_sensei/schemas/human-file-review.schema.json
284
323
  src/review_sensei/schemas/later-finding-classification.schema.json
285
324
  src/review_sensei/schemas/learning-entry.schema.json
286
325
  src/review_sensei/schemas/learning-feedback.schema.json
@@ -299,13 +338,17 @@ src/review_sensei/schemas/review-transaction.schema.json
299
338
  src/review_sensei/schemas/run-outcome.schema.json
300
339
  src/review_sensei/schemas/session-record.schema.json
301
340
  src/review_sensei/schemas/stage.schema.json
341
+ src/review_sensei/schemas/unchanged-source-citation.schema.json
302
342
  src/review_sensei/schemas/verification-result.schema.json
303
343
  src/review_sensei/schemas/verification-scope.schema.json
304
344
  src/review_sensei/schemas/work-recovery-artifact.schema.json
305
345
  tests/fake_github_http.py
306
346
  tests/packaging_guard.py
307
347
  tests/dist_safe/test_distribution_contract.py
348
+ tests/dist_safe/test_feedback_contract.py
349
+ tests/dist_safe/test_human_file_review_contract.py
308
350
  tests/dist_safe/test_install_smoke.py
309
351
  tests/dist_safe/test_local_review_contract.py
352
+ tests/dist_safe/test_partition_contract.py
310
353
  tests/downstream/test_acceptance.py
311
354
  tests/fixtures/distribution-contract.json
package/bin/review-sensei CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reviewsensei/cli-linux-x64-gnu",
3
- "version": "0.6.19",
3
+ "version": "0.6.21",
4
4
  "description": "ReviewSensei AI code review engine for Linux x64 with glibc 2.36+; native payload used by @reviewsensei/cli",
5
5
  "license": "MIT",
6
6
  "repository": {