From 0f010de4316a3911f7d0decaa7a0a503e843d4f2 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Fri, 4 Sep 2026 17:22:45 +0200 Subject: [PATCH] Record the four first-generation fixtures and the pass-2 worktree Handoff and map carry the four world-branch tips and fixture commits, the retired single-loop launcher, the live 32-slot scheduler, ontology tip 5e53beb with its follow-ups landed, and pass 2 in flight. Co-Authored-By: Claude Fable 5.1 --- notes/fresh-workspace-handoff.md | 76 +++++++++++++++++++------------- state/map.yaml | 2 +- state/scratch.md | 6 +-- 3 files changed, 49 insertions(+), 35 deletions(-) diff --git a/notes/fresh-workspace-handoff.md b/notes/fresh-workspace-handoff.md index 5f11267..cf97df7 100644 --- a/notes/fresh-workspace-handoff.md +++ b/notes/fresh-workspace-handoff.md @@ -225,39 +225,53 @@ outcome bands, four derived `CausalBoundary` kinds, scope-digest binding, one are teardown evidence. Plan step 6 is nine implementation passes; pass 1 is landed, passes 2 through 9 are not. -1. Pass 1 landed on `codex/ghostlight-dungeon-mvp` as Hands `d74d6ad` plus Soul - `9ddc21f`, pushed. `crates/ghostlight-dungeon/src/world/patch.rs` owns +1. Ontology tip is `5e53beb` on `codex/ghostlight-dungeon-mvp`, pushed: pass 1 + (Hands `d74d6ad`, Soul `9ddc21f`) plus the three follow-up cuts (one schema + owner: `mesh.rs` and `idunn_health.rs` read `STATE_SCHEMA`, no + `foundation.v0` literal remains; subject-less genesis is + `Mismatch::NoDecisionSubject`, not a journal fault; named referrer/referent + fields replace the `UnknownCanonical` handle-field ambiguity). + `crates/ghostlight-dungeon/src/world/patch.rs` owns `SubjectId`/`EntityId`/`EdgeId` namespaces, `Ref` with `DraftHandle`, closed `resolve_declarations` returning the complete `Vec`, and - deterministic `derive_id` (sha256 over world, command, handle). - `CommandBody::AdmitPatch` is Draft-only and answers `uninhabited`; - `WorldEffect::PatchAdmitted` is its effect; one `admit_resolved` insertion - owner is shared with genesis. `KernelError` is 28 variants with - `PatchRejected(Vec)`. `STATE_SCHEMA` is `foundation.v1`, - `COMMIT_SCHEMA` is `foundation.v2`, and old stores are refused. The action - vocabulary is still one affordance (`AffordanceKind::Speak`) and one action - (`DecisionAction::Speak`); pass 4 replaces that. Baseline for pass 2: 55 - test functions in `world/*.rs`, 94 across the crate source, plus one - integration test. Three Soul follow-ups are being cut now and are not yet - in HEAD: `mesh.rs:241,257` and `idunn_health.rs:927,1215` still hand-copy - the literal `ghostlight.world_state.foundation.v0` and must read - `STATE_SCHEMA`; subject-less genesis must be a `Mismatch`, not - `CorruptJournal`; and the `UnknownCanonical` handle-field ambiguity. Next - is pass 2: `Position`, `Route`, containment, topology admission, and - scope-digest binding for opportunities. -2. The world fan-out is now a 32-slot titled-elaborator scheduler: - `C:\Users\Meta\.claude\worlds\Invoke-Elaborators.ps1` (detached, PID 39500 at - launch), config `worlds.config.psd1` (eight legacy titles, per-world tone, - per-title lens, weights), prompt `elaborator-prompt.md`. Workers never run - git: the Codex workspace-write sandbox keeps `.git` read-only even inside - the writable root. The scheduler commits and pushes each slot clone on exit - to `slot///<stamp>` branches in both the Ghostlight world - clone and the lore clone, and records each completion in - `logs\elab-done.csv` (absent until the first slot completes). Integration - into `codex/world-<world>` and `codex/ghostlight-worlds` is a deliberate - later pass, not automatic. First fixture: Delvehold - `cistern-house-nine-breaker-test` on `codex/world-delvehold` at `9374fd0`. - Clone paths are unchanged: `F:\Projects\Ghostlight-worlds\<world>` and + deterministic `derive_id`. `CommandBody::AdmitPatch` is Draft-only and + answers `uninhabited`; `WorldEffect::PatchAdmitted` is its effect; one + `admit_resolved` insertion owner is shared with genesis. `STATE_SCHEMA` is + `foundation.v1`, `COMMIT_SCHEMA` is `foundation.v2`, old stores refused. + The action vocabulary is still `AffordanceKind::Speak` and + `DecisionAction::Speak`; pass 4 replaces that. Pass 2 (`Position`, `Route`, + containment, topology admission, scope-digest binding for opportunities) is + with Hands in the isolated worktree + `.claude/worktrees/agent-a9c33487c7161e8d2` (locked, branched from + `5e53beb`), cutting from the session-scratchpad spec + `imagination-pass2.md` with `modeling-pass2.md` beside it. Nothing from + pass 2 is in the main tree; `git log` on `codex/ghostlight-dungeon-mvp` + past `5e53beb` is the witness. +2. First-generation world fixtures are banked and pushed, one per world, each + with Ink, training sidecar, visual plan, lore grounding, and BFL manifest, + reviewer-accepted except visual replay, which waits on a scene-set + blockout: + - Delvehold `cistern-house-nine-breaker-test`: `codex/world-delvehold` + tip `9374fd0`. + - Aetheria `navigator-berth-hearing-v0`: `codex/world-aetheria` tip + `fe679f4` (fixture commit `8860c47`); lore on AetheriaLore + `codex/ghostlight-worlds` at `ba5c2ce`. + - Zyphos `eclipse-nursery-handover`: `codex/world-zyphos` tip `055e6ee`; + lore on Zyphos `codex/ghostlight-worlds` at `2fef909`. + - Kalsa `stormshield-handoff-v0`: `codex/world-kalsa` tip `489c541`; lore + on Kalsa `codex/ghostlight-worlds` at `c9f4c5c`. + The first-generation `Invoke-Worlds.ps1` loop is retired (file still on + disk, do not launch it). The live fan-out is the 32-slot titled-elaborator + scheduler `C:\Users\Meta\.claude\worlds\Invoke-Elaborators.ps1` (detached, + PID 39500 at launch), config `worlds.config.psd1`, prompt + `elaborator-prompt.md`. Workers never run git: the Codex workspace-write + sandbox keeps `.git` read-only even inside the writable root. The scheduler + commits and pushes each slot clone on exit to `slot/<world>/<title>/<stamp>` + branches in both the Ghostlight world clone and the lore clone and records + each completion in `logs\elab-done.csv`; no slot has finished yet, so that + file does not exist. Integration into `codex/world-<world>` and + `codex/ghostlight-worlds` is a deliberate later pass. Clone paths: + `F:\Projects\Ghostlight-worlds\<world>` and `F:\Projects\<Lore>-worktrees\ghostlight-worlds` (full clones despite the name). Image rendering is deferred: the BFL key drive E: is gone, workers emit imagegen-ready prompts only, and `scripts/generate_bfl_images.py` has diff --git a/state/map.yaml b/state/map.yaml index daf93f3..a08375b 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -361,5 +361,5 @@ current_status: scale_checkpoint: Runs 108 through 115 prove load and failure properties of the pre-rebuild body, not world completeness. Operator directive 2026-09-04: the 2,400-subject / 240-cell / 10% cover profile is deliberate design, not a load fixture; a world feels alive only when actors at every level pursue their own goals, so that detail is generated first and multiresolution simulation is then choked so attention is scarce. The seed carries a `WorldScaleIntent`, the elaborators pursue its derived scale deficit, and cover budget is the choke. The 1,200-actor fixture is a load measure only. Structural admission still cannot require interest, diversity, name uniqueness, or an actor count; validity never waits on a count, liveness is authored. 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: Ontology v2 is adopted (`docs/architecture/ghostlight-world-ontology.md`; `ghostlight-transition-algebra.md` and `ghostlight-multiresolution-agency.md` are teardown evidence); plan step 6 is nine passes. (1) Pass 1 landed on `codex/ghostlight-dungeon-mvp` (Hands `d74d6ad` + Soul `9ddc21f`, pushed): `world/patch.rs` owns typed ID namespaces, `Ref<Id>` draft handles, closed `resolve_declarations` with the complete `Vec<Mismatch>`, and deterministic `derive_id`; `CommandBody::AdmitPatch` (Draft-only) and `WorldEffect::PatchAdmitted` share one `admit_resolved` owner with genesis; `STATE_SCHEMA` foundation.v1, `COMMIT_SCHEMA` foundation.v2, old stores refused; 55 tests in `world/`, 94 crate source. Action vocabulary is still `AffordanceKind::Speak`/`DecisionAction::Speak` until pass 4. Three Soul follow-ups in flight, not in HEAD: `mesh.rs`/`idunn_health.rs` literal `foundation.v0` must read `STATE_SCHEMA`; subject-less genesis is a `Mismatch` not `CorruptJournal`; `UnknownCanonical` handle-field ambiguity. Next: pass 2 (`Position`, `Route`, containment, topology admission, scope-digest binding). (2) World fan-out is a 32-slot titled-elaborator scheduler `C:\Users\Meta\.claude\worlds\Invoke-Elaborators.ps1` (config `worlds.config.psd1`, prompt `elaborator-prompt.md`). Workers never run git (Codex sandbox keeps `.git` read-only even inside the writable root); the scheduler commits and pushes each slot clone to `slot/<world>/<title>/<stamp>` in both repos and records `logs\elab-done.csv`; integration into `codex/world-<world>` and `codex/ghostlight-worlds` is a deliberate later pass. First fixture: Delvehold `cistern-house-nine-breaker-test` at `9374fd0` on `codex/world-delvehold`. Clones at `F:\Projects\Ghostlight-worlds\<world>` and `F:\Projects\<Lore>-worktrees\ghostlight-worlds`; image rendering deferred, prompts only. review and subtract the uncommitted Idunn projection and bounded RUDP transport, 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. `GameCult/cultcache-rs` and `GameCult/cultnet-rs` now have no readers anywhere: Epiphany `68939b2c` and CodexConnector `6519289` consume CultLib and carry no submodules at all, and Odin `27cc815` does the same. Both repos are retirable now: that work landed on CultLib main by fast-forward at `8cb3b72`, so every pinned revision -- Ghostlight `85f7024`, Epiphany and CodexConnector `e171eca`, Odin `cbde940` -- is an ancestor of main and resolves from a fresh clone. Still vendored are `VoidBot/vendor/cultcache-ts`, `Ghostlight/vendor/cultcache-py` and `Odin/vendor/cultmesh-rs`. The first two vendored because npm and pip cannot take a package from a subdirectory of a git repo the way cargo can, so there was nothing to depend on. CultLib `8cb3b72` adds a publish workflow: tagging `cultcache-ts-v*` or `cultcache-py-v*` ships `@gamecult/cultcache-ts` to npm and `cultcache-py` to PyPI, refusing any tag whose version disagrees with the manifest. Both repoints wait on the first publish, which needs an `NPM_TOKEN` secret and a PyPI trusted publisher. Ghostlight's is not a bare dependency swap: `tools/ghostlight_state_store.py` puts `vendor/cultcache-py/src` on `sys.path` so the state tooling works from a clone with no install step, and session bootstrap depends on that. Detail on the Odin repoint: Odin's vendored CultNet submodule and CultCache copy are gone from its worktree and both come from CultLib, with only `vendor/cultmesh-rs` still vendored and itself consuming CultLib. Odin's commit had to carry the in-flight CultMesh RUDP document server with it: the previously committed CultMesh calls `assume_connected()`, a CultNet method the fork had and CultLib does not, so the old code cannot build against CultLib at all. It depends on CultLib branch `claude/cultnet-reliable-expiry` at `cbde940`, which must reach main by merge rather than squash or the pinned rev is orphaned. Live citations name CultLib `85f7024`, a permanent ancestor of main; evidence records keep their pre-consolidation SHAs as dated history. Local run scaffolding, downloaded acceptance copies, and redundant Git bundles are already purged, and `.gitignore` now refuses them. + next_action: Ontology v2 is adopted (`docs/architecture/ghostlight-world-ontology.md`; `ghostlight-transition-algebra.md` and `ghostlight-multiresolution-agency.md` are teardown evidence); plan step 6 is nine passes. (1) Ontology tip `5e53beb` on `codex/ghostlight-dungeon-mvp` (pushed) carries pass 1 (Hands `d74d6ad`, Soul `9ddc21f`) plus the three follow-up cuts: one schema owner (`mesh.rs`/`idunn_health.rs` read `STATE_SCHEMA`), subject-less genesis is `Mismatch::NoDecisionSubject`, named referrer/referent fields. `world/patch.rs` owns typed ID namespaces, `Ref<Id>` draft handles, closed `resolve_declarations` with the complete `Vec<Mismatch>`, deterministic `derive_id`; `CommandBody::AdmitPatch` (Draft-only) and `WorldEffect::PatchAdmitted` share one `admit_resolved` owner with genesis; `STATE_SCHEMA` foundation.v1, `COMMIT_SCHEMA` foundation.v2, old stores refused. Action vocabulary is still `AffordanceKind::Speak`/`DecisionAction::Speak` until pass 4. Pass 2 (`Position`, `Route`, containment, topology admission, scope-digest binding) is with Hands in isolated worktree `.claude/worktrees/agent-a9c33487c7161e8d2` from scratchpad spec `imagination-pass2.md`; nothing from it is in the main tree. (2) First-generation world fixtures banked and pushed, reviewer-accepted except visual replay pending a scene-set blockout: Delvehold `cistern-house-nine-breaker-test` `codex/world-delvehold` @ `9374fd0`; Aetheria `navigator-berth-hearing-v0` `codex/world-aetheria` @ `fe679f4` (fixture `8860c47`, lore `ba5c2ce`); Zyphos `eclipse-nursery-handover` `codex/world-zyphos` @ `055e6ee` (lore `2fef909`); Kalsa `stormshield-handoff-v0` `codex/world-kalsa` @ `489c541` (lore `c9f4c5c`). `Invoke-Worlds.ps1` is retired; the live fan-out is the 32-slot titled-elaborator scheduler `C:\Users\Meta\.claude\worlds\Invoke-Elaborators.ps1` (config `worlds.config.psd1`, prompt `elaborator-prompt.md`), no slot finished yet. Workers never run git (Codex sandbox keeps `.git` read-only); the scheduler commits and pushes each slot clone to `slot/<world>/<title>/<stamp>` in both repos and records `logs\elab-done.csv`; integration into `codex/world-<world>` and `codex/ghostlight-worlds` is a deliberate later pass. Clones at `F:\Projects\Ghostlight-worlds\<world>` and `F:\Projects\<Lore>-worktrees\ghostlight-worlds`; image rendering deferred, prompts only. Deferred behind both orders, not cancelled: review and subtract the uncommitted Idunn projection and bounded RUDP transport, 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. `GameCult/cultcache-rs` and `GameCult/cultnet-rs` now have no readers anywhere: Epiphany `68939b2c` and CodexConnector `6519289` consume CultLib and carry no submodules at all, and Odin `27cc815` does the same. Both repos are retirable now: that work landed on CultLib main by fast-forward at `8cb3b72`, so every pinned revision -- Ghostlight `85f7024`, Epiphany and CodexConnector `e171eca`, Odin `cbde940` -- is an ancestor of main and resolves from a fresh clone. Still vendored are `VoidBot/vendor/cultcache-ts`, `Ghostlight/vendor/cultcache-py` and `Odin/vendor/cultmesh-rs`. The first two vendored because npm and pip cannot take a package from a subdirectory of a git repo the way cargo can, so there was nothing to depend on. CultLib `8cb3b72` adds a publish workflow: tagging `cultcache-ts-v*` or `cultcache-py-v*` ships `@gamecult/cultcache-ts` to npm and `cultcache-py` to PyPI, refusing any tag whose version disagrees with the manifest. Both repoints wait on the first publish, which needs an `NPM_TOKEN` secret and a PyPI trusted publisher. Ghostlight's is not a bare dependency swap: `tools/ghostlight_state_store.py` puts `vendor/cultcache-py/src` on `sys.path` so the state tooling works from a clone with no install step, and session bootstrap depends on that. Detail on the Odin repoint: Odin's vendored CultNet submodule and CultCache copy are gone from its worktree and both come from CultLib, with only `vendor/cultmesh-rs` still vendored and itself consuming CultLib. Odin's commit had to carry the in-flight CultMesh RUDP document server with it: the previously committed CultMesh calls `assume_connected()`, a CultNet method the fork had and CultLib does not, so the old code cannot build against CultLib at all. It depends on CultLib branch `claude/cultnet-reliable-expiry` at `cbde940`, which must reach main by merge rather than squash or the pinned rev is orphaned. Live citations name CultLib `85f7024`, a permanent ancestor of main; evidence records keep their pre-consolidation SHAs as dated history. 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. diff --git a/state/scratch.md b/state/scratch.md index 555a64c..3f95c5f 100644 --- a/state/scratch.md +++ b/state/scratch.md @@ -2,9 +2,9 @@ ## Current Subgoal -Plan step 6: pass 1 landed (`d74d6ad` + `9ddc21f`); three Soul follow-ups in -flight (schema literals, subject-less genesis Mismatch, UnknownCanonical), then -pass 2. Faculty maps for pass 1 are in the session scratchpad, not here. +Plan step 6 pass 2 (`Position`, `Route`, containment, scope-digest binding) with +Hands in `.claude/worktrees/agent-a9c33487c7161e8d2` from scratchpad +`imagination-pass2.md`; tip `5e53beb` carries pass 1 plus follow-ups. ## Working Notes