mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-05 00:03:15 +01:00
docs: J1 re-check eligibility names every refusal (review fixes)
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This commit is contained in:
1 parent
64cab9f711
commit
955eb9ce96
3 files changed
+7
-5
No files matched your search
@@ -4,7 +4,7 @@
|
||||
- **`gstack-review-scope summary` binds by finding id.** A row finding carries `ledger_id` (`<pass dir>/<merged.jsonl id>`), each fix commit names what it fixed in a `Review-Finding: <id> reader=<role>` trailer, rows that record their head dedupe by kind, pass, head and finding ids, and a late defer counts once. Rows and findings without an id keep the path:line pairing.
|
||||
- **What can't bind is named, never a silent zero.** A row with no start token or readable time, a `pN` ledger with no review row, a `ledger_id` no ledger holds and a trailer naming nothing each print `REVIEW_SCOPE_UNBOUND: <what>: <why>`, and the line and receipt carry `unbound=N`.
|
||||
- **The native reader's own verdict line no longer collects as a blocker.** "There are three low-severity findings, all FIXABLE, and none blocks." (#3901) collected as CRITICAL beside the findings it summarized; it now collects at FIXABLE. A line that says something blocks, names a file:line or leads with FIXABLE still collects as CRITICAL. A finding's `Severity: Low. Blocks: no` after a closing quote (`… its base." Severity: Low`) now counts as its own field: on ggstack#71 that one quote made one of four identical findings CRITICAL.
|
||||
- **`gstack-ship-receipt carry` offers a scoped re-check (J1).** On `RECEIPT_CARRY_PRODUCT_CHANGED` with linear history against the reviewed base and a range-diff (plus the diff of the changed product paths) of at most 400 lines, carry prints `RECHECK: eligible … packet=<file>`. One reader on the packet and `carry --recheck <record.json>` rebind the receipt, unless HEAD needs a deeper review depth or another risk class. Rebased branches, retargeted stacks and anything over the cap still need /ship.
|
||||
- **`gstack-ship-receipt carry` offers a scoped re-check (J1).** On `RECEIPT_CARRY_PRODUCT_CHANGED` with linear history against the reviewed base and a range-diff (plus the diff of the changed product paths) of at most 400 lines, carry prints `RECHECK: eligible … packet=<file>`. One reader on the packet and `carry --recheck <record.json>` rebind the receipt, unless HEAD needs a deeper review depth or another risk class. Rebased branches, retargeted stacks, receipts with no recorded review depth, more than 20 changed product paths, binary paths, moved base context and packets over 400 lines or 64 KB still need /ship.
|
||||
- **Every /ship run's receipt is kept.** When `write` or `carry` replaces a different receipt, the old one's identifiers and counters move to an append-only `gstack-receipt-runs` block in the PR body (newest 30).
|
||||
- **`gstack-ship-queue ready` prints the whole READY.** It adds the receipt's `REVIEW_LOOP:` line, a `TRIAL_MERGES:` line for the lane to fill and an `Attention:` stub that opens with `reviewed by <model>` on risk-class PRs and `self-audited` on every other PR. docs/unattended.md now asks for the cross-family trail read only on risk-class PRs.
|
||||
- **The `GSTACK_RESULT:` line names the full head** (`status=complete head=<sha> run=<dir>`), so a leftover line from an earlier ship can't pass for a new head (GST-1179). `parseResult` reads the optional token.
|
||||
|
||||
+2
-1
@@ -1593,7 +1593,8 @@ until one fix-check reviewer clears the packet; a working tree with uncommitted
|
||||
changes is [`RECEIPT_CARRY_REFUSED`](troubleshooting.md#receipt-carry-refused).
|
||||
A `RECEIPT_CARRY_PRODUCT_CHANGED` on linear history against the reviewed base
|
||||
whose range-diff, plus the diff of the changed product paths, is at most 400
|
||||
lines also prints `RECHECK: eligible … packet=<file>`: one reader on that
|
||||
lines and 64 KB, with no binary path, no moved base context and a receipt that
|
||||
records its review depth, also prints `RECHECK: eligible … packet=<file>`: one reader on that
|
||||
packet and `carry --recheck <record.json>` rebind the receipt instead of a
|
||||
full second /ship, unless HEAD needs a deeper review depth or another risk
|
||||
class ([scoped re-check](troubleshooting.md#receipt-carry-recheck), J1).
|
||||
|
||||
@@ -6035,9 +6035,10 @@ against the current one is at most 400 lines (`RECHECK_RANGE_DIFF_CAP` in
|
||||
`lib/ship-recheck.ts`), carry also prints `RECHECK: eligible
|
||||
range_diff_lines=N range_diff_sha256=<sha> packet=<file>`: one reader on that
|
||||
range-diff can clear it instead of a full second /ship. A rebased branch
|
||||
(`RECEIPT_CARRY_TREE_MISMATCH`), a retargeted stack, an empty or unreadable
|
||||
range-diff and anything over the cap print `RECHECK: not eligible (<why>)`
|
||||
instead.
|
||||
(`RECEIPT_CARRY_TREE_MISMATCH`), a retargeted stack, a receipt with no
|
||||
`review_depth`, more than 20 changed product paths, a binary path, base
|
||||
context moved next to reviewed hunks, an empty or unreadable range-diff and a
|
||||
packet over 400 lines or 64 KB print `RECHECK: not eligible (<why>)` instead.
|
||||
|
||||
**Fix.** Dispatch one reader on the packet (`.git/gstack/recheck-<head12>.md`;
|
||||
`--dry-run` writes none). When it comes back clean, write
|
||||
|
||||
Reference in new issue
Block a user