The silent-failure wave
- Zero-dispatch guard in setup that errors loudly when a host passes --host validation without an install arm instead of exiting 0
- 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
- 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 that fails the free suite when any tracked shell script contains an unguarded 512B-64KiB heredoc
- 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 now an informational exit pointing at --host claude
- 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
- Wireup first sync targets the registered source id instead of 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 apply under --include-unattributed
- Hermetic gbrain-missing PATH fixture eliminates false green on every machine with a real gbrain install
From gstack
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.