mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-08-28 05:27:41 +00:00
Follow-up cleanup on the human-input timeout work. - Drop the `unresolved_interviews` counter from `InterviewBlockState`. It duplicated `blocked_stages`, which is non-empty exactly when the run is blocked. - Publish block state before emitting `run.blocked` / `run.unblocked` in both directions, so a listener reading `subscribe()` from an event callback never sees state that disagrees with the event. The watchdog still gets a full fresh deadline because it restarts on the unblock transition. - Stop panicking in `InterviewBlockState::resolve`. It runs from `Drop`, where a panic during unwind aborts the process. - Replace the emitter's `activity_revision` watch channel with a monotonic timestamp. `record_activity` runs on every agent stream delta, and the channel woke the watchdog task and re-armed its timer per event. The watchdog now samples `last_activity()` when its deadline fires and re-arms only if the run was active, so the hot path is one clock read and one relaxed store. - Remove the now-unused `last_event_at()` and `epoch_millis()`. - Collapse the duplicated blocked/unblocked `select!` arms in `monitor_for_stall` and `timeout_excluding_interview_wait` into one loop each, using a branch precondition to park the timer while blocked. - Handle a dropped block-state sender in `timeout_excluding_interview_wait` by falling back to a plain deadline instead of panicking, which also removes a potential busy loop. - Only compute `stage_id` when the node actually has a timeout. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| fabro-acp | ||
| fabro-agent | ||
| fabro-automation | ||
| fabro-checkpoint | ||
| fabro-dump | ||
| fabro-environment | ||
| fabro-github | ||
| fabro-graphviz | ||
| fabro-hooks | ||
| fabro-install | ||
| fabro-interview | ||
| fabro-llm | ||
| fabro-manifest | ||
| fabro-mcp | ||
| fabro-mcp-store | ||
| fabro-sandbox | ||
| fabro-slack | ||
| fabro-store | ||
| fabro-tool | ||
| fabro-tracker | ||
| fabro-validate | ||
| fabro-variable | ||
| fabro-workflow | ||