gstack 1.91.36.0: /cso Python and Rails repairs now replay

4 days ago

What changed in gstack 1.91.36.0 (2026-10-07): /cso runtime verification now replays Python and Rails repairs, gives Rails verification 900 seconds instead of 300, and cleans up after a killed verification. https://github.com/garrytan/gstack/blob/main/CHANGELOG.md#191360---2026-10-07 https://github.com/garrytan/gstack/pull/3074 https://github.com/garrytan/gstack/commits/main

Ask

Ask about this presentation

Answers are generated from this presentation.

Chapters

  1. 0:00Python repairs replay
  2. 0:15Rails replays ignore build logs
  3. 0:29Rails verification fits its budget
  4. 0:42Killed attempts leave no scratch
  5. 0:53Who this affects
Show transcript

Python repairs replay

gstack logo

gstack 1.91.36.0: /cso Python and Rails repairs now replay

BEFORE
every preparation hashed differently

timestamped .pyc bytecode

NOW
0 differing files

two preparations of the same Python app

PythonRailsBudgetCleanupWho
garrytan/gstack · CHANGELOG.md 1.91.36.0

A Python repair that /cso verified could never replay, because offline preparation wrote timestamped bytecode and every run hashed differently. Preparation now pins the source date, so two runs of the same app match file for file.

Rails replays ignore build logs

Rails replays stop tripping over RubyGems build logs

BEFORE
gem_make.out · mkmf.log

name a random build directory, so the hash changed

NOW
logs left out of the hash

compiled extensions stay in it

PythonRailsBudgetCleanupWho
garrytan/gstack · CHANGELOG.md 1.91.36.0

Rails replays failed the same way. The build logs RubyGems writes record a random temporary directory. Those logs are now left out of the prepared app’s hash, while the compiled native extensions still count.

Rails verification fits its budget

A Rails verification gets 900 seconds

old cap
300 s
two Rails preparations
about 490 s
new cap
900 s
Node and Bun keep 300 s · the run’s reporting deadline still applies
PythonRailsBudgetCleanupWho
garrytan/gstack · CHANGELOG.md 1.91.36.0

On a four-core host, a Rails attempt prepares the app twice, about four minutes each, and the watchdog stopped it at five. Rails attempts and replays now get fifteen minutes. Node and Bun keep five.

Killed attempts leave no scratch

A killed verification leaves nothing behind

supervisionpreparation-executionarchive-stagingarchive-materializationsverification
resume and finish reclaim it once the watchdog records cleanup
PythonRailsBudgetCleanupWho
garrytan/gstack · CHANGELOG.md 1.91.36.0

When the helper was killed mid-verification, the watchdog removed the containers, but the dead attempt’s scratch stayed in the run directory. Now resume and finish clear it, under the run lock.

Who this affects

For Python apps on requirements.txt or uv.lock, and Rails apps with native gems

Measured on amd64 · arm64 and the full evaluator run on CI were unconfirmed at merge
CHANGELOG.md1.91.36.0 · What this means for you
PythonRailsBudgetCleanupWho
garrytan/gstack · CHANGELOG.md 1.91.36.0 · PR #3074

If your Python app is locked with requirements or uv, or your Rails app uses native gems, verification now finishes and replays. These fixes were measured on amd64; arm64 and the full evaluator run on CI were unconfirmed at merge. The changelog covers the rest.