What’s New

gstack 1.60.1.0

1.60.1.0

The /autoplan dual-voice eval is back on the board, catching real regressions.

Changed
  • The dual-voice eval proves both halves of /autoplan's Phase 1, with the Claude review subagent and Codex outside voice registering skills at project level like real installs
  • Eval harness now guarantees that when a spawned session hits its timeout, the runner returns everything it collected instead of waiting on orphaned child processes
Fixed
  • Eval timeouts now return evidence instead of hanging the suite

Eval timeouts now return evidence instead of hanging the suite. The dual-voice eval proves both halves of /autoplan's Phase 1, the Claude review subagent and the Codex outside voice, actually fire. It now registers its skills the way real installs do (project-level .claude/skills/), so it exercises the same slash-command path users hit. Claude Code 2.x resolves slash commands strictly from registered skills, and the eval's old sandbox layout predates that. The eval harness also gained a hard guarantee: when a spawned session hits its timeout, the runner returns everything it collected instead of waiting on orphaned child processes. Fixed: test/skill-e2e-autoplan-dual-voice.test.ts - sandbox installs /autoplan and its review skills at project level, matching real slash-command resolution on Claude Code 2.x; the transcript filter reads raw stream-json shapes; hang protection accepts the Phase 1 review dispatch as progress evidence; budget raised to 10 min / 40 turns. Fixed: test/helpers/session-runner.ts - on spawn timeout, cancel the stdout reader and race the stderr drain against child exit plus a 5s grace window, so orphaned grandchildren cannot hold runSkillTest past bun's per-test timeout.

View original