Skip to content

v1.91.307.0 ship: proportional review depth (light, standard, full) with depth-checked receipts - #3567

Merged
capy-ai[bot] merged 15 commits into
mainfrom
gsta147-review-depth
Oct 29, 2026
Merged

capy-ai[bot] merged 15 commits into
mainfrom
gsta147-review-depth

Conversation

@garrytan

@garrytan garrytan commented Oct 28, 2026 •

Copy link
Copy Markdown
Owner
{
  "schema_version": 1,
  "pr": 3567,
  "head": "621baec9b8e50a74f7475b98860289ba354f32df",
  "version": "1.91.299.0",
  "base": "gsta147-carry-rules",
  "gate": {
    "remote_gate": {
      "pass": 23668,
      "fail": 0,
      "skip": 0
    }
  },
  "session_kind": "unattended",
  "pregate": "requires-remote cleared @2b975190e0b1 (1 checks, current for 621baec9b8e5)",
  "requires_remote": [
    "free-tests.yml/cso-macos-launcher: https://github.com/garrytan/gstack/actions/runs/40803874016",
    "free-tests.yml/macos-named-regressions: https://github.com/garrytan/gstack/actions/runs/40803874016",
    "windows-free-tests.yml/windows-free-shard: https://github.com/garrytan/gstack/actions/runs/40803877944",
    "pregate.json/remote_gate: remote-gate tree=2b975190e0b1 tests=23668"
  ],
  "issues": {
    "fixes": [
      3559
    ],
    "refs": [],
    "flakes": []
  },
  "docs": {
    "status": "updated",
    "scope": "docs/, README.md, CONTRIBUTING.md, AGENTS.md, CLAUDE.md against 3b90122..45d9835 (review depth, receipt depth fields, queue checks, diff-scope --head)"
  },
  "review_loop": {
    "passes": 2,
    "blocking_found": 2,
    "deferred": 0,
    "noted": 9,
    "fixed": 7,
    "scope": "frozen",
    "dispatches": {
      "specialist": 7,
      "red-team": 2
    }
  }
}

Stacked on #3564 (receipt carry rules). Review that one first; this PR's diff is against its branch.

What changed

A 12-line code fix now gets light depth: one batched specialist plus the native adversarial pass, and the plan prints the depth and gate scan the receipt records

A 12-line code fix now gets light depth: one batched specialist plus the native adversarial pass, and the plan prints the depth and gate scan the receipt records.

Before/after as text: A 12-line code fix now gets light depth: one batched specialist plus the native adversarial pass, and the plan prints the depth and gate scan the receipt records
--- Before · before.txt · captured output
+++ After · after.txt · captured output
 $ gstack-review-plan --base main   # a 12-line fix to lib/util.js
 REVIEW_CLASS: code (code: lib/util.js)
+REVIEW_DEPTH: light runtime_lines=12 rules=9bc0e4d2f74ef6b4 reasons=runtime=12<=50 codes=none
+GATE_SCAN: tagged=0 head=<HEAD>
+REVIEW_PLAN: class=code pass=1 next=full dispatches=2 numbers=no fingerprint=none
-REVIEW_PLAN: class=code pass=1 next=full dispatches=3 numbers=no fingerprint=none
 NEXT: full (pass 1 reviews the whole diff)
