Re-anchor contract citations on CultLib 85f7024
Every live CultNet contract citation named `f4ab237`, which is not an ancestor
of CultLib main and survives only on the retiring standalone repo's branch.
They now name CultLib `85f7024`, which is both CultLib's current main head and a
permanent ancestor of it, so the citation survives every future advance --
something a branch SHA in a repo queued for deletion could never do.
Verified rather than assumed. At `85f7024`, packages/cultnet-rs carries
IDUNN_LIFECYCLE_BRAKE_* distinct from IDUNN_DEPLOYMENT_BRAKE_*,
IdunnProcessWriteLeaseRecord, GameCultRuntimeCapability, OdinTopologyDisagreement
with disagreements() and into_undisputed_present separating presence from
readiness, a generation-bound IdunnRuntimeActivationRecord with its own
activation-proof signing purpose, and IdunnExpectedRoute refusing non-rudp://
endpoints for RUDP routes. All six cited contracts hold.
Two of the eight citations were instructions, not descriptions, and a mechanical
swap would have been wrong. map.yaml's next action and the handoff's next gate
both said to advance Odin to CultNet `f4ab237` -- advancing it deeper into the
repo we intend to delete. Both now say to repoint Odin off its vendored CultNet
fork onto CultLib `85f7024`, as Ghostlight did at `d0510ac`.
Evidence records keep their pre-consolidation SHAs. They are dated statements of
what was believed, and the new record is the key for reading them.
This closes the citation half of the cultnet-rs retirement gate. Odin's vendored
CultNet gitlink is now the last reader of that repo.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
a338567230
commit
c80c323022
6 changed files with 14 additions and 11 deletions
|
|
@ -132,7 +132,7 @@ body. The 1,200 and 2,400 actor profiles are synthetic fixtures only.
|
|||
Yggdrasil still serves legacy Ghostlight release `a4080d4` from an enabled
|
||||
`Restart=always` unit with health v1, campaign/Session Zero state, and no
|
||||
`world.cc` or `app-sessions-v2.cc` witness. The Connector is also still on its
|
||||
legacy enabled body. CultNet through pushed `f4ab237` owns generation-bound
|
||||
legacy enabled body. CultNet through CultLib `85f7024` owns generation-bound
|
||||
activation, separate lifecycle brakes, process-write leases, observed
|
||||
capabilities, explicit disagreement, and routed RUDP incarnations. Odin through
|
||||
pushed `65cf2b2` owns deterministic recipe and binding admission, exact source
|
||||
|
|
@ -197,10 +197,11 @@ and proposals but cannot commit on their behalf.
|
|||
## Next gate
|
||||
|
||||
Review and subtract the uncommitted Idunn-owned Expected/activation/anchor/lease
|
||||
projection and bounded multi-session RUDP document transport. Advance Odin to
|
||||
CultNet `f4ab237`, add UDP route actuation plus an independently persisted
|
||||
post-reload data-plane observation through the existing proxy, and verify that
|
||||
focused body on Yggdrasil. Then implement the directly managed Rust Odin that
|
||||
projection and bounded multi-session RUDP document transport. Repoint Odin off
|
||||
its vendored CultNet fork onto CultLib `85f7024` as Ghostlight did, add UDP
|
||||
route actuation plus an independently persisted post-reload data-plane
|
||||
observation through the existing proxy, and verify that focused body on
|
||||
Yggdrasil. Then implement the directly managed Rust Odin that
|
||||
alone authenticates runtime observation into Present and derives Ready, plus
|
||||
exact capability dependency closure frozen inside the existing deployment
|
||||
transaction. Do not add another scheduler, registry, inbox, or shared-file
|
||||
|
|
|
|||
|
|
@ -835,7 +835,7 @@ waiting for Odin; that legacy health admission is teardown evidence, not the
|
|||
new runtime contract. Under the landed contracts, an activation becomes current
|
||||
only after Idunn's workload driver observes the exact native process and
|
||||
artifact. Present requires that activation plus service-signed presence health;
|
||||
Odin alone correlates Ready. CultNet through pushed `f4ab237` carries the
|
||||
Odin alone correlates Ready. CultNet through CultLib `85f7024` carries the
|
||||
generation-bound activation, lifecycle-brake, write-lease, observed-capability,
|
||||
and disagreement contracts plus routed RUDP incarnation admission. Odin through
|
||||
pushed `65cf2b2` carries exact source actuation, the narrow driver body, and the
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ assessor, verifier/reconciliation, or legacy-transition module path.
|
|||
|
||||
Production has not crossed that source boundary. Yggdrasil still runs legacy
|
||||
release `a4080d4` under an enabled `Restart=always` unit and a legacy state
|
||||
root. CultNet through pushed `f4ab237` owns generation-bound activation,
|
||||
root. CultNet through CultLib `85f7024` owns generation-bound activation,
|
||||
separate lifecycle-brake, process-write-lease, observed-capability, explicit
|
||||
disagreement, and routed RUDP incarnation admission contracts. Odin through
|
||||
pushed `65cf2b2` owns deterministic recipe and binding admission, exact source
|
||||
|
|
|
|||
|
|
@ -25,3 +25,4 @@
|
|||
{"note": "Core GameCult stack ownership resolved. CultLib is the canonical home for CultCache, CultNet and CultMesh across every runtime because wire parity conformance lives only there; a runtime-specific repo cannot own the engine other runtimes must agree with. The standalone GameCult/cultcache-rs and GameCult/cultnet-rs repos are pre-consolidation origins that kept receiving work after the 5c69bfc import, and Ghostlight became a third lineage by written charter: vendor/README.md declares a locally owned compatible protocol generation, which is duplicate authority over the wire stack held outside the only harness that checks parity. That is why runtime_authority_contracts.rs forked: Ghostlight vendors e542225 while map and handoff declare CultNet f4ab237 authoritative, and the two disagree on whether Present may coexist with a disagreement -- Ghostlight's copy makes them exclusive, f4ab237 separates presence from readiness and gates through into_undisputed_present. Re-vendoring fixes that instance, not the mechanism. CultLib branch claude/consolidate-rust-core-stack commit 34488e8 returns the Rust CultCache engine to CultLib: the standalone body as base (3,714 lines, 46 passing tests) over CultLib's 1,554, with the cultnet-rs RUDP gate passing 20 unchanged. Two CultLib-only commits remain unported debt. cultmesh-rs is homeless: the only Rust CultMesh implementation in existence is 1,363 lines inside Ghostlight's vendor, absent from CultLib and from any repo, so it has never been parity tested against the browser, Kotlin and TypeScript implementations it must interoperate with. Ghostlight must consume CultLib by pinned rev and stop vendoring before the standalone repos are retired.", "status": "ok", "ts": "2026-09-03T21:00:00+00:00", "type": "architecture"}
|
||||
{"note": "Ghostlight's vendored core-stack fork is retired at d0510ac: cultcache-rs, cultnet-rs and cultmesh-rs now come from CultLib pinned at 85f7024 and vendor/README.md's 'locally owned compatible protocol generation' charter is deleted with them. The predicted migration did not exist. RuntimePresenceCorrelation moving from enum to struct is Odin's side of the contract and no Ghostlight file references it; with line endings normalised the e542225 and f4ab237 copies differ by 132 lines, and the only production change reaching a provider is IdunnExpectedRoute requiring rudp:// schemes for rudp transport, which this service does not use. Ghostlight compiled unchanged and passes 89 workspace tests against the pinned rev. One thing was nearly lost: the vendored transport.rs alone checked a framed payload length against the advertised maximum before allocating, so a four-byte header could otherwise size a buffer to whatever a peer claims; it is now CultLib 85f7024 with a test. Verified by diffing all twelve vendored cultnet files against CultLib before deleting rather than after. vendor/ still holds the cultcache-py and eve submodules; cultcache-py is the same runtime-specific-repo pattern and CultLib carries packages/cultcache-py, but it backs the state tooling rather than the daemon.", "status": "ok", "ts": "2026-09-03T23:13:55+00:00", "type": "architecture"}
|
||||
{"note": "The pre-existing worktree drift is landed at 751b5c4 and 322cc11. The daemon no longer names GHOSTLIGHT_RUNTIME_ID, GHOSTLIGHT_DUNGEON_BIND or GHOSTLIGHT_DUNGEON_ROOT under management; Idunn supplies the runtime id in the activation bundle, the candidate bind, and the state root as a recipe argument binding. That binding is required rather than cosmetic: Odin deployment.rs refuses a stateful workload with no state_root argument binding and refuses one whose binding disagrees with the admitted root, so the old recipe could not have deployed. The acceptance harness identity is renamed GHOSTLIGHT_ACCEPTANCE_RUNTIME_ID so a test-supplied id cannot be read as the managed one. 89 workspace tests pass. Provenance finding that changes the cultnet-rs retirement gate: the contract revisions the Mind cites, CultNet f4ab237 and its predecessor e542225, are not ancestors of CultLib main and exist only on GameCult/cultnet-rs branch codex/idunn-runtime-authority-contract. Their content is on CultLib main at 85f7024, verified by symbol, but the SHAs are not, because the consolidation ported commits forward rather than merging them. Deleting GameCult/cultnet-rs therefore breaks every citation in map.yaml, the handoff, both notes and the evidence ledger. Odin 65cf2b2 and d527d72 are likewise off Odin main, on pushed branch codex/ygg-idunn-independent-bootstrap, which is resolvable and needs no action.", "status": "ok", "ts": "2026-09-03T23:26:24+00:00", "type": "architecture"}
|
||||
{"ts": "2026-09-03T23:51:32+00:00", "type": "architecture", "status": "ok", "note": "Live contract citations are re-anchored from CultNet f4ab237 onto CultLib 85f7024 across map.yaml, the handoff, and both notes. Verified before swapping rather than assuming equivalence: at 85f7024 packages/cultnet-rs carries IDUNN_LIFECYCLE_BRAKE_* distinct from IDUNN_DEPLOYMENT_BRAKE_*, IdunnProcessWriteLeaseRecord, GameCultRuntimeCapability, OdinTopologyDisagreement with disagreements() and into_undisputed_present separating presence from readiness, generation-bound IdunnRuntimeActivationRecord with a distinct activation-proof signing purpose, and IdunnExpectedRoute rejecting non-rudp:// endpoints for RUDP routes. All six cited contracts hold. 85f7024 is both CultLib's current main head and a permanent ancestor of main, so the citation survives every future advance, which f4ab237 never could. Two citations were instructions rather than descriptions and could not be swapped mechanically: map.yaml next_action and the handoff next gate both said advance Odin to CultNet f4ab237, which would have advanced Odin deeper into the repo being deleted. Both now say repoint Odin off its vendored CultNet fork onto CultLib 85f7024 as Ghostlight did at d0510ac. Evidence records keep their pre-consolidation SHAs as dated history; this record is the resolution key for reading them. The retirement gate for GameCult/cultnet-rs is now one item: Odin's vendored CultNet gitlink is the last reader of that repo."}
|
||||
|
|
|
|||
|
|
@ -26,3 +26,4 @@
|
|||
{"key": "2026-09-03T210000Z0000-0024-8a273539a3cf", "payload": "eyJub3RlIjogIkNvcmUgR2FtZUN1bHQgc3RhY2sgb3duZXJzaGlwIHJlc29sdmVkLiBDdWx0TGliIGlzIHRoZSBjYW5vbmljYWwgaG9tZSBmb3IgQ3VsdENhY2hlLCBDdWx0TmV0IGFuZCBDdWx0TWVzaCBhY3Jvc3MgZXZlcnkgcnVudGltZSBiZWNhdXNlIHdpcmUgcGFyaXR5IGNvbmZvcm1hbmNlIGxpdmVzIG9ubHkgdGhlcmU7IGEgcnVudGltZS1zcGVjaWZpYyByZXBvIGNhbm5vdCBvd24gdGhlIGVuZ2luZSBvdGhlciBydW50aW1lcyBtdXN0IGFncmVlIHdpdGguIFRoZSBzdGFuZGFsb25lIEdhbWVDdWx0L2N1bHRjYWNoZS1ycyBhbmQgR2FtZUN1bHQvY3VsdG5ldC1ycyByZXBvcyBhcmUgcHJlLWNvbnNvbGlkYXRpb24gb3JpZ2lucyB0aGF0IGtlcHQgcmVjZWl2aW5nIHdvcmsgYWZ0ZXIgdGhlIDVjNjliZmMgaW1wb3J0LCBhbmQgR2hvc3RsaWdodCBiZWNhbWUgYSB0aGlyZCBsaW5lYWdlIGJ5IHdyaXR0ZW4gY2hhcnRlcjogdmVuZG9yL1JFQURNRS5tZCBkZWNsYXJlcyBhIGxvY2FsbHkgb3duZWQgY29tcGF0aWJsZSBwcm90b2NvbCBnZW5lcmF0aW9uLCB3aGljaCBpcyBkdXBsaWNhdGUgYXV0aG9yaXR5IG92ZXIgdGhlIHdpcmUgc3RhY2sgaGVsZCBvdXRzaWRlIHRoZSBvbmx5IGhhcm5lc3MgdGhhdCBjaGVja3MgcGFyaXR5LiBUaGF0IGlzIHdoeSBydW50aW1lX2F1dGhvcml0eV9jb250cmFjdHMucnMgZm9ya2VkOiBHaG9zdGxpZ2h0IHZlbmRvcnMgZTU0MjIyNSB3aGlsZSBtYXAgYW5kIGhhbmRvZmYgZGVjbGFyZSBDdWx0TmV0IGY0YWIyMzcgYXV0aG9yaXRhdGl2ZSwgYW5kIHRoZSB0d28gZGlzYWdyZWUgb24gd2hldGhlciBQcmVzZW50IG1heSBjb2V4aXN0IHdpdGggYSBkaXNhZ3JlZW1lbnQgLS0gR2hvc3RsaWdodCdzIGNvcHkgbWFrZXMgdGhlbSBleGNsdXNpdmUsIGY0YWIyMzcgc2VwYXJhdGVzIHByZXNlbmNlIGZyb20gcmVhZGluZXNzIGFuZCBnYXRlcyB0aHJvdWdoIGludG9fdW5kaXNwdXRlZF9wcmVzZW50LiBSZS12ZW5kb3JpbmcgZml4ZXMgdGhhdCBpbnN0YW5jZSwgbm90IHRoZSBtZWNoYW5pc20uIEN1bHRMaWIgYnJhbmNoIGNsYXVkZS9jb25zb2xpZGF0ZS1ydXN0LWNvcmUtc3RhY2sgY29tbWl0IDM0NDg4ZTggcmV0dXJucyB0aGUgUnVzdCBDdWx0Q2FjaGUgZW5naW5lIHRvIEN1bHRMaWI6IHRoZSBzdGFuZGFsb25lIGJvZHkgYXMgYmFzZSAoMyw3MTQgbGluZXMsIDQ2IHBhc3NpbmcgdGVzdHMpIG92ZXIgQ3VsdExpYidzIDEsNTU0LCB3aXRoIHRoZSBjdWx0bmV0LXJzIFJVRFAgZ2F0ZSBwYXNzaW5nIDIwIHVuY2hhbmdlZC4gVHdvIEN1bHRMaWItb25seSBjb21taXRzIHJlbWFpbiB1bnBvcnRlZCBkZWJ0LiBjdWx0bWVzaC1ycyBpcyBob21lbGVzczogdGhlIG9ubHkgUnVzdCBDdWx0TWVzaCBpbXBsZW1lbnRhdGlvbiBpbiBleGlzdGVuY2UgaXMgMSwzNjMgbGluZXMgaW5zaWRlIEdob3N0bGlnaHQncyB2ZW5kb3IsIGFic2VudCBmcm9tIEN1bHRMaWIgYW5kIGZyb20gYW55IHJlcG8sIHNvIGl0IGhhcyBuZXZlciBiZWVuIHBhcml0eSB0ZXN0ZWQgYWdhaW5zdCB0aGUgYnJvd3NlciwgS290bGluIGFuZCBUeXBlU2NyaXB0IGltcGxlbWVudGF0aW9ucyBpdCBtdXN0IGludGVyb3BlcmF0ZSB3aXRoLiBHaG9zdGxpZ2h0IG11c3QgY29uc3VtZSBDdWx0TGliIGJ5IHBpbm5lZCByZXYgYW5kIHN0b3AgdmVuZG9yaW5nIGJlZm9yZSB0aGUgc3RhbmRhbG9uZSByZXBvcyBhcmUgcmV0aXJlZC4iLCAic3RhdHVzIjogIm9rIiwgInRzIjogIjIwMjYtMDktMDNUMjE6MDA6MDArMDA6MDAiLCAidHlwZSI6ICJhcmNoaXRlY3R1cmUifQ==", "stored_at": "2026-09-03T20:45:52.565333+00:00", "type": "ghostlight.evidence_record.v0"}
|
||||
{"key": "2026-09-03T231355Z0000-0025-cf375e89aa43", "payload": "eyJub3RlIjogIkdob3N0bGlnaHQncyB2ZW5kb3JlZCBjb3JlLXN0YWNrIGZvcmsgaXMgcmV0aXJlZCBhdCBkMDUxMGFjOiBjdWx0Y2FjaGUtcnMsIGN1bHRuZXQtcnMgYW5kIGN1bHRtZXNoLXJzIG5vdyBjb21lIGZyb20gQ3VsdExpYiBwaW5uZWQgYXQgODVmNzAyNCBhbmQgdmVuZG9yL1JFQURNRS5tZCdzICdsb2NhbGx5IG93bmVkIGNvbXBhdGlibGUgcHJvdG9jb2wgZ2VuZXJhdGlvbicgY2hhcnRlciBpcyBkZWxldGVkIHdpdGggdGhlbS4gVGhlIHByZWRpY3RlZCBtaWdyYXRpb24gZGlkIG5vdCBleGlzdC4gUnVudGltZVByZXNlbmNlQ29ycmVsYXRpb24gbW92aW5nIGZyb20gZW51bSB0byBzdHJ1Y3QgaXMgT2RpbidzIHNpZGUgb2YgdGhlIGNvbnRyYWN0IGFuZCBubyBHaG9zdGxpZ2h0IGZpbGUgcmVmZXJlbmNlcyBpdDsgd2l0aCBsaW5lIGVuZGluZ3Mgbm9ybWFsaXNlZCB0aGUgZTU0MjIyNSBhbmQgZjRhYjIzNyBjb3BpZXMgZGlmZmVyIGJ5IDEzMiBsaW5lcywgYW5kIHRoZSBvbmx5IHByb2R1Y3Rpb24gY2hhbmdlIHJlYWNoaW5nIGEgcHJvdmlkZXIgaXMgSWR1bm5FeHBlY3RlZFJvdXRlIHJlcXVpcmluZyBydWRwOi8vIHNjaGVtZXMgZm9yIHJ1ZHAgdHJhbnNwb3J0LCB3aGljaCB0aGlzIHNlcnZpY2UgZG9lcyBub3QgdXNlLiBHaG9zdGxpZ2h0IGNvbXBpbGVkIHVuY2hhbmdlZCBhbmQgcGFzc2VzIDg5IHdvcmtzcGFjZSB0ZXN0cyBhZ2FpbnN0IHRoZSBwaW5uZWQgcmV2LiBPbmUgdGhpbmcgd2FzIG5lYXJseSBsb3N0OiB0aGUgdmVuZG9yZWQgdHJhbnNwb3J0LnJzIGFsb25lIGNoZWNrZWQgYSBmcmFtZWQgcGF5bG9hZCBsZW5ndGggYWdhaW5zdCB0aGUgYWR2ZXJ0aXNlZCBtYXhpbXVtIGJlZm9yZSBhbGxvY2F0aW5nLCBzbyBhIGZvdXItYnl0ZSBoZWFkZXIgY291bGQgb3RoZXJ3aXNlIHNpemUgYSBidWZmZXIgdG8gd2hhdGV2ZXIgYSBwZWVyIGNsYWltczsgaXQgaXMgbm93IEN1bHRMaWIgODVmNzAyNCB3aXRoIGEgdGVzdC4gVmVyaWZpZWQgYnkgZGlmZmluZyBhbGwgdHdlbHZlIHZlbmRvcmVkIGN1bHRuZXQgZmlsZXMgYWdhaW5zdCBDdWx0TGliIGJlZm9yZSBkZWxldGluZyByYXRoZXIgdGhhbiBhZnRlci4gdmVuZG9yLyBzdGlsbCBob2xkcyB0aGUgY3VsdGNhY2hlLXB5IGFuZCBldmUgc3VibW9kdWxlczsgY3VsdGNhY2hlLXB5IGlzIHRoZSBzYW1lIHJ1bnRpbWUtc3BlY2lmaWMtcmVwbyBwYXR0ZXJuIGFuZCBDdWx0TGliIGNhcnJpZXMgcGFja2FnZXMvY3VsdGNhY2hlLXB5LCBidXQgaXQgYmFja3MgdGhlIHN0YXRlIHRvb2xpbmcgcmF0aGVyIHRoYW4gdGhlIGRhZW1vbi4iLCAic3RhdHVzIjogIm9rIiwgInRzIjogIjIwMjYtMDktMDNUMjM6MTM6NTUrMDA6MDAiLCAidHlwZSI6ICJhcmNoaXRlY3R1cmUifQ==", "stored_at": "2026-09-03T23:27:13.913341+00:00", "type": "ghostlight.evidence_record.v0"}
|
||||
{"key": "2026-09-03T232624Z0000-0026-cdce3fe580c1", "payload": "eyJub3RlIjogIlRoZSBwcmUtZXhpc3Rpbmcgd29ya3RyZWUgZHJpZnQgaXMgbGFuZGVkIGF0IDc1MWI1YzQgYW5kIDMyMmNjMTEuIFRoZSBkYWVtb24gbm8gbG9uZ2VyIG5hbWVzIEdIT1NUTElHSFRfUlVOVElNRV9JRCwgR0hPU1RMSUdIVF9EVU5HRU9OX0JJTkQgb3IgR0hPU1RMSUdIVF9EVU5HRU9OX1JPT1QgdW5kZXIgbWFuYWdlbWVudDsgSWR1bm4gc3VwcGxpZXMgdGhlIHJ1bnRpbWUgaWQgaW4gdGhlIGFjdGl2YXRpb24gYnVuZGxlLCB0aGUgY2FuZGlkYXRlIGJpbmQsIGFuZCB0aGUgc3RhdGUgcm9vdCBhcyBhIHJlY2lwZSBhcmd1bWVudCBiaW5kaW5nLiBUaGF0IGJpbmRpbmcgaXMgcmVxdWlyZWQgcmF0aGVyIHRoYW4gY29zbWV0aWM6IE9kaW4gZGVwbG95bWVudC5ycyByZWZ1c2VzIGEgc3RhdGVmdWwgd29ya2xvYWQgd2l0aCBubyBzdGF0ZV9yb290IGFyZ3VtZW50IGJpbmRpbmcgYW5kIHJlZnVzZXMgb25lIHdob3NlIGJpbmRpbmcgZGlzYWdyZWVzIHdpdGggdGhlIGFkbWl0dGVkIHJvb3QsIHNvIHRoZSBvbGQgcmVjaXBlIGNvdWxkIG5vdCBoYXZlIGRlcGxveWVkLiBUaGUgYWNjZXB0YW5jZSBoYXJuZXNzIGlkZW50aXR5IGlzIHJlbmFtZWQgR0hPU1RMSUdIVF9BQ0NFUFRBTkNFX1JVTlRJTUVfSUQgc28gYSB0ZXN0LXN1cHBsaWVkIGlkIGNhbm5vdCBiZSByZWFkIGFzIHRoZSBtYW5hZ2VkIG9uZS4gODkgd29ya3NwYWNlIHRlc3RzIHBhc3MuIFByb3ZlbmFuY2UgZmluZGluZyB0aGF0IGNoYW5nZXMgdGhlIGN1bHRuZXQtcnMgcmV0aXJlbWVudCBnYXRlOiB0aGUgY29udHJhY3QgcmV2aXNpb25zIHRoZSBNaW5kIGNpdGVzLCBDdWx0TmV0IGY0YWIyMzcgYW5kIGl0cyBwcmVkZWNlc3NvciBlNTQyMjI1LCBhcmUgbm90IGFuY2VzdG9ycyBvZiBDdWx0TGliIG1haW4gYW5kIGV4aXN0IG9ubHkgb24gR2FtZUN1bHQvY3VsdG5ldC1ycyBicmFuY2ggY29kZXgvaWR1bm4tcnVudGltZS1hdXRob3JpdHktY29udHJhY3QuIFRoZWlyIGNvbnRlbnQgaXMgb24gQ3VsdExpYiBtYWluIGF0IDg1ZjcwMjQsIHZlcmlmaWVkIGJ5IHN5bWJvbCwgYnV0IHRoZSBTSEFzIGFyZSBub3QsIGJlY2F1c2UgdGhlIGNvbnNvbGlkYXRpb24gcG9ydGVkIGNvbW1pdHMgZm9yd2FyZCByYXRoZXIgdGhhbiBtZXJnaW5nIHRoZW0uIERlbGV0aW5nIEdhbWVDdWx0L2N1bHRuZXQtcnMgdGhlcmVmb3JlIGJyZWFrcyBldmVyeSBjaXRhdGlvbiBpbiBtYXAueWFtbCwgdGhlIGhhbmRvZmYsIGJvdGggbm90ZXMgYW5kIHRoZSBldmlkZW5jZSBsZWRnZXIuIE9kaW4gNjVjZjJiMiBhbmQgZDUyN2Q3MiBhcmUgbGlrZXdpc2Ugb2ZmIE9kaW4gbWFpbiwgb24gcHVzaGVkIGJyYW5jaCBjb2RleC95Z2ctaWR1bm4taW5kZXBlbmRlbnQtYm9vdHN0cmFwLCB3aGljaCBpcyByZXNvbHZhYmxlIGFuZCBuZWVkcyBubyBhY3Rpb24uIiwgInN0YXR1cyI6ICJvayIsICJ0cyI6ICIyMDI2LTA5LTAzVDIzOjI2OjI0KzAwOjAwIiwgInR5cGUiOiAiYXJjaGl0ZWN0dXJlIn0=", "stored_at": "2026-09-03T23:26:24.424346+00:00", "type": "ghostlight.evidence_record.v0"}
|
||||
{"key": "2026-09-03T235132Z0000-0027-b91f18d9b552", "payload": "eyJub3RlIjogIkxpdmUgY29udHJhY3QgY2l0YXRpb25zIGFyZSByZS1hbmNob3JlZCBmcm9tIEN1bHROZXQgZjRhYjIzNyBvbnRvIEN1bHRMaWIgODVmNzAyNCBhY3Jvc3MgbWFwLnlhbWwsIHRoZSBoYW5kb2ZmLCBhbmQgYm90aCBub3Rlcy4gVmVyaWZpZWQgYmVmb3JlIHN3YXBwaW5nIHJhdGhlciB0aGFuIGFzc3VtaW5nIGVxdWl2YWxlbmNlOiBhdCA4NWY3MDI0IHBhY2thZ2VzL2N1bHRuZXQtcnMgY2FycmllcyBJRFVOTl9MSUZFQ1lDTEVfQlJBS0VfKiBkaXN0aW5jdCBmcm9tIElEVU5OX0RFUExPWU1FTlRfQlJBS0VfKiwgSWR1bm5Qcm9jZXNzV3JpdGVMZWFzZVJlY29yZCwgR2FtZUN1bHRSdW50aW1lQ2FwYWJpbGl0eSwgT2RpblRvcG9sb2d5RGlzYWdyZWVtZW50IHdpdGggZGlzYWdyZWVtZW50cygpIGFuZCBpbnRvX3VuZGlzcHV0ZWRfcHJlc2VudCBzZXBhcmF0aW5nIHByZXNlbmNlIGZyb20gcmVhZGluZXNzLCBnZW5lcmF0aW9uLWJvdW5kIElkdW5uUnVudGltZUFjdGl2YXRpb25SZWNvcmQgd2l0aCBhIGRpc3RpbmN0IGFjdGl2YXRpb24tcHJvb2Ygc2lnbmluZyBwdXJwb3NlLCBhbmQgSWR1bm5FeHBlY3RlZFJvdXRlIHJlamVjdGluZyBub24tcnVkcDovLyBlbmRwb2ludHMgZm9yIFJVRFAgcm91dGVzLiBBbGwgc2l4IGNpdGVkIGNvbnRyYWN0cyBob2xkLiA4NWY3MDI0IGlzIGJvdGggQ3VsdExpYidzIGN1cnJlbnQgbWFpbiBoZWFkIGFuZCBhIHBlcm1hbmVudCBhbmNlc3RvciBvZiBtYWluLCBzbyB0aGUgY2l0YXRpb24gc3Vydml2ZXMgZXZlcnkgZnV0dXJlIGFkdmFuY2UsIHdoaWNoIGY0YWIyMzcgbmV2ZXIgY291bGQuIFR3byBjaXRhdGlvbnMgd2VyZSBpbnN0cnVjdGlvbnMgcmF0aGVyIHRoYW4gZGVzY3JpcHRpb25zIGFuZCBjb3VsZCBub3QgYmUgc3dhcHBlZCBtZWNoYW5pY2FsbHk6IG1hcC55YW1sIG5leHRfYWN0aW9uIGFuZCB0aGUgaGFuZG9mZiBuZXh0IGdhdGUgYm90aCBzYWlkIGFkdmFuY2UgT2RpbiB0byBDdWx0TmV0IGY0YWIyMzcsIHdoaWNoIHdvdWxkIGhhdmUgYWR2YW5jZWQgT2RpbiBkZWVwZXIgaW50byB0aGUgcmVwbyBiZWluZyBkZWxldGVkLiBCb3RoIG5vdyBzYXkgcmVwb2ludCBPZGluIG9mZiBpdHMgdmVuZG9yZWQgQ3VsdE5ldCBmb3JrIG9udG8gQ3VsdExpYiA4NWY3MDI0IGFzIEdob3N0bGlnaHQgZGlkIGF0IGQwNTEwYWMuIEV2aWRlbmNlIHJlY29yZHMga2VlcCB0aGVpciBwcmUtY29uc29saWRhdGlvbiBTSEFzIGFzIGRhdGVkIGhpc3Rvcnk7IHRoaXMgcmVjb3JkIGlzIHRoZSByZXNvbHV0aW9uIGtleSBmb3IgcmVhZGluZyB0aGVtLiBUaGUgcmV0aXJlbWVudCBnYXRlIGZvciBHYW1lQ3VsdC9jdWx0bmV0LXJzIGlzIG5vdyBvbmUgaXRlbTogT2RpbidzIHZlbmRvcmVkIEN1bHROZXQgZ2l0bGluayBpcyB0aGUgbGFzdCByZWFkZXIgb2YgdGhhdCByZXBvLiIsICJzdGF0dXMiOiAib2siLCAidHMiOiAiMjAyNi0wOS0wM1QyMzo1MTozMiswMDowMCIsICJ0eXBlIjogImFyY2hpdGVjdHVyZSJ9", "stored_at": "2026-09-03T23:51:32.201817+00:00", "type": "ghostlight.evidence_record.v0"}
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ live_architecture:
|
|||
- Idunn owns admission and deployment changes to the physical swarm plus continuity supervision of the same admitted body. The deployment brake gates graph-changing deployment; a separately named lifecycle brake may suspend continuity. Continuity may replace only the physical incarnation inside the same admitted generation and preserve its current route. It cannot create a generation, change source, configuration, schema, dependencies, endpoints, or semantic provider eligibility.
|
||||
- A sealed plan and release produce only Idunn's sanitized Expected incarnation. The service owns its signed runtime presence and health claim. Odin alone authenticates that observation into Present, correlates Expected and Present, and derives Ready. For writable state, Idunn grants the process-bound write lease before the service opens state. Stable route membership may move only after Ready; route membership and the write lease remain separate authorities. Expected, Present, Ready, and any disagreement remain distinct typed facts.
|
||||
- Typed target, action, exact source, recipe digest, runner binding, and deployment identity replace raw persisted shell-command authority. Source fetch and recipe materialization run as the Idunn identity; a narrow privileged boundary consumes sealed inputs and cannot interpret branch heads or mutable worktrees.
|
||||
- CultNet through pushed commit `f4ab237` owns generation-bound dual-proof runtime activation, separate lifecycle brakes, process-write leases, provider-observed capabilities, explicit Expected/observed disagreement, and routed RUDP incarnation admission. Odin through pushed commit `65cf2b2` owns deterministic recipe and binding admission, exact source freezing, sealed releases, durable deployment transactions, and narrow native actuator ports. Its current uncommitted integration is moving Idunn-owned projection and multi-session RUDP transport into those live paths.
|
||||
- CultNet through CultLib `85f7024` owns generation-bound dual-proof runtime activation, separate lifecycle brakes, process-write leases, provider-observed capabilities, explicit Expected/observed disagreement, and routed RUDP incarnation admission. Odin through pushed commit `65cf2b2` owns deterministic recipe and binding admission, exact source freezing, sealed releases, durable deployment transactions, and narrow native actuator ports. Its current uncommitted integration is moving Idunn-owned projection and multi-session RUDP transport into those live paths.
|
||||
- Ghostlight pushed commit `6a79cb0` implements its provider side: the recipe requests Idunn's runtime bundle, candidate bind, protected activation and provider credentials, process-write-lease path, and admitted state-root binding; the runtime validates Expected and activation, publishes signed Warming, waits for the exact process lease before opening state, and keeps that lease current through bind, Active publication, and serving. It republishes signed Warming for as long as the lease is outstanding and exposes its managed route presence for correlation. CodexConnector pushed commit `ede3c30` implements the corresponding stateless provider contract. Neither service has been admitted through the rebuilt live Idunn body yet.
|
||||
- The control plane has exactly three durable record classes: an operator command with one frozen dependency order and exact recipe/source inputs, a crash-resumable transaction, and one CAS-owned admitted generation per target. Transactions persist Sealing, Starting, Warming, Fencing, Leasing, AwaitingReady, Routing, Committing, and Complete before their effects. Stateless targets skip only fencing and leasing. Deployment authorization is consumed once at Sealing to Starting. Continuity uses its lifecycle brake and CAS-updates the physical incarnation and monotonic continuity epoch inside the same generation; it does not perform semantic admission.
|
||||
- Idunn bootstraps and recovers from its own durable admitted state. Odin is the first managed daemon and the root of the managed semantic graph, never an Idunn startup prerequisite. First-Odin admission still publishes Expected and requires the same signed Present and Ready facts; only the evidence transport is bootstrapped by querying that exact candidate directly. Every other candidate is correlated through the already-admitted Odin stable route.
|
||||
|
|
@ -165,7 +165,7 @@ pre_rebuild_architecture:
|
|||
- Native players use `ghostlight.native.player` on loopback RUDP `127.0.0.1:4102`. Heimdall owns the one-time OAuth attempt and completion; Ghostlight redeems it into the same app-session authority used by the browser. The native client persists only its opaque Ghostlight bearer in a mode-0600 CultCache store, submits the same canonical Eve invocations to the same kernel mailboxes, and sends bounded five-second RUDP keepalives while a long model-backed command remains pending.
|
||||
- Odin advertises the redacted native boundary and its four operations but receives no bearer, attempt handle, claim, account, member, actor, or campaign state. A forged native session is denied before surface projection or command admission.
|
||||
- Public Ghostlight HTTP exposes only the Eve provider, logical surface, command, and invalidation endpoints plus the typed health probe and static assets. Exact private per-member and operator surfaces remain CultMesh documents; Hermodr is an optional generic materializer, not a runtime dependency.
|
||||
- The landed Idunn foundation records an exact selected commit, tree, recipe blob, and Gitlink facts but does not prove Git ancestry, signatures, or object custody. A narrow Idunn-owned source driver must fetch and prove those objects as the Idunn identity before a plan or release can gain runtime consequence. Pushed Odin commit `65cf2b2` lands that source driver, the narrow actuator seams, dynamic systemd isolation, authenticated Ready-provider selection, protected activation delivery, and the CultNet `f4ab237` gitlink.
|
||||
- The landed Idunn foundation records an exact selected commit, tree, recipe blob, and Gitlink facts but does not prove Git ancestry, signatures, or object custody. A narrow Idunn-owned source driver must fetch and prove those objects as the Idunn identity before a plan or release can gain runtime consequence. Pushed Odin commit `65cf2b2` lands that source driver, the narrow actuator seams, dynamic systemd isolation, authenticated Ready-provider selection, and protected activation delivery. Odin still vendors CultNet as a gitlink into the retiring standalone repo; the contract it needs is CultLib `85f7024`.
|
||||
- Idunn owns Ghostlight deployment and same-release continuity, Odin owns discovery, Heimdall owns account identity, and VoidBot owns Vault retrieval. None can write campaign state. Epiphany is an adjacent consumer and future swarm-capacity provider, not a Ghostlight runtime dependency or authority.
|
||||
persistence_spine:
|
||||
- The hosted runtime uses Rust CultCache/redb `.cc` stores: one store per campaign plus service auth and CultMesh stores.
|
||||
|
|
@ -356,10 +356,10 @@ data_flow:
|
|||
current_status:
|
||||
summary: Ghostlight's source teardown is complete and its Idunn provider side is landed at pushed commit `6a79cb0`: executable startup enters the replacement runtime, the legacy scheduler/kernel/Session Zero pipeline modules are absent, one CultCache implementation owns persistent state, and the runtime publishes signed Warming, republishes it while the write lease is outstanding, and exposes managed route presence. Production has not cut over: Yggdrasil still runs legacy release `a4080d4` under an enabled `Restart=always` unit with health v1 and legacy state. The attempted deployment exposed duplicate authority across hard-coded Idunn policy, raw shell commands, the privileged dispatcher, and target-specific gamecult-ops programs, plus a root-versus-Idunn Git ownership failure and stop-old-before-candidate routing. The adopted deployment rebuild uses target-owned visible recipes, Idunn-configured runner and host bindings, candidate readiness behind a stable route, process/write-lease handoff, and separate deployment versus continuity authority. No deployment or acceptance run is active.
|
||||
provider_acceptance_checkpoint: Exact pushed commit `139b8a6` completed Run 60 under `character-newsroom.v10` without world or per-wave replay. Its acceptance witness and terminal status bind the completed page and exact resume lineage. The independently dispatched blind reviewer, shown only the reader-facing fantasy newspaper, read it as a real left-populist civic broadsheet and did not immediately identify procedural generation, so the narrative reverse-Turing criterion passes. The review's substantive criticism is that the three stories feel like three rewrites of one briefing; accepted Run 60 remains immutable. The run used 96,902 prompt tokens and reported zero cache hits. Its delivered typeset artifact is `output/pdf/canopy-ledger-run-60-front-page.pdf`; frozen-source and visual verification remain accepted. Exact pushed `bc2ca39` then produced frozen-fact newsroom-only Run 61 Issues 13, 15, 16, 17, and 18 without world or wave model replay. Provider output proves `special_issue` convergence in Issues 13 and 15, independent `general_issue` beats in Issues 16 through 18, and assignment-selector cache hits. Blind review of Issues 13, 15, 16, and 17 passes both distinct recurring voices and issue-shape diversity, recognizing Ossan, Mera, Corin, and Lysa's biases plus modest cross-issue evolution. Run 62 exercised v12 without world or wave replay and failed only because two lead articles proposed invalid datelines; recurring reporter calls still recorded zero cache hits. Run 63 used exact pushed v13 `a52d57b`; Issues 17 and 18 completed before root stopped the final weekly recomposition, both repeated bylines again recorded zero cache hits, and live services remained unchanged. Preserve Runs 61 through 63 as stopped or completed immutable evidence. Copy defects remain later deadline-correction work rather than a reason to reopen accepted issue artifacts.
|
||||
implementation_checkpoint: Pushed commit `6bb6869` makes the replacement mailbox/kernel architecture the crate and executable runtime identity and removes the legacy runtime owner. Pushed commit `13d5136` unifies app sessions, world journal, and controller custody under the vendored CultCache implementation and deletes the duplicate legacy CultCache dependency. The committed daemon tree has no old Session Zero, legacy kernel, scheduler, assessor, verifier/reconciliation, or legacy-transition module path. CultNet `f4ab237` owns the current activation, brake, lease, observed-capability, disagreement, and RUDP-route contracts. Odin `65cf2b2` owns exact source/release actuation and the durable three-record, nine-phase transaction body. Ghostlight `d0510ac` consumes CultCache, CultNet and CultMesh from CultLib `85f7024` instead of vendoring its own generation of them, deleting 19,604 lines of forked substrate; Ghostlight `751b5c4` stops naming its own runtime id, bind, and state root and takes all three from Idunn, which the recipe's required `state_root` argument binding makes mandatory rather than cosmetic; Ghostlight `6a79cb0` and CodexConnector `ede3c30` own their respective provider contracts; `9256648` exposes managed Ghostlight route presence and `6a79cb0` republishes Warming while awaiting the write lease. The remaining uncommitted Odin work is Idunn projection, bounded RUDP transport, and stable-route integration; the directly managed Rust Odin correlation daemon and exact dependency closure are not yet implemented. The worktree is clean: no Ghostlight drift remains between the committed tree and the deployment gate. This proves source and contract foundations, not live deployment: Yggdrasil remains on the legacy bodies until Idunn performs the one-way cut.
|
||||
implementation_checkpoint: Pushed commit `6bb6869` makes the replacement mailbox/kernel architecture the crate and executable runtime identity and removes the legacy runtime owner. Pushed commit `13d5136` unifies app sessions, world journal, and controller custody under the vendored CultCache implementation and deletes the duplicate legacy CultCache dependency. The committed daemon tree has no old Session Zero, legacy kernel, scheduler, assessor, verifier/reconciliation, or legacy-transition module path. CultNet in CultLib `85f7024` owns the current activation, brake, lease, observed-capability, disagreement, and RUDP-route contracts. Odin `65cf2b2` owns exact source/release actuation and the durable three-record, nine-phase transaction body. Ghostlight `d0510ac` consumes CultCache, CultNet and CultMesh from CultLib `85f7024` instead of vendoring its own generation of them, deleting 19,604 lines of forked substrate; Ghostlight `751b5c4` stops naming its own runtime id, bind, and state root and takes all three from Idunn, which the recipe's required `state_root` argument binding makes mandatory rather than cosmetic; Ghostlight `6a79cb0` and CodexConnector `ede3c30` own their respective provider contracts; `9256648` exposes managed Ghostlight route presence and `6a79cb0` republishes Warming while awaiting the write lease. The remaining uncommitted Odin work is Idunn projection, bounded RUDP transport, and stable-route integration; the directly managed Rust Odin correlation daemon and exact dependency closure are not yet implemented. The worktree is clean: no Ghostlight drift remains between the committed tree and the deployment gate. This proves source and contract foundations, not live deployment: Yggdrasil remains on the legacy bodies until Idunn performs the one-way cut.
|
||||
full_world_acceptance_checkpoint: Run 115 is terminal failed at `/var/lib/gamecult/ghostlight-dungeon/acceptance/full-world-delvehold-0a83034-115`, semantic revision 2, regions 2/8, waves 0/1. Resume2 ended on provider SSE timeout. Resume3 exhausted four reconciliation steps after `inst:kharad-road-keepers` referenced unknown `loc:kharad-rhythm-road`. Preserve the root, receipts, service invocation `d9254cd9b77946aebcf7a7fdae821402`, and failed patch sequence through 8964a92 as immutable evidence. Do not resume it.
|
||||
scale_checkpoint: Runs 108 through 115 prove load and failure properties of the pre-rebuild body, not world completeness. The 1,200 and 2,400 actor figures are synthetic evaluation profiles only. Production expansion is sparse and causal; structural admission cannot require interest, diversity, name uniqueness, or an actor count. The committed replacement authority suite passes, but no further scale run is admitted until Yggdrasil serves the exact world-v2 release through the rebuilt Idunn recipe/binding/router seam, the live state root satisfies the complete world-v2 allowed-path contract, restart preserves exact journal and digest identity, and no old service, state path, process grant, or route can regain write authority.
|
||||
presentation_checkpoint: The historical press-layout and seed-ownership split are complete. `notes/historical-newspaper-layout-grammar.md` remains the durable grammar. Manifest v2 at `output/tex/canopy-ledger-run-61-style-1847-flow-723.manifest.toml` independently binds `style_seed=1847`, `flow_seed=723`, frozen source SHA-256 `8f195140f52a40ba705d6a66987146a1500ae89668e5d82b01d1792eb3afb882`, and the final artifact `output/pdf/canopy-ledger-run-61-style-1847-flow-723.pdf`, SHA-256 `a457f4b1702a7a52480e42fce0039f0dbe677ff32958e98f1c412b346237190c`. An identical seed pair produces byte-identical TeX and PDF; changing only flow preserves the exact style section while materially changing a plausible layout, and changing only style preserves flow topology. Cut-first and cut-midstory templates pass visual inspection; the failed split-card template is deleted. Frozen copy/assets, actual PDF `/BM /Multiply`, and economic-layer advertising authority remain invariant.
|
||||
public_reference_checkpoint: The published public architecture is immutable pre-rebuild history, not current rebuild authority. Canonical Ghostlight commit `15ea0f0` owns five archived pages covering the former overview, authority, pipelines, 43 named production stages, and eight titled elaborators. Site commit `2035e799c2cf7470b2bfc70d5a878d5d3be5e90f` publishes a shared mobile Home/Blog/Docs masthead, visibly marks every Docs page as a teardown archive, and publishes the postmortem `The World Counter Lied` at `https://ghostlight.gamecult.org/Blog/the-world-counter-lied`; live HTTP inspection returned 200 for the postmortem and Docs index and found the masthead and archive banner. Do not use the archived pages to steer the whole-machine rebuild. `docs/architecture/ghostlight-dungeon-mvp.md` owns the adopted target; publish replacement architecture only after the replacement body is implemented and verified. The site repository owns public composition and deployment.
|
||||
next_action: Review and subtract the uncommitted Idunn projection and bounded RUDP transport, advance Odin to CultNet `f4ab237`, add UDP route actuation plus an independently persisted post-reload data-plane observation, and verify that focused pass on Yggdrasil. Then implement the directly managed Rust Odin observation/correlation daemon and exact transaction-frozen capability dependency closure. Install rebuilt Idunn, admit Odin first, then CodexConnector and Ghostlight; prove same-generation continuity, fencing, signed health, route cutover, Odin-outage freeze, and negative legacy authority before purging old units, releases, state roots, and the remote acceptance debris. Retiring `GameCult/cultnet-rs` is gated on more than content: `f4ab237` and `e542225` are not ancestors of CultLib main and survive only on that repo's `codex/idunn-runtime-authority-contract` branch, so deleting it breaks every contract citation in this map, the handoff, both notes, and the evidence ledger. Either re-anchor those citations on CultLib `85f7024` or preserve the branch. Local run scaffolding, downloaded acceptance copies, and redundant Git bundles are already purged, and `.gitignore` now refuses them.
|
||||
next_action: Review and subtract the uncommitted Idunn projection and bounded RUDP transport, repoint Odin off its vendored CultNet fork onto CultLib `85f7024` as Ghostlight did at `d0510ac`, add UDP route actuation plus an independently persisted post-reload data-plane observation, and verify that focused pass on Yggdrasil. Then implement the directly managed Rust Odin observation/correlation daemon and exact transaction-frozen capability dependency closure. Install rebuilt Idunn, admit Odin first, then CodexConnector and Ghostlight; prove same-generation continuity, fencing, signed health, route cutover, Odin-outage freeze, and negative legacy authority before purging old units, releases, state roots, and the remote acceptance debris. Retiring `GameCult/cultnet-rs` is gated on citation, not only content. Every live contract citation in this map, the handoff, and both notes now names CultLib `85f7024`, which is a permanent ancestor of CultLib main and carries all six cited contracts. Evidence records keep their original pre-consolidation SHAs as dated history. The last reader of the retiring repo is Odin's vendored CultNet gitlink, so that repoint is the remaining gate. Local run scaffolding, downloaded acceptance copies, and redundant Git bundles are already purged, and `.gitignore` now refuses them.
|
||||
gestalt_population: Gestalt Personas own shared population baselines; persistent member deltas own named individuality; WorldKernel materialization and approval-gated fission preserve lineage and identity. Materialisation/folding changes only representation and the exact member delta, advances resolution epoch, and retires the old cover; it has no Gestalt-wide effect authority. Selected actionable member exceptions are mandatory Projector perspective owners, so aggregation cannot silently erase their decision. Presence projection is limited to nearby active leaves and exact-location dormant members, includes reciprocal player relationship evidence, and may propose an earned cast without committing it. Simulation cells are derived covers only.
|
||||
|
|
|
|||
Loading…
Reference in a new issue