You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
watch: no verification gate - round success is the child process exit code, nothing builds, tests, or lints the resulting work #1712
Nothing in the squad watch path verifies that the work an agent produced actually builds, passes tests, or lints. A round is considered successful purely on the spawned child process exit code.
result.success comes from spawnAgent() in watch/agent-spawn.ts:190-211, which resolves { success: true } on child exit code 0 and { success: false, error } otherwise.
Grepping the whole watch/ tree for npm test, lint, or any build invocation returns only unrelated buildAgentCommand / buildAgentPrompt identifier matches. No capability in any of the four phases (pre-scan, post-triage, post-execute, housekeeping) runs the repository's tests, build, or linter.
Impact
The agent CLI exits 0 whenever it completed its turn, regardless of whether the resulting code compiles. "Agent finished talking" is being treated as "work is good".
An unattended overnight run can push a series of green-looking rounds while leaving the branch broken.
The repo already declares its own feedback loops in package.json (test, lint, lint:eslint, build), so the signal is available and free - it is simply never consulted.
Proposal
Add an opt-in verification gate capability that runs after execute in the post-execute phase:
Resolve the project's declared checks. Start with a verify block in watch config (list of shell commands), defaulting to auto-detection from package.json scripts (build, test, lint) when present.
Run them in the agent's working directory after the agent turn completes.
Treat a non-zero result as a failed round for that work item, not a successful one - surface it in reportBoard() and feed it into failure tracking.
Make it configurable (verify: false to opt out) so existing users are not broken.
This turns "the child process exited" into "the repository still works", which is the difference between an autonomous loop and an unattended one.
Activity
Verify work after watch dispatches
Verify work after watch dispatches
Verify work after watch dispatches