Folds the /heartbeat driver into the existing /loop poll slot (one cadence, one try/except table) and closes the consumed-tick gap: a dispatch that raises OR is refused by _admit_prompt_turn (returns False) releases the session claim and rewinds the persisted fire via HeartbeatManager.abandon_fire(), so the tick stays due for the next poll instead of advancing fire_count with no turn. abandon_fire refuses to overwrite a pause/resume/clear that landed between claim and dispatch (mirrors LoopManager.abandon_tick). Tests use the real SessionDB under a temp HERMES_HOME and drive the poller loop itself; docs note the TUI/Desktop surface. Rollback-on-failure idea credited to jerrygooch (#104011, 51df1ed4d04 / 283fa972169); the driver placement is Halldrix's (#102118). Reported in #102056 / #103044 (Vksh07).
3 lines
44 B
Plaintext
3 lines
44 B
Plaintext
Halldrix
|
|
# PR #102118 /heartbeat TUI driver
|