+DISPATCH: specialist batched effort=full checklists=testing,maintainability,security,performance,state-machines,red-team
+DIFF_CMD: batched git diff <diff-base>
+DISPATCH: adversarial-native adversarial effort=full reason=backtest inconclusive (GSTA-147 D5)
+DIFF_CMD: adversarial git diff <diff-base>
+SKIP: red-team (light depth: the batched specialist carries the Red Team prompt)
+SKIP: outside-voice (code class, no numeric claims)
-DISPATCH: specialist state-machines effort=full
-DISPATCH: adversarial-native adversarial effort=full
-DISPATCH: outside-voice outside-voice effort=host
-SKIP: red-team (code class, 12 lines, no critical)
 
  • Review depth for /ship (lib/review-depth.ts, new lib/review-collect.ts, bin/gstack-review-plan, the review-army and adversarial sections). The depth depends on runtime lines: code-class lines minus docs, tests, and outputs registered with a command in the base commit's .gstack/generated.json.
    • light (50 or fewer runtime lines): one batched specialist (testing, maintainability, security, plus any scope-selected checklists, with the Red Team prompt) and the native adversarial pass. At 0 runtime lines it runs the core checklist only.
    • standard (more than 50): the class's specialists, each scoped to its hunks with DIFF_CMD pathspecs.
    • full: gate class or any classifier error, unchanged.
    • The outside voice runs whenever the diff publishes numbers. A fixed or open blocker, or a CRITICAL, raises light to standard for the rest of the invocation, and --depth-floor only raises. Every DEPTH_ERROR: carries its input, the sanitized cause and the repair.
  • The receipt records the depth. write adds gstack_version and review_depth: depth, class, runtime lines, rules hash, base and registry commits, the gate scan and reasons. They are computed at the checked-out head from the committed range, and --head must be HEAD; tracked edits in the checkout make the gate scan unavailable, which records full. The SHIP_RECEIPT: line prints depth=<d> after artifacts_consumed.
  • The queue enforces it. ready and train build recompute the depth the head needs from the same committed range and refuse a lower receipt with QUEUE_RECEIPT_DEPTH_RAISED. The REVIEW_DEPTH: line prints the receipt's depth, the required depth, runtime lines, class, reasons and inputs. A gate scan counts only when it names the full bound commit; otherwise the head needs full.
  • A carry recomputes the depth. It rebinds the gate scan to the new head and refuses when the new head needs more (a test change that skips a test makes the diff gate class), when --head is not the checked-out HEAD, when the receipt records gstack_version without review_depth, or when an owner exception no longer stands.
  • review_loop_exception (write --review-loop-exception) records an accepted stop after a fix-check edit under frozen scope: who, when, via, why, and the fix-check's head and findings. It needs review_loop.fix_checks of 1 or more and a fix-check head that is the receipt head or its ancestor, and the body must carry the printed line word for word (REVIEW_LOOP_EXCEPTION_INVALID). The queue checks this exception and the docs exception the same way, including the fix-check ancestry (QUEUE_RECEIPT_EXCEPTION_INVALID).
  • gstack-diff-scope <base> --head <sha> reads the committed range only, the scope the writer and the queue share.
  • .gstack/ship-policy.json min_gstack_version goes from 1.91.146.0 to 1.91.299.0.

Fixes #3559

Why

"A 12-line fix paid for the same reviewer fan-out as a change to the merge gate." The plan (GSTA-147, approved by Garry: "rec" on gate_rev 2) sizes the review to what the diff can break, while gate code, security paths, published numbers and every classifier failure keep the full review.

Light-depth backtest (D5): INCONCLUSIVE, so light keeps the adversarial pass.

