mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-14 20:37:14 +01:00
train S4: merge #3845 at b593334e44 v1.92.75.0
This commit is contained in:
commit
5a57ff129e
25 files changed
+463
-41
No files matched your search
@@ -387,14 +387,17 @@ narrowed to the gate scan's tagged hunks.
|
||||
|
||||
## What the receipt records
|
||||
|
||||
`gstack-review-scope summary --since <REVIEW_SINCE>` reads this invocation's
|
||||
review-log rows and writes the counters `gstack-ship-receipt write --review-loop`
|
||||
`gstack-review-scope summary --since <REVIEW_SINCE> --run <run dir>` reads this invocation's
|
||||
review-log rows and the dispatch ledgers under the run directory (`--ledger <f>` names one;
|
||||
`--no-ledger` when no reader ran through `gstack-review-dispatch`) and writes the counters `gstack-ship-receipt write --review-loop`
|
||||
puts in the receipt:
|
||||
|
||||
| Field | Meaning |
|
||||
|---|---|
|
||||
| `review_loop.passes` | full review passes this ship ran (1 or 2; up to 3 under `review_scope: all`) |
|
||||
| `review_loop.blocking_found` | distinct blocking findings across the passes |
|
||||
| `review_loop.blocking_found` | every blocker found (GST-951): the rows' blocking findings (classified, or an unclassified CRITICAL), plus each ledger CRITICAL (as collected or judged) that no row finding from the same reviewer at the same path:line accounts for (each row finding pairs with one per ledger), so an adversarial, outside-voice or not-yet-classified blocker counts and one whose newest classification is below the floor does not. An unreadable ledger, merged file or judged set, or a judged set changed since `judge`, is `REVIEW_SCOPE_LEDGER`, never a count |
|
||||
| `review_loop.unrecorded` | blockers found that no row gives a disposition (fixed, deferred, noted, skipped, a gate answer); absent when 0 |
|
||||
| `review_loop.ledgers_read` | dispatch ledgers the count read; absent under `--no-ledger` |
|
||||
| `review_loop.deferred` | blocking findings in unchanged code filed as issues (a Step 11 late defer, logged as a `review-late-defer` row so it never displaces the newest `review` pass, counts here and is not a pass) |
|
||||
| `review_loop.noted` | below-floor findings listed in the PR body |
|
||||
| `review_loop.fixed` | findings fixed in this PR |
|
||||
@@ -611,7 +614,7 @@ ones, and the arm lost blockers. `bin/gstack-review-dispatch` closes both ends:
|
||||
- `ship/sections/review-army.md` Step 9: the plan's `REVIEW_DEPTH`, `GATE_SCAN` and `--depth-floor` on every run, the depth fields of the review-log row, passes, `RANGE_BASE`, classify, defer, render, the cap check before any edit, the Step 11 late-defer row, scratch files under `.gstack/tmp/`, the cap decisions; `ship/sections/adversarial.md` Step 11: the outside voice reads the same range and scopes queued fixes the same way.
|
||||
- `lib/review-depth.ts`, `bin/gstack-review-plan`: the diff class, the depth (`depthFor`, `DEPTH_RULES`, `depthOfCommitInput`), each dispatch's `exclude` pathspecs and `DIFF_CMD`, the transition table, the numeric-claim scan and each role's effort tier (`test/review-depth.test.ts`, `test/review-plan-cli.test.ts`).
|
||||
- `lib/review-collect.ts`: `collectCommit` (git objects only, from any checkout) and `collectLive` (the working tree), per-path lines and the base commit's registry (`test/review-collect.test.ts`).
|
||||
- `lib/review-scope.ts`, `bin/gstack-review-scope`: `classify`, `defer`, `render`, `summary` (with `fix_checks`, `dispatches`, `est_input_tokens`); refusals are `REVIEW_SCOPE_INPUT` and `REVIEW_SCOPE_RANGE` ([troubleshooting.md](troubleshooting.md#review-scope-input)).
|
||||
- `lib/review-scope.ts`, `bin/gstack-review-scope`: `classify`, `defer`, `render`, `summary` (with `fix_checks`, `dispatches`, `est_input_tokens`, `unrecorded`, `ledgers_read`); refusals are `REVIEW_SCOPE_INPUT`, `REVIEW_SCOPE_RANGE` and `REVIEW_SCOPE_LEDGER` ([troubleshooting.md](troubleshooting.md#review-scope-input)).
|
||||
- `lib/ship-policy.ts`: the `review_scope` key and its `ship: review_scope …` consequence line.
|
||||
- `review/checklist.md`: `prereg-with-results` under Gate Integrity and `test-keyboard-count-loop` under Pass 2; `bin/gstack-coauthor-trailers` for the contributor-credit trailers of a port.
|
||||
- `lib/ship-receipt-prose.ts`, `gstack-ship-receipt read --check-prose`: the body's quoted counters against the receipt (`RECEIPT_PROSE_MISMATCH`, [ship-policy.md](ship-policy.md#ship-receipt)).
|
||||
|
||||
+7
-6
@@ -1268,11 +1268,11 @@ construction:
|
||||
the run and names the finding (path, severity, problem) for the owner instead
|
||||
of a third round; the owner may grant one scoped fix-check.
|
||||
|
||||
`gstack-review-scope summary --since <REVIEW_SINCE>` reads the branch's review-log
|
||||
rows for this invocation and writes the counters the ship receipt carries
|
||||
`gstack-review-scope summary --since <REVIEW_SINCE> --run <run dir>` reads the branch's review-log
|
||||
rows for this invocation and its dispatch ledgers, and writes the counters the ship receipt carries
|
||||
(`gstack-ship-receipt write … --review-loop @<file>`): `review_loop: { passes,
|
||||
blocking_found, deferred, noted, fixed, scope }`, plus `fix_checks`, `dispatches`
|
||||
and `est_input_tokens` when the run recorded them, printed on the receipt summary
|
||||
blocking_found, deferred, noted, fixed, scope }`, plus `fix_checks`, `dispatches`,
|
||||
`est_input_tokens`, `unrecorded` and `ledgers_read` when the run recorded them, printed on the receipt summary
|
||||
line as `passes=<n> blocking_found=<k> deferred=<m>`, so a scorecard can track
|
||||
passes per PR.
|
||||
|
||||
@@ -1286,8 +1286,9 @@ instead of `defer`. `review_scope: all` is the opt-back to the earlier loop:
|
||||
every finding is `scope: fix` on every pass, reviewers read the whole diff each
|
||||
time, and only the three-cycle fix cap stops the loop. `show-effective` prints the choice as a `ship: review_scope …`
|
||||
line, and the codes a refusal ends with are
|
||||
[`REVIEW_SCOPE_INPUT`](troubleshooting.md#review-scope-input) and
|
||||
[`REVIEW_SCOPE_RANGE`](troubleshooting.md#review-scope-range).
|
||||
[`REVIEW_SCOPE_INPUT`](troubleshooting.md#review-scope-input),
|
||||
[`REVIEW_SCOPE_RANGE`](troubleshooting.md#review-scope-range) and
|
||||
[`REVIEW_SCOPE_LEDGER`](troubleshooting.md#review-scope-ledger).
|
||||
|
||||
<a id="base-red"></a>
|
||||
## `base_red`: pausing /ship on a red base
|
||||
|
||||
@@ -5660,6 +5660,24 @@ pass).
|
||||
the invocation record, and start a full pass (`--pass 1`) when the branch was
|
||||
rebased; /ship's own rule is to merge the base in, never rebase a reviewed head.
|
||||
|
||||
<a id="review-scope-ledger"></a>
|
||||
### `REVIEW_SCOPE_LEDGER`
|
||||
|
||||
**Meaning.** `gstack-review-scope summary` could not count the review's
|
||||
dispatch ledgers, so it wrote no `REVIEW_LOOP:` line rather than a count that
|
||||
might be low (GST-951). Either no ledger was named (`--run`, `--ledger` or
|
||||
`--no-ledger`), `--run` holds no `review-ledger.jsonl`, or a ledger, the
|
||||
`merged.jsonl` it names or its judged set is unreadable, or the judged set
|
||||
changed after `judge` checked it. The ledgers hold every reader's findings
|
||||
(specialists, Red Team, both adversarial voices, targeted, fix-check) before any
|
||||
review-log row classifies them, which is why the count reads them.
|
||||
|
||||
**Fix.** Pass `--run <run dir>`, the directory the review passes wrote (on
|
||||
Capy, `ship/DRIVER.md`'s run directory), or each `--ledger <f>`. Pass
|
||||
`--no-ledger` only when no reader ran through `gstack-review-dispatch`. When a
|
||||
file moved, restore it; when a judged set changed, rerun `gstack-review-dispatch
|
||||
judge` on it.
|
||||
|
||||
<a id="receipt-carry-refused"></a>
|
||||
### `RECEIPT_CARRY_REFUSED`
|
||||
|
||||
|
||||
+2
-1
@@ -172,7 +172,8 @@ unpushed head is `QUEUE_RECEIPT_STALE` to the queue.
|
||||
The receipt's `review_loop` object, written from `gstack-review-scope summary
|
||||
--since <REVIEW_SINCE>`, is the loop's machine-readable outcome: `passes`
|
||||
(Step 9 full passes this ship ran, 1 or 2; up to 3 under `review_scope: all`),
|
||||
`blocking_found` (distinct blocking findings across them), `deferred`
|
||||
`blocking_found` (every blocker the readers found, rows and dispatch ledgers
|
||||
both, [review-policy.md](review-policy.md#what-the-receipt-records)), `deferred`
|
||||
(blocking findings in unchanged code filed as issues, Step 11's late defers
|
||||
included), `noted`, `fixed` and `scope`. The
|
||||
summary line a parent reads prints it as `passes=<n> blocking_found=<k>
|
||||
|
||||
Reference in new issue
Block a user