gstack 1.91.192.0: merge trains stop passing a damaged CHANGELOG

2 hours ago

gstack 1.91.192.0 (2026-10-25): the merge train's Version Gate no longer passes a CHANGELOG over 1 MiB it couldn't read, a PR that drops a released heading is now a CHANGELOG conflict, and gstack-ship-queue train build takes an explicit --order. Plus receipts from any origin URL, hand-resolved heads in verify --train, and larger restamp reads. Release notes: https://github.com/garrytan/gstack/blob/main/CHANGELOG.md#1911920---2026-10-25 Merge trains: https://github.com/garrytan/gstack/blob/main/docs/ship-policy.md Commits: https://github.com/garrytan/gstack/commits/main

Ask about this presentation

Chapters

  1. 0:00Gate
  2. 0:16Conflict
  3. 0:31Order
  4. 0:43Fixes
  5. 0:56Next
Show transcript

Gate

gstack logo

gstack 1.91.192.0: merge trains stop passing a damaged CHANGELOG

Before · past 1 MiB, the gate compared two empty strings and passed
Now · 64 MiB reads, and a CHANGELOG it can’t read is refused
GateConflictOrderFixesNext
garrytan/gstack · CHANGELOG.md · 1.91.192.0

gstack's merge train version gate read the changelog through a one megabyte buffer. Past that, it compared two empty strings and passed. Now it reads up to 64 megabytes, and refuses a changelog it can't open.

Conflict

A PR that drops a released heading now stops the train merge

CHANGELOG.md drops released heading 1.91.179.0
merged into the trainQUEUE_TRAIN_CONFLICT
GateConflictOrderFixesNext
garrytan/gstack · CHANGELOG.md · 1.91.192.0

When a PR's changelog dropped or renamed a released heading, the train merge carried that damage into the train. Now that PR stops as a changelog conflict with the reason, for you to resolve by hand.

Order

You can now set the order a train slots its PRs

#3337 /cso docs
→
#3343 the catalog it describes
train build --order
GateConflictOrderFixesNext
garrytan/gstack · CHANGELOG.md · 1.91.192.0

Trains slot PRs by screening, then by ready order, which once put a docs PR ahead of the change it describes. Now you can name the order yourself, and later rebuilds keep it.

Fixes

Receipts, verify and restamp also stop tripping trains

Any origin URL · READY receipts are found on github.com, ssh, token URLs or another host
Hand-resolved heads · verify --train accepts a correct one that contains main
Restamp · gstack-restamp --after reads large CHANGELOGs too
GateConflictOrderFixesNext
garrytan/gstack · CHANGELOG.md · 1.91.192.0

Ready receipts are now found whatever URL your lane's origin uses. A correct hand-resolved head passes train verify, as long as it contains main. And restamp reads large changelogs too.

Next

If you run merge trains on a big CHANGELOG, I would upgrade before the next train

CHANGELOG.mdgarrytan/gstack · 1.91.192.0
GateConflictOrderFixesNext
garrytan/gstack · CHANGELOG.md · 1.91.192.0

If you run merge trains on a changelog past a megabyte, I would upgrade gstack before the next train, because that is where damage slipped through. The details are in the 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 ❤️