Skip to content

v1.91.336.0 ship-queue: assign VERSION/CHANGELOG at merge time (changelog fragments + gstack-ship-queue land) - #3594

Merged
capy-ai[bot] merged 18 commits into
mainfrom
gsta154-changelog-fragments
Oct 30, 2026
Merged

capy-ai[bot] merged 18 commits into
mainfrom
gsta154-changelog-fragments

Conversation

@garrytan

@garrytan garrytan commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner
{
  "schema_version": 1,
  "pr": 3594,
  "head": "93c6edce0b3afddd9c5e8e924aca1ebbe15546a2",
  "version": "1.91.333.0",
  "base": "main",
  "gate": {
    "tests": {
      "pass": 23814,
      "fail": 0,
      "skip": 0
    }
  },
  "session_kind": "unattended",
  "head_tree": "d6bce1ab6d78912adab5932819a57a017aef169d",
  "product_patch_id": "2c362bc059885eee1147c20aff9782a746e106b5",
  "gstack_version": "1.91.333.0",
  "review_depth": {
    "depth": "full",
    "class": "gate",
    "runtime_lines": 947,
    "rules": "55726fab80631072",
    "base": "11c17d466af329ee0a27654f353b84d5484d503b",
    "registry": "11c17d466af329ee0a27654f353b84d5484d503b",
    "gate_scan": {
      "tagged": 1,
      "head": "93c6edce0b3afddd9c5e8e924aca1ebbe15546a2"
    },
    "reasons": [
      "gate-class",
      "runtime=947>50"
    ]
  },
  "pregate": "requires-remote cleared @d6bce1ab6d78 (1 checks, current for 93c6edce0b3a)",
  "requires_remote": [
    "free-tests.yml/cso-macos-launcher: https://github.com/garrytan/gstack/actions/runs/41060804078",
    "free-tests.yml/macos-named-regressions: https://github.com/garrytan/gstack/actions/runs/41060804078",
    "windows-free-tests.yml/windows-free-shard: https://github.com/garrytan/gstack/actions/runs/41060809886",
    "pregate.json/remote_gate: remote-gate tree=d6bce1ab6d78 tests=23814"
  ],
  "issues": {
    "fixes": [],
    "refs": [
      3557,
      3567
    ],
    "flakes": []
  },
  "docs": {
    "status": "updated",
    "scope": "docs/ (ship-policy, pregate, troubleshooting, captain), captain/templates, README.md against the 043feff..18d531b diff"
  },
  "review_loop": {
    "passes": 1,
    "blocking_found": 2,
    "deferred": 0,
    "noted": 2,
    "fixed": 13,
    "scope": "frozen",
    "fix_checks": 2,
    "dispatches": {
      "specialist": 6,
      "red-team": 1
    }
  }
}

GSTA-154 PR A (draft). /ship is running; the body is replaced by the /ship receipt and PR summary.

Open in Capy

What changed

gstack-ship-queue gains land: the merge step stamps VERSION and CHANGELOG itself, so a PR never carries a version

gstack-ship-queue gains land: the merge step stamps VERSION and CHANGELOG itself, so a PR never carries a version.

Before/after as text: gstack-ship-queue gains land: the merge step stamps VERSION and CHANGELOG itself, so a PR never carries a version
--- Before · before.txt · captured output
+++ After · after.txt · captured output
@@ ⋯ 5 unchanged ⋯ @@
   gate-ahead --list --pr <n>               attempts for a PR, newest last (the current one)
   verify --pr <n> --screen                 (train policy) the PR head's screen verdict read from its run (SCREEN_VERDICT)
   verify --post-merge <sha> [--timeout <s>] wait for every check run at a merged commit to settle: POST_MERGE: green|red|pending
+  land --pr <n> [--dry-run] [--no-wait] [--timeout <min>] [--break-lock] [--allow-repo-commands]
+  land --pr <n> --repair                   after QUEUE_LAND_DRIFT: open the PR that gives the merge outside land its own
+  land --census                            what land would do with every open PR (read-only)
   train build|status|verdict|bisect|rebuild|watch|prune ...
 

Why

Garry asked to "assign VERSION/CHANGELOG at merge time, not in the PR". Today every PR picks a version before it merges, so each merge makes the next PR's version stale and its lane redoes the stamp (a median 14.5 minutes from stamp commit to merge over 30 slots, Oct 27-29). With changelog_fragments on, a PR carries an unversioned fragment and gstack-ship-queue land allocates the version, so two PRs cut from one base never collide.

Blast radius

