has_errorsstucktrueafter recovery once the error needle scrolled out of the read window — recompute everyRunningtick instead of gating on needle presence.statusregressedRunning→Startingonce theReadyneedle/URL scrolled out of the read window —Runningnow sticky, cleared only on process restart.
ToolDetector::match_output— addedprevious_status: ToolStatusparam.signal_matching::derive_status— addedprevious_status: ToolStatusparam.
- initial release: framework spec loader, vite detector, daemon discovery/worker loop