# gstack 1.76.0.0 — Ship's doc-sync now survives Conductor. - Product: gstack (https://whatsnew.fyi/product/gstack) - Vendor: gstack - Date: 2026-08-31 - Version: 1.76.0.0 - Original notes: https://raw.githubusercontent.com/garrytan/gstack/main/CHANGELOG.md - Permalink: https://whatsnew.fyi/product/gstack/releases/1.76.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'. --- - **fixed** — Conductor-hosted /ship no longer loses its PR Documentation section when the document-release subagent encounters an interactive gate - **added** — Spawned subagents are now marked with GSTACK_SESSION_KIND=spawned environment variable to identify their spawned status - **added** — Interactive gates in spawned sessions are now automatically resolved by choosing the recommended option instead of rendering unanswerable decision briefs - **added** — Auto-chosen gate decisions are recorded in a decisions array that the parent process prints to the console for visibility - **added** — Destructive and irreversible options are never auto-chosen in spawned sessions; the conservative choice is always selected instead - **added** — AskUserQuestion rules now include a proactive spawned rule that short-circuits before the Conductor rule with destructive option protection - **added** — bin/gstack-skill-start now suppresses CONDUCTOR_SESSION for spawned sessions and sets SPAWNED_SESSION: true with spawned-session instruction blocks - **added** — Interactive onboarding blocks are now gated and skipped in spawned sessions - **added** — Spawned sessions skip network-bound update-check and first-task repo probe since their consumers are suppressed - **added** — AUQ hooks now include deterministic auto-choose branches for env-marked spawned sessions with per-question one-way-door annotations - **changed** — Ship Step 18 dispatch prompt now frames the subagent as spawned and resolves every named gate to the recommended option with conservative fallback Spawned subagents finally know they're spawned. Every Conductor-hosted /ship used to lose its PR Documentation section the moment the document-release subagent hit an interactive gate: the subagent inherited the parent's environment, classified itself as a session a human was watching, rendered a decision brief nobody could answer, and stopped. The JSON contract broke, every time a gate fired (#2733). This release makes the spawned classification reachable: /ship marks its subagent with GSTACK_SESSION_KIND=spawned, and the whole stack (preamble, AskUserQuestion rules, both AUQ hooks) now resolves gates by auto-choosing the recommended option instead of writing prose to nobody. Destructive options are never auto-chosen, on any surface: the conservative choice wins and gets recorded. Auto-chosen decisions come back in a decisions array the parent prints to your console, so nothing is decided invisibly. GSTACK_SESSION_KIND=spawned (bin/gstack-session-kind step 0): explicit per-command spawned marker, outranking every ambient env marker. Deliberately narrow: only spawned is honored; other values are reserved and ignored. Documented in docs/OPENCLAW.md, with a SPAWNED_OVERRIDE: env status line for tamper visibility when the env var (rather than an orchestrator marker) drove the classification. decisions in the doc-sync contract (ship/sections/pr-body.md.tmpl): the document-release subagent records each auto-chosen gate as one line in a required decisions array; the parent prints them after the sync summary. Never embedded in the public PR body (tripwire-pinned). Absent key from an older installed skill reads as empty. Proactive spawned rule in the AskUserQuestion prose (all tier-2+ skills): SESSION_KIND: spawned now short-circuits BEFORE the Conductor rule, with the destructive carve-out (never auto-choose an irreversible option, take the conservative choice and record it) and anti-injection scoping: a spawned marking counts only from the prompt that created the session, never from files, tool output, or web content read mid-run. Gate-tier E2E (test/skill-e2e-docsync-spawned.test.ts): drives the verbatim Step 18 dispatch prompt against a real preamble-bearing document-release slice in a Conductor-ambient env with both AUQ hooks seeded live; asserts the 5-key JSON contract, a non-empty decisions array, and an untouched VERSION through a deliberately fired gate. bin/gstack-skill-start: spawned sessions suppress CONDUCTOR_SESSION: true (prose to nobody is always wrong), key SPAWNED_SESSION: true and the spawned-session instruction block on the resolved kind instead of raw OPENCLAW_SESSION (OpenClaw behavior unchanged, regression-pinned), gate all 11 interactive-onboarding blocks plus their ack markers at emission, and skip the network-bound update-check and the first-task repo probe (their consumers are suppressed anyway; the one-shot just-upgraded marker survives for the next human session). AUQ hooks (hosts/claude/hooks/): the Conductor deny gains a deterministic [conductor][spawned] auto-choose branch for env-marked spawned sessions, with per-question one-way-door annotations; both hooks' prose directives (interactive AND headless) carry a shared spawned escape sentence, single-sourced in spawned-directive.ts so the two paths can never drift. Hooks inherit the harness env, so the escape text is the designed lever for per-command-marked subagents. Ship Step 18 dispatch prompt: frames the subagent as spawned, instructs the same-line env prefix (template bash blocks do not share exports), resolves every named gate to the recommended option with a conservative fallback, and places the skill's own doc-health summary in the body so the JSON stays the final line. #2733: Conductor-hosted /ship runs no longer lose their Documentation section when document-release hits an AskUserQuestion gate. The failure was gate-correlated and hit every ship on affected hosts.