Commit graph Odin/docs
Author SHA1 Message Date
Meta Vens
8e1de662c7 Write map: C5 Hands landed on a branch; Soul pending the operator's go
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 01:04:24 +02:00
Meta Vens
f901b38fb7 Write map: CultLib side landed (Cut D, R1, put-serve); C5 next
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 23:41:04 +02:00
Meta Vens
665dc0856c Recovery map: Bifrost container lane deleted and its legacy route retired on Yggdrasil
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 21:50:45 +02:00
Meta Vens
2fa1bffc38 Recovery map: R1 landed at CultLib daedfdd6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 21:13:56 +02:00
Meta Vens
1262fcdcb5 Recovery map: live zero-byte stores moved aside; ops merged
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 20:49:11 +02:00
Meta Vens
3854bb5eaf Recovery map: R1 batch 3 Soul (merge); symlink, fsync and encode-refusal follow-ups; live-file order
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 19:50:57 +02:00
Meta Vens
07501c7c6e Write map: Q5-A and Q5-B ruled A (withhold ACK until answered; hold puts on a stall)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 19:05:55 +02:00
Meta Vens
95522dcd0e Write map: Q5 cut map (C5 deferred put reply, W0 pin bump, W1 writer thread); Q5-A, Q5-B open
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 19:03:15 +02:00
Meta Vens
47850dfcd6 Write map: Q5 ruled A (writer thread with group commit)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 18:43:46 +02:00
Meta Vens
59ef4da9dd Write map: Soul on batch 3 (not fit to deploy); Q5 where the durable write runs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 18:34:36 +02:00
Meta Vens
57cf8df181 Recovery map: R1 batch 2 Soul verdict (hold); zero-byte live stores block consumer pins
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 18:20:40 +02:00
Meta Vens
80af7ef041 Odin map: Q3 B supersedes the Cut 2 effect row; Cut 2 deploys with Cut 3 Odin half
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 16:43:41 +02:00
Meta Vens
e7fbbbcade Store recovery map: R1 status; Muninn reset script must move with its next CultLib bump
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 16:23:56 +02:00
Meta Vens
cdc57bda2d Store recovery map: Q-R1..R6 ruled; Idunn watchdog reporting to Discord is a new campaign
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:40:44 +02:00
Meta Vens
1d9bc0246d Map Odin store repair and recovery
Operator: "None of these options involve repair and recovery, which is what
ultimately needs to happen." Q-R1..R6 open; R1 (CultLib typed read failures,
temp cleanup) does not depend on them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:30:37 +02:00
Meta Vens
77373cb563 Odin map: Q3 B (durable put ACK); foreign-write handling must repair and recover
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:06:06 +02:00
soul-probe
8c84857670 Odin map: Q2 decode result; the oversize records are dead Ghostlight residue
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 13:22:58 +02:00
soul-probe
ae8fa5571f Odin map: Q1 yes (refuse unservable puts), Q2 yes (decode a store copy)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 13:09:31 +02:00
soul-probe
4b525b463c Map Odin's write pattern: memory working set, one write per interval
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 12:39:32 +02:00
soul-probe
106dfb8327 Docs: Idunn owns deployment and daemon survival; Odin does discovery only
README and architecture.md called Idunn "Odin's keepalive organ", listed
crates/idunn-daemon (not in this repo) and the deleted odin-core idunn.rs
as its body, described the Node coordinator's process lifecycle, refresh
loop and Docker/ADB probes as Odin's runtime body, and pointed at the
deleted start-odin.ps1. Rewritten to the live truth: Idunn builds, activates,
restarts and brakes every target, Odin included; odin-daemon reads Idunn's
projection, admits presences, publishes correlation records and answers RUDP
requests; process lifecycle is not Odin's.

The dated ledger (transport-shortcut-inventory.md), notes/ and the Hermodr
extraction plan are history and are left as written.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 00:25:20 +02:00
Meta Vens
d41c744b2e Muninn has one body: drop the workspace copy
The three muninn crates, their seventeen actuator scripts, the two Raven
capture-mux wrappers that called one of them, and the two Muninn docs all
leave this workspace. GameCult/Muninn has carried them since 2026-09-09 and
has moved on (media stream advertisement, receivers dialling the producer);
this copy was a fork drifting behind under the same name, and gamecult-ops
now binds every Muninn target to the Muninn repository. Odin keeps the
Muninn records in odin-core until they are moved; that is the remaining
piece of the extraction.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 23:39:16 +02:00
Meta Vens
a60c4b08f9 Record Phase 5 as done
Static lowering landed in GameCult/Hermodr: a library and CLI rendering a
surface graph to standalone HTML through the same renderer the browser uses,
with command controls inert because a static page has no back-channel.

All five phases of the Hermodr extraction are complete. This document stays as
the record of what left Odin and why.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 20:19:38 +02:00
Meta Vens
3f22fd1d76 Hermodr leaves Odin
Hermodr is a browser lowering, not an all-seer organ. It lived here as Node
inside a Rust repository, sharing a module directory with the coordinator, and
until this week it ran its own provider ingress and accepted publications into a
private store. The ingress went first on purpose: extracting it beforehand would
have relocated a second acceptance authority and called that progress.