The change touches restamp, Version Gate (now on every PR), the tree receipt, gstack-pregate clear and ready. Every new behavior is behind changelog_fragments, which gstack's own .gstack/ship-policy.json leaves off, and the remote free tier (23,607 tests) passed on the branch with the key off, so repositories that do not opt in see no change (script ran).

Approvals

Date Asked Exact words Outcome Covers Still pending
2026-10-29 Approve GSTA-154: merge-time versioning as two stacked PRs (fragments + land; stamped train prefixes) “Do it” (Garry (via GStack Minder)) approved full scope, two stacked PRs, merge tool pushes the stamp commit, B's speedup waits for GSTA-156, /ship then unstamped READY, pilot on one train none
2026-10-29 Three-part package.json handling “correct this” (Garry (via GStack Minder)) approved adopt #3557: land and train land keep the base's part count none
2026-10-29 Do the /ship fragment step and wire bindShippedReceipt into land and train land “Do the /ship fragment step and wire bindShippedReceipt into land and train land now” (GStack Minder) approved #3567 depth-checked receipt in land and train land none
2026-10-29 What evidence does standalone land check? “it checks the same evidence ready enforces. Refuse a head without a current READY receipt” (GStack Minder) approved land refuses a pin without a READY receipt; built in PR A none

Source: gstack-approvals record for gsta154-changelog-fragments (display only; not an approval citation).

Summary

A lane hit stale versions on every merge. The PR stamped itself, the base moved, and the stamp had to be redone by hand. This PR lets a repository move version allocation to the merge step. A PR adds changelog.d/<slug>.md; gstack-restamp folds the fragments under one new heading and deletes them; gstack-ship-queue land --pr <n> takes a land lock, merges the base resolving release fields only, stamps, pushes a [pin, base] commit under an exact lease, waits for its checks and squashes with --match-head-commit. Every step is journaled and resumable, and drift from a merge outside land stops loudly with a --repair path. Version Gate runs on every PR so a fragment-only PR still proves its entry, and accepts a stamped head only as land's [pin, base] commit. ready records a READY receipt under the key and land refuses a pin without one, so land checks the same pregate and full_e2e evidence ready enforces. /ship Step 13 writes the fragment under the key.

Test Coverage

Step 7: 30 new code paths, all tested after two generation passes (9 tests); the rating subagent rated all 9 at two stars or better. Coverage: 100% value-weighted. Review fixes added 21 more cases, each failing before its fix: land without --no-wait merging in one run, a PR on another base, --break-lock against a drift lock and a holder mid-merge, a conflict releasing the lock, a stacked parent's fragment, a lost journal, merge-only, a merge GitHub completed behind an error reply, --repair after a failed PR create, symlinked VERSION and CHANGELOG at the pin, a package.json version source, QUEUE_LAND_BASE_BUSY releasing the lock, the READY receipt on both sides, the whole-line carried-back check, a lane-stamped head refused by Version Gate, and clear applying the fragment fold.

Tests ran: remote free tier 23607

Pre-Landing Review

Pass 1 (six specialists and the red team) found two blocking defects, both fixed with failing-first tests: land without --no-wait compared a stale pre-push head and never merged, and land never checked the PR's base branch. The native adversarial pass and the Codex outside voice found 13 more, fixed in one batch: a failed object write pushing a branch deletion, --break-lock breaking a holder mid-merge, a package.json version source losing dependency edits, PR-controlled symlinks writing outside land's scratch worktree, a merge GitHub completed behind an error reply never reconciling, and others. Two fix checks came back clean.

REVIEW_LOOP: passes=1 blocking_found=2 deferred=0 noted=2 fixed=13 scope=frozen fix_checks=2 dispatches=7

Gate edits: 13 listed, 6 read, 1 findings — 1 kept (reasons below), 0 restored, 0 open

  • RH-14, lib/ship-queue-land.ts: kept. Land's scratch-worktree commits use --no-verify and its cleanup uses worktree remove --force on a temporary worktree land created itself; neither skips a check on a person's commit.

Outside review: completed (Codex, gpt-6-astra), VERDICT findings P1, all P1s fixed or ruled on (standalone land's evidence: GStack Minder's ruling, built here).

Review notes

  • lib/version-gate-train.ts:119 single-parent inference: noted. Under fragments a single-parent stamped head is now refused outright.
  • lib/changelog-fragments.ts:28 fragmentSlug takes only numeric PRs: noted, advisory.
  • A new one-line fragment that equals an older released line exactly (for example "- Bump dependencies") is refused as carried-in history: noted, a false refusal with a clear fix, never data loss.

Exploratory QA

