gstack's unattended /ship stops handing the parent agent a stale receipt

1 hour ago

gstack 1.91.214.0 to 1.91.215.0 (2026-10-25): an unattended /ship writes its receipt to a file the parent agent reads, and the parent checks the receipt against the branch instead of trusting an old pull request's receipt. gstack-brain-sync also finishes publishing removals without an unbound variable error and releases its sync lock. Changelog: https://github.com/garrytan/gstack/blob/main/CHANGELOG.md 1.91.214.0: https://github.com/garrytan/gstack/blob/main/CHANGELOG.md#1912140---2026-10-25 1.91.215.0: https://github.com/garrytan/gstack/blob/main/CHANGELOG.md#1912150---2026-10-25 Unattended runs: https://github.com/garrytan/gstack/blob/main/docs/unattended.md Commits: https://github.com/garrytan/gstack/commits/main

Ask about this presentation

Chapters

  1. 0:00Receipt
  2. 0:14Stale
  3. 0:28Brain sync
  4. 0:43Verdict
Show transcript

Receipt

gstack logo

gstack’s unattended /ship stops handing the parent agent a stale receipt

UNATTENDED_SHIP: no push, no PR
receipt at .gstack/tmp/ship-receipt.md
parent agentreads the file
ReceiptStaleBrain syncVerdict
garrytan/gstack · CHANGELOG.md · 1.91.215.0

When a parent agent runs gstack's /ship unattended, the run never pushes, so there is no pull request to carry the receipt. Now the receipt lands in a file in the child's checkout, where the parent finds it.

Stale

An old pull request no longer passes for this run

beforeolder PR’s receipt · exit 0
nowreceipt head = branch head
With no PR at all, the parent got a usage error or RECEIPT_MISSING.
ReceiptStaleBrain syncVerdict
garrytan/gstack · CHANGELOG.md · 1.91.215.0

Before, the parent took the receipt from a pull request, and an older one passed without an error, carrying an out of date commit. Now the parent is told to match the receipt's commit to the branch every time.

Brain sync

Brain sync finishes clean after publishing removals

$ gstack-brain-sync --publish-removals --yes
list: unbound variable
temp list removedsync lock released
ReceiptStaleBrain syncVerdict
garrytan/gstack · CHANGELOG.md · 1.91.214.0

gstack-brain-sync no longer ends a removals publish on an unbound variable error. It now deletes its temp list and releases the sync lock, which used to linger until a later run cleared it.

Verdict

If a parent agent runs /ship for you, I would upgrade now

CHANGELOG.mdgarrytan/gstack
ReceiptStaleBrain syncVerdict
garrytan/gstack · CHANGELOG.md · 1.91.215.0

If a parent agent runs /ship for you in Claude Code, I would upgrade now: it stops trusting a receipt from an old pull request. The full notes are in the gstack changelog.

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built in New York with ❤️