@reviewsensei/cli-linux-x64-gnu 0.6.15 → 0.6.17

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
@@ -6,10 +6,12 @@ standalone Python engine bundled for Linux x64 with glibc 2.36+.
6
6
 
7
7
  Install the public launcher, which selects the matching native package:
8
8
 
9
+ <!-- release-installation:package-npm-1:start -->
9
10
  ```console
10
- npm install --save-dev @reviewsensei/cli@0.6.15
11
+ npm install --save-dev @reviewsensei/cli@0.6.17
11
12
  npx review-sensei --help
12
13
  ```
14
+ <!-- release-installation:package-npm-1:end -->
13
15
 
14
16
  Use [`@reviewsensei/cli`](https://www.npmjs.com/package/@reviewsensei/cli) for
15
17
  installation, provider/model configuration, authentication, and review examples.
Binary file
@@ -41,6 +41,16 @@
41
41
  {"type": "string", "pattern": "^[a-f0-9]{8,64}$"}
42
42
  ]
43
43
  },
44
+ "reservation_owner": {
45
+ "description": "Owning run from the authenticated OIDC broker; absent in legacy reservations.",
46
+ "type": "object",
47
+ "additionalProperties": false,
48
+ "required": ["run_id", "head_sha"],
49
+ "properties": {
50
+ "run_id": {"type": "string", "pattern": "^[1-9][0-9]{0,18}$"},
51
+ "head_sha": {"type": "string", "pattern": "^[a-f0-9]{40}$"}
52
+ }
53
+ },
44
54
  "reserved_slot": {
45
55
  "type": ["string", "null"],
46
56
  "enum": ["initial", "verification", "failed-attempt", null]
@@ -133,7 +143,7 @@
133
143
  },
134
144
  "convergence_history": {
135
145
  "type": "object",
136
- "description": "Bounded convergence envelope. The field caps below bound each member; the validation seam additionally rejects an envelope whose canonical UTF-8 encoding exceeds MAX_CONVERGENCE_HISTORY_BYTES (4096), which JSON Schema cannot express.",
146
+ "description": "Bounded convergence envelope. The field caps below bound each member; the validation seam additionally rejects canonical UTF-8 JSON above 12288 history bytes or 20480 record bytes, which JSON Schema cannot express. Writers allocate less history when the surrounding lifecycle state requires it. Older readers reject expanded records; upgrade all shared-ledger readers before enabling new writes.",
137
147
  "additionalProperties": false,
138
148
  "required": ["state", "progress", "provenance"],
139
149
  "properties": {
@@ -184,7 +194,7 @@
184
194
  }
185
195
  },
186
196
  "reviewed_paths": {"type": "array", "maxItems": 512, "items": {"type": "string", "maxLength": 256}},
187
- "related_paths": {"type": "array", "maxItems": 32, "items": {"type": "string", "maxLength": 256}}
197
+ "related_paths": {"type": "array", "maxItems": 64, "items": {"type": "string", "maxLength": 256}}
188
198
  }
189
199
  },
190
200
  "progress": {
@@ -233,6 +243,15 @@
233
243
  }
234
244
  },