Removed: the daemon, its provider subscription source and state stream, both
test files, four lifecycle scripts, the persona avatar, the hermodr:start
script, and src/odin/utils.cjs, whose only remaining consumer was Hermodr and
which it used for one of six functions.

src/odin/ falls from fourteen modules to eleven. The CommonJS surface falls from
sixteen files to twelve. What is left is the coordinator, the Rust organs, and
two adapters declaring contracts other repositories own.

The plan document stays as the record of what left and why. Phase 5, static
lowering, is Hermodr's business now.

5 tests pass, syntax check clean over twelve files.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 19:46:06 +02:00
Meta Vens
907db01329 Record Phase 1 as done by splitting rather than moving
The plan said move idunn-rudp.cjs to Idunn. Reading it first showed that would
relocate 311 lines of generic CultNet transport into a Rust repository and hand
Odin a fragile sibling-path dependency. The split was taken instead: transport
to CultLib beside the RUDP session it builds on, constants documented by Idunn,
a 65-line adapter left in Odin declaring that contract.

Phases 1 and 2 are both complete. documents.cjs is now the only genuinely shared
dependency standing between Odin and a future Hermodr repository, which makes it
Phase 3's single remaining question.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 19:30:34 +02:00
Meta Vens
4c2b022df3 Record Phase 2 as done and why Phase 1 was not
Phase 2 landed: Hermodr reads providers through Odin-advertised routes instead
of accepting publications into a private store.

Phase 1 did not, and the plan now says why instead of leaving a specification I
had already found to be wrong. Reading idunn-rudp.cjs before moving it changed
the answer: 13 of its 324 lines mention Idunn and most are error strings. The
Idunn-owned content is two constants. The other 311 lines are generic CultNet
transport, and moving them into a Rust repository with no Node packaging would
also hand Odin a cross-repo sibling-path dependency of exactly the kind that
broke Erycina's provider publisher when that repository moved. It buys nothing
until Hermodr leaves in Phase 4, because both consumers still live here.

Three ranked options recorded. The one I would take splits the transport into
CultLib beside cultnet-ts and leaves Idunn owning its connection ID and schema
name, which removes the sibling-path bug rather than relocating it. That is
larger than this phase assumed and touches CultLib, so it wants a decision
rather than being folded in quietly.

Also dropped idunn:build and idunn:start from package.json. They invoke
cargo -p idunn-daemon, and that crate left Odin with the extraction.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 18:43:09 +02:00
Meta Vens
9282ea9dd6 Correct the Hermodr plan: Odin is a directory, not a state owner
The previous revision assigned provider ingress and live-publication acceptance
to Odin, and described Hermodr as a second Odin holding a parallel instance of
the same store. Both claims were wrong, and the second was asserted without
checking.

Odin is a rendezvous organ. It publishes what state is available, what schema
speaks it, and where to reach it. It is not in the data path, and it never
carried this state: neither odin-coordinator.cjs nor any Odin test references
OdinLivePublicationSource or provider-session-ingress.cjs. Those modules are
Hermodr's own state machinery wearing Odin's name and filed under src/odin/,
which is what made it read as sanctioned.

So there is no second Odin. There was never a first one for this state. The cut
is not to hand acceptance back to Odin, which does not want it, but to delete it
and have Hermodr resolve providers through the catalog and subscribe to them
directly.

The command path already models this correctly. findProviderCommandRoute looks a
route up in the catalog and publishes to the provider's own endpoint, and
Erycina's surface names Odin as discoveryOwner while pointing canonicalSurfaceUri
at Erycina's own address. The retrofitted leg got the architecture right; the
original state leg did not.

Dependency picture corrected by actual reference counts. Only documents.cjs and
idunn-rudp.cjs are genuinely shared with the coordinator. utils.cjs,
live-publication-source.cjs, and provider-session-ingress.cjs are Hermodr-only
and leave with it or are deleted, which shrinks src/odin/ from fourteen modules
to ten and removes the documents.cjs decision from the critical path of
everything else.

Negative checks now include the one that matters for the corrected model: with
Odin stopped, existing provider subscriptions must keep delivering. If they do
not, Odin is in the data path and the plan failed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 18:29:27 +02:00
Meta Vens
baed89bbd8 Plan the Hermodr extraction and authority cut
Hermodr is described as the Eve-to-browser lowering bridge. It is also a second
provider ingress and a second acceptance authority: main() constructs its own
OdinLivePublicationSource, binds its own provider session with its own token,
accepts publications into that private Map, and serves them to browsers. Odin's
coordinator holds a separate instance over the same providers with no
reconciliation. A surface reaches a browser only if its provider binds to
Hermodr, which makes a required ingress out of something named a bridge.