Functional probes on an owned fixture at a74725d: restamp folds a fragment in dry run; a fragment repeating released text refuses; a fragment with a release heading refuses with nothing written; land without --pr is a usage error writing no refs. Verdict pass, final. Land's gh-backed paths are covered by test/ship-queue-land.test.ts, not probed.

Design Review

No frontend files changed — design review skipped.

Eval Results

No prompt-related eval selected beyond the ship skill's one-line Step 13 change; the paid gate runs on the train.

Plan Completion

Step 8 audited 41 plan items for PR A; the one NOT DONE (the rollback docs claim) is fixed. Items 10-16 (stamped train prefixes, train land) are in #3595. Deferred with approval: S_i pretests, the controller reuse check and train-prefix refs wait for GSTA-156; peer-repo opt-ins and gstack's policy flip come after the pilot train.

Issues

Refs #3557
Refs #3567

Verification Results

Exploratory probes: all four held; none failed, was blocked or went unrun.

TODOS

No TODO items completed in this PR.

Documentation

Status: updated. The re-audit of 043feff..18d531b (14 commits, 31 files; staged and unstaged trees clean) found docs/pregate.md's verdict-parity claim true again after 18d531b and made three factual edits.

Scope: docs/pregate.md, docs/ship-policy.md, docs/troubleshooting.md, docs/captain.md, captain/templates, README.md, each checked against lib/tree-receipt.ts, lib/pregate/remote-receipt.ts, lib/ship-policy.ts, lib/ship-queue.ts, lib/ship-queue-land.ts, lib/result-codes-release.ts and bin/gstack-ship-queue.

