@reviewsensei/cli-win32-x64 0.6.8 → 0.6.10

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 (18) 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/schemas/convergence-sequence-report.schema.json +6 -8
  4. package/bin/_internal/review_sensei/schemas/observed-convergence-report.schema.json +7 -7
  5. package/bin/_internal/review_sensei/schemas/review-convergence-policy.schema.json +0 -12
  6. package/bin/_internal/review_sensei/schemas/review-round-decision.schema.json +2 -17
  7. package/bin/_internal/review_sensei/schemas/session-record.schema.json +4 -2
  8. package/bin/_internal/{review_sensei-0.6.8.dist-info → review_sensei-0.6.10.dist-info}/METADATA +141 -44
  9. package/bin/_internal/{review_sensei-0.6.8.dist-info → review_sensei-0.6.10.dist-info}/RECORD +43 -37
  10. package/bin/review-sensei.exe +0 -0
  11. package/package.json +1 -1
  12. /package/bin/_internal/{review_sensei-0.6.8.dist-info → review_sensei-0.6.10.dist-info}/INSTALLER +0 -0
  13. /package/bin/_internal/{review_sensei-0.6.8.dist-info → review_sensei-0.6.10.dist-info}/REQUESTED +0 -0
  14. /package/bin/_internal/{review_sensei-0.6.8.dist-info → review_sensei-0.6.10.dist-info}/WHEEL +0 -0
  15. /package/bin/_internal/{review_sensei-0.6.8.dist-info → review_sensei-0.6.10.dist-info}/direct_url.json +0 -0
  16. /package/bin/_internal/{review_sensei-0.6.8.dist-info → review_sensei-0.6.10.dist-info}/entry_points.txt +0 -0
  17. /package/bin/_internal/{review_sensei-0.6.8.dist-info → review_sensei-0.6.10.dist-info}/licenses/LICENSE +0 -0
  18. /package/bin/_internal/{review_sensei-0.6.8.dist-info → review_sensei-0.6.10.dist-info}/top_level.txt +0 -0
Binary file
@@ -1,4 +1,4 @@
1
- ../../Scripts/jsonschema.exe,sha256=F03B69MgLXOmLhtLKocxXdiYCrHCYKy0wXd9G9CxRzs,108352
1
+ ../../Scripts/jsonschema.exe,sha256=pRpokostMZ6mCGgVMGTKikQIyf9sGmNK4o8Mlw6w008,108352
2
2
  jsonschema-4.26.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
3
3
  jsonschema-4.26.0.dist-info/METADATA,sha256=BbGJhmypipbaOTS_a4NofO0_-FMlJzt34WtwX22LJtI,7592
4
4
  jsonschema-4.26.0.dist-info/RECORD,,
@@ -12,7 +12,6 @@
12
12
  "completed_verification_rounds",
13
13
  "handoffs",
14
14
  "no_progress_events",
15
- "cap_created_approval",
16
15
  "limitations"
17
16
  ],
18
17
  "properties": {
@@ -22,8 +21,9 @@
22
21
  "enum": ["legacy", "advisory", "merge-focused", "strict"]
23
22
  },
24
23
  "steps": {
24
+ "description": "Replayed attempts. The bound is a storage ceiling, not a review-count admission limit; sequences past the former 32-round validation bound serialize normally.",
25
25
  "type": "array",
26
- "maxItems": 32,
26
+ "maxItems": 1000000,
27
27
  "items": {
28
28
  "type": "object",
29
29
  "additionalProperties": false,
@@ -43,7 +43,6 @@
43
43
  "handoff_reason": {
44
44
  "type": ["string", "null"],
45
45
  "enum": [
46
- "round-budget-exhausted",
47
46
  "failed-attempt-budget-exhausted",
48
47
  "no-progress",
49
48
  "incomplete-coverage",
@@ -58,11 +57,10 @@
58
57
  }
59
58
  }
60
59
  },
61
- "completed_initial_reviews": {"type": "integer", "minimum": 0, "maximum": 32},
62
- "completed_verification_rounds": {"type": "integer", "minimum": 0, "maximum": 32},
63
- "handoffs": {"type": "integer", "minimum": 0, "maximum": 32},
64
- "no_progress_events": {"type": "integer", "minimum": 0, "maximum": 32},
65
- "cap_created_approval": {"type": "boolean"},
60
+ "completed_initial_reviews": {"type": "integer", "minimum": 0, "maximum": 1000000},
61
+ "completed_verification_rounds": {"type": "integer", "minimum": 0, "maximum": 1000000},
62
+ "handoffs": {"type": "integer", "minimum": 0, "maximum": 1000000},
63
+ "no_progress_events": {"type": "integer", "minimum": 0, "maximum": 1000000},
66
64
  "limitations": {
67
65
  "type": "array",
68
66
  "maxItems": 8,
@@ -4,14 +4,15 @@
4
4
  "title": "ReviewSensei observed convergence evidence report v1",
5
5
  "type": "object",
6
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"],
7
+ "required": ["schema_version", "mode", "events", "baseline_events", "command_events", "finding_metrics", "execution_metrics", "shadow_isolated", "evidence_identity", "approval_events", "cutover_status", "unmet_criteria", "limitations"],
8
8
  "properties": {
9
9
  "schema_version": {"const": "1.0"},
10
10
  "mode": {"type": "string", "enum": ["advisory", "merge-focused", "strict"]},
11
11
  "events": {
12
+ "description": "Observed attempts. The bound is a storage ceiling, not a review-count admission limit; sequences past the former 32-round validation bound serialize normally.",
12
13
  "type": "array",
13
14
  "minItems": 1,
14
- "maxItems": 32,
15
+ "maxItems": 1000000,
15
16
  "items": {
16
17
  "type": "object",
17
18
  "additionalProperties": false,
@@ -40,7 +41,7 @@
40
41
  }
41
42
  }
42
43
  },
43
- "baseline_events": {"type": "integer", "minimum": 0, "maximum": 32},
44
+ "baseline_events": {"type": "integer", "minimum": 0, "maximum": 1000000},
44
45
  "command_events": {"type": "array", "minItems": 2, "maxItems": 8, "items": {"type": "string", "minLength": 1, "maxLength": 128}},
45
46
  "finding_metrics": {
46
47
  "type": "object",
@@ -64,8 +65,8 @@
64
65
  "additionalProperties": false,
65
66
  "required": ["completed_rounds", "handoffs", "provider_calls", "failed_attempts"],
66
67
  "properties": {
67
- "completed_rounds": {"type": "integer", "minimum": 0, "maximum": 32},
68
- "handoffs": {"type": "integer", "minimum": 0, "maximum": 32},
68
+ "completed_rounds": {"type": "integer", "minimum": 0, "maximum": 1000000},
69
+ "handoffs": {"type": "integer", "minimum": 0, "maximum": 1000000},
69
70
  "provider_calls": {"type": "integer", "minimum": 0, "maximum": 512},
70
71
  "failed_attempts": {"type": "integer", "minimum": 0, "maximum": 32}
71
72
  }
@@ -84,8 +85,7 @@
84
85
  "command": {"type": "string", "minLength": 1, "maxLength": 256}
85
86
  }
86
87
  },
87
- "approval_events": {"type": ["integer", "null"], "minimum": 0, "maximum": 32},
88
- "cap_created_approval": {"type": ["boolean", "null"]},
88
+ "approval_events": {"type": ["integer", "null"], "minimum": 0, "maximum": 1000000},
89
89
  "cutover_status": {"type": "string", "enum": ["passed", "not_ready"]},
90
90
  "unmet_criteria": {"type": "array", "maxItems": 16, "items": {"type": "string", "minLength": 1, "maxLength": 256}},
91
91
  "limitations": {"type": "array", "minItems": 1, "maxItems": 8, "items": {"type": "string", "minLength": 1, "maxLength": 256}}
@@ -8,8 +8,6 @@
8
8
  "schema_version",
9
9
  "mode",
10
10
  "enforcement",
11
- "max_completed_initial_reviews",
12
- "max_completed_verification_rounds",
13
11
  "max_failed_attempts",
14
12
  "automatic_github_review_events",
15
13
  "inline_advisory_threads"
@@ -24,16 +22,6 @@
24
22
  "type": "string",
25
23
  "enum": ["display-only", "publication"]
26
24
  },
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
25
  "max_failed_attempts": {
38
26
  "type": "integer",
39
27
  "minimum": 1,
@@ -10,12 +10,9 @@
10
10
  "admit",
11
11
  "count_as_completed_round",
12
12
  "round_kind",
13
- "remaining_initial_reviews",
14
- "remaining_verification_rounds",
15
13
  "handoff",
16
14
  "handoff_reason",
17
- "may_emit_approve",
18
- "cap_creates_approval"
15
+ "may_emit_approve"
19
16
  ],
