# gstack 1.69.0.0 — The silent-failure wave - Product: gstack (https://whatsnew.fyi/product/gstack) - Vendor: gstack - Date: 2026-08-22 - Version: 1.69.0.0 - Original notes: https://raw.githubusercontent.com/garrytan/gstack/main/CHANGELOG.md - Permalink: https://whatsnew.fyi/product/gstack/releases/1.69.0.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Zero-dispatch guard in setup that errors loudly when a host passes --host validation without an install arm instead of exiting 0 - **added** — ZeroEntropy sunset advisory with fail-open config detection in the wireup, provider-comment warnings in /setup-gbrain, and troubleshooting entry in USING_GBRAIN_WITH_GSTACK.md - **added** — lib/fs-utils.ts mkdirpSync with bun-Windows-emulating preload fixture applied to gstack-redact, gstack-redact-prepush, gstack-decision-log, and gstack-evidence - **added** — Repo-wide heredoc scanner that fails the free suite when any tracked shell script contains an unguarded 512B-64KiB heredoc - **changed** — land-and-deploy §4a-postfail MERGED recovery reconciles the remote branch and states the outcome instead of staying silent - **changed** — make-pdf resolves the sibling browse binary from process.execPath with an injectable test seam - **changed** — ./setup --host slate is now an informational exit pointing at --host claude - **fixed** — gstack-evidence scrubs bun-auto-loaded dotenv vars from the child env by value equality, with shell-exported overrides surviving and NODE_ENV=test semantics mirroring bun's, and unreadable .env failing open - **fixed** — Wireup first sync targets the registered source id instead of the default source - **fixed** — cleanup_old_claude_symlinks reaps orphans from the DESTINATION skills dir with path-segment provenance - **fixed** — gstack-memory-ingest stores the normalized _unattributed remote so repo policies keyed to it apply under --include-unattributed - **fixed** — Hermetic gbrain-missing PATH fixture eliminates false green on every machine with a real gbrain install gstack-evidence certified runs whose environment differed from CI's, because bun auto-loaded the repo's .env files into every child it spawned. The gbrain wireup's first sync targeted the brain's default source, which could silently repoint a user's primary knowledge source at the gstack worktree while the just-registered source got zero pages and still print a success line. ./setup --host slate exited 0 having installed nothing. land-and-deploy's merge recovery re-established everything except the --delete-branch half it had promised, and said nothing. A _unattributed → deny ingest policy never applied to exactly the pages it names. Skill-dir cleanup structurally could not find orphans. And a false-green test fixture meant the gbrain missing case could never fail on any machine with a real gbrain installed. Six new fixes; five community PRs absorbed with credit; ~17 tracker items close with receipts. Added: Zero-dispatch guard in setup: a host that passes --host validation without an install arm errors loudly instead of exiting 0 having configured nothing. ZeroEntropy sunset advisory: fail-open config detection in the wireup, provider-comment warnings in /setup-gbrain, and troubleshooting entry in USING_GBRAIN_WITH_GSTACK.md. lib/fs-utils.ts mkdirpSync with bun-Windows-emulating preload fixture, applied to gstack-redact, gstack-redact-prepush, gstack-decision-log, and gstack-evidence. Repo-wide heredoc scanner: any tracked shell script with an unguarded 512B-64KiB heredoc fails the free suite. Changed: land-and-deploy §4a-postfail MERGED recovery reconciles the remote branch and states the outcome instead of staying silent. make-pdf resolves the sibling browse binary from process.execPath with an injectable test seam. ./setup --host slate is an informational exit pointing at --host claude. Fixed: gstack-evidence scrubs bun-auto-loaded dotenv vars from the child env by value equality; a shell-exported override with a different value survives; NODE_ENV=test semantics mirror bun's; an unreadable .env fails open. Wireup first sync targets the registered source id, never the default source. cleanup_old_claude_symlinks reaps orphans from the DESTINATION skills dir with path-segment provenance. gstack-memory-ingest stores the normalized _unattributed remote so repo policies keyed to it actually apply under --include-unattributed. Hermetic gbrain-missing PATH fixture kills a false green on every machine with a real gbrain install.