github garrytan/gstack v1.96.0.0
gstack v1.96.0.0

7 hours ago

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-deploy or /modernize to 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 new manual_only: true template flag maps to disable-model-invocation: true on the Claude and Cursor hosts, and host conditionalFields now 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.read returns 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_dispatch item with a marker: used to count as met once the marker line was printed and any Agent call followed it, even an unrelated one. A contract that gives agent_dispatch a marker is 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 its match. No shipped contract used a marker there. The Stop hook's block message and gstack-skill-contract check now name the waive command by the full path of the installed gstack-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 ready no 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_DEFAULT in lib/skill-route.ts (both still off), which setup, both hooks, gstack-config get|list|defaults and the new gstack-skill-route --default <switch> all read, so changing a default is a one-line edit; gstack-config list and defaults now 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) and node --test still count, and the Stop hook lets a final stop through while Agent dispatches are still running, recording the run as deferred, then checks the contract once the same agents have been running for 10 minutes; gstack-skill-contract report re-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 --timeout reaches 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-pregate preflight 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_paths keeps 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 render no 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-routing adds a UserPromptSubmit hook that names the gstack skill a prompt fits, scored against each installed skill's triggers: with no model call. ./setup --skill-contracts adds a Stop hook that blocks once when a skill with a contract: 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 --explain shows how a prompt scores; gstack-skill-contract check|report|waive checks a transcript, lists misses and acknowledges a waiver. Turn either off with gstack-config set skill_routing off or gstack-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-production or 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-preflight no longer trusts a local origin/HEAD when 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): browse starts again when proxy credentials come from BROWSE_PROXY_USER and BROWSE_PROXY_PASS.
  • 1.93.29.0 (2026-11-03): A gbrain serve --http on 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.ts no 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-prose no 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-suite job'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 lite skills 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-prose no 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-clean reclaims 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 verify now catches a merged findings file edited after collect.
  • 1.92.81.0 (2026-11-02): gstack-ship-release finish now 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 --derive runs no longer drop /office-hours sessions or fail with ENOENT when they overlap (#3437).
  • 1.92.68.0 (2026-11-02): /health now finds its tools with gstack's detector, the same one /verify uses, and a test proves it still finds every check it found before.
  • 1.92.67.0 (2026-11-02): ./setup no 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 finish with DOCS: 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 sandboxed bun test process. The default stays at 1, so CI runs exactly as before until a workflow opts in. Bad --jobs values stop with FREE_JOBS_INVALID, a sub-shard that runs out of time prints FREE_SUBSHARD_TIMEOUT with a serial reproduce command, and every CI shard result now records per-file test and expect() counts. See docs/TESTING_INTERNALS.md#sub-shards-inside-one-ci-job.
  • 1.92.59.0 (2026-11-02): test:health and 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 write records the session kind on Windows.

Don't miss a new gstack release

NewReleases is sending notifications on new releases.