gstack 1.79.0.0

1.79.0.0

/ship can no longer be stranded by a backgrounded subagent

Added 1
  • Test-pin the run_in_background flag per file to fail CI if the flag is missing at a synchronous dispatch site
Changed 1
  • Scope-guard the doc-sync subagent to docs only so it never changes VERSION, never merges the base branch, and skips the Codex doc review
Fixed 3
  • /ship can no longer be stranded by a backgrounded subagent
  • Add explicit run_in_background: false flag to four /ship steps (7, 8, 10, 18) that hand work to subagents and parse their final line as JSON
  • Add real failure handling to doc-sync dispatch that polls for about 10 minutes, stops the runaway task, reconciles any commit the subagent made against pre-dispatch HEAD, and ships the PR without the Documentation section instead of hanging

From gstack

/ship can no longer be stranded by a backgrounded subagent. The bug class that came back twice is pinned everywhere it lives. Claude Code v2.1.198 made Agent-tool subagents launch in the background by default. Four /ship steps (7, 8, 10, 18) hand work to a subagent and parse its final line as JSON, and none of them passed run_in_background: false, so a ship run could park forever on Step 18 waiting for doc-sync output that was never coming. This is the third time this class has bitten (#497 fixed it, #2440 regressed it, Step 18 rediscovered it). Every synchronous dispatch site in the skill tree now carries the explicit flag, and the flag is test-pinned per file so a fourth recurrence fails CI the moment it lands. The doc-sync dispatch also got real failure handling. If the dispatch gets backgrounded anyway, the parent polls for about 10 minutes, stops the runaway task, reconciles any commit the subagent made against the pre-dispatch HEAD, and ships the PR without the Documentation section instead of hanging. The subagent itself is scope-guarded to docs only: it never changes VERSION, never merges the base branch, skips the Codex doc review (the parent owns review passes), and reports a rejected push as pushed:false for the parent to reconcile.

View original

Upgraded? How did it go?

Discussion