gstack's /ship now stamps a PR's version when it is next to merge

1 day ago

gstack 1.91.73.0 to 1.91.75.0 (2026-10-11): /ship now stamps a pull request's version only when it is next to merge, gstack-restamp re-stamps the queue after a reorder in one step, a committed ship policy sets each repo's bump rule and queue mode, a tree receipt lets a gate be reused when the stamp is the only change, and every PR body opens with a ship receipt. https://github.com/garrytan/gstack/blob/main/CHANGELOG.md#191730---2026-10-11 https://github.com/garrytan/gstack/blob/main/CHANGELOG.md#191750---2026-10-11 https://github.com/garrytan/gstack/blob/main/docs/ship-policy.md

Ask

Ask about this presentation

Answers are generated from this presentation.

Chapters

  1. 0:00Restamp
  2. 0:15Policy
  3. 0:29Gate reuse
  4. 0:41Receipt
  5. 0:56Limits
Show transcript

Restamp

gstack logo

gstack’s /ship stamps a PR’s version when it is next to merge

Reordering the release queuehand edits on every PR
gstack-restamp --nextone step
RestampPolicyGate reuseReceiptLimits
garrytan/gstack · CHANGELOG.md 1.91.73.0

Reordering a release queue meant hand-editing the version, changelog headings and lockfile on every pull request behind it. Now gstack-restamp stamps a pull request when it is next to merge, and /ship runs it for you.

Policy

A committed ship policy sets how each repo bumps and stamps

$ cat .gstack/ship-policy.json
Read fromorigin/<base>
Policy only on your branchhead (unreviewed)
RestampPolicyGate reuseReceiptLimits
garrytan/gstack · CHANGELOG.md 1.91.73.0

Each repo now commits a ship policy: its bump rule, queue mode and the files that carry the stamp. gstack reads it from the base branch, and when the rule is bump patch, ship stops asking for a version.

Gate reuse

The gate can be reused when the stamp is the only change

TREE: same-modulo-stampsgate-reuse: eligible
TREE: changed (<paths>)not-eligible + fix
Lanes the policy marks stamp-sensitive always rerun.
RestampPolicyGate reuseReceiptLimits
garrytan/gstack · CHANGELOG.md 1.91.73.0

A new stamp meant a full gate run on a tree that differed by a few bytes. Now a tree receipt proves the stamp is the only change, so the earlier gate counts. Stamp-sensitive lanes still rerun.

Receipt

Every PR body now opens with a ship receipt

Ship receipt · tree verdict, gate reuse, policy, queue mode
gstack-evidence bundle · gate results a fresh machine can check
RestampPolicyGate reuseReceiptLimits
garrytan/gstack · CHANGELOG.md 1.91.73.0

/ship now writes a receipt as the first block of the pull request, with the tree verdict, gate reuse and policy. An evidence bundle carries the gate results to a fresh machine after the gate's VM is gone.

Limits

Mirroring waits for a later release

The policy’s mirror is validated, then skipped
A shallow checkout can’t read the policy: POLICY_SOURCE_UNAVAILABLE
gstack’s own repo keeps claim-at-open and bump ask
docs/ship-policy.mdsetting up a policy
RestampPolicyGate reuseReceiptLimits
garrytan/gstack · CHANGELOG.md 1.91.73.0

The policy's mirror setting is checked but skipped for now. A shallow checkout can't read the policy from the base branch. And gstack's own repo still claims a version when a pull request opens. The ship policy guide covers setup.