69e4b63c6c
The subagent terminal-status classifier scanned the whole final report text for status keywords, so `\bBLOCKED\b` fired on the implement end-report's own template lines (`BLOCKED file: BLOCKED.md`, `Blocked detail:`) and on prose narrating a surmounted blocker. Shipped implement runs whose end-report reads `Status: DONE` were flipped to BLOCKED — making the agent-effectiveness axis actively misleading. Anchor on the structured `Status:` line of the end-report instead (the implement-orchestrator emits a fixed `Status: DONE|PARTIAL|BLOCKED|...` header, optionally markdown-bold). Fall back to a status token standing alone on its own line for agents that emit a bare terminal token; prose mentions and `BLOCKED.md`-style substrings no longer match. Agents with no structured status now read `unknown` rather than a fabricated BLOCKED. Add an executable spec (postmortem/tests/test_terminal_status.py, plain asserts, no pytest dep) pinning the issue-#3 case plus the genuine BLOCKED / bare-token / no-signal guards. RED before, GREEN after. Verified on the real AILang-style session 2811d227: 3 BLOCKED (one a false positive) -> 2 genuine BLOCKED + 13 honest unknown. closes #3