Repo Light-eligible PRs Attributable findings Blockers a light review would have lost Inconclusive
gstack 7 3 (#3542, #3517, #3503) 0 4 (#3549 had 2 CRITICALs, one deferred as #3548; #3545, #3532, #3530 had no attributable reviewer roles)
gstack-evals 2 2 (#17, #2) 0 0

The bar was at least 15 light-eligible PRs with attributable findings and 0 blockers lost. Only 5 were attributable, so light at runtime > 0 dispatches the native adversarial pass beside the batched specialist (reason "backtest inconclusive (GSTA-147 D5)").

Blast radius

The change touches /ship's review dispatch, every receipt write and the queue's acceptance of receipts. Depth only lowers the fan-out on non-gate diffs of 50 or fewer runtime lines, and receipts with neither new field (every receipt written before this release) are accepted as legacy, so in-flight PRs keep moving (script ran: test/ship-receipt-depth.test.ts covers the legacy case, and the whole free tier passed on the frozen head). Each write runs gstack-diff-scope and the gate scan once, about 0.4 s.

These resolutions differ from the plan:

  • The gate scan lives in review_depth.gate_scan, not review_loop.gate_scan, because review_loop comes from the review-scope summary.
  • write computes the depth itself. Step 9 plans on the uncommitted tree before Step 15 commits, so its scan names an older head.
  • A carry's depth refusal uses RECEIPT_CARRY_REFUSED, not a new RECEIPT_CARRY_DEPTH_RAISED code.
  • min_gstack_version rises to the newest released version, not to this PR's own version. That version is allocated at the slot stamp, and the policy file is not a stamp path. A one-line follow-up after the stamp can raise it.
  • ready has no --json mode, so the diagnostics are text only.

Approvals

Date Asked Exact words Outcome Covers Still pending
2026-10-28 Approve GSTA-147 plan v2 (proportional review depth) and the 12 open-highs resolutions “rec” (Garry (via GStack Minder)) approved plan v2 at gate_rev 2, every recommendation none
2026-10-28 Approve the #3559 amendment: a structured review_loop_exception on the receipt “It only tightens what's already recorded in prose, so it doesn't need another round.” (GStack Minder (relaying Garry's plan approval)) approved the review_loop_exception field and its queue check none

Source: gstack-approvals record for gsta147-review-depth (display only; not an approval citation).

The #3559 amendment came from GStack Minder's relay of Garry's plan approval; the lane never merges.

Summary

Proportional review depth for /ship (light, standard, full), receipts that record the depth bound to the head they describe, and a queue that refuses a receipt below what the head needs. The pre-landing review tightened that binding, so the queue and the writer now read the same committed range, a gate scan binds only to the full commit, and carry refuses the cases the queue would refuse.

Test Coverage

Step 7 audit (audit-only): 25 of 28 paths tested.
Tests: 92 → 124 (+32 new) across the seven touched test files.
Coverage: 89% of paths tested (86% at two stars or better), with 3 gaps and 1 weakly covered path.
Test value: the audit-only run recorded no per-card counts; 1 path weakly covered.

Gaps left as proposed tests: a test/ship-queue-train.test.ts row that builds a train with a light receipt on a standard head; the rules-only equal-tree acceptance; a bounded recompute time for a five-PR train (filed in TODOS.md).

Tests ran: remote_gate 23668 (pregate, whole free tier on one Ubicloud VM)

Pre-Landing Review

Pass 1 (full, gate class: 6 specialists, Red Team, native adversarial, outside voice on openai/gpt-6.1-sol) found 14: 7 fixed in 4ad8a6b, including 2 blocking (the queue bound a gate scan by prefix and recomputed scope without the writer's range) and a reproduced CRITICAL (a carry --head other than the checkout recorded a working-tree gate scan). Pass 2 on the fix range (one batched specialist over six checklists plus Red Team) found 2 notes and nothing at the floor.

REVIEW_LOOP: passes=2 blocking_found=2 deferred=0 noted=9 fixed=7 scope=frozen dispatches=9

Gate edits: 19 listed, 14 read, 0 findings — 0 kept, 0 restored, 0 open

Outside review: completed (openai/gpt-6.1-sol, pass 1); its carry finding matched the testing specialist's and was fixed.

Review notes

  • bin/gstack-ship-receipt:603 (state-machines, pass 2): after a carry across rewritten history, a later linear carry checks the old fix-check ancestry and refuses a receipt the queue accepts. Fails closed (a needless /ship rerun).
  • bin/gstack-diff-scope:87 (simplification, advisory): the first clause of the --head test is redundant.
  • bin/gstack-review-plan:120 (security): control characters in a path can reach DIFF_CMD.
  • lib/review-collect.ts:129 (adversarial): collectLive follows a FIFO or symlink in the working tree.
  • lib/ship-receipt-depth.ts:121 (adversarial): legacy acceptance has no expiry.
  • bin/gstack-ship-receipt:208 (Red Team): review_depth is the depth the head needs, recomputed at write, not the depth the review ran.
  • Advisory: deeper() is dead at bin/gstack-ship-receipt:605; Collected.mergeBase is unused; the depthOfCommitInput floor is unused.

Exploratory QA

Not run as a separate charter: the change is CLI and library behaviour, exercised through the fixture repositories in test/ship-receipt-depth.test.ts, test/review-plan-cli.test.ts and test/diff-scope.test.ts, plus the before/after review plan above, captured on a scratch repository.

Design Review

No frontend files changed — design review skipped.

Eval Results

Not run locally. eval:select falls back to the full PR profile (143 behaviors) because test/size-ledger/ship/gsta147-review-depth.json is an unknown dependency, beyond the lane's $10 focused cap; the paid coverage for this PR is the train gate (gstack/full-gate), still outstanding.

Greptile Review

No Greptile comments.

Plan Completion

Step 8 audit: 21 of 33 DONE, 7 CHANGED, 3 PARTIAL, 2 NOT DONE (plan: captain-gstack-minder/plans/GSTA-147/plan.md, PR 2).

  • Deferred (P1 in TODOS.md): carry.covers derived from the depth (until then a carried light receipt's covers is the fixed list); a bounded recompute-time test for a five-PR train.
  • PARTIAL, not fixed: QUEUE_RECEIPT_DEPTH_RAISED prints neither both rule hashes nor runtime lines at both heads; the rules-only equal-tree acceptance with a note is not implemented and has no test.

Issues

Fixes #3559

Verification Results

Plan obligations run at review: the depth matrix, fail-closed errors, write, carry and queue refusals and the review-loop exception PASS in their focused tests; the five-PR recompute bound is NOT RUN (deferred above).

TODOS

No TODO items completed in this PR. Added a P1 section for the two deferred plan items.

Documentation

Status: updated. Factual edits to docs/ship-policy.md and docs/troubleshooting.md; no blockers.

Scope: the committed range 3b90122..45d9835 (40 files; nothing staged, unstaged or untracked): review depth (lib/review-depth.ts, lib/review-collect.ts, bin/gstack-review-plan), receipt fields gstack_version, review_depth and review_loop_exception (bin/gstack-ship-receipt, lib/ship-receipt-depth.ts), the queue checks QUEUE_RECEIPT_DEPTH_RAISED and QUEUE_RECEIPT_EXCEPTION_INVALID, and gstack-diff-scope <base> --head <sha>. Docs that name these commands were audited.

Documentation health:

  • docs/review-policy.md: Current (depth table, runtime lines, fail-closed list and gate paths match lib/review-depth.ts)
  • docs/ship-policy.md: Updated (shared-queue ready, /ship-before-READY and train build refusal lists name the two new queue codes; verify --train narrowed to QUEUE_RECEIPT_MISSING/STALE, since it does not recompute depth; the carry depth and exception refusals name RECEIPT_CARRY_REFUSED)
  • docs/troubleshooting.md: Updated (RECEIPT_INVALID covers write --head not being the checked-out HEAD; QUEUE_RECEIPT_DEPTH_RAISED names the base ref per command; QUEUE_RECEIPT_EXCEPTION_INVALID adds the fix-check ancestor rule; RECEIPT_CARRY_REFUSED adds the depth and owner-exception refusals)
  • CHANGELOG.md: Current (not edited; the parent owns it)
  • TODOS.md: Current (not edited)
  • docs/pregate.md, docs/captain.md, docs/unattended.md, docs/model-policy.md: Current
  • README.md, CONTRIBUTING.md, AGENTS.md, CLAUDE.md, docs/skills.md: Current (none names the changed commands or codes)

Documentation Debt

  • ⚠️ gstack-diff-scope <base> --head <sha>: reference only (bin header, ship-policy.md, CHANGELOG); no how-to.
  • ⚠️ .gstack/generated.json as a review-depth input: explained in review-policy.md, but pregate.md's generated-v1 section does not point to it (reference cross-link).

Diagram drift: none (no architecture diagram names the review or receipt machinery).

Test plan

  • gstack-pregate --stage tests --remote --spend-cap 2 --timeout 2700 --allow-repo-commands: PREGATE_REMOTE tree=2b975190e0b1 tests=23668 failed=0 spent=0.08; PREGATE_VERIFY ok (macOS and Windows lanes cleared)
  • Free Tests (macOS lanes included) and Windows Free Tests dispatched at the head: both green at 621baec (https://github.com/garrytan/gstack/actions/runs/40803874016, https://github.com/garrytan/gstack/actions/runs/40803877944)
  • bun test test/approval-classes.test.ts test/gstack-ship-receipt.test.ts test/ship-receipt-depth.test.ts: 37 pass, 0 fail for the first two after the summary-line fix; ship-receipt-depth 6 pass
  • bun run typecheck: clean

🤖 Generated with Claude Code

garrytan and others added 14 commits October 28, 2026 23:00
…wed tree after a rebase

A base merge whose only product-side change is a registered output the
pregate regen check proved fresh now carries the receipt. A rebased head
carries when its tree is one the receipt covers and its product patch-id
against the current base matches (RECEIPT_CARRY_TREE_MISMATCH otherwise).
Docs: merge main into a reviewed branch, never rebase it.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
The regen check deletes each touched output in its scratch worktree before
the command runs and records the ones recreated byte-identically as proven.
gstack-ship-receipt carry exempts only those paths, and only when the check
ran origin/<base>'s registry at the commit the carry reads. A file under an
output glob that the generator never writes stays product (pre-landing
review, #3564 pass 1).

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…tured review-loop exception (#3559)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
The regen verdict comes from the unmodified run again, so a generator that
reads its own registered output (gen-skill-docs and
qa/templates/functional-report-template.md) passes as before; the proof is a
second run with the touched outputs deleted, and its failure only means not
proven. The carry ignores a proven path with glob syntax, since it uses the
paths as pathspec globs (pre-landing review, #3564 pass 2).

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…x line

Documentation audit for #3564 (/document-release, audit ship3564-docs-1).

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…7-review-depth

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

# Conflicts:
#	docs/ship-policy.md
… checks)

- carry refuses a --head other than the checked-out HEAD, a receipt with
  gstack_version but no review_depth, and an owner exception that no longer
  stands; a dirty or foreign checkout makes the write-time gate scan
  unavailable (full)
- the queue binds a gate scan only to the full bound commit and recomputes
  the scope signals with gstack-diff-scope <base> --head <sha>, the same
  range the writer uses
- the queue checks the review-loop exception's fix-check ancestry
- a package.json version line counts as stamp-only only when it is a bare
  version key
- docs and help name what review_depth is and which registry the queue reads

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
… field

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

E2E Evals: ✅ PASS (flaky: 3 case(s) passed on their one rerun)

[test:paid] VERDICT GREEN — lane gate/pr, attempt 1
  rule 112/112 · behavior 1/1 · judge 24/24 · quarantined 0 (0 failing the lane)
  SKIPPED 0 · INFRA 0 · INCOMPLETE 0 · unattributed 0 · ACTION REQUIRED 0
  wall 6m02s · cost $32.74 known + 32 of 139 trial(s) cost unknown
  FLAKY 3 (failed once, passed on its one rule-16 rerun) · 3 rerun execution(s), cost $2.75

125 executed, 0 reused rule/judge records | 0 manual accepted (unscored; no score-cache credit) | $32.08 rule/judge cost | reconcile exit: 0

Profile: pr / mode full-fallback; selected behaviors: 113, judges: 24. Deferred to scheduled/release coverage: 143 behaviors and 0 changed prompt files. Deferred checks did not run and receive no PR-pass credit.

Full gate restored by:

  • test/size-ledger/ship/gsta147-review-depth.json (real unknown dependency): register test/size-ledger/ship/gsta147-review-depth.json under the cases that consume it in test/helpers/touchfiles-data.ts, add it to FREE_ONLY_PR_FILES in scripts/test-pr-profile.ts if no paid case reads it, or add its directory to DERIVABLE_PREFIXES so scripts/pr-dependencies.ts derives its consumers

Derived dependents (scripts/pr-dependencies.ts):

  • bin/gstack-doctor-components.sh: 255 case(s), 24 judge(s)
  • bin/gstack-review-plan: 255 case(s), 24 judge(s)
  • bin/gstack-ship-receipt: 255 case(s), 24 judge(s)
  • lib/headless-artifacts.ts: 255 case(s), 24 judge(s)
  • lib/review-collect.ts: 255 case(s), 24 judge(s)
  • lib/review-depth.ts: 255 case(s), 24 judge(s)
  • lib/ship-queue-train.ts: 255 case(s), 24 judge(s)
  • lib/ship-queue.ts: 255 case(s), 24 judge(s)
  • lib/ship-receipt-depth.ts: 255 case(s), 24 judge(s)
  • lib/ship-receipt.ts: 255 case(s), 24 judge(s)
Rule and judge shards
Shard Automated result Manual/unscored Executed Reused Status Cost
llm-judge/skill-llm-eval 24/24 0 24 0 ✅ $1.44
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-current 1/1 0 1 0 ✅ $0.81
e2e/skill-e2e-coverage-audit 2/2 0 2 0 ✅ $0.28
e2e-deploy/skill-e2e-deploy--setup-deploy-workflow 1/1 0 1 0 ✅ $0.13
e2e-qa-functional-fix/skill-e2e-qa-functional-fix 2/2 0 2 0 ✅ $0.95
e2e/skill-e2e-plan--plan-review-report 1/1 0 1 0 ✅ $1.03
e2e-qa-callers/skill-e2e-qa-callers--ship-exploratory-unavailable 1/1 0 1 0 ✅ $0.71
e2e-retro/skill-e2e-retro 1/1 0 1 0 ✅ $0.33
e2e/skill-e2e-shared-libs-paths--shared-libs-review-prior-coverage 1/1 0 1 0 ✅ $0.95
e2e-qa-workflow/skill-e2e-qa-workflow--qa-quick 1/1 0 1 0 ✅ $0.48
e2e-review-attribution/skill-e2e-review-attribution 3/3 0 3 0 ✅ $0.27
e2e/skill-e2e-ship-skip 1/1 0 1 0 ✅ $0.23
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-stale-before 1/1 0 1 0 ✅ $0.39
e2e/skill-e2e-shared-libs--shared-libs-review-lifecycle 1/1 0 1 0 ✅ $0.89
e2e-review-army/skill-e2e-review-army--review-army-migration-safety 1/1 0 1 0 ✅ $0.27
e2e-deploy/skill-e2e-deploy--land-and-deploy-first-run 1/1 0 1 0 ✅ $0.32
e2e/skill-e2e-shared-libs--shared-libs-read-only 1/1 0 1 0 ✅ $0.24
e2e-deploy/skill-e2e-deploy--land-and-deploy-review-gate 1/1 0 1 0 ✅ $0.28
e2e-docsync-spawned/skill-e2e-docsync-spawned 1/1 0 1 0 ✅ $0.41
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-stale-after 1/1 0 1 0 ✅ $0.41
e2e-safety-codex-consult/skill-e2e-safety-codex-consult 1/1 0 1 0 ✅ $0.27
e2e-deploy/skill-e2e-deploy--land-and-deploy-workflow 1/1 0 1 0 ✅ $0.56
e2e/skill-e2e-workflow 4/4 0 4 0 ✅ $0.96
e2e-review-army/skill-e2e-review-army--review-army-perf-n-plus-one 1/1 0 1 0 ✅ $0.2
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-late-result 1/1 0 1 0 ✅ $0.34
e2e/skill-e2e-shared-libs-paths--shared-libs-review-index-flags 1/1 0 1 0 ✅ $1.01
e2e-deploy/skill-e2e-deploy--benchmark-workflow 1/1 0 1 0 ✅ $0.28
e2e/skill-e2e-investigate-owned-completion 1/1 0 1 0 ✅ $0.07
e2e-qa-callers/skill-e2e-qa-callers--ship-exploratory-small-cli 0/1 0 1 0 ❌ $0.85
e2e-review-army/skill-e2e-review-army--review-army-json-findings 1/1 0 1 0 ✅ $0.06
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-store 1/1 0 1 0 ✅ $0.79
e2e-triage/skill-e2e-triage 1/1 0 1 0 ✅ $0.1
e2e-review-army/skill-e2e-review-army--review-army-delivery-audit 1/1 0 1 0 ✅ $0.13
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-timeout-unsettled 1/1 0 1 0 ✅ $0.18
e2e-design/skill-e2e-design--design-review-detector-shim 1/1 0 1 0 ✅ $0.12
e2e-session-intelligence/skill-e2e-session-intelligence 4/4 0 4 0 ✅ $0.25
e2e-safety-pair-agent/skill-e2e-safety-pair-agent 1/1 0 1 0 ✅ $0.1
e2e-plan-tune/skill-e2e-plan-tune 1/1 0 1 0 ✅ $0.13
e2e-qa-workflow/skill-e2e-qa-workflow--qa-bootstrap 1/1 0 1 0 ✅ $0.08
e2e-deploy/skill-e2e-deploy--canary-workflow 1/1 0 1 0 ✅ $0.11
e2e/skill-e2e-investigate-owned-termination 2/2 0 2 0 ✅ $0.13
e2e/skill-e2e-ship-hook-refresh 1/1 0 1 0 ✅ $0.09
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-launch-failure 1/1 0 1 0 ✅ $0.16
e2e-design/skill-e2e-design--plan-design-review-no-ui-scope 1/1 0 1 0 ✅ $0.09
e2e-third-party-actions/skill-e2e-third-party-actions 5/5 0 5 0 ✅ $0.4
e2e/skill-e2e-ship-hook-consent 2/2 0 2 0 ✅ $0.2
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-recovery 1/1 0 1 0 ✅ $0.37
e2e/skill-e2e-shared-libs--shared-libs-review-revalidation 1/1 0 1 0 ✅ $1.85
e2e-review/skill-e2e-review 2/2 0 2 0 ✅ $0.32
e2e-cso/skill-e2e-cso 1/1 0 1 0 ✅ $0.42
e2e-qa-functional/skill-e2e-qa-functional 2/2 0 2 0 ✅ $0.76
e2e-qa-callers/skill-e2e-qa-callers--ship-exploratory-late-input 0/1 0 1 0 ❌ $0.93
e2e-learnings/skill-e2e-learnings 1/1 0 1 0 ✅ $0.08
e2e-failure-routing/skill-e2e-failure-routing 4/4 0 4 0 ✅ $0.37
e2e-qa-workflow/skill-e2e-qa-workflow--qa-only-no-fix 1/1 0 1 0 ✅ $0.53
e2e-qa-callers/skill-e2e-qa-callers--review-exploratory-small-cli 1/1 0 1 0 ✅ $0.77
e2e-qa-callers/skill-e2e-qa-callers--ship-exploratory-plan-checks 1/1 0 1 0 ✅ $0.71
e2e/skill-e2e-test-value 3/3 0 3 0 ✅ $0.66
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-failure 1/1 0 1 0 ✅ $0.55
e2e-skillify/skill-e2e-skillify 3/3 0 3 0 ✅ $0.79
e2e/skill-e2e-shared-libs-paths--shared-libs-review-path-eligibility 1/1 0 1 0 ✅ $1.49
e2e-hermetic/skill-e2e-hermetic-canary 2/2 0 2 0 ✅ $0.03
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-completion 0/1 0 1 0 ❌ $1.45
e2e-design/skill-e2e-design--design-review-plugin-handoff 1/1 0 1 0 ✅ $0.12
e2e-review-army/skill-e2e-review-army--review-army-quality-score 1/1 0 1 0 ✅ $0.11
e2e-design/skill-e2e-design--design-review-detector-shim-dom 1/1 0 1 0 ✅ $0.21
e2e-safety-ship-evidence/skill-e2e-safety-ship-evidence 1/1 0 1 0 ✅ $0.12
e2e-browse/skill-e2e-bws 6/6 0 6 0 ✅ $0.29
e2e/skill-e2e-shared-libs--shared-libs-unsupported-git 1/1 0 1 0 ✅ $0.19
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-missing-asset 1/1 0 1 0 ✅ $0.32
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-missing-marker 1/1 0 1 0 ✅ $0.16
Fail-closed reconciliation
nc.test.ts#ship-docsync-timeout-unsettled
  slice 16  passed             33s  test/skill-e2e-ask-user-question-format-compliance.test.ts
  slice 16  passed             22s  test/skill-e2e-ship-docsync.test.ts#ship-docsync-launch-failure
  slice 16  passed             26s  test/skill-e2e-session-intelligence.test.ts
  slice 16  passed             32s  test/skill-e2e-ship-hook-consent.test.ts
  slice 16  passed             25s  test/skill-e2e-investigate-owned-termination.test.ts
  slice 16  passed             25s  test/skill-e2e-design.test.ts#design-review-detector-shim
  slice 16  passed             22s  test/skill-e2e-deploy.test.ts#canary-workflow
  slice 16  passed             29s  test/skill-e2e-ship-hook-refresh.test.ts
  slice 16  passed             17s  test/skill-e2e-design.test.ts#plan-design-review-no-ui-scope
  slice 16  passed             26s  test/skill-e2e-review-army.test.ts#review-army-delivery-audit
  slice 16  passed             22s  test/skill-e2e-safety-pair-agent.test.ts
  slice 16  passed             20s  test/skill-e2e-qa-workflow.test.ts#qa-bootstrap
  slice 17  passed             14s  test/skill-e2e-learnings.test.ts
  slice 17  passed             15s  test/skill-e2e-diagram.test.ts
[test:paid] collector final outcomes: 125 executed, 0 reused; 122 passed, 3 failed, 0 manual accepted (unscored; no score-cache credit) (125 attempt records from 71 collectors; every record counts)
[test:paid] deselected testcases, zero credit (316):
[test:paid]    302  sibling case of a case shard (its own shard runs it)
[test:paid]      8  periodic-tier case (this lane runs gate)
[test:paid]      6  Bun hook placeholder of a skipped describe block (not a test)
[test:paid] VERDICT GREEN — lane gate/pr, attempt 1
  rule 112/112 · behavior 1/1 · judge 24/24 · quarantined 0 (0 failing the lane)
  SKIPPED 0 · INFRA 0 · INCOMPLETE 0 · unattributed 0 · ACTION REQUIRED 0
  wall 6m02s · cost $32.74 known + 32 of 139 trial(s) cost unknown
  FLAKY 3 (failed once, passed on its one rule-16 rerun) · 3 rerun execution(s), cost $2.75
[test:paid] flaky (rule 16: failed once, passed on its one rerun; green with this annotation):
  ⚑ ship-docsync-completion  rule  FLAKY: failed in attempt 1 (paid-slice-3-a1), passed on its one rerun in attempt 1 rerun (slice 1 attempt 1); rerun cost $1.12; first failure: assertion: completion fields
  ⚑ ship-exploratory-late-input  rule  FLAKY: failed in attempt 1 (paid-slice-9-a1), passed on its one rerun in attempt 1 rerun (slice 1 attempt 1); rerun cost $0.91; first failure: assertion: expect(received).toEqual(expected)
  ⚑ ship-exploratory-small-cli  rule  FLAKY: failed in attempt 1 (paid-slice-14-a1), passed on its one rerun in attempt 1 rerun (slice 1 attempt 1); rerun cost $0.72; first failure: assertion: expect(received).toEqual(expected)
[test:paid] exercised-path map (shadow, non-blocking): 6 MAP_GAP line(s) over 106 executed case(s) with recorded commands
  MAP_GAP document-release bin/gstack-banned-terms: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP plan-review-report bin/gstack-plan-reality: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP plan-review-report browse/dist/browse: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP plan-review-report design/dist/design: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP test-audit-report-only design/dist/design: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP timeline-event-flow bin/gstack-skill-end: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
[test:paid] report: every planned shard accounted and passed

Sliced lane: planner → duration-packed executors → fail-closed report. Behavior cases run a pre-registered 3-trial panel (PASS at 2/3 with no contract violation); a PASS 2/3 is shown with its failed trial, never as a clean pass. Reused results retain their original provenance and expiry.

Flaky: failed once, passed on its one rerun (rule 16)

⚑ ship-docsync-completion  rule  FLAKY: failed in attempt 1 (paid-slice-3-a1), passed on its one rerun in attempt 1 rerun (slice 1 attempt 1); rerun cost $1.12; first failure: assertion: completion fields
⚑ ship-exploratory-late-input  rule  FLAKY: failed in attempt 1 (paid-slice-9-a1), passed on its one rerun in attempt 1 rerun (slice 1 attempt 1); rerun cost $0.91; first failure: assertion: expect(received).toEqual(expected)
⚑ ship-exploratory-small-cli  rule  FLAKY: failed in attempt 1 (paid-slice-14-a1), passed on its one rerun in attempt 1 rerun (slice 1 attempt 1); rerun cost $0.72; first failure: assertion: expect(received).toEqual(expected)

Each failed and passed on its rerun in run 40805543956 at the attempts named above. Logged for the daily flaky-fix pass in this run's flake-records-a1 artifact (docs/TESTING_INTERNALS.md#flaky-reruns).

Dispatched narrow screen (gstack-ship-queue ready --screen) of merge commit 7ac79f14420a4de7081abe2c045751b0212c9ae3.

@capy-ai
capy-ai Bot changed the base branch from gsta147-carry-rules to main October 29, 2026 03:01
@trunk-io

trunk-io Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

😎 This pull request was merged.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
@github-actions github-actions Bot changed the title ship: proportional review depth (light, standard, full) with depth-checked receipts v1.91.307.0 ship: proportional review depth (light, standard, full) with depth-checked receipts Oct 29, 2026
@capy-ai
capy-ai Bot merged commit edf4c2e into main Oct 29, 2026
63 checks passed
garrytan added a commit that referenced this pull request Oct 29, 2026
…ts; land checks the depth-checked receipt (#3567)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan added a commit that referenced this pull request Oct 29, 2026
…; regenerate the doctor anchors

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan added a commit that referenced this pull request Oct 29, 2026
…ts; land checks the depth-checked receipt (#3567)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan added a commit that referenced this pull request Oct 29, 2026
…; regenerate the doctor anchors

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan added a commit that referenced this pull request Oct 29, 2026
…ts; land checks the depth-checked receipt (#3567)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan added a commit that referenced this pull request Oct 29, 2026
…; regenerate the doctor anchors

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan added a commit that referenced this pull request Oct 29, 2026
…ts; land checks the depth-checked receipt (#3567)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan added a commit that referenced this pull request Oct 29, 2026
…; regenerate the doctor anchors

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan added a commit that referenced this pull request Oct 29, 2026
…ts; land checks the depth-checked receipt (#3567)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan added a commit that referenced this pull request Oct 29, 2026
…; regenerate the doctor anchors

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan added a commit that referenced this pull request Oct 29, 2026
…ts; land checks the depth-checked receipt (#3567)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan added a commit that referenced this pull request Oct 29, 2026
…; regenerate the doctor anchors

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ship receipt has no structured review-loop exception field

1 participant