Liveness gates presence: route challenge and topology refresh only for a running incarnation #7
Loading…
Reference in a new issue
No description provided.
Delete branch "hands/liveness-gates-presence"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Cut spec
idunn-reincarnation:cut_spec:cut-liveness-gates-presence.r1.Cause
supervise_one_admitted_generationran route challenge (supervise_admitted_route) and topology refresh (refresh_admitted_topology) for every admitted generation beforeworkload.observehad said whether its incarnation was alive. A dead or parked incarnation was re-proved every tick. On Yggdrasil that was exactly 100 lines per 2 minutes each of the ghostlight write-lease line and the ghostlight/raven-muninn topology line, both targets stopped and lifecycle-braked. The pre-challenge write-leaseensure!bailed beforerecord_failed_challenge, so nothing backed off either (route-continuity-cut F8 recorded it and it was never decided).Change (src/control_plane.rs)
observe_exactverdict insupervise_admitted_route(lease driver is still built for the closure's post-proof check; lease health is decided once, in the liveness branch).if observation.is_some(), after the incident close, route then topology, with a doc comment naming F8. Bareeprintln!becamereport_oncekeyedroute-supervision:<target>/topology:<target>, withclear_faultonOk(_).provisioning::replace_lifecycle_brakeis nowpub(crate)so a test can engage the brake; the routed fixture's lifecycle brake store points into the test world (same Missing behaviour as before otherwise).Tests
a_parked_routed_target_is_not_route_supervised(negative, 100 ticks, stateful, dead, lease empty, brake engaged, route drifted: no reload/program, envelope byte-identical, no transaction, no route fault key)a_dead_generation_does_not_take_odin_correlations(negative: neither a newer binding nor a non-binding reading is taken or reported)a_running_generation_with_a_non_binding_correlation_is_reported_once(said once, cleared on withdrawal, adopted on a binding reading)a_dead_unit_is_restarted_without_a_route_challenge(rewrite ofa_failed_challenge_and_a_dead_unit_in_one_tick_do_not_lose_a_cas)Mutation checks: moving the calls back before liveness fails the first, second and fourth; bare
eprintln!instead ofreport_oncefails the third; droppingclear_faultonOk(false)fails the third.Full lib suite as root in a bwrap sandbox: 695 passed, 3 failed.
two_stop_then_start_transactions_never_both_enter_startingpasses solo (load flake); the twohost_actuatortests (ufw ... Bad port '0') fail identically on main7eae1c4.What this gives up
report_once), so a recurring identical line is no longer a heartbeat.Brakes still gate mutation only (raven-muninn-brake-and-stop untouched).
🤖 Generated with Claude Code