feat(vigil): interactive TUI wiring (slice 3 of 5) - #817
Draft
allen-munsch wants to merge 1 commit into
Draft
Conversation
Wire the vigil runtime (slice 2) into the interactive TUI loop behind the opt-in vigil feature. - run_interactive gains vigil wake/observance/ctl/hook receivers and drains plugin hook dispatch requests each iteration; idle poll slows from 20Hz to 1Hz while a vigil is active. - Vigil-wake select! arm observes a reap and launches the agent turn; post-turn dispatch fires on-vigil-observance via VigilBits and releases the in-flight flag. - decide_post_done_action gains a VigilSleep outcome so an active vigil suppresses loop/followup auto-restart (cfg-gated, no behavior change when vigil is off). - Left panel: PanelMode::Vigil, VigilStatusRow, VigilLeftPanel widget, Scene.left_panel_mode + vigil_data, /panel vigils, /vigil subcommands (add/start/stop/status/rest/pause/resume/remove), and live status polling through VigilCtl::StatusReq. Feature-OFF builds stay warning-clean (windows-default/no-plugin clippy and build matrix verified locally).
allen-munsch
force-pushed
the
vigil/03-tui-wiring
branch
from
August 25, 2026 03:14
f34aeab to
7776140
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Slice 3 of 5 in the vigil decomposition (stack #812, stacked on
vigil/02-core-runtime).Wires the slice-2 runtime into the interactive TUI loop behind the opt-in
vigilfeature. No dependency changes;Cargo.lockis untouched.What this does
run_interactivegains the four vigil receivers (wake / observance / ctl / hook) and drains plugin hook dispatch requests every iteration, so on-vigil-event / on-vigil-reap hooks fire even when a rite fails, a vigil is paused, or a dispatch happens from commands mode.select!arm observes a reap, stores pending-observance metadata, and launches the agent turn; the post-turn handler (VigilBits) then dispatcheson-vigil-observancewith:responseand:exitand releases the in-flight flag.decide_post_done_actiongains aVigilSleepoutcome so an active vigil suppresses loop/followup auto-restart. This is cfg-gated and is a no-op when the feature is off.PanelMode::Vigil,VigilStatusRow,VigilLeftPanelwidget,Scene.left_panel_mode+vigil_data,/panel vigils, and/vigilsubcommands (add/start/stop/status/rest/pause/resume/remove), with live status polling throughVigilCtl::StatusReq.Testing
test_post_done_action(includingVigilSleepordering),panel_data::duration_short_*, and the fullscene::testsset all pass.cargo fmt --check, the clippy matrix (--all-targets -- -D warningsfor default, windows-default, sandbox-microvm, all-features), and the build matrix (10 configs withRUSTFLAGS="-D warnings") are all green. Feature-OFF (windows-default/no-plugin) stays warning-clean.cargo test --bin dirge --all-features: 6041 pass; 13 failures are all pre-existingsandbox::microvm/e2e_microvm_attachcontainer-build tests, unrelated to this slice.Known gaps
on-vigil-observancedispatch assumes thepluginfeature is present whenvigilis; without it the hook is silently skipped (same as the slice-2 headless path).oneshotround-trip is awaited at the top of each UI iteration; under a slow keeper this could add latency, though the keeper answersStatusReqsynchronously.