Documentation health:

  • docs/pregate.md: Updated (the built-in rules sentence mentions the fragment fold; the substitution rule list adds changelog-fragments and changelog_fragments)
  • docs/ship-policy.md: Updated (the fold paragraph names both rules, says gstack-pregate clear applies the same rule, and requires an exact fold)
  • docs/troubleshooting.md: Current (the five new anchors match lib/result-codes-release.ts and the doctor anchor map)
  • docs/captain.md: Current (gstack's own policy keeps changelog_fragments off)
  • captain/templates: Current
  • README.md: Current
  • CHANGELOG.md: Not audited for edits (owned by the parent)
  • TODOS.md: Not audited (owned by the parent)

Coverage debt:

  • Crew operation under changelog_fragments (land in place of slot stamps, a fragment in place of rule 15's [Unreleased]): reference only in docs/ship-policy.md; docs/captain.md and captain/templates have no how-to.
  • /land-and-deploy under changelog_fragments: docs/ship-policy.md's /land-and-deploy section does not mention fragments.

Diagram drift: none.

Test plan

  • Remote free tier (gstack-pregate --stage tests --remote) at tree d6bce1ab, after merging main 11c17d4 (v1.91.333.0, CHANGELOG by mergeChangelogs): 23814 tests, 0 failed; lanes cleared from runs 41060804078 and 41060809886
  • Focused suite after that merge (land, fragments, Version Gate, restamp, tree receipt, train, ratchets, tripwires): 362 tests, 0 failed
  • bun run typecheck, bun run gen:skill-docs freshness, bun run build
  • bun test test/parity-suite.test.ts and the skill size guard green after the Steps 12-16 hyphen trim that keeps ship's skeleton within maxSkeletonBytes

🤖 Generated with Claude Code

@trunk-io

trunk-io Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

😎 This pull request was merged.

@garrytan
garrytan force-pushed the gsta154-changelog-fragments branch 2 times, most recently from 5078ad1 to 04d25ce Compare October 29, 2026 07:57
@capy-ai
capy-ai Bot marked this pull request as ready for review October 29, 2026 08:10
@github-actions

github-actions Bot commented Oct 29, 2026 •

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 6m05s · cost $33.53 known + 32 of 139 trial(s) cost unknown
  FLAKY 1 (failed once, passed on its one rule-16 rerun) · 1 rerun execution(s), cost $1.03

125 executed, 0 reused rule/judge records | 0 manual accepted (unscored; no score-cache credit) | $32.87 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.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.95
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 ✅ $1
e2e/skill-e2e-plan--plan-review-report 1/1 0 1 0 ✅ $0.82
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 ✅ $0.99
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.3
e2e/skill-e2e-ship-skip 1/1 0 1 0 ✅ $0.25
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-stale-before 1/1 0 1 0 ✅ $0.43
e2e/skill-e2e-shared-libs--shared-libs-review-lifecycle 1/1 0 1 0 ✅ $0.86
e2e-review-army/skill-e2e-review-army--review-army-migration-safety 1/1 0 1 0 ✅ $0.26
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.29
e2e-docsync-spawned/skill-e2e-docsync-spawned 1/1 0 1 0 ✅ $0.63
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.64
e2e/skill-e2e-workflow 4/4 0 4 0 ✅ $0.87
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 ✅ $1.05
e2e-deploy/skill-e2e-deploy--benchmark-workflow 1/1 0 1 0 ✅ $0.25
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.88
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.85
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.15
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.3
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.11
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.17
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.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.38
e2e/skill-e2e-shared-libs--shared-libs-review-revalidation 1/1 0 1 0 ✅ $1.91
e2e-review/skill-e2e-review 2/2 0 2 0 ✅ $0.35
e2e-cso/skill-e2e-cso 1/1 0 1 0 ✅ $0.39
e2e-qa-functional/skill-e2e-qa-functional 2/2 0 2 0 ✅ $0.78
e2e-qa-callers/skill-e2e-qa-callers--ship-exploratory-late-input 1/1 0 1 0 ✅ $1.13
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.39
e2e-qa-workflow/skill-e2e-qa-workflow--qa-only-no-fix 1/1 0 1 0 ✅ $0.57
e2e-qa-callers/skill-e2e-qa-callers--review-exploratory-small-cli 1/1 0 1 0 ✅ $0.8
e2e-qa-callers/skill-e2e-qa-callers--ship-exploratory-plan-checks 1/1 0 1 0 ✅ $1.04
e2e/skill-e2e-test-value 3/3 0 3 0 ✅ $0.67
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-failure 1/1 0 1 0 ✅ $0.58
e2e-skillify/skill-e2e-skillify 3/3 0 3 0 ✅ $0.76
e2e/skill-e2e-shared-libs-paths--shared-libs-review-path-eligibility 1/1 0 1 0 ✅ $1.47
e2e-hermetic/skill-e2e-hermetic-canary 2/2 0 2 0 ✅ $0.02
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-completion 0/1 0 1 0 ❌ $0.85
e2e-design/skill-e2e-design--design-review-plugin-handoff 1/1 0 1 0 ✅ $0.13
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.11
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.17
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-missing-asset 1/1 0 1 0 ✅ $0.27
e2e-ship-docsync/skill-e2e-ship-docsync--ship-docsync-missing-marker 1/1 0 1 0 ✅ $0.17
Fail-closed reconciliation
l-e2e-investigate-owned-termination.test.ts
  slice 16  passed             20s  test/skill-e2e-design.test.ts#design-review-detector-shim
  slice 16  passed             21s  test/skill-e2e-deploy.test.ts#canary-workflow
  slice 16  passed             27s  test/skill-e2e-ship-hook-refresh.test.ts
  slice 16  passed             16s  test/skill-e2e-design.test.ts#plan-design-review-no-ui-scope
  slice 16  passed             32s  test/skill-e2e-review-army.test.ts#review-army-delivery-audit
  slice 16  passed             24s  test/skill-e2e-safety-pair-agent.test.ts
  slice 16  passed             22s  test/skill-e2e-qa-workflow.test.ts#qa-bootstrap
  slice 17  passed             17s  test/skill-e2e-learnings.test.ts
  slice 17  passed             12s  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 6m05s · cost $33.53 known + 32 of 139 trial(s) cost unknown
  FLAKY 1 (failed once, passed on its one rule-16 rerun) · 1 rerun execution(s), cost $1.03
[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.03; first failure: assertion: expect(received).toEqual(expected)
[test:paid] exercised-path map (shadow, non-blocking): 11 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 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 review-army-migration-safety bin/gstack-approval-classes: non-blocking for this PR; the next census refresh widens the map (docs/TESTING_INTERNALS.md#exercised-path-map)
  MAP_GAP ship-docsync-current 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 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)
[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.03; first failure: assertion: expect(received).toEqual(expected)

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

@garrytan
garrytan force-pushed the gsta154-changelog-fragments branch from 04d25ce to 8ecdf45 Compare October 29, 2026 08:30
garrytan and others added 15 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>
garrytan and others added 3 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>
@github-actions github-actions Bot changed the title ship-queue: assign VERSION/CHANGELOG at merge time (changelog fragments + gstack-ship-queue land) v1.91.336.0 ship-queue: assign VERSION/CHANGELOG at merge time (changelog fragments + gstack-ship-queue land) Oct 30, 2026
@capy-ai
capy-ai Bot merged commit e474a4f into main Oct 30, 2026
63 checks passed
garrytan added a commit that referenced this pull request Oct 30, 2026
…sta154-train-stamps

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
garrytan added a commit that referenced this pull request Oct 30, 2026
…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>
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