20
17
  "properties": {
21
18
  "schema_version": {"const": "1.0"},
@@ -29,21 +26,10 @@
29
26
  "type": "string",
30
27
  "enum": ["initial", "verification", "none"]
31
28
  },
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
29
  "handoff": {"type": "boolean"},
43
30
  "handoff_reason": {
44
31
  "type": ["string", "null"],
45
32
  "enum": [
46
- "round-budget-exhausted",
47
33
  "failed-attempt-budget-exhausted",
48
34
  "no-progress",
49
35
  "incomplete-coverage",
@@ -52,7 +38,6 @@
52
38
  null
53
39
  ]
54
40
  },
55
- "may_emit_approve": {"type": "boolean"},
56
- "cap_creates_approval": {"type": "boolean", "const": false}
41
+ "may_emit_approve": {"type": "boolean"}
57
42
  }
58
43
  }
@@ -30,9 +30,10 @@
30
30
  "minimum": 1,
31
31
  "maximum": 2147483647
32
32
  },
33
- "completed_initial_reviews": {"type": "integer", "minimum": 0, "maximum": 32},
34
- "completed_verification_rounds": {"type": "integer", "minimum": 0, "maximum": 32},
33
+ "completed_initial_reviews": {"type": "integer", "minimum": 0, "maximum": 1000000},
34
+ "completed_verification_rounds": {"type": "integer", "minimum": 0, "maximum": 1000000},
35
35
  "failed_attempts": {"type": "integer", "minimum": 0, "maximum": 32},
36
+ "failed_attempts_head_sha": {"type": ["string", "null"], "pattern": "^[a-f0-9]{40,64}$"},
36
37
  "generation": {"type": "integer", "minimum": 0, "maximum": 2147483647},
37
38
  "reservation_id": {
38
39
  "anyOf": [
@@ -85,6 +86,7 @@
85
86
  }
86
87
  },
