Skip to content

v1.91.340.0 ship-queue: train land counts a slot as merged only when GitHub reports it MERGED (#3603) - #3613

Merged
capy-ai[bot] merged 38 commits into
mainfrom
gsta154-land-github-merged
Oct 30, 2026
Merged

capy-ai[bot] merged 38 commits into
mainfrom
gsta154-land-github-merged

Conversation

@garrytan

@garrytan garrytan commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner
{
  "schema_version": 1,
  "pr": 3613,
  "head": "b57888eaf7cef35049289145acf107ca7e2703cd",
  "version": "1.91.336.0",
  "base": "gsta154-train-stamps",
  "gate": {
    "tests": {
      "pass": 23810,
      "fail": 0,
      "skip": 0
    }
  },
  "session_kind": "unattended",
  "head_tree": "f7abe045137fac743e28238ede0563d69d440eba",
  "product_patch_id": "5452cacfbd3dbcf46c2252ccfa8032936dff026e",
  "gstack_version": "1.92.0.0",
  "review_depth": {
    "depth": "full",
    "class": "gate",
    "runtime_lines": 30,
    "rules": "55726fab80631072",
    "base": "e8665feac8bfbec52d214fc933d9c161b5ca7cd3",
    "registry": "e8665feac8bfbec52d214fc933d9c161b5ca7cd3",
    "gate_scan": {
      "tagged": 0,
      "head": "b57888eaf7cef35049289145acf107ca7e2703cd"
    },
    "reasons": [
      "gate-class",
      "runtime=30<=50"
    ]
  },
  "pregate": "requires-remote cleared @f7abe045137f (1 checks, current for b57888eaf7ce)",
  "requires_remote": [
    "free-tests.yml/cso-macos-launcher: https://github.com/garrytan/gstack/actions/runs/41094986731",
    "free-tests.yml/macos-named-regressions: https://github.com/garrytan/gstack/actions/runs/41094986731",
    "windows-free-tests.yml/windows-free-shard: https://github.com/garrytan/gstack/actions/runs/41094992770",
    "pregate.json/remote_gate: remote-gate tree=f7abe045137f tests=23810"
  ],
  "issues": {
    "fixes": [],
    "refs": [
      3603
    ],
    "flakes": []
  },
  "docs": {
    "status": "updated",
    "scope": "docs/ship-policy.md (train land step 4), docs/troubleshooting.md (QUEUE_PROOF_MISSING), CHANGELOG.md against the 9e1593d diff"
  },
  "review_loop": {
    "passes": 1,
    "blocking_found": 0,
    "deferred": 0,
    "noted": 4,
    "fixed": 0,
    "scope": "frozen",
    "dispatches": {
      "specialist": 4
    }
  }
}

Draft; the /ship body follows.

Open in Capy

What changed

train land: a forged train record no longer lands anything

For a stamped train, train land counts a slot as merged only when GitHub reports its PR MERGED.

Why

Follow-up #3603 from #3595's final review pair, which GStack Minder held back from #3595. Train land read two things straight from the train record (local, or rebuilt from refs/notes/gstack-trains): which PR a slot is (t.slots[].pr) and which slots merged (t.merged). With slot PRs swapped and main already at S1, train land --pr 2 confirmed the open #2 as merged. A forged merged entry marked the train merged, could clear a repair train's freeze, and turned a pre-landing mismatch into a freeze. GitHub's own state is the only source of either fact, so it fixes both.

Blast radius

Only stamped trains (built under changelog_fragments, landed through train land) change. Plain trains and verify --train keep today's logic, because their slot-call flow and fixtures publish main without a GitHub MERGED read, and applying the rule there broke 8 plain-train tests. One file of product code, lib/ship-queue-train-verify.ts (confirmMerged, stopped, freezeQueue). Shared with #3594/#3595: CHANGELOG.md, docs/ship-policy.md, docs/troubleshooting.md, test/ship-queue-train-land.test.ts.

Summary

confirmMerged refuses (QUEUE_PROOF_MISSING) when GitHub does not report the landed PR MERGED, even with main's tree at its S_i, and the train's merged count includes another slot only when it has a record entry and GitHub reports it MERGED. stopped reads every slot's GitHub state, so a record entry alone no longer makes a mismatch freeze the queue or a train read as stale, and freezeQueue builds the freeze record's merged, unmerged and unreadable lists from those reads.

Test Coverage

Three new tests in test/ship-queue-train-land.test.ts, each failing on the base: swapped slot PRs never confirm the open PR; a forged merged entry for an open slot leaves the train merging (1/2); a forged merged entry does not turn a pre-landing mismatch into a freeze.

Tests ran: remote free tier 23810 tests, 0 failed (tree f7abe045, after merging #3595's new head e8665fe); macOS and Windows lanes cleared by dispatched runs 41094986731 and 41094992770

Pre-Landing Review

The adversarial pass on the first version found no way for a forged record or an unreadable read to count a slot, clear a freeze or turn a mismatch into a freeze. It did flag the plain-train regression above as blocking, and scoping the rule to stamped trains fixed it. The specialist pass on the final diff came back clean, with both train test files green.

REVIEW_LOOP: passes=1 blocking_found=0 deferred=0 noted=4 fixed=0 scope=frozen dispatches=4 (the counted pass is the specialist pass on the final diff; the adversarial pass on the first version, whose blocking plain-train regression was fixed by scoping, ran before it)

Review notes

  • Informational, listed, not looped:
    • MERGED is required, but the PR's head is not checked against the pin or stamp commit. A forged slot naming an old MERGED PR still needs main's tree at a gated S_i.
    • An unreadable GitHub read for another slot leaves a rerun at merging, and a later readable rerun restores merged.
    • A gh read failure right after a successful merge refuses where its neighbours pend; a rerun confirms.
    • The refusal says "reports #n as unreadable" when gh fails.
    • verifiedElsewhere and prune --stale (lib/ship-queue-train.ts:641) still read other record entries. Both fail closed and need write access to the notes ref.
    • freezeQueue's JSDoc now sits above the new recordedMerged helper.
    • No stamped test checks the freeze record's lists.
  • Still open on ship-queue train land: bind slots and merged entries to GitHub state; validate t.head and the resume journal #3603: items 3 to 6 (t.head validation, the journal-resume tree, re-checking intermediate S_i, required_checks name matching).

Exploratory QA

None beyond the tests; the gh-backed paths run against the train gh shim.

Design Review

No frontend files changed — design review skipped.

Eval Results

No prompt or skill-template change.

Plan Completion

#3603 items 1 and 2, as GStack Minder scoped them.

Issues

Refs #3603

Verification Results

Focused suite (16 files: train, land, stamp, backstop, gate, Version Gate, fragments, ratchets, tripwires): 248 green, none red; bun run gen:skill-docs && bun run build clean.

TODOS

No TODO items completed in this PR.

Documentation

Status: updated. docs/ship-policy.md (train land step 4: a slot counts as merged only when GitHub reports its PR MERGED) and docs/troubleshooting.md (a new QUEUE_PROOF_MISSING cause), written by the lane against the 9e1593d diff; CHANGELOG.md has one line.

Test plan

🤖 Generated with Claude Code

garrytan and others added 30 commits October 29, 2026 08:41
…tree receipt accepts the fold

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

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

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>
…ts; land checks the depth-checked receipt (#3567)

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>
…cation tripwire)

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>
…safe subset (gh shim cannot launch there)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…lds only with the key on

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
land without --no-wait now compares the pushed branch head and polls the
stamp commit's checks, refuses a PR whose base is not the stamped base,
releases the lock on a pre-push failure, keeps --break-lock off drift
locks, resumes from a lost journal via the stamp commit's pin, honours
history merge-only, and refuses a fragment whose text is already released
on the base. Version Gate stops applying open claims to a fragments stamp.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
land reconciles a merge GitHub completed behind an error reply, refuses
--break-lock against a holder that just entered a push or a merge, keeps
a repair takeover on the lock itself (any checkout can land the repair
PR), resumes --repair after a failed PR create, releases the lock on
QUEUE_LAND_BASE_BUSY, never writes through a symlinked release file,
keeps a package.json version source's other edits, and refuses an empty
object id instead of pushing a deletion. A carried-back fragment is
matched on whole released lines. Under changelog_fragments Version Gate
accepts a stamped head only as a [pin, base] merge-step commit with valid
fragments.

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

Under changelog_fragments, gstack-ship-queue ready records a READY receipt
(refs/notes/gstack-trains) once its pregate, full_e2e and /ship receipt
checks pass, and land refuses a pin without one (fix: run
gstack-ship-queue ready --pr N), --dry-run included (GStack Minder ruling,
2026-10-29). The merged tree's release files may not be symlinks, so
restamp never writes outside the scratch worktree. --repair adopts an
existing branch only when it holds land's repair commit.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ragments fold; docs match land and ready

gstack-pregate clear and gstack-tree-receipt now classify through one
classifyFiles, so under changelog_fragments a receipt for the fragment head
clears the stamped head when the stamp is exactly the fold. The ship-policy
reference names ready's receipt push, land's own check polling, the key-off
refusal and the /ship changelog_fragments line.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…d clear applies them too

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>
…publishes S_i exactly; backstop covers exact trees (PR B)

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>
…r stamped trains

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>
…; regenerate the doctor anchors

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>
…ndows-safe subset (same gh shim as the train tests)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
- train land checks commit-tree and stamps with a fixed identity and date, journals before the push, and
  adopts its own stamp head on a rerun; a failed commit-tree never pushes a branch deletion
- a symlinked release file in the merged tree refuses before the train stamp writes
- mergeStep merges a conflicted manifest three-way with the predecessor's version (mergeManifest, shared with land)
- train land refuses a PR retargeted off the base and a failed base refresh
- Version Gate skips a released fragment carried in by a stacked pin instead of counting its bump
- bisect of a stamped train tests T0 and S_1..S_k

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…amp step after a journaled, unpushed stamp

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…stamping; a merge main does not show yet pends

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…order slot refuses without freezing; stamps never sign

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…e PR never reads as a move; reruns of landed slots confirm; T0 in the out-of-order refusal

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ing; require changelog_fragments.required_checks green on the stamp commit

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ume and required checks; stamped bisect; three-way manifest merges

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…PR MERGED (#3603)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
@capy-ai
capy-ai Bot marked this pull request as ready for review October 29, 2026 16:45
@github-actions

Copy link
Copy Markdown
Contributor

E2E Evals: ✅ PASS (flaky: 1 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 5m53s · cost $33.65 known + 32 of 139 trial(s) cost unknown
  FLAKY 1 (failed once, passed on its one rule-16 rerun) · 1 rerun execution(s), cost $0.87

125 executed, 0 reused rule/judge records | 0 manual accepted (unscored; no score-cache credit) | $32.96 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/gsta154-changelog-fragments.json (real unknown dependency): register test/size-ledger/ship/gsta154-changelog-fragments.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-ship-queue: 255 case(s), 24 judge(s)
  • lib/changelog-fragments.ts: 255 case(s), 24 judge(s)
  • lib/pregate/remote-receipt.ts: 255 case(s), 24 judge(s)
  • lib/restamp.ts: 255 case(s), 24 judge(s)
  • lib/ship-queue-land.ts: 255 case(s), 24 judge(s)
  • lib/ship-queue-train-cli.ts: 255 case(s), 24 judge(s)
  • lib/ship-queue-train-github.ts: 255 case(s), 24 judge(s)
  • lib/ship-queue-train-land.ts: 255 case(s), 24 judge(s)
  • lib/ship-queue-train-record.ts: 255 case(s), 24 judge(s)
  • lib/ship-queue-train-stamp.ts: 255 case(s), 24 judge(s)
  • lib/ship-queue-train-verdict.ts: 255 case(s), 24 judge(s)
  • lib/ship-queue-train-verify.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/tree-receipt.ts: 255 case(s), 24 judge(s)
  • lib/version-gate-train.ts: 255 case(s), 24 judge(s)
  • scripts/lib/windows-curation.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.87
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.12
e2e-qa-functional-fix/skill-e2e-qa-functional-fix 2/2 0 2 0 ✅ $0.92
e2e/skill-e2e-plan--plan-review-report 1/1 0 1 0 ✅ $0.87
e2e-qa-callers/skill-e2e-qa-callers--ship-exploratory-unavailable 1/1 0 1 0 ✅ $0.88
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 ✅ $1.02
e2e-qa-workflow/skill-e2e-qa-workflow--qa-quick 1/1 0 1 0 ✅ $0.45
e2e-review-attribution/skill-e2e-review-attribution 3/3 0 3 0 ✅ $0.3
e2e/skill-e2e-ship-skip 1/1 0 1 0 ✅ $0.26
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-stale-before 1/1 0 1 0 ✅ $0.4
e2e/skill-e2e-shared-libs--shared-libs-review-lifecycle 1/1 0 1 0 ✅ $0.87
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.24
e2e/skill-e2e-shared-libs--shared-libs-read-only 1/1 0 1 0 ✅ $0.25
e2e-deploy/skill-e2e-deploy--land-and-deploy-review-gate 1/1 0 1 0 ✅ $0.21
e2e-docsync-spawned/skill-e2e-docsync-spawned 1/1 0 1 0 ✅ $0.44
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.26
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.91
e2e-review-army/skill-e2e-review-army--review-army-perf-n-plus-one 1/1 0 1 0 ✅ $0.23
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 ✅ $0.95
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 1/1 0 1 0 ✅ $0.96
e2e-review-army/skill-e2e-review-army--review-army-json-findings 1/1 0 1 0 ✅ $0.07
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-store 1/1 0 1 0 ✅ $0.93
e2e-triage/skill-e2e-triage 1/1 0 1 0 ✅ $0.12
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.2
e2e-design/skill-e2e-design--design-review-detector-shim 1/1 0 1 0 ✅ $0.13
e2e-session-intelligence/skill-e2e-session-intelligence 4/4 0 4 0 ✅ $0.35
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.14
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.1
e2e/skill-e2e-investigate-owned-termination 2/2 0 2 0 ✅ $0.17
e2e/skill-e2e-ship-hook-refresh 1/1 0 1 0 ✅ $0.1
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.08
e2e-third-party-actions/skill-e2e-third-party-actions 5/5 0 5 0 ✅ $0.45
e2e/skill-e2e-ship-hook-consent 2/2 0 2 0 ✅ $0.24
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-recovery 1/1 0 1 0 ✅ $0.4
e2e/skill-e2e-shared-libs--shared-libs-review-revalidation 1/1 0 1 0 ✅ $1.77
e2e-review/skill-e2e-review 2/2 0 2 0 ✅ $0.35
e2e-cso/skill-e2e-cso 1/1 0 1 0 ✅ $0.47
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 1/1 0 1 0 ✅ $1.31
e2e-learnings/skill-e2e-learnings 1/1 0 1 0 ✅ $0.07
e2e-failure-routing/skill-e2e-failure-routing 4/4 0 4 0 ✅ $0.41
e2e-qa-workflow/skill-e2e-qa-workflow--qa-only-no-fix 1/1 0 1 0 ✅ $0.55
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 0/1 0 1 0 ❌ $1.06
e2e/skill-e2e-test-value 3/3 0 3 0 ✅ $0.72
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-failure 1/1 0 1 0 ✅ $0.69
e2e-skillify/skill-e2e-skillify 3/3 0 3 0 ✅ $0.86
e2e/skill-e2e-shared-libs-paths--shared-libs-review-path-eligibility 1/1 0 1 0 ✅ $1.43
e2e-hermetic/skill-e2e-hermetic-canary 2/2 0 2 0 ✅ $0.06
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-completion 1/1 0 1 0 ✅ $0.89
e2e-design/skill-e2e-design--design-review-plugin-handoff 1/1 0 1 0 ✅ $0.11
e2e-review-army/skill-e2e-review-army--review-army-quality-score 1/1 0 1 0 ✅ $0.1
e2e-design/skill-e2e-design--design-review-detector-shim-dom 1/1 0 1 0 ✅ $0.22
e2e-safety-ship-evidence/skill-e2e-safety-ship-evidence 1/1 0 1 0 ✅ $0.1
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.18
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-missing-asset 1/1 0 1 0 ✅ $0.28
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-missing-marker 1/1 0 1 0 ✅ $0.17
Fail-closed reconciliation
er-question-format-compliance.test.ts
  slice 16  passed             25s  test/skill-e2e-ship-docsync.test.ts#ship-docsync-launch-failure
  slice 16  passed             37s  test/skill-e2e-session-intelligence.test.ts
  slice 16  passed             34s  test/skill-e2e-ship-hook-consent.test.ts
  slice 16  passed             28s  test/skill-e2e-investigate-owned-termination.test.ts
  slice 16  passed             21s  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             33s  test/skill-e2e-ship-hook-refresh.test.ts
  slice 16  passed             14s  test/skill-e2e-design.test.ts#plan-design-review-no-ui-scope
  slice 16  passed             25s  test/skill-e2e-review-army.test.ts#review-army-delivery-audit
  slice 16  passed             30s  test/skill-e2e-safety-pair-agent.test.ts
  slice 16  passed             21s  test/skill-e2e-qa-workflow.test.ts#qa-bootstrap
  slice 17  passed             15s  test/skill-e2e-learnings.test.ts
  slice 17  passed             17s  test/skill-e2e-diagram.test.ts
[test:paid] collector final outcomes: 125 executed, 0 reused; 124 passed, 1 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 5m53s · cost $33.65 known + 32 of 139 trial(s) cost unknown
  FLAKY 1 (failed once, passed on its one rule-16 rerun) · 1 rerun execution(s), cost $0.87
[test:paid] flaky (rule 16: failed once, passed on its one rerun; green with this annotation):
  ⚑ ship-exploratory-plan-checks  rule  FLAKY: failed in attempt 1 (paid-slice-10-a1), passed on its one rerun in attempt 1 rerun (slice 1 attempt 1); rerun cost $0.87; first failure: assertion: expect(received).toEqual(expected)
[test:paid] exercised-path map (shadow, non-blocking): 9 MAP_GAP line(s) over 105 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 ship-exploratory-late-input bin/gstack-review-plan: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP ship-exploratory-plan-checks bin/gstack-review-plan: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP ship-exploratory-small-cli bin/gstack-review-plan: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP ship-exploratory-unavailable bin/gstack-review-plan: 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-exploratory-plan-checks  rule  FLAKY: failed in attempt 1 (paid-slice-10-a1), passed on its one rerun in attempt 1 rerun (slice 1 attempt 1); rerun cost $0.87; first failure: assertion: expect(received).toEqual(expected)

Each failed and passed on its rerun in run 40914813461 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 fd11b56eefafa18538430154ea8c80f033cf36dc.

garrytan and others added 6 commits October 30, 2026 12:56
… grant)

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

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…91.336.0 (gstack-restamp --next --pr 3594, train gate.train-98e1977e3e71-723b73ea8970-082cfa slot 1)

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

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ain-stamps; CHANGELOG: main's plus this PR's [Unreleased] entry

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

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
@capy-ai
capy-ai Bot changed the base branch from gsta154-train-stamps to main October 30, 2026 19:23
@trunk-io

trunk-io Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

😎 This pull request was merged.

…1.340.0 (gstack-restamp --next --pr 3613, train gate.train-9678d27cec77-53858424d03a-a0cea8 slot 2)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
@github-actions github-actions Bot changed the title ship-queue: train land counts a slot as merged only when GitHub reports it MERGED (#3603) v1.91.340.0 ship-queue: train land counts a slot as merged only when GitHub reports it MERGED (#3603) Oct 30, 2026
@capy-ai
capy-ai Bot merged commit 7bc2034 into main Oct 30, 2026
62 checks passed
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.

1 participant