The intent path is not the problem and is kept as-is. POST /hermodr/commands/eve
is generic across providers, wraps intent as gamecult.eve.command.v1, stamps
itself as the relay rather than the author, publishes to the provider's
advertised route, and returns a receipt. Eve's client dispatches controls
through it and refuses anything that is not a correlated receipt in state
reconciled.

The defect is that the loop does not close. Intent leaves by CultMesh to the
owner of the consequence; the consequence returns only through Hermodr's private
ingress. A provider must publish twice for the Verse to be correct and for the
operator to see their own action land. Cutting the acceptance authority is what
closes it: with the state leg subscribed to Odin-accepted state, a command's
effect returns by the same route as every other change.

The plan orders the work so the authority cut happens in place, before any file
moves, because an extraction that carries the split brain into a new repository
has only changed its address. Static lowering lands last and as a library with a
CLI, since emitting bytes from a graph earns no daemon, and requiring one would
reintroduce the dependency static lowering exists to remove.

Records five open dependencies, three phases of subtraction, and negative checks
that prove the old path can no longer accept, no longer override, and no longer
paper over Odin being absent.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 18:24:30 +02:00
Meta Vens
222fe03896 Move Idunn's unit files, docs and operator scripts out of Odin
Completes the extraction. Unit files and documentation went to the Idunn
repository, where a service's own deployment surface belongs. Operator scripts
went to gamecult-ops, which is where fleet tooling lives.

To Idunn: scripts/linux/idunn-yggdrasil{,.service,.sudoers}, docs/idunn.md,
docs/idunn-deployment-authority.md,
docs/idunn-signed-daemon-health-authority.md, src/Idunn/README.md.

To gamecult-ops/scripts/idunn/: the eight PowerShell and cmd operator tools --
deployment targets, startup install, swarm coverage health, operator alarm
notification, local start.

Staying in Odin, deliberately: crates/odin-core/src/idunn.rs, Odin's own
projection of Idunn state for aggregation; src/odin/idunn-rudp.cjs, its client
for talking to Idunn; test/idunn-signed-health.test.cjs, its own integration
test; and deployment/idunn/recipe.toml, which despite the path builds
odin-daemon and is Odin's recipe expressed in Idunn's format.

docs/transport-shortcut-inventory.md is a dated evidence ledger citing several
of the moved script paths. Its entries are left as written and a path note
added at the top -- rewriting a ledger to match a later reorganisation would
destroy the record it exists to keep.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-05 18:16:38 +02:00
Meta Vens
d527d72700 Map Idunn source actuation authority 2026-09-03 00:36:41 +02:00
Meta Vens
cebe4259ce Simplify Idunn deployment authority contracts 2026-09-02 21:02:30 +02:00
Meta Vens
d44881fb4a Define Idunn deployment authority contract 2026-09-02 18:31:13 +02:00
Meta Vens
32cbb5f028 Bind Idunn deployment and runtime admission 2026-09-02 13:53:07 +02:00
Meta Vens
32009991ee Retire unadmitted Gjallar transport claims 2026-08-25 04:38:28 +02:00
Meta Vens
06a297d122 Retire Nightwing Gjallar from active state 2026-08-25 04:29:07 +02:00
Meta Vens
1fc13e0df6 Let systemd own unsigned Gjallar continuity 2026-08-24 20:58:33 +02:00
Meta Vens
22897fdbaa Refresh Gjallar Yggdrasil memory 2026-08-24 20:51:02 +02:00
Meta Vens
98c67e3579 Move Gjallar supervision to Yggdrasil 2026-08-24 20:40:19 +02:00
Meta Vens
28c0497260 Bound Idunn operational history 2026-08-23 00:54:06 +02:00
Meta Vens
f875a6e795 Bound Idunn authenticated health history 2026-08-23 00:40:52 +02:00
Meta Vens
0ed9562387 Document Heimdall discovery admission 2026-08-22 04:08:47 +02:00
Meta Vens
d418523d05 Rotate one provider health trust signer 2026-08-22 02:37:57 +02:00
Meta Vens
3ec90d59f6 Witness Heimdall source-selected releases 2026-08-22 02:17:55 +02:00
Meta Vens
209bb6e166 Document source-selected release authority 2026-08-21 21:28:54 +02:00
Meta Vens
7c5246fc09 Give Idunn Epiphany source change authority 2026-08-21 20:59:11 +02:00
Meta Vens
13caf9bad5 Remove Odin runtime from Idunn bootstrap inputs 2026-08-21 20:07:57 +02:00
Meta Vens
c7012a87c9 Admit Odin as a signed Idunn target 2026-08-21 19:50:24 +02:00
Meta Vens
7587ff01b6 Separate Idunn continuity from deployment state 2026-08-21 19:34:32 +02:00
Meta Vens
b907a9d0c0 Make Idunn deployment brake read-only 2026-07-20 00:07:04 +01:00
Meta Vens
a729b30643 Add read-only Idunn public health query listener 2026-07-19 22:00:46 +01:00
Meta Vens
09655aca5a Add Idunn authenticated health projection runtime 2026-07-19 20:45:30 +01:00