235
245
  "allOf": [
246
+ {
247
+ "if": {"required": ["reservation_owner"]},
248
+ "then": {
249
+ "properties": {
250
+ "reservation_id": {"type": "string"},
251
+ "reserved_slot": {"type": "string"}
252
+ }
253
+ }
254
+ },
236
255
  {
237
256
  "if": {
238
257
  "required": ["transaction"],
@@ -52,6 +52,7 @@
52
52
  "incomplete-baseline",
53
53
  "missing-baseline",
54
54
  "coverage-incomplete",
55
+ "related-context-overflow",
55
56
  "ledger-untrusted",
56
57
  null
57
58
  ]
@@ -63,7 +64,7 @@
63
64
  },
64
65
  "related_paths": {
65
66
  "type": "array",
66
- "maxItems": 32,
67
+ "maxItems": 64,
67
68
  "items": { "type": "string", "minLength": 1, "maxLength": 4096 }
68
69
  },
69
70
  "changed_paths": {
@@ -0,0 +1,156 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://reviewsensei.dev/schemas/v2/work-recovery-artifact.schema.json",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "document",
8
+ "authentication"
9
+ ],
10
+ "properties": {
11
+ "authentication": {
12
+ "type": "string",
13
+ "pattern": "^[a-f0-9]{64}$"
14
+ },
15
+ "document": {
16
+ "type": "object",
17
+ "additionalProperties": false,
18
+ "required": [
19
+ "schema_version",
20
+ "plan",
21
+ "execution_identity",
22
+ "resource_budget",
23
+ "saved_at",
24
+ "expires_at",
25
+ "elapsed_ms",
26
+ "counters",
27
+ "completed",
28
+ "pending",
29
+ "request_digests"
30
+ ],
31
+ "properties": {
32
+ "schema_version": {
33
+ "const": "2.0"
34
+ },
35
+ "plan": {
36
+ "type": "object"
37
+ },
38
+ "execution_identity": {
39
+ "type": "string",
40
+ "pattern": "^[a-f0-9]{32}$"
41
+ },
42
+ "resource_budget": {
43
+ "type": "object"
44
+ },
45
+ "saved_at": {
46
+ "type": "string",
47
+ "format": "date-time"
48
+ },
49
+ "expires_at": {
50
+ "type": "string",
51
+ "format": "date-time"
52
+ },
53
+ "elapsed_ms": {
54
+ "type": "integer",
55
+ "minimum": 0,
56
+ "maximum": 86400000
57
+ },
58
+ "counters": {
59
+ "type": "object",
60
+ "additionalProperties": false,
61
+ "required": [
62
+ "provider_calls",
63
+ "transport_retries",
64
+ "structural_retries",
65
+ "prompt_bytes",
66
+ "response_bytes"
67
+ ],
68
+ "properties": {
69
+ "provider_calls": {
70
+ "type": "integer",
71
+ "minimum": 0,
72
+ "maximum": 8
73
+ },
74
+ "transport_retries": {
75
+ "type": "integer",
76
+ "minimum": 0,
77
+ "maximum": 2
78
+ },
79
+ "structural_retries": {
80
+ "type": "integer",
81
+ "minimum": 0,
82
+ "maximum": 2
83
+ },
84
+ "prompt_bytes": {
85
+ "type": "integer",
86
+ "minimum": 0,
87
+ "maximum": 2097152
88
+ },
89
+ "response_bytes": {
90
+ "type": "integer",
91
+ "minimum": 0,
92
+ "maximum": 1048576
93
+ }
94
+ }
95
+ },
96
+ "completed": {
97
+ "type": "array",
98
+ "maxItems": 8,
99
+ "items": {
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "required": [
103
+ "batch_id",
104
+ "request_digest",
105
+ "result"
106
+ ],
107
+ "properties": {
108
+ "batch_id": {
109
+ "type": "string",
110
+ "pattern": "^[a-f0-9]{64}$"
111
+ },
112
+ "request_digest": {
113
+ "type": "string",
114
+ "pattern": "^[a-f0-9]{64}$"
115
+ },
116
+ "result": {
117
+ "type": "object"
118
+ }
119
+ }
120
+ }
121
+ },
122
+ "pending": {
123
+ "type": "array",
124
+ "maxItems": 40000,
125
+ "items": {
126
+ "type": "array",
127
+ "minItems": 2,
128
+ "maxItems": 2,
129
+ "items": {
130
+ "type": "string",
131
+ "maxLength": 512
132
+ }
133
+ }
134
+ },
135
+ "request_digests": {
136
+ "type": "object",
137
+ "maxProperties": 8,
138
+ "propertyNames": {
139
+ "pattern": "^[a-f0-9]{64}$"
140
+ },
141
+ "additionalProperties": {
142
+ "anyOf": [
143
+ {
144
+ "type": "string",
145
+ "pattern": "^[a-f0-9]{64}$"
146
+ },
147
+ {
148
+ "type": "null"
149
+ }
150
+ ]
151
+ }
152
+ }
153
+ }
154
+ }
155
+ }
156
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: review-sensei
3
- Version: 0.6.15
3
+ Version: 0.6.17
4
4
  Summary: Provider-neutral AI code review engine with an Ollama adapter.
5
5
  Author: Mohamad Alsabbagh
6
6
  License-Expression: MIT
@@ -135,10 +135,12 @@ replacements by `review-sensei config`.
135
135
  Node.js 22 or newer can invoke the same Python review engine through the
136
136
  provider-neutral `@reviewsensei/cli` launcher:
137
137
 
138
+ <!-- release-installation:package-npm-1:start -->
138
139
  ```bash
139
- npx --yes @reviewsensei/cli@0.6.15 --version
140
- npx --yes @reviewsensei/cli@0.6.15 --help
140
+ npx --yes @reviewsensei/cli@0.6.17 --version
141
+ npx --yes @reviewsensei/cli@0.6.17 --help
141
142
  ```
143
+ <!-- release-installation:package-npm-1:end -->
142
144
 
143
145
  The launcher selects one of the five native packages (macOS arm64/x64,
144
146
  glibc Linux arm64/x64, or Windows x64), forwards arguments unchanged, and
@@ -240,7 +242,7 @@ broker resolves the same tag at capability exchange time and checks the
240
242
  executing workflow SHA. Moving `v5` is therefore the public cutoff action.
241
243
  The selected provider mode applies consistently to automatic pull-request
242
244
  reviews, manual reviews, learning proposals, artifacts, and authorized
243
- `@sensei` conversations. Cloud runs use GitHub-hosted compute; local runs use
245
+ `@reviewsensei` conversations. Cloud runs use GitHub-hosted compute; local runs use
244
246
  the operator-controlled labeled self-hosted runner. Every generated write
245
247
  switch except automatic approval defaults to `false`; automatic approval
246
248
  defaults to `true` and requires automatic review and GitHub writes as separate
@@ -334,6 +336,14 @@ limits stay in place; opt-in `--orchestrate-large-changes` adds a separate
334
336
  total-work budget so larger diffs can be chunked without silent truncation or
335
337
  unbounded provider calls.
336
338
 
339
+ Full review and tagged human reassessment can opt into the same evidence planner
340
+ and bounded executor with `advanced.review_work.mode: unified`. This is an
341
+ experimental work mechanism; existing routing remains the default. It batches
342
+ complete required file patches for replies, and whole files or exhaustive parsed
343
+ hunks for discovery. Missing or oversized evidence and failed batches stay
344
+ pending and withhold approval. See [shared review work](docs/shared-review-work.md)
345
+ for budgets, provider qualification and reader-safe rollout.
346
+
337
347
  Npm `package-lock.json` and `npm-shrinkwrap.json` changes are reviewed as
338
348
  material dependency input. Every original hunk remains in the request; a
339
349
  bounded aid identifies visible dependency members with exact diff hashes and
@@ -743,7 +753,7 @@ approval. An unclassified ReviewSensei root, malformed or incomplete thread
743
753
  data, an unverified configuration, or a draft/closed/fork/stale/App-authored PR
744
754
  fails closed or reports why approval was withheld. The finalizer runs after
745
755
  review publication and after the AI resolves a blocking ReviewSensei thread;
746
- `@sensei` replies themselves remain ordinary comments. Existing approval markers
756
+ `@reviewsensei` replies themselves remain ordinary comments. Existing approval markers
747
757
  prevent duplicate approvals, and ReviewSensei never calls a merge endpoint or
748
758
  enables auto-merge.
749
759
 
@@ -755,19 +765,25 @@ blocker. See
755
765
  [ADR 0032](docs/adr/0032-blocking-finding-classification-for-approvals.md)
756
766
  for the criteria and rollback path.
757
767
 
758
- Manual review and authorized `@sensei` replies use the same selected provider
768
+ Manual review and authorized `@reviewsensei` replies use the same selected provider
759
769
  mode. Generated `github reply` commands use the same inference configuration
760
770
  and CLI overrides as normal reviews, including `cloud-ollama` and
761
771
  `local-ollama`. Run from the trusted policy checkout or pass `--config` with
762
772
  its trusted configuration. A local backend receives no ambient cloud key;
763
773
  an explicitly named `--api-key-env` remains an operator opt-in.
774
+ The canonical handle is `@reviewsensei`; `@ReviewSensei` and other ASCII case
775
+ variants work too. `@sensei` remains supported, with its existing case behavior.
776
+ Both handles use the same authorization, publication policy, and bounded context.
777
+ Existing installations need a caller update as well as the matching runtime and
778
+ broker update; see [the caller rollout guide](docs/mention-handle-rollout.md).
779
+
764
780
  Each authorized mention receives a temporary 👀 reaction while the reply
765
781
  is generated; ReviewSensei removes it after the reply or another terminal
766
782
  outcome. Follow-up mentions in the same inline or PR conversation include the
767
783
  bounded prior thread, diff context, findings, and trusted-base learnings. Cloud
768
784
  mode sends that bounded conversation context to Ollama Cloud; local mode keeps
769
785
  it on the configured local service. Published review summaries and inline
770
- findings also tell readers to reply with @sensei followed by their question.
786
+ findings also tell readers to reply with @reviewsensei followed by their question.
771
787
  `review.json` is uploaded only when
772
788
  `github.artifacts: diagnostics` is set in `.reviewsensei.yml`; setup-v5 does not
773
789
  create a separate version artifact. See
@@ -16,12 +16,16 @@ docs/evaluation.md
16
16
  docs/github-app-auth.md
17
17
  docs/github-app-registration.md
18
18
  docs/installation.md
19
+ docs/mention-handle-rollout.md
19
20
  docs/openrouter-qualification.md
20
21
  docs/ownership-and-licensing.md
21
22
  docs/patch-suggestions.md
22
23
  docs/protection-policy.md
23
24
  docs/public-contracts.md
25
+ docs/release-docs-bot.md
26
+ docs/release-signing.md
24
27
  docs/releasing.md
28
+ docs/shared-review-work.md
25
29
  docs/adr/0001-provider-neutral-review-engine.md
26
30
  docs/adr/0002-repository-local-review-learnings.md
27
31
  docs/adr/0003-review-concurrency-policy.md
@@ -83,10 +87,17 @@ docs/adr/0059-dependency-review-and-partial-publication.md
83
87
  docs/adr/0060-stale-baseline-full-review-recovery.md
84
88
  docs/adr/0061-human-reply-reassessment.md
85
89
  docs/adr/0062-optional-hosted-runner-label.md
90
+ docs/adr/0063-authenticated-reservation-recovery.md
91
+ docs/adr/0064-canonical-mention-handle.md
92
+ docs/adr/0065-complete-human-inventory-and-approval-retry.md
93
+ docs/adr/0066-incremental-context-overflow-recovery.md
94
+ docs/adr/0067-shared-review-work-mechanics.md
95
+ docs/adr/0068-dedicated-release-key-and-publication-approval.md
86
96
  docs/adr/README.md
87
97
  docs/architecture/index.md
88
98
  docs/process/adr-process.md
89
99
  docs/process/index.md
100
+ docs/releases/.gitattributes
90
101
  docs/site/CNAME
91
102
  docs/site/MAINTAINERS.md
92
103
  docs/site/index.html
@@ -99,6 +110,7 @@ docs/site/examples/index.html
99
110
  docs/site/getting-started/index.html
100
111
  docs/site/providers/index.html
101
112
  docs/site/releases/index.html
113
+ docs/site/schemas/release-provenance.schema.json
102
114
  docs/site/schemas/site-manifest.schema.json
103
115
  docs/site/security/index.html
104
116
  evaluation/v1/README.md
@@ -142,6 +154,7 @@ src/review_sensei/__init__.py
142
154
  src/review_sensei/__main__.py
143
155
  src/review_sensei/baseline.py
144
156
  src/review_sensei/broker_diagnostics.py
157
+ src/review_sensei/budgets.py
145
158
  src/review_sensei/cli.py
146
159
  src/review_sensei/concurrency.py
147
160
  src/review_sensei/configuration.py
@@ -152,10 +165,13 @@ src/review_sensei/coverage.py
152
165
  src/review_sensei/dependencies.py
153
166
  src/review_sensei/diagnostics.py
154
167
  src/review_sensei/diff.py
168
+ src/review_sensei/discovery_work.py
155
169
  src/review_sensei/disposition.py
156
170
  src/review_sensei/document_context.py
157
171
  src/review_sensei/errors.py
158
172
  src/review_sensei/evaluation.py
173
+ src/review_sensei/evidence.py
174
+ src/review_sensei/execution.py
159
175
  src/review_sensei/hosted.py
160
176
  src/review_sensei/human_assessment.py
161
177
  src/review_sensei/learnings.py
@@ -167,14 +183,17 @@ src/review_sensei/placement.py
167
183
  src/review_sensei/planning.py
168
184
  src/review_sensei/presentation.py
169
185
  src/review_sensei/provider_config.py
186
+ src/review_sensei/reassessment_work.py
170
187
  src/review_sensei/release_manifest.py
171
188
  src/review_sensei/schemas.py
189
+ src/review_sensei/scope.py
172
190
  src/review_sensei/sequence.py
173
191
  src/review_sensei/service.py
174
192
  src/review_sensei/session.py
175
193
  src/review_sensei/stages.py
176
194
  src/review_sensei/validation.py
177
195
  src/review_sensei/verifier.py
196
+ src/review_sensei/work_recovery.py
178
197
  src/review_sensei/workflow.py
179
198
  src/review_sensei/default_categories/01-correctness.json
180
199
  src/review_sensei/default_categories/02-security.json
@@ -200,6 +219,7 @@ src/review_sensei/hosting/github/learning_pr.py
200
219
  src/review_sensei/hosting/github/observed.py
201
220
  src/review_sensei/hosting/github/oidc.py
202
221
  src/review_sensei/hosting/github/publication.py
222
+ src/review_sensei/hosting/github/reservation_recovery.py
203
223
  src/review_sensei/hosting/github/session_ledger.py
204
224
  src/review_sensei/hosting/github/setup.py
205
225
  src/review_sensei/hosting/github/trigger.py
@@ -209,6 +229,7 @@ src/review_sensei/hosting/github/fixtures/historical-v4-uninstall.yml
209
229
  src/review_sensei/hosting/github/fixtures/merge-focused-v4-caller.yml
210
230
  src/review_sensei/hosting/github/fixtures/merge-focused-v4-config.yml
211
231
  src/review_sensei/hosting/github/fixtures/released-v4-resolve-trigger-runner-switch.yml
232
+ src/review_sensei/hosting/github/fixtures/sensei-only-v5-caller.yml
212
233
  src/review_sensei/providers/__init__.py
213
234
  src/review_sensei/providers/base.py
214
235
  src/review_sensei/providers/fixture.py
@@ -251,6 +272,7 @@ src/review_sensei/schemas/session-record.schema.json
251
272
  src/review_sensei/schemas/stage.schema.json
252
273
  src/review_sensei/schemas/verification-result.schema.json
253
274
  src/review_sensei/schemas/verification-scope.schema.json
275
+ src/review_sensei/schemas/work-recovery-artifact.schema.json
254
276
  tests/fake_github_http.py
255
277
  tests/packaging_guard.py
256
278
  tests/dist_safe/test_distribution_contract.py
package/bin/review-sensei CHANGED
Binary file
package/package.json CHANGED
@@ -1,13 +1,21 @@
1
1
  {
2
2
  "name": "@reviewsensei/cli-linux-x64-gnu",
3
- "version": "0.6.15",
3
+ "version": "0.6.17",
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": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/malsabbagh/review-sensei.git"
9
9
  },
10
- "os": ["linux"],
11
- "cpu": ["x64"],
12
- "files": ["bin", "README.md", "LICENSE"]
10
+ "os": [
11
+ "linux"
12
+ ],
13
+ "cpu": [
14
+ "x64"
15
+ ],
16
+ "files": [
17
+ "bin",
18
+ "README.md",
19
+ "LICENSE"
20
+ ]
13
21
  }