Behavioral invariant contract for the host operator console state machine — primarily crates/jackin-console/src/tui/state/manager.rs and the screen update modules. Phase 2 console/view-model work and settings/editor unification must preserve every INV below.
Covers the console's stage/modal stack, service-poll → state handoff, launch prompts, list/editor/settings surfaces, and how background services report back into ManagerState. Does not cover capsule-side attach (see Capsule daemon) or the pure op-picker planning machine (see op_picker).
manager.rs has no sibling tests.rs. Citations below lean on tui/model/tests.rs, settings/op-picker tests, and screen update tests. That asymmetry is signal: characterization of the manager itself is the prioritized gap.
Pending role-load / drift-check / isolation-cleanup / op-commit results are polled into manager state rather than written from background tasks directly
poll_pending_* methods on manager-facing traits
MISSING
INV-C10
Instance refresh is throttled (InstanceRefreshThrottleState) so list polls do not stampede Docker
throttle state in manager
MISSING
INV-C11
Mount-info cache refresh targets are explicit (MountInfoRefreshTarget) so screens do not re-fetch whole trees on every frame
Compared with the capsule daemon (thousands of lines of daemon/tests.rs), the console manager is under-specified in tests. Prefer adding MISSING-closing tests here before large view-model refactors.