gstack v1.96.0.0 (regular release)
123 versions since v1.92.55.0, one line each. Compare or read the full changelog.
Team-mode installs follow the stable branch, which now points here; gstack-config set update_channel main follows every merge instead (docs/releases.md).
- 1.96.0.0 (2026-11-05): Claude Code and Cursor no longer start /land-and-deploy or /modernize on their own. Type
/land-and-deployor/modernizeto run them; a request in plain words like "land it" now gets a pointer to the command instead of a mistaken merge or rewrite of an old branch. Both skills already stopped for your approval before merging or pushing, so this removes surprise rather than a missing safeguard. /ship, /careful, /freeze, /guard and /unfreeze still start from plain words like "ship it". gstack's router and the CLAUDE.md routing block now tell the model to point you to these two commands instead of invoking them. Under the hood, a newmanual_only: truetemplate flag maps todisable-model-invocation: trueon the Claude and Cursor hosts, and hostconditionalFieldsnow work in denylist mode too. - 1.95.5.0 (2026-11-04): see CHANGELOG.md
- 1.95.4.0 (2026-11-04): see CHANGELOG.md
- 1.95.3.0 (2026-11-04): A crew thread no longer creates threads itself. It asks its Captain, so every new thread joins a crew from the start (R68). docs/captain.md also warns that
tools.capy.readreturns a cut-down view of long files. - 1.95.2.0 (2026-11-04): see CHANGELOG.md
- 1.95.1.0 (2026-11-04): /ship's review depth now follows what the code does, not what a file is named (GST-1177).
- 1.95.0.0 (2026-11-03): see CHANGELOG.md
- 1.94.44.0 (2026-11-03): see CHANGELOG.md
- 1.94.43.0 (2026-11-03): see CHANGELOG.md
- 1.94.42.0 (2026-11-03): see CHANGELOG.md
- 1.94.41.0 (2026-11-03): /ship's receipt counts its review findings by id, keeps every run, and a small change after review gets one reader instead of a second /ship (GSTA-258 L4; GST-1136, GST-1168, GST-1179).
- 1.94.40.0 (2026-11-03): see CHANGELOG.md
- 1.94.39.0 (2026-11-03): A base merge next to a reviewed hunk no longer forces a second full review because of the base's own lines.
- 1.94.38.0 (2026-11-03): see CHANGELOG.md
- 1.94.37.0 (2026-11-03): see CHANGELOG.md
- 1.94.36.0 (2026-11-03): Fixes to the contract checker (GST-1242). An
agent_dispatchitem with amarker:used to count as met once the marker line was printed and any Agent call followed it, even an unrelated one. A contract that givesagent_dispatchamarkeris now rejected as invalid until the checker can bind a marker to the dispatch it names, and the item is met only by an Agent dispatch that matches itsmatch. No shipped contract used a marker there. The Stop hook's block message andgstack-skill-contract checknow name the waive command by the full path of the installedgstack-skill-contract, because a standard install does not put the bare name on PATH and the old hint failed with exit 127. /review's calibration note now points at the preamble's Operational Self-Improvement rule, which carries the logging command, instead of a section a skill diet may remove. - 1.94.35.0 (2026-11-03): /investigate's and /review's "Done means" list now runs the contract checker through gstack's own bin path (GST-1088 lane B follow-up).
- 1.94.34.0 (2026-11-03): see CHANGELOG.md
- 1.94.33.0 (2026-11-03): Follow-ups to the skill routing and contract hooks (GST-1088).
gstack-ship-queue readyno longer misreads files a PR adds as deleted when the installed gstack is older than the checkout: the paid-case selector now derives dependencies from the checkout under review. Each of the two hook switches now has one default,SWITCH_DEFAULTinlib/skill-route.ts(both still off), which setup, both hooks,gstack-config get|list|defaultsand the newgstack-skill-route --default <switch>all read, so changing a default is a one-line edit;gstack-config listanddefaultsnow show both switches, an unrecognized value takes the default in the hooks as it already did in setup, and a config file that exists but cannot be read turns both hooks off in setup and in the hooks whatever the default. The contract checker no longer counts installs, builds or version probes (bun install,go build,node --version,make clean) as a test run after an edit, while option values (make -C web test,pnpm --filter app test) andnode --teststill count, and the Stop hook lets a final stop through while Agent dispatches are still running, recording the run asdeferred, then checks the contract once the same agents have been running for 10 minutes;gstack-skill-contract reportre-checks deferred runs. - 1.94.32.0 (2026-11-03): see CHANGELOG.md
- 1.94.31.0 (2026-11-03): gstack's browser now runs Chromium 156, which fixes CVE-2026-106378, a macOS sandbox escape (#3907).
- 1.94.30.0 (2026-11-03): /ship sends more diffs to full review: spend-binding code, eval scorers, a repo's own risk paths and docs that print secrets now count as risk, and a lane can declare a class the matchers miss (GSTA-258 build C).
- 1.94.29.0 (2026-11-03): Every part of gstack now has to earn its place.
- 1.94.28.0 (2026-11-03):
gstack-ship-preflight --timeoutreaches Step 5's pregate (GST-1196). - 1.94.27.0 (2026-11-03): On main, all five new tests fail.
- 1.94.26.0 (2026-11-03): see CHANGELOG.md
- 1.94.25.0 (2026-11-03): see CHANGELOG.md
- 1.94.24.0 (2026-11-03): see CHANGELOG.md
- 1.94.23.0 (2026-11-03): Two
gstack-pregatepreflight false positives fixed (GST-1211). - 1.94.22.0 (2026-11-03): /investigate, /review, /qa and /verify now say when to use them, and /investigate and /review declare what "done" means (GST-1088 lane B).
- 1.94.21.0 (2026-11-03): see CHANGELOG.md
- 1.94.20.0 (2026-11-03): see CHANGELOG.md
- 1.94.19.0 (2026-11-03): see CHANGELOG.md
- 1.94.18.0 (2026-11-03): The Windows-safe test subset is green again on current main.
- 1.94.17.0 (2026-11-03): see CHANGELOG.md
- 1.94.16.0 (2026-11-03): A declared placeholder restamped to the new version is a stamp, and a carried receipt names the head's version (GST-1026, GST-1030).
- 1.94.15.0 (2026-11-03): see CHANGELOG.md
- 1.94.14.0 (2026-11-03):
review_exclude_pathskeeps code it used to exclude, and the docs say exactly what the receipt check stops (GST-972). - 1.94.13.0 (2026-11-03): see CHANGELOG.md
- 1.94.12.0 (2026-11-03): see CHANGELOG.md
- 1.94.11.0 (2026-11-03): A granted fix-check's clean read now counts at Step 16.
- 1.94.10.0 (2026-11-03): Windows checks now run by path.
- 1.94.9.0 (2026-11-03): A pull request can clear its remote gate obligation from a run with named flaky failures, once the owner grants it (GST-1096).
- 1.94.8.0 (2026-11-03):
gstack-approvals renderno longer puts the owner's exact words, autoplan run ids or plan hashes into PR bodies on public repositories (GST-1160). - 1.94.7.0 (2026-11-03): see CHANGELOG.md
- 1.94.6.0 (2026-11-03): Two opt-in Claude Code hooks so a model actually runs gstack's skills, both off by default (GST-1088).
./setup --skill-routingadds a UserPromptSubmit hook that names the gstack skill a prompt fits, scored against each installed skill'striggers:with no model call../setup --skill-contractsadds a Stop hook that blocks once when a skill with acontract:block ends without its required outputs (a report with real values, a test after the last edit, the specialist and adversarial dispatches).gstack-skill-route --explainshows how a prompt scores;gstack-skill-contract check|report|waivechecks a transcript, lists misses and acknowledges a waiver. Turn either off withgstack-config set skill_routing offorgstack-config set skill_contracts off. Docs: docs/skill-routing-and-contracts.md. - 1.94.5.0 (2026-11-03): Security: the lean /autoplan reviewer no longer gets
.envrc,.env-productionor a key pasted into an ordinary file (GST-1164, #3914). - 1.94.4.0 (2026-11-03): see CHANGELOG.md
- 1.94.3.0 (2026-11-03):
gstack-ship-preflightno longer trusts a localorigin/HEADwhen origin can't say its default branch. - 1.94.2.0 (2026-11-03): see CHANGELOG.md
- 1.94.1.0 (2026-11-03): see CHANGELOG.md
- 1.94.0.0 (2026-11-03): see CHANGELOG.md
- 1.93.42.0 (2026-11-03): The stamp checks name the branch's lines by position, and the carry and finish accept a kept VERSION claim (GST-979, GST-980).
- 1.93.41.0 (2026-11-03): Codex outside reviews report their token usage (#2948).
- 1.93.40.0 (2026-11-03): see CHANGELOG.md
- 1.93.39.0 (2026-11-03): /ship on Capy stops an outside voice that hangs and records it as missing, never as converged or as an unavailable Codex CLI (GST-1104).
- 1.93.38.0 (2026-11-03): see CHANGELOG.md
- 1.93.37.0 (2026-11-03): Eval planning prices Claude Haiku 5.5, GPT-6 Luna and Gemini 4 Argon, and the Codex docs name the current OpenAI tiers (#3640, #2943).
- 1.93.36.0 (2026-11-03): see CHANGELOG.md
- 1.93.35.0 (2026-11-03): pregate no longer kills a quiet test suite that is busy working.
- 1.93.34.0 (2026-11-03): The docsync fault-callback replays and the runShadow deadline test stop failing on loaded remote pregate VMs.
- 1.93.33.0 (2026-11-03): The /ship receipt now carries the targeted reader's record.
- 1.93.32.0 (2026-11-03): see CHANGELOG.md
- 1.93.31.0 (2026-11-03): A CSO hardening test now fails at the Git step that broke instead of passing without testing anything.
- 1.93.30.0 (2026-11-03):
browsestarts again when proxy credentials come fromBROWSE_PROXY_USERandBROWSE_PROXY_PASS. - 1.93.29.0 (2026-11-03): A
gbrain serve --httpon this machine's loopback address now counts as a local brain, so transcripts get imported again. - 1.93.28.0 (2026-11-03):
test/cso-snapshot-state.test.tsno longer hangs when a paused contender is resumed too early. - 1.93.27.0 (2026-11-02): A test can keep an old value on purpose without turning off
literals(#3490). - 1.93.26.0 (2026-11-02): Editing the GBrain setup guide no longer runs every paid eval case on a PR screen.
- 1.93.25.0 (2026-11-02): /setup-browser-cookies now warns that the fallback browser still trusts the compromised eMudhra intermediates (#3338).
- 1.93.24.0 (2026-11-02): The /ship workflow judge loses the contradiction it cited in every recorded red sample.
- 1.93.23.0 (2026-11-02): Four tests from the 2026-11-02 flaky pass stop failing correct runs, and one more names its cause when it fails.
- 1.93.22.0 (2026-11-02): see CHANGELOG.md
- 1.93.21.0 (2026-11-02): /ship's finding collector lets the native reviewer's own Severity field decide outside gate and risk reviews.
- 1.93.20.0 (2026-11-02): see CHANGELOG.md
- 1.93.19.0 (2026-11-02):
gstack-ship-receipt read --check-proseno longer reads the Documentation exception line or code fences as counter claims (GST-983, GST-984). - 1.93.18.0 (2026-11-02): A green Free Tests run at the pregate tree now clears gstack's remote gate, so a slow Ubicloud VM no longer blocks a PR whose CI already passed (GST-1024).
- 1.93.17.0 (2026-11-02): see CHANGELOG.md
- 1.93.16.0 (2026-11-02): see CHANGELOG.md
- 1.93.15.0 (2026-11-02): Pregate stops blaming a clean branch for a missing pytest, Playwright specs and mixed-language root tests, and the literals check stops flagging stray digits (#3598, #3492, gstack-evals#97).
- 1.93.14.0 (2026-11-02): Free Tests no longer goes red with no named file when one test hangs. Each
free-suitejob's GitHub timeout used to be a fixed 20 minutes, shorter than the runner's own wall for a 10-shard plan (about 37 minutes), so GitHub killed the job before the runner could name the hung file or retry it, and no shard result was uploaded. The plan now emits each shard's job timeout as its runner wall plus the flaky-retry pass plus the job's measured setup (--ci-plan --job-setup-seconds), 49 minutes per shard today, and fails loudly above 90 minutes instead of truncating. See docs/TESTING_INTERNALS.md#runners-how-the-suites-execute-2026-08-overhaul. Closes #3850. - 1.93.13.0 (2026-11-02): gstack's own tests no longer write into a developer's real gbrain.
- 1.93.12.0 (2026-11-02): The Opus 5.5
liteskills now keep the install's gbrain blocks, disabled skills and the Claims Need Evidence rule (GST-944). - 1.93.11.0 (2026-11-02): Capy sessions get their model's loadout again without a sentence in the skill (GST-982).
- 1.93.10.0 (2026-11-02): A test that keeps flaking while someone fixes it can be quarantined instead of skipped, and it still can't turn a red run green.
- 1.93.9.0 (2026-11-02):
gstack-ship-receipt read --check-proseno longer reads the required Review-loop exception line as counter claims (GST-977). - 1.93.8.0 (2026-11-02): /ship now runs Step 11's voices before any gate-class stop, and a recorded owner grant runs its fix-check.
- 1.93.7.0 (2026-11-02): A version stamp the branch added at its fork point's version now counts as stale after the base moves (GST-963).
- 1.93.6.0 (2026-11-02): /plan-tune now learns from answers to questions that aren't in its registry, when the skill says which preference the question is about (#3442).
- 1.93.5.0 (2026-11-02): The weekly OSV scan is clean again: qs and @hono/node-server are pinned past two Medium advisories (#3843).
- 1.93.4.0 (2026-11-02): /ship's finding collector reads severity from a finding's own Severity field, so a severity word in the finding's text no longer raises it.
- 1.93.3.0 (2026-11-02): The queue now refuses a head whose required targeted review is missing or failed (GST-966).
- 1.93.2.0 (2026-11-02): Native cookie import now waits for its browser to actually exit before it reports cleanup, and three more flaky tests from the 2026-11-01 flaky pass are repaired.
- 1.93.1.0 (2026-11-02): see CHANGELOG.md
- 1.93.0.0 (2026-11-02):
gstack-cleanreclaims the throwaway files that pile up in a repository's.gstack/folder, and changes nothing unless you pass--apply - 1.92.83.0 (2026-11-02): The sealed guard no longer rescans commits the destination already holds, so a stacked branch retargeted after its parent squash-landed stops being refused for the parent's history.
- 1.92.82.0 (2026-11-02):
gstack-review-dispatch verifynow catches a merged findings file edited after collect. - 1.92.81.0 (2026-11-02):
gstack-ship-release finishnow accepts the owner's edit after a fix-check instead of asking for another review round (GST-965). - 1.92.80.0 (2026-11-02): On a Capy machine, the git fixture tests no longer fail locally because of Capy's git shim log.
- 1.92.79.0 (2026-11-02): /plan-tune no longer reports a mismatch between your stated and observed preferences when it has no observed answers behind it (#3436).
- 1.92.78.0 (2026-11-02): Seven flaky tests from the 2026-11-01 flaky pass stop failing correct runs, and six more now name their cause when they fail.
- 1.92.77.0 (2026-11-02): The weekly marathon evals can run /design-motion again: the CI eval image now ships ffmpeg (#3687).
- 1.92.76.0 (2026-11-02): /retro now remembers its history across git worktrees, so a run in a linked worktree compares against last week instead of announcing "First retro recorded".
- 1.92.75.0 (2026-11-02): see CHANGELOG.md
- 1.92.74.0 (2026-11-02): see CHANGELOG.md
- 1.92.73.0 (2026-11-02): see CHANGELOG.md
- 1.92.72.0 (2026-11-02): The sealed guard can now refuse a published record that puts a label next to an identifier.
- 1.92.71.0 (2026-11-02): Four free-suite waits now end when the thing they wait for happens: the six files involved spend 18–29 s less in summed per-file runtime, with every assertion intact.
- 1.92.70.0 (2026-11-02): Five free-test files stop rebuilding the same git repositories for every test: they spend 17–24 s less in summed per-file runtime, with every assertion intact.
- 1.92.69.0 (2026-11-02): Background
--deriveruns no longer drop /office-hours sessions or fail with ENOENT when they overlap (#3437). - 1.92.68.0 (2026-11-02):
/healthnow finds its tools with gstack's detector, the same one/verifyuses, and a test proves it still finds every check it found before. - 1.92.67.0 (2026-11-02):
./setupno longer starts a handful of processes per skill just to read its name (#2120). - 1.92.66.0 (2026-11-02): The secrets check reads Python and Dart string context from what git diffed, and a quote inside an interpolation no longer ends a string (GST-738).
- 1.92.65.0 (2026-11-02): see CHANGELOG.md
- 1.92.64.0 (2026-11-02): /ship's Step 11 outside voice now defaults to the model it was tested with, and a same-family outside voice is refused.
- 1.92.63.0 (2026-11-02): A slot restamp after the docs audit no longer stops
finishwithDOCS: stale (CHANGELOG.md)(GST-906). - 1.92.62.0 (2026-11-02): see CHANGELOG.md
- 1.92.61.0 (2026-11-02): see CHANGELOG.md
- 1.92.60.0 (2026-11-02): Free test shards can now run their files as several sub-shards side by side inside one CI job.
bun run scripts/test-free-shards.ts --ci-run <plan> --shard <i> --result <file> --jobs <k>splits the shard into k parts that each run in their own sandboxedbun testprocess. The default stays at 1, so CI runs exactly as before until a workflow opts in. Bad--jobsvalues stop withFREE_JOBS_INVALID, a sub-shard that runs out of time printsFREE_SUBSHARD_TIMEOUTwith a serial reproduce command, and every CI shard result now records per-file test andexpect()counts. See docs/TESTING_INTERNALS.md#sub-shards-inside-one-ci-job. - 1.92.59.0 (2026-11-02):
test:healthand the factory scorecard leave reused main pushes out of their free-suite flake counts (#3725). - 1.92.58.0 (2026-11-02): A parent agent can now run the CEO-only review through the driver:
gstack-autoplan next --ceo-only(GST-537). - 1.92.57.0 (2026-11-02): Hermes can start gstack skills again (GST-882).
- 1.92.56.0 (2026-11-02):
gstack-ship-receipt writerecords the session kind on Windows.