Odin/state/map.yaml
Meta Vens 118f7503a8 Record why Odin cycles and add a projection authority probe
Live probe on yggdrasil: the queued deployment is not starved. Each time a
continuity restart completes it seals and publish_expected replaces the one
Expected slot for odin with the candidate's; the incumbent's next heartbeat
fails activation-expected-projection against its own catalog and it exits.
notes/odin-cycle-mechanism-2026-09-10.md carries the timeline, snapshots'
decode, the authority map, and the fork to decide. projection_authority_probe
is the ignored dev test that decoded the captured projection versions.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 21:43:35 +02:00

65 lines
3.2 KiB
YAML

# Odin deployment and admission map.
#
# This file describes a live system and is the fastest-rotting thing in the
# repository. Verify every line against the host before acting on it; the
# commands that do so are in AGENTS.md. Where this disagrees with yggdrasil,
# yggdrasil is right and this file is a bug.
verified_at: 2026-09-10T19:15Z
verified_against: yggdrasil (systemctl, idunn status)
deployment_authority:
managed_by: idunn-yggdrasil.service
binding: /etc/gamecult/idunn/bindings/odin.toml # on the host, not in this repo
recipe: deployment/idunn/recipe.toml
source_selection: ref-head on refs/heads/main
minimum_revision: 08965a44e135b393a130d62b075dc5036d2df901
runtime:
admitted: true
admitted_by: up-07cb1979-855c-4f4b-b63e-b4f3052105ba # 2026-09-09 22:17
release: sha256-61c32655577151a4ba389372abe67f313a86dfc09e9d1f34267238f66ff0fd67
# The live unit is idunn-odin-<activation-hash>.service and that hash changes
# on every restart. It is not this release hash. 318 failed unit residues
# were loaded on 2026-09-10T19:23Z, all with distinct hashes.
state_root: /var/lib/gamecult/odin
projection: /var/lib/gamecult/idunn-projection/topology.cc
route: /etc/nginx/idunn-stream-routes/odin.conf # rudp://10.77.0.1:17971
# Odin serves between restarts and exits 1 after 2.5-16 min per unit (14
# starts 18:03-19:23Z on 2026-09-10). The ~96 s figure is the RUDP ack
# timeout, not the unit lifetime; do not wait two minutes and call it stable.
# See notes/odin-deployment-handoff-2026-09-10.md before acting.
healthy: false
condition: cycling # each cycle = continuity restart, then the queued deployment seals and kills it
# A unit named odin.service exists in /etc/systemd/system and is `active` with
# MainPID 0. It owns no process and is not the running Odin. It has misled two
# separate readings; check -p MainPID before believing it.
decoys:
- unit: odin.service
state: active
main_pid: 0
owns_process: false
in_flight:
- command: up-fc005d83-79d4-418c-bc76-80d07dd6eff3
status: queued
armed: true # no cancel verb exists (R16); it fires when the target frees
carries: CultLib bump to a8aedda (commits 0e540ca, f7e3fc3), undeployed
brakes:
deployment_store: /var/lib/gamecult/idunn-authority/odin-deployment-brake.cc
lifecycle_store: /var/lib/gamecult/idunn-authority/odin-lifecycle-brake.cc
lifecycle_state: released # verified 2026-09-10T19:03:12Z from the brake file: released by idunn.root, reason continuity-restart
# A deployment brake release is release-specific and expires after 15 minutes;
# each attempt needs its own signature naming that exact transaction.
known_defects:
- lifecycle brake parks an in-flight continuity transaction on the target and
thereby blocks deployment, which estate doctrine forbids
- the queued deployment is not starved: it freezes each time the target
frees, and its Sealing publish_expected replaces the projected Expected
with the candidate's; the incumbent then fails activation-expected-projection
and exits (verified 2026-09-10T19:37Z, notes/odin-cycle-mechanism-2026-09-10.md)
- redeploying Odin destroys the observer Idunn needs to admit the replacement (R17)