mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-26 21:47:20 +00:00
b3b5ad6e1f
Patrol investigations inferred their outcome from prose markers, so a bold or bulleted RESOLVED line became the terminal needs_attention and the finding was never investigated again. Timeouts clustered on subscription agents. Patrol's 60s stream idle timeout bounds a whole buffered CLI turn there, three investigations queued on one serial CLI slot, and the final summary call was capped at 20s. - Add patrol_conclude_investigation, an investigation-only, side-effect-free capture of resolved, cannot_fix or needs_attention. It is carried on InvestigationRunResult and OrchestratorInvestigationResult. - After a conclusion, the next turn is the summary. The final turn offers only the tools that end a run. A deadline reserve makes the current turn final before the run times out, and the summary call may use the time left. - Give investigation turns on subscription agents a 4-minute turn budget, a 25-minute default timeout and one investigation at a time. These limits are republished on config reload without holding the service lock across the Patrol lock. - Derive Patrol's outer deadline from the effective timeout. Sessions now carry their own deadline, and the stuck-run sweep measures a live run against it, so neither a lowered timeout nor the previous run's time resets a running investigation. - Record a run orphaned by a restart as interrupted, not timed out. A first investigation cut short that way used to stay running for good, which also blocked a manual re-run. Recovery applies only while the finding still shows that run, takes a result the run's session already recorded, and keeps an action outcome such as fix_queued. - Add unclassified and interrupted outcomes, with lifecycle, telemetry bucket, digest and record handling.