87
88
  "continuation_grants": {
89
+ "description": "Retained pre-uncapped command attestations. Stored as history only; no command consumes them.",
88
90
  "type": "array",
89
91
  "maxItems": 4,
90
92
  "items": {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: review-sensei
3
- Version: 0.6.8
3
+ Version: 0.6.10
4
4
  Summary: Provider-neutral AI code review engine with an Ollama adapter.
5
5
  Author: Mohamad Alsabbagh
6
6
  License-Expression: MIT
@@ -84,32 +84,60 @@ python -m pip install .
84
84
  review-sensei --version
85
85
  ```
86
86
 
87
- The default is a local Ollama server using Qwen3.5 4B. Leave the API key empty
88
- and select the local mode:
87
+ The default backend is a local Ollama server using the packaged local model,
88
+ so a local review runs with no credential and no repository setup at all. A
89
+ repository selects its backend in `.reviewsensei.yml` at the repository root,
90
+ and a repository without that file uses the packaged defaults:
91
+
92
+ ```yaml
93
+ schema: 1
94
+
95
+ inference:
96
+ backend: local-ollama
97
+ ```
98
+
99
+ Select a backend on the command line when one run needs a different one:
89
100
 
90
101
  ```bash
91
- export REVIEWSENSEI_PROVIDER_MODE="local"
92
- export REVIEWSENSEI_LOCAL_MODEL="qwen3.5:4b"
93
- unset OLLAMA_API_KEY
102
+ review-sensei --diff pr.patch --provider local-ollama
103
+ review-sensei --diff pr.patch --provider local-ollama --model qwen3.5:8b
94
104
  ```
95
105
 
96
- Ollama Cloud is explicit opt-in:
106
+ The hosted backends are explicit, and each one requires its own credential:
97
107
 
98
108
  ```bash
99
- export OLLAMA_API_KEY="your-key"
100
- export REVIEWSENSEI_PROVIDER_MODE="cloud"
101
- export REVIEWSENSEI_CLOUD_MODEL="deepseek-v4.1-flash:cloud"
102
- unset OLLAMA_BASE_URL OLLAMA_MODEL
109
+ OLLAMA_API_KEY="your-key" review-sensei --diff pr.patch --provider cloud-ollama
110
+ OPENROUTER_API_KEY="your-key" review-sensei --diff pr.patch --provider openrouter
111
+ OPENAI_API_KEY="your-key" review-sensei --diff pr.patch --provider openai-compatible
112
+ ```
113
+
114
+ Ollama Cloud is explicit opt-in and requires `OLLAMA_API_KEY`:
115
+
116
+ ```yaml
117
+ schema: 1
118
+
119
+ inference:
120
+ backend: cloud-ollama
103
121
  ```
104
122
 
123
+ A backend that needs no credential never receives one implicitly: a key
124
+ exported for another backend does not travel to `local-ollama`.
125
+
126
+ The packaged model for the selected backend applies unless `inference.model`
127
+ names another one. `REVIEWSENSEI_PROVIDER` and `REVIEWSENSEI_MODEL` remain the
128
+ only supported environment overrides; the retired
129
+ `REVIEWSENSEI_PROVIDER_MODE`, `REVIEWSENSEI_LOCAL_MODEL`, and
130
+ `REVIEWSENSEI_CLOUD_MODEL` variables have no effect and are reported with their
131
+ replacements by `review-sensei config`.
132
+
105
133
  ### Run through npx
106
134
 
107
135
  Node.js 22 or newer can invoke the same Python review engine through the
108
136
  provider-neutral `@reviewsensei/cli` launcher:
109
137
 
110
138
  ```bash
111
- npx --yes @reviewsensei/cli@0.6.8 --version
112
- npx --yes @reviewsensei/cli@0.6.8 --help
139
+ npx --yes @reviewsensei/cli@0.6.10 --version
140
+ npx --yes @reviewsensei/cli@0.6.10 --help
113
141
  ```
114
142
 
115
143
  The launcher selects one of the five native packages (macOS arm64/x64,
@@ -125,7 +153,14 @@ release tag. See [`docs/installation.md`](docs/installation.md),
125
153
  for prerequisites, release ordering, provenance, and version-forward rollback
126
154
  guidance.
127
155
 
128
- Generate a bounded diff and run a review:
156
+ Generate a bounded diff and review it. The shortest local run needs nothing
157
+ but the diff and a reachable local model server:
158
+
159
+ ```bash
160
+ review-sensei --diff pr.patch
161
+ ```
162
+
163
+ Repository context, learnings, and an explicit change identity are optional:
129
164
 
130
165
  ```bash
131
166
  review-sensei prepare-diff \
@@ -142,13 +177,40 @@ review-sensei \
142
177
  --title "Reviewable change" \
143
178
  --learning-root /path/to/target-branch-checkout \
144
179
  --context-root /path/to/target-branch-checkout \
180
+ --format json \
145
181
  --output review.json
146
182
  ```
147
183
 
148
- The output is a validated JSON document containing `summary`, `comments`,
149
- `provider`, `model`, and `learning_proposals`. Learning proposals are not
184
+ The default output is readable terminal text. `--format markdown` and
185
+ `--format json` are explicit, and only the selected format is written to
186
+ stdout or `--output` while warnings, diagnostics, and the final status and
187
+ reason lines stay on stderr. The JSON format
188
+ is the validated `review-result` document containing `summary`, `comments`,
189
+ `provider`, `model`, and `learning_proposals`; learning proposals are not
150
190
  stored or used automatically.
151
191
 
192
+ The review exit contract is stable:
193
+
194
+ | Code | Meaning |
195
+ | --- | --- |
196
+ | `0` | The review completed and no required fixes remain |
197
+ | `1` | The review completed with required fixes remaining |
198
+ | `2` | The review could not complete, the input was invalid, or a human decision is required |
199
+
200
+ A non-zero exit prints a `review-sensei: reason=<token>` line naming the cause,
201
+ and the exit codes are unchanged by the selected output format. Hosts and
202
+ launchers that select a lane from the historical 0/1 contract pass
203
+ `--exit-semantics operational`.
204
+
205
+ A local review is a bounded one-shot and needs no GitHub identity, OIDC token,
206
+ broker, or hosted state. `--local-session` is the one explicit
207
+ persistent-local-session operation: it keeps the durable session ledger in the
208
+ platform's per-user state directory (`~/Library/Application Support/review-sensei`
209
+ on macOS, `%LOCALAPPDATA%\review-sensei` on Windows, and
210
+ `$XDG_STATE_HOME/review-sensei` or `~/.local/state/review-sensei` elsewhere) so
211
+ repeated runs of the same change reuse one session, and `--session-ledger`
212
+ still overrides that location.
213
+
152
214
  The published schema files live under `src/review_sensei/schemas/` and are
153
215
  included in the installed package. Public compatibility rules, CLI flags, error
154
216
  categories, and provider protocol expectations are documented in
@@ -205,7 +267,7 @@ environment.
205
267
 
206
268
  During installation or migration, the Worker separately uses GitHub App
207
269
  authentication to obtain a repository-scoped installation token for the setup
208
- branch, pull request, and default variables.
270
+ branch and pull request.
209
271
 
210
272
  Installation, reinstall, permission-acceptance, and repository-added events
211
273
  reconcile absent or older generated clients through at most one setup-v5 PR.
@@ -519,16 +581,33 @@ See [ADR 0036](docs/adr/0036-learning-lifecycle-diagnostics-and-feedback.md).
519
581
 
520
582
  ## Local Ollama
521
583
 
584
+ A local review defaults to the `local-ollama` backend and needs no credential.
585
+ State it explicitly in `.reviewsensei.yml` when the repository should not rely
586
+ on the packaged default:
587
+
588
+ ```yaml
589
+ schema: 1
590
+
591
+ inference:
592
+ backend: local-ollama
593
+ ```
594
+
522
595
  ```bash
523
- export REVIEWSENSEI_PROVIDER_MODE="local"
524
- export REVIEWSENSEI_LOCAL_MODEL="qwen3.5:4b"
525
- unset OLLAMA_API_KEY
526
596
  review-sensei --diff pr.patch
527
597
  ```
528
598
 
599
+ Select the backend and model explicitly when you need to
600
+ (`--provider local-ollama --model qwen3.5:8b`, or `REVIEWSENSEI_PROVIDER` and
601
+ `REVIEWSENSEI_MODEL`). A backend that requires no credential never receives one
602
+ implicitly, so an exported `OLLAMA_API_KEY` is not attached to loopback
603
+ requests unless `--api-key-env` names it.
604
+
529
605
  ## Providers
530
606
 
531
- The shipped registry keys are `ollama`, `openai-compatible`, and `openrouter`.
607
+ The shipped registry adapters are `ollama`, `openai-compatible`,
608
+ `openrouter`, and the `fixture` test seam. Canonical backends — `local-ollama`,
609
+ `cloud-ollama`, `openai-compatible`, `openrouter`, and `fixture` — are what
610
+ `--provider`, `REVIEWSENSEI_PROVIDER`, and inference configuration name.
532
611
  Operator defaults, workflow modes, named profiles, credentials, and hosted
533
612
  OpenRouter allowlists are documented in [`docs/installation.md`](docs/installation.md).
534
613
  The release-aware public matrix lives at
@@ -566,13 +645,18 @@ The GitHub App opens a setup-v5 PR containing a thin caller that follows the
566
645
  operator-managed `v5` public git tag. The reusable workflow prefers the
567
646
  requested exact package from PyPI and falls back to its executing workflow
568
647
  commit only when that package/version is unavailable. Unrelated PyPI
569
- installation failures remain fatal. Setup provisions 15 repository variables,
570
- including 7 boolean controls, and manages 3 generated files. Automatic review,
571
- GitHub writes, learning proposals, learning PRs, mention replies, and artifact
572
- upload default to `false`; automatic approval defaults to `true` but is effective
573
- only when review and write gates are enabled. `REVIEWSENSEI_REVIEW_MODE` is a
574
- policy selector, not a boolean control, and defaults to `merge-focused`.
575
- The App never creates the customer-owned `OLLAMA_API_KEY` secret.
648
+ installation failures remain fatal. Setup creates no repository variables and
649
+ manages 3 generated files: the caller, the uninstall workflow, and the minimal
650
+ root `.reviewsensei.yml` that the operator owns from the first install on. The
651
+ only two optional Actions overrides the product consumes are
652
+ `REVIEWSENSEI_PROVIDER` (`inference.backend`) and `REVIEWSENSEI_MODEL`
653
+ (`inference.model`); the reusable workflow maps them once from the trusted
654
+ policy commit. Every other policy decision is a field of `.reviewsensei.yml`:
655
+ `github.automatic_reviews` defaults to `true`, `github.writes` to `false`,
656
+ `github.reviews` to `auto-approve`, `github.mentions` to `true`,
657
+ `github.learning` to `disabled`, and `github.artifacts` to `none`. The App
658
+ requests no Variables permission and never creates the customer-owned
659
+ `OLLAMA_API_KEY` secret.
576
660
 
577
661
  When explicitly enabled, same-repository pull requests can run automatic review
578
662
  with either provider mode: cloud on a GitHub-hosted runner or local Ollama on
@@ -587,19 +671,32 @@ transport ceiling remains unchanged. Fork pull requests fail closed before
587
671
  provider or broker access.
588
672
 
589
673
  When automatic review and GitHub writes are enabled, automatic approval is on by
590
- default; set `REVIEWSENSEI_AUTO_APPROVE=false` for an explicit opt-out.
591
- ReviewSensei publishes blocking findings as `REQUEST_CHANGES` and non-blocking
592
- findings as `COMMENT`, then invokes one shared, idempotent approval finalizer.
593
- It emits `APPROVE` for an eligible exact head when no unresolved ReviewSensei
594
- root is classified blocking. A later execution on the same commit still
595
- requests changes if blocking comments appear after an approval, and it
596
- approves after an earlier change request only once those blocking roots are
597
- resolved. Unresolved non-blocking ReviewSensei findings and human threads do
598
- not withhold approval. An unclassified ReviewSensei root, malformed or
599
- incomplete thread data, or a draft/closed/fork/stale/App-authored PR fails
600
- closed. The finalizer runs after review publication and after the AI resolves a
601
- blocking ReviewSensei thread; `@sensei` replies themselves remain ordinary
602
- comments. Existing approval markers prevent duplicate approvals.
674
+ default; `github.reviews: blocking` (publish and enforce, never automatically
675
+ approve) or `github.reviews: advisory` (no ReviewSensei merge gate and no
676
+ approval) in `.reviewsensei.yml` selects another policy.
677
+ ReviewSensei publishes one exact-head `COMMENT` review with its summary and
678
+ valid inline findings, and enforces through one stable `ReviewSensei` check run
679
+ bound to that head and to the App that produced it: `success` for a complete
680
+ review with no required fixes, `failure` when required fixes remain, and
681
+ `action_required` for a partial, incomplete, or unpublished review. An earlier
682
+ conclusion on the same head is superseded by a pending `in_progress` write, so
683
+ a finished review cannot stand in for one that is still running. No persistent
684
+ `REQUEST_CHANGES` is emitted as a second gate. A repository administrator must
685
+ mark `ReviewSensei` required for it to gate merges; `review-sensei doctor`
686
+ reports the check identity and producing App, and nothing reads or changes
687
+ branch protection.
688
+
689
+ The same mode also runs one shared, idempotent approval finalizer. It emits
690
+ `APPROVE` for an eligible exact head whose review is complete and qualified and
691
+ whose bounded thread sweep finds no unresolved blocking ReviewSensei root.
692
+ Unresolved non-blocking ReviewSensei findings and human threads do not withhold
693
+ approval. An unclassified ReviewSensei root, malformed or incomplete thread
694
+ data, an unverified configuration, or a draft/closed/fork/stale/App-authored PR
695
+ fails closed or reports why approval was withheld. The finalizer runs after
696
+ review publication and after the AI resolves a blocking ReviewSensei thread;
697
+ `@sensei` replies themselves remain ordinary comments. Existing approval markers
698
+ prevent duplicate approvals, and ReviewSensei never calls a merge endpoint or
699
+ enables auto-merge.
603
700
 
604
701
  The approval policy is deliberately conservative: explicit blocking metadata,
605
702
  or an unclassified canonical `critical`/`high` severity, blocks approval.
@@ -618,9 +715,9 @@ mode sends that bounded conversation context to Ollama Cloud; local mode keeps
618
715
  it on the configured local service. Published review summaries and inline
619
716
  findings also tell readers to reply with @sensei followed by their question.
620
717
  `review.json` is uploaded only when
621
- `REVIEWSENSEI_UPLOAD_ARTIFACTS=true`; setup-v5 does not create a separate
622
- version artifact. See [installation and migration](docs/installation.md) and
623
- the reviewable
718
+ `github.artifacts: diagnostics` is set in `.reviewsensei.yml`; setup-v5 does not
719
+ create a separate version artifact. See
720
+ [installation and migration](docs/installation.md) and the reviewable
624
721
  [`setup-v5 example`](examples/github-actions/review-sensei-review.yml).
625
722
 
626
723
  ## Concurrency policy
@@ -1,13 +1,13 @@
1
- ../../Scripts/review-sensei.exe,sha256=v521SenEm2UfzUYTE8UFy1jD_kmT9b7Sl-09pLfLm_8,108355
2
- review_sensei-0.6.8.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
3
- review_sensei-0.6.8.dist-info/METADATA,sha256=4zyfK1RWYaCDs0LwfPfXIuP8S3uHqU-rcfjx6amHbbw,34155
4
- review_sensei-0.6.8.dist-info/RECORD,,
5
- review_sensei-0.6.8.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- review_sensei-0.6.8.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
7
- review_sensei-0.6.8.dist-info/direct_url.json,sha256=EDhpXdSFq1qZfl2FCT07Hg2gleInjGFaAwkFy0selqU,67
8
- review_sensei-0.6.8.dist-info/entry_points.txt,sha256=Eki1ToC6hiOv8PMEAd2Cnbh5WWstVzzzf0XmHBHzpMQ,57
9
- review_sensei-0.6.8.dist-info/licenses/LICENSE,sha256=-eVBqOV92YK1K76UIcK5MrgUh0EiQMe8xNhSysQE68s,1095
10
- review_sensei-0.6.8.dist-info/top_level.txt,sha256=VCF4gJIJPP3MPJntoITDjMhJ8MUZfVLj-z3-VUQ9XDY,14
1
+ ../../Scripts/review-sensei.exe,sha256=04iYIl1l4LU9TcsUKBpmYYp-4pBvoNxlNARAjkDRBNY,108355
2
+ review_sensei-0.6.10.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
3
+ review_sensei-0.6.10.dist-info/METADATA,sha256=iyF7YB1YSJUm2t01os9ygqBsJNwBBPLMhfe9v6Eu3Fk,38756
4
+ review_sensei-0.6.10.dist-info/RECORD,,
5
+ review_sensei-0.6.10.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ review_sensei-0.6.10.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
7
+ review_sensei-0.6.10.dist-info/direct_url.json,sha256=EDhpXdSFq1qZfl2FCT07Hg2gleInjGFaAwkFy0selqU,67
8
+ review_sensei-0.6.10.dist-info/entry_points.txt,sha256=Eki1ToC6hiOv8PMEAd2Cnbh5WWstVzzzf0XmHBHzpMQ,57
9
+ review_sensei-0.6.10.dist-info/licenses/LICENSE,sha256=-eVBqOV92YK1K76UIcK5MrgUh0EiQMe8xNhSysQE68s,1095
10
+ review_sensei-0.6.10.dist-info/top_level.txt,sha256=VCF4gJIJPP3MPJntoITDjMhJ8MUZfVLj-z3-VUQ9XDY,14
11
11
  review_sensei/__init__.py,sha256=hBA7OkQbK_oV4-fDFucVnpsnIut_JK-BbXLTznhg8ao,10524
12
12
  review_sensei/__main__.py,sha256=0iDYjdmiXNBinFF23WUyotsdpA6wFKjoB5aw3esTSRg,83
13
13
  review_sensei/__pycache__/__init__.cpython-311.pyc,,
@@ -15,6 +15,7 @@ review_sensei/__pycache__/__main__.cpython-311.pyc,,
15
15
  review_sensei/__pycache__/baseline.cpython-311.pyc,,
16
16
  review_sensei/__pycache__/cli.cpython-311.pyc,,
17
17
  review_sensei/__pycache__/concurrency.cpython-311.pyc,,
18
+ review_sensei/__pycache__/configuration.cpython-311.pyc,,
18
19
  review_sensei/__pycache__/context.cpython-311.pyc,,
19
20
  review_sensei/__pycache__/convergence.cpython-311.pyc,,
20
21
  review_sensei/__pycache__/conversation.cpython-311.pyc,,
@@ -24,11 +25,13 @@ review_sensei/__pycache__/diff.cpython-311.pyc,,
24
25
  review_sensei/__pycache__/disposition.cpython-311.pyc,,
25
26
  review_sensei/__pycache__/errors.cpython-311.pyc,,
26
27
  review_sensei/__pycache__/evaluation.cpython-311.pyc,,
28
+ review_sensei/__pycache__/hosted.cpython-311.pyc,,
27
29
  review_sensei/__pycache__/learnings.cpython-311.pyc,,
28
30
  review_sensei/__pycache__/models.cpython-311.pyc,,
29
31
  review_sensei/__pycache__/openrouter_qualification.cpython-311.pyc,,
30
32
  review_sensei/__pycache__/outcomes.cpython-311.pyc,,
31
33
  review_sensei/__pycache__/patches.cpython-311.pyc,,
34
+ review_sensei/__pycache__/placement.cpython-311.pyc,,
32
35
  review_sensei/__pycache__/planning.cpython-311.pyc,,
33
36
  review_sensei/__pycache__/presentation.cpython-311.pyc,,
34
37
  review_sensei/__pycache__/provider_config.cpython-311.pyc,,
@@ -41,11 +44,12 @@ review_sensei/__pycache__/stages.cpython-311.pyc,,
41
44
  review_sensei/__pycache__/validation.cpython-311.pyc,,
42
45
  review_sensei/__pycache__/verifier.cpython-311.pyc,,
43
46
  review_sensei/__pycache__/workflow.cpython-311.pyc,,
44
- review_sensei/baseline.py,sha256=2FlDvM09jjy5WGPl3uh5WTS8EYSMvDNMqHSg0kjmEK4,55224
45
- review_sensei/cli.py,sha256=ASB0Zs_bHTG8CWAF629uCj2NQK8zMOHjpdq_g54UJJI,131501
47
+ review_sensei/baseline.py,sha256=B8rEeAtcWDZKHmKpp1ivyKuDlyqq8W6dHInZr5sdoBM,58473
48
+ review_sensei/cli.py,sha256=AF912QD44dcanl4IZJmVfoYViDsYSoCntLaxozBpRDY,151292
46
49
  review_sensei/concurrency.py,sha256=7nqMDNaIl7YoKafkAF1ctXu6D5SFxXosm-1407OKimQ,20097
50
+ review_sensei/configuration.py,sha256=b2D09kp8JcMFWaC5hVRirwYI8FB--cxSpiV1EERNU4o,90145
47
51
  review_sensei/context.py,sha256=ejDs0EBaUVTbAkrs-wACGXbgQcEwClX0Tultn2Mo_R0,96255
48
- review_sensei/convergence.py,sha256=-3rS7y9z0h0UTq1vRv9Ivr_dcM5zWmVR52Rsn64QQ0g,54234
52
+ review_sensei/convergence.py,sha256=ZxnHmmFLGramRrOE8IHsAvqdhK3Rd--rimfm7UJKy08,50962
49
53
  review_sensei/conversation.py,sha256=KRWtF8JnmOrOQsvAX4q-d0UzzXjNp2XeePSbyIm4_pw,7467
50
54
  review_sensei/coverage.py,sha256=8fVsO4x2swqaa9QI5fcqeqB_FB6m0JfKrlRCg7_KA6E,12951
51
55
  review_sensei/default_categories/01-correctness.json,sha256=ZeTTvEavHU6_ih7JKhv8a6gH-4wRJGv0abckRWNWTfs,211
@@ -54,11 +58,12 @@ review_sensei/default_categories/03-architecture.json,sha256=Fg3VsUCzl9trCpSnoOg
54
58
  review_sensei/default_categories/03-maintainability.json,sha256=eyF9_slQ50LwEqSSet63jthfNp9ZOTnwiDVtVYjVv1A,229
55
59
  review_sensei/default_categories/04-tests.json,sha256=UHhvH79bae9FmLJT_MYNvki4Y9xhJDLpDuLdgp2npe0,208
56
60
  review_sensei/default_stages/01-default-review.json,sha256=-y9LP_8XNqEPpRN2K8z_qMHRqXyP6ZsiydzZFHozZwY,3463
57
- review_sensei/diagnostics.py,sha256=CAYZPlOBlJ8ZNyPUrbzX-bcnbigxhA593_aaGqNj5hY,44971
61
+ review_sensei/diagnostics.py,sha256=-_g6EV8SSbUQqxo5OYPhJQX5wSlNv9WWn1ZqtyJKZo8,45519
58
62
  review_sensei/diff.py,sha256=na5MWhYcnRimFwGElNBiSp27Su_oufHhWiGtm1W38oY,32057
59
- review_sensei/disposition.py,sha256=jENlqe7JU3kPCBo-0_jxpfEkb_rltcEvXoRihstmo7s,24908
63
+ review_sensei/disposition.py,sha256=d0nsNUKtba3UijH7X2YF7Wj5FSLdjRjE2Ni6HH0d9GI,21496
60
64
  review_sensei/errors.py,sha256=1-JKbLcEodjQMXleJwR-QDzRhMSFwDSe9Oc6Pg1UYmY,2901
61
65
  review_sensei/evaluation.py,sha256=kKhbcF3XpHhDYLW8e_dxGjcS0sXJpz8nXYsPpUuXnBE,59450
66
+ review_sensei/hosted.py,sha256=sYy8tHLhR3xeBJveu1c1YHG8Uk2T8Br_4CdUIFemx24,10374
62
67
  review_sensei/hosting/__init__.py,sha256=zqIukHwfUzai3x7dJS2nFNlVhP7EQWQ47-4pGCi2Sz0,84
63
68
  review_sensei/hosting/__pycache__/__init__.cpython-311.pyc,,
64
69
  review_sensei/hosting/__pycache__/openrouter_workflow.cpython-311.pyc,,
@@ -69,7 +74,7 @@ review_sensei/hosting/github/__pycache__/approval.cpython-311.pyc,,
69
74
  review_sensei/hosting/github/__pycache__/auth.cpython-311.pyc,,
70
75
  review_sensei/hosting/github/__pycache__/broker.cpython-311.pyc,,
71
76
  review_sensei/hosting/github/__pycache__/broker_client.cpython-311.pyc,,
72
- review_sensei/hosting/github/__pycache__/budget_admission.cpython-311.pyc,,
77
+ review_sensei/hosting/github/__pycache__/checks.cpython-311.pyc,,
73
78
  review_sensei/hosting/github/__pycache__/conversation.cpython-311.pyc,,
74
79
  review_sensei/hosting/github/__pycache__/errors.cpython-311.pyc,,
75
80
  review_sensei/hosting/github/__pycache__/http.cpython-311.pyc,,
@@ -82,13 +87,13 @@ review_sensei/hosting/github/__pycache__/session_ledger.cpython-311.pyc,,
82
87
  review_sensei/hosting/github/__pycache__/setup.cpython-311.pyc,,
83
88
  review_sensei/hosting/github/__pycache__/trigger.cpython-311.pyc,,
84
89
  review_sensei/hosting/github/__pycache__/webhooks.cpython-311.pyc,,
85
- review_sensei/hosting/github/application.py,sha256=L9GyMXzvtxZkFXaG9XWWitf2Z974bV9krwp8VVxCb0k,70460
86
- review_sensei/hosting/github/approval.py,sha256=nx8h8oDvljrdrXkNahMXrvk3kMVkMy6owztXZPRwsqA,4189
90
+ review_sensei/hosting/github/application.py,sha256=mDILRw7MYXfsgkkhH8UizSJy4kPQ4Y5tlAPeUZb0Ig4,73293
91
+ review_sensei/hosting/github/approval.py,sha256=JGEIO-Rfq87JX78B80er-edRpZttBd7wDHh5mvQu8sM,19955
87
92
  review_sensei/hosting/github/auth.py,sha256=koITagUX9piVboGJ_smEhPsCf4rOQkOqqSKeLKvFRbc,19055
88
93
  review_sensei/hosting/github/broker.py,sha256=FFC7DsFhzy1tENXTCmLNuYzX2cHaYsgMkDGwXEcJaTU,18014
89
- review_sensei/hosting/github/broker_client.py,sha256=v8_PQe7yF0kXtZOEbXxWcw2xW-Z7COQt9Zi8CTsQkHM,16573
90
- review_sensei/hosting/github/budget_admission.py,sha256=fRRN-CEo0Kze1Dhq3Qy40w5970ZrFdHfwJgV_7AeU-4,10322
91
- review_sensei/hosting/github/conversation.py,sha256=j0WNXWEcLLjaAHhYkk0WTbLHUXyikDKjhppCaEgImLY,62918
94
+ review_sensei/hosting/github/broker_client.py,sha256=TfA4NNW-I0gvd-Q122xfIY5pHmJp_rzbGYzJEsN77t8,16607
95
+ review_sensei/hosting/github/checks.py,sha256=uf8qD0tE0D0UED2L93V6_91RXAy4uH2iZzKNY7UvmP8,16828
96
+ review_sensei/hosting/github/conversation.py,sha256=Jg-H3xtEg5TpBujA8271IlCfIxpvkG1r54a7PfNTGrc,63578
92
97
  review_sensei/hosting/github/errors.py,sha256=K5Lfsh4uzuAW6tER2l7pcEM4Lz6FwGEmMPxvF1vNc4E,5352
93
98
  review_sensei/hosting/github/fixtures/__init__.py,sha256=2sBygkvppFJ6F8KV1_MDmbBNl7Yd0oPvYOFG6R_NOpA,82
94
99
  review_sensei/hosting/github/fixtures/__pycache__/__init__.cpython-311.pyc,,
@@ -99,21 +104,22 @@ review_sensei/hosting/github/fixtures/released-v4-resolve-trigger-runner-switch.
99
104
  review_sensei/hosting/github/http.py,sha256=6Dz9S-U4M07KehE7FhjNyrBt_XKKz4Dnp6zULMFKHk0,8943
100
105
  review_sensei/hosting/github/jwt.py,sha256=mTakXBxU-GR-hBnIZE-FryfFXwpS9hJ7qb3X7P0FBMo,4582
101
106
  review_sensei/hosting/github/learning_pr.py,sha256=hT7FmmpWCnUO5WCQEmP9XioQiceNALxuJCtcZXAQxSU,112424
102
- review_sensei/hosting/github/observed.py,sha256=Pin563D-wNQVeC0_PSrh8W1138K5xM2jbN_lE2MyK6s,36230
107
+ review_sensei/hosting/github/observed.py,sha256=Sk0J_kfTBS1je6_YI5-HgGE266zv0_JP1CfvaR7X_zY,36461
103
108
  review_sensei/hosting/github/oidc.py,sha256=h3UVcBYQIKy-xQS7Ixv3_fy670mmuBoNKSYurPZWZ60,13310
104
- review_sensei/hosting/github/publication.py,sha256=h-j_FpqftFwC7gjO-jvrtUwayL31LKISECC7AGJxDTQ,85760
105
- review_sensei/hosting/github/session_ledger.py,sha256=bqalhVAz6AolacYn-paxdddofl7uyeR_kZE7s750iqo,31057
106
- review_sensei/hosting/github/setup.py,sha256=VdSTd1ZTwslt5ZRvOQKLvffubYrqyM3-XLa9j2M7CWQ,107713
107
- review_sensei/hosting/github/trigger.py,sha256=ewwnF02jV1llat5xXwXM3AzZLpMLoD3El0gLKIhsIiM,11395
109
+ review_sensei/hosting/github/publication.py,sha256=rErCFWjE4alVCBa0nMaMwwJLEAprLItIcDGQMi5yPrI,100396
110
+ review_sensei/hosting/github/session_ledger.py,sha256=DZgLY-fP1SMjsQh55k7DsEEdEdPh-72uGEezCjePP9s,31131
111
+ review_sensei/hosting/github/setup.py,sha256=YNfIxLBdKTS5tv41Z_3bwFogKB_KuJabBQbExaigZmQ,116637
112
+ review_sensei/hosting/github/trigger.py,sha256=7jwSWoFU5VsJ1XUhhEEgne9-pA6zaHyYJ_BVlMcqlsI,10434
108
113
  review_sensei/hosting/github/webhooks.py,sha256=7hh_YlF7riV6wov7A_27aOb5g6-Ivob1PBWR4m5bF3I,13662
109
114
  review_sensei/hosting/openrouter_workflow.py,sha256=qepVpa12sL6mTaBqTGhcWEaYI8zawcgAYK6sOCRnKtE,1330
110
115
  review_sensei/learnings.py,sha256=AF9Dqyreb9WQLWLZiciuyRXNviSso6sYVTe2xzx1ZfY,21434
111
- review_sensei/models.py,sha256=UL3bnferZPU6ra5ris6JDJ0XMIjgvMqbgCYM8YtmeU8,93017
116
+ review_sensei/models.py,sha256=4UmJkRYMJyjGgRd98V11IlGEHmJjnzt0h9zBygLBklg,92368
112
117
  review_sensei/openrouter_qualification.py,sha256=UKUL8oK8oexX1P_othR3y_QAAW0PG2EdAYnWXA-ACZI,30296
113
- review_sensei/outcomes.py,sha256=uFpb5-n3mvuQ71ljGQp7KHAmjtCHx13YbiXnTkmCiuk,32183
118
+ review_sensei/outcomes.py,sha256=MdJLil8vgSIaf21vitjbYYu9JTbQGYsAO-QSn5zqCOw,34308
114
119
  review_sensei/patches.py,sha256=P9plsU7-5Z-Jxy8EJBFQX5hX3bcmxBoRJxTnEqA_tbA,15981
115
- review_sensei/planning.py,sha256=6rb6w-tNhXCBOl6-_N6A2fQox6cGjL88kOAhn4oGTpA,23289
116
- review_sensei/presentation.py,sha256=JlbvtcFV_Kok_21ATtDNj-kHfcmCpk5v7N15RulAAVQ,6587
120
+ review_sensei/placement.py,sha256=ABioTJwmS4bhyB1M6IdWqyGOx9j1Ge3CeYSKMk9GXSA,6607
121
+ review_sensei/planning.py,sha256=kdT5pWKw7MWYnRFa12d46TpR3ugG4u6dis-xgUmqxFs,23516
122
+ review_sensei/presentation.py,sha256=LkKBzHKNglQttJEfH1tuul_H3eDYZNaMBMu1ppCNs-U,29191
117
123
  review_sensei/provider_config.py,sha256=y03TeL6wNsx_9KECr_AhHQkWyWOBOUMnPHzDDyL9AdQ,16382
118
124
  review_sensei/providers/__init__.py,sha256=gmfB6gm0QN_FfN3lJJ0kN8QgTtJom4ayzaqUkLmwQwc,779
119
125
  review_sensei/providers/__pycache__/__init__.cpython-311.pyc,,
@@ -143,7 +149,7 @@ review_sensei/schemas/candidate-finding.schema.json,sha256=P_FM6pbwdOZGZPAiI_E_Z
143
149
  review_sensei/schemas/channel-promotion.schema.json,sha256=LNQgvm6IxntfXrpEnoVz4aL_7_ALo8syiVYEFrfxHYw,1085
144
150
  review_sensei/schemas/compatibility-manifest.schema.json,sha256=RIsEo5Os6obelQ078cySd3BHJxGgAySCQg0f0KHRpzY,1858
145
151
  review_sensei/schemas/concurrency-plan.schema.json,sha256=YtHPlfShzFPLE4sQMEn7TogW3souwiKC6d4yd-kgFRY,830
146
- review_sensei/schemas/convergence-sequence-report.schema.json,sha256=FWNUHgdlqlu9SOazQsEVxhBqFY4P_uLynb4OsI8VE1E,2323
152
+ review_sensei/schemas/convergence-sequence-report.schema.json,sha256=e5T1QEepf8k3Zaoilfekt8-Wes9yol8FuHXe8VOAkEU,2412
147
153
  review_sensei/schemas/conversation-reply.schema.json,sha256=bKHxO1CX_g_VrWDb1e0GKPGIUzMPORchHqrT805yPXA,682
148
154
  review_sensei/schemas/coverage-manifest.schema.json,sha256=rrbvq1YYNt-c4YPLmdmrzWo_Au-rDu-e35eg3NdZzQQ,2765
149
155
  review_sensei/schemas/evaluation-corpus.schema.json,sha256=0W3-zgmVFa5AjDSs385szKNt4DX_D_ZdrE9ur3Nrnz0,7905
@@ -152,25 +158,25 @@ review_sensei/schemas/later-finding-classification.schema.json,sha256=YxsogG9aN4
152
158
  review_sensei/schemas/learning-entry.schema.json,sha256=QtbNYK_eIPmXos4TlYbCFL8EvYAqOx-dxUXDM5wBGQ4,1782
153
159
  review_sensei/schemas/learning-feedback.schema.json,sha256=SbNqRSdA82pV5a8Zbzbnjm7U7sj4s9epqRPlJ7-lgAg,1925
154
160
  review_sensei/schemas/learning-proposal.schema.json,sha256=FVYG4sFWGil_66-6NlliFCk2LpiCfJn-yTrY4dN-b0E,644
155
- review_sensei/schemas/observed-convergence-report.schema.json,sha256=amIk4vhjbfn_Zpyz3_qRWHsUJ3M3RAxrXWAvx_K3ipg,5228
161
+ review_sensei/schemas/observed-convergence-report.schema.json,sha256=v6RMEd0pPQ_o1uBv9ikRHElIRTanSFxOksXmNxy3zI4,5353
156
162
  review_sensei/schemas/openrouter-qualification.schema.json,sha256=wIgsZxwvAsKuptmjfsD_8UitPcl-DLAzxjlCD-pZyx8,4203
157
163
  review_sensei/schemas/promotion-record.schema.json,sha256=CHJ99AjwioPthygjTimPjXNuG2rriW4DFZw54fa1rfs,2402
158
164
  review_sensei/schemas/recovery-artifact.schema.json,sha256=ZP-C_E_nQlFsuObxFn2O0iJLMbDMgNWAF7h4BpPyM3g,1254
159
165
  review_sensei/schemas/review-category.schema.json,sha256=Rni93qGN2LyJSrHRF-GcgVdAjqXGnDU5yjIjG2wn7pI,2189
160
166
  review_sensei/schemas/review-comment.schema.json,sha256=0A9J_vzYnMUpKsv9wZUGGnCd1ryP-8uksPEbSJWj8Xo,1140
161
- review_sensei/schemas/review-convergence-policy.schema.json,sha256=E4pGr4CNMzvBUdJ7hTFJy4tzm7iolitG0vClqsj1rcU,1348
167
+ review_sensei/schemas/review-convergence-policy.schema.json,sha256=D5xxDIrJCx2ztq2tZAe0BjgVLAS1i4Gicg_KDR3c-bE,1034
162
168
  review_sensei/schemas/review-result.schema.json,sha256=jzQMoZIMw2HVC4EhUPfcSuScCd48URPfq6DGX9KnHZM,4899
163
- review_sensei/schemas/review-round-decision.schema.json,sha256=4Nd306X6_pU4co4papD0nv6D0K5-n3LefGbUYC9M1Ow,1594
169
+ review_sensei/schemas/review-round-decision.schema.json,sha256=d1GOE4RSgNRkvF35k_xV7nSAEuLzDFVO-fLn-tV0nFo,1166
164
170
  review_sensei/schemas/review-stage.schema.json,sha256=H5CDiC-ngQXJpVomEvd8YPP1tgyPgwo_k3atK4Vjev0,4707
165
171
  review_sensei/schemas/review-transaction.schema.json,sha256=KWtsfa0p0CmPx--cB91XpDizF2Z6N2Ehg5YMlRqJwN8,2215
166
172
  review_sensei/schemas/run-outcome.schema.json,sha256=pyByHFmQ8yNFPsLD7wccR5lxsWBwzoxNyD77bjNqeU8,1744
167
- review_sensei/schemas/session-record.schema.json,sha256=DCkPnK8o5va5lkPInHZm6dLyZKnkDKJmNVCD_b06liM,11949
173
+ review_sensei/schemas/session-record.schema.json,sha256=b3YKz4r4-qeNcuOgCP8ntM1IByduJguZUj2q4X_lAXA,12173
168
174
  review_sensei/schemas/stage.schema.json,sha256=WsxbwZFGpRNCyZ6xzWsAQHf8f7YpJLAh9FKRXN_vlao,2900
169
175
  review_sensei/schemas/verification-result.schema.json,sha256=Hf765S-aC1Tk4c7KMWaaSf5DMsg6ogmjnHXcjcHE01k,625
170
176
  review_sensei/schemas/verification-scope.schema.json,sha256=402Q7OiLHnb41lwb5JkVoKUpCe19fMV9hVhTjsenLFo,2141
171
- review_sensei/sequence.py,sha256=kUehmk85gtZPSpSsAiUxtK_UVeVZPK6MFwy2av-IGXc,23791
177
+ review_sensei/sequence.py,sha256=Mc3ejY8Cmo7xASNAo2vfep9rILb3BgnzH8T9rw8xjRY,23746
172
178
  review_sensei/service.py,sha256=wfU84eab9uXH-ph3JYxcUGWni6oKy1pRLnySqu-thVc,70808
173
- review_sensei/session.py,sha256=x1VcNk5EF4jjLxPU1D0LVl73E-hDgofmeZEpT6Z8O2o,130802
179
+ review_sensei/session.py,sha256=dESat0m79DuAns2zme73aQGX3nwBBn4SMcbk79cPQGQ,123889
174
180
  review_sensei/stages.py,sha256=rMomi3dvKrEl3yiuy2VbX09_bLu8dWD2rblFH8aJ6yI,24256
175
181
  review_sensei/validation.py,sha256=euLaI7cxwTCxcpNRh-F8zGz0BQu8GMG3cA3_1_wtdkU,12390
176
182
  review_sensei/verifier.py,sha256=_6cbaoXj8R9hatM7fZav-BgfkSPRyJ4ASmQlZbxF5HA,34913
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reviewsensei/cli-win32-x64",
3
- "version": "0.6.8",
3
+ "version": "0.6.10",
4
4
  "description": "ReviewSensei native CLI for Windows x64",
5
5
  "license": "MIT",
6
6
  "repository": {