From bcfd024b34f978caae78eceab1876feb8950443f Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 5 Sep 2026 19:38:45 +0200 Subject: [PATCH] Record the seeded road run in the handoff and map Co-Authored-By: Claude Fable 5.1 --- notes/fresh-workspace-handoff.md | 80 +++++++++++++------------------- state/map.yaml | 4 +- state/scratch.md | 12 ++--- 3 files changed, 40 insertions(+), 56 deletions(-) diff --git a/notes/fresh-workspace-handoff.md b/notes/fresh-workspace-handoff.md index a5a418a..30c729b 100644 --- a/notes/fresh-workspace-handoff.md +++ b/notes/fresh-workspace-handoff.md @@ -307,59 +307,45 @@ are teardown evidence. Plan step 6 is ten implementation passes, all landed. Still deferred by design: `PolityInCausalRange`, `IndividuationRequired`, and Verification 13 wait for relations and population slices. - The seed producer is integrated: plan step 8 landed. Tip is `697ed07` - (Soul: five reproducers, eight bounds) over `e73ef5c` and `681f706` - (Hands), on `70600d8` (plan step 8 opened). The push follows a background - crate test and the branch read `ahead 3` at the time of writing; - `git status -sb` is the witness. What landed: `world/vault.rs` with - `VaultEvidenceSource` and its caps; `SeedPort` (`snapshot`, - `submit_seed`) in `world/mailbox.rs`; `SeedRunner`, `SeedSession`, - `SeedCheckpoint`, `SeedOutcome` in `world/elaboration.rs` sharing - `prompt_body` with the elaborator; `ControllerWork::Seed`, - `WorkLane::Seed`, `controller_work.v10`; `qualifies` is phase-free and - `require_answer` owns the Draft refusal; `world_create.v2` carries - `targets` and `jurisdictions` and `world_create.v1` is refused; - `world.seed` in the Eve schema, arm, button, descriptor, and card; the - `world.advance_time` schema gap is closed with a totality test; - `GHOSTLIGHT_SEED_VAULT_ROOT` (`runtime.rs:1689`) is required and the - runner refuses to seed without it; one session per invocation. Baseline - at `697ed07`: 339 test functions in `world/*.rs`, 390 crate source, plus - one integration test. The two pre-cut questions are answered in source: - the scale intent arrives through `world_create.v2`, and Draft seeding - answers nothing by design with `require_answer` as the refusal owner. + The seed producer is landed and proven on the road. Tip is `b7042f1` + (seed producer recorded, Soul follow-ups closed) over `491b06e` (the six + seed-lane follow-ups) and `697ed07` (Soul), both pushed; no worktree + exists. The seeded live smoke passed on the twelfth run, 2026-09-05: + from the Kalsa Public vault (`GHOSTLIGHT_SEED_VAULT_ROOT` at + `F:\Projects\Kalsa\Kalsa`, root label "Low Sere"), one seed session + authored six qualified persons into Low Sere in one round (39 s), + deficit 6 to 0; the world activated with nine subjects and six + boundaries; three ticks of eight singleton cells each (95 to 123 s) with + the seeded people speaking to each other by name. The run block and the + "Seeded run, 2026-09-05" table are in `notes/local-live-smoke.md`; the + evidence record is dated 2026-09-05T17:36Z; the ontology "Current + mechanism" gained a "Rules the road imposed" paragraph (line 256). - Soul verdict: integrate with follow-ups. Two real defects (a junction - escape in the Vault walk; absolute paths in `VaultError` reaching the - owner receipt), one overclaim (Active is refused once, by the runner, - not twice), one fixture dependence (boundaries come from obligations, - not goals), one lifetime gap (`VerifiedPrincipalEvidence` has no - expiry). Correction to a claim carried since pass 8: `derive_id` does - not have two call sites; production has eight. The invariant that - steers is that no pass adds a `derive_id` call site, and every ID still - derives by sha256 over world, command, and handle. + Uncommitted on main at the time of writing, to be committed once the + unit suite is green: the road fixes in `runtime.rs`, `controllers.rs`, + `elaboration.rs`, `patch.rs`, `tool_schema.rs` (strict-schema `anyOf` + and typed const tags with an offline test over both lanes; connector + `REQUEST_EXPIRY` 300 s and `RESPONSE_TIMEOUT` 900 s; content-addressed + `provider_request_id`; `SEED_ROUND_BUDGET` 24 with budget-end submitting + a non-empty draft; `SEED_INSTRUCTIONS` pacing and obligation rule; the + brief prints ids and a placement rule; classified faults and cell + outcomes logged at info; the live harness asserts a landed seed and + speech, counts `NoProgress` as landed, continues through `Rejected`), + plus the ontology paragraph, the smoke note, and the evidence record. + Baseline at that tree: 342 test functions in `world/*.rs`, 394 crate + source, plus one integration test. The connector is stopped after the + run; the smoke substrate at `F:\Projects\Ghostlight-smoke` stays. - In flight, not landed: `hands/seed-followups` in the worktree - `F:\Projects\Ghostlight-seedfu`, branched from `697ed07` with no commits - yet: canonicalize during the Vault walk and refuse reparse points; - `VaultError` without absolute paths; `SeedPort` phase-bound revision - submission; obligations in the brief; evidence `valid_until` enforced at - `submit_principal`; a receipt-cap guard. Main carries uncommitted doc - edits by a docs worker under coordinator ownership: the ontology - "Current mechanism" seed paragraph, the mvp doc, the Delvehold boundary - doc, the Eve native interface doc, the multiplayer intention doc, plan - step 8 marked landed, and a seeded run block in - `notes/local-live-smoke.md`. That run block currently points - `GHOSTLIGHT_SEED_VAULT_ROOT` at the fixture path - `F:\Projects\Ghostlight-smoke\vault` (line 58); the coordinator will run - the seeded road against Kalsa Public with root label "Low Sere" and - correct the note. The seeded road run follows the follow-ups. + Next seams, in the order the operator has so far implied: the outbound + consumer response batch with the non-loopback CultMesh lease; then the + deployment gate below. The elaborator swarm's ideas still sit on + `slot///<stamp>` branches and the four ledger directories; + their integration remains owed and deferred (item 2). Decisions the operator owns: (a) whether a refused coupled constituent may re-submit once inside the same tick, to be taken with the submitted-versus-committed number in hand; (b) the authority for an - owner-only Eve `world.run_tick` command, which is not built. Behind the seeded road run wait the outbound - consumer response batch with the non-loopback CultMesh lease and the - deployment gate below. + owner-only Eve `world.run_tick` command, which is not built. The ten specs and maps (`imagination-pass1..10.md`, `modeling-pass1..10.md`) remain in the session scratchpad only and are history, not steering; the docs own the design. diff --git a/state/map.yaml b/state/map.yaml index 8b484f2..7463c94 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -231,7 +231,7 @@ active_subgoals: - Extend strategic/offscreen named-person individuation beyond the proven emerge-then-act path so people plot across sustained political waves, acquire relationships, fold, and return without granting a cell, arena, or model commit authority. - Keep the selectable Kalsa Vault's Public player-safe and Spoilers GM-only evidence lanes intact through Git/Obsidian sync, retrieval, exact receipts, and player projection. Do not import it into the read-only Aetheria recovery index or create a rival Ghostlight semantic index. - Grow the 36-case candidate agency corpus toward 300 reviewed, behaviorally distinct attempts that either compose from existing primitives, produce an explicit bargain, or falsify the algebra. - - Build the seed producer: a Draft-phase authoring session over the elaboration loop with a local markdown Vault as EvidenceSource, producing owner-approved AdmitPatch seeds against a WorldScaleIntent set at genesis; reject honest evidence gaps instead of borrowing a nearby fixture, cast, or geography. + - Seed worlds from Vaults through the seeded live smoke (notes/local-live-smoke.md) and grow a seeded world toward the 2,400-subject / 240-cell design profile, recording each road failure as a rule in the tree; reject honest evidence gaps instead of borrowing a nearby fixture, cast, or geography. - Let append-only agent contexts realize stable-prefix cache reuse naturally without removing context needed for goals, promises, relationships, knowledge, or exact permissions; do not grow sporadic independent prompts such as newspaper filings merely to chase provider cache hits. - Keep every model stage proposal-only; malformed, stale, cross-slice, or semantically invalid waves must leave campaign state and fictional time unchanged. - Complete separate-account co-op privacy, actor-binding, unanimity, and restart proof when suitable testers or controlled account fixtures are available. @@ -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-v3 release through the rebuilt Idunn recipe/binding/router seam, the live state root satisfies the complete world-v3 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: Plan step 6, the ontology widening, is complete: ten passes integrated on `codex/ghostlight-dungeon-mvp`, tip `a1fd645` (pass tips `5e53beb`, `e99af63`, `d2805fe`, `0f21a49`, `dbe176d`, `cb6a126`, `1852ddd`, `3ed3868`, `8aebfb6`, `a1fd645`); `git status -sb` is the push witness; the series evidence record is dated 2026-09-05. The kernel holds 12 component kinds over 27 operations under one `WorldPatch`, one reducer, one CAS commit, one decode bound (`patch::decode_patch`, `MAX_PATCH_*`), three confined `SystemCapability` arms (`Clock`, `Elaborator`, `Consumer`); pass 10 added `world/consumer.rs`, `PatchGround`, `confine_to_ground`, `ControllerAssignment::ExternallyControlled`, `ConsumerPort`/`submit_consumer`, `POST /cultnet/world-patch` (loopback, msgpack, `CONSUMER_BODY_LIMIT`), `ConsumerRegistry` from `GHOSTLIGHT_CONSUMER_CREDENTIALS`; schemas `world_state.consumer.v1`/`world_commit.consumer.v1`, `STATE_SCHEMA_GENERATION` world-v3 (Idunn expectation changes; every world-v2 phrase below now means world-v3). Baseline 313 tests in `world/`, 357 crate source (focused run 312/352). Pass-10 follow-ups landed in `8173c9c` and the docs in `842b5af`; nothing is in flight and no worktree exists. First local live smoke 2026-09-05 (`5e52943`, runbook `notes/local-live-smoke.md`, harness the ignored test `live_smoke_ticks_a_genesis_world_against_the_connector` in `runtime.rs`, substrate `F:\Projects\Ghostlight-smoke`, connector from the CodexConnector repo head with the `daemon` feature): three ticks against a real connector on a genesis world, revision 2->11, two singleton cells per tick, Persona spoke and the operational lane committed each tick, elaboration clean, 40-70 s per tick; evidence record 2026-09-05T13:42Z. Findings: the road works end to end; prose is thin because genesis is three subjects in one room, so the seed producer is the evidenced gap (no steering surface named it before). Stale: ignored test `real_codex_connector_cognition_modes_commit_speech` (`controllers.rs:6549`) fails at `NoAudience`, retire or place it. Seed producer integrated, plan step 8 landed: tip `697ed07` (Soul) over `e73ef5c`/`681f706` (Hands), on `70600d8`; push follows a background crate test, `git status -sb` is the witness. Landed: `world/vault.rs` (`VaultEvidenceSource`, caps); `SeedPort` (`snapshot`, `submit_seed`) in `mailbox.rs`; `SeedRunner`/`SeedSession`/`SeedCheckpoint`/`SeedOutcome` in `elaboration.rs` sharing `prompt_body` with the elaborator; `ControllerWork::Seed`, `WorkLane::Seed`, `controller_work.v10`; `qualifies` phase-free with `require_answer` owning the Draft refusal; `world_create.v2` with `targets` and `jurisdictions` (v1 refused); `world.seed` in Eve schema/arm/button/descriptor/card; `world.advance_time` schema gap closed with a totality test; `GHOSTLIGHT_SEED_VAULT_ROOT` required; one session per invocation. Baseline 339 tests in `world/`, 390 crate source. Soul: integrate with follow-ups; defects: junction escape in the Vault walk, absolute paths in `VaultError` reaching the owner receipt; overclaim: Active refused once by the runner; fixture dependence: boundaries come from obligations, not goals; lifetime gap: `VerifiedPrincipalEvidence` has no expiry. Correction: `derive_id` has eight production call sites, not two; the invariant is that no pass adds one. In flight, not landed: `hands/seed-followups` in `F:\Projects\Ghostlight-seedfu` from `697ed07`, no commits yet (canonicalize the walk and refuse reparse points; `VaultError` without absolute paths; `SeedPort` phase-bound revision submission; obligations in the brief; `valid_until` enforced at `submit_principal`; receipt-cap guard). Uncommitted docs-worker edits on main: ontology seed paragraph, mvp, Delvehold, eve-native, multiplayer, plan step 8 landed, smoke-note run block (its `GHOSTLIGHT_SEED_VAULT_ROOT` points at the fixture vault; the coordinator runs against Kalsa Public root label \"Low Sere\" and corrects it). Next: land the follow-ups, then the seeded road run per `notes/local-live-smoke.md`. Operator decisions still open: (a) bounded in-tick re-submission for a refused coupled constituent, decided with the submitted-vs-committed number; (b) authority for owner-only Eve `world.run_tick`. Behind the seeded run: the outbound consumer response batch with the non-loopback CultMesh lease, then the deployment gate. (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`). The elaborator swarm is drained and handed off; this session does not own it: stop flag set 2026-09-04 20:10, drained 21:10 with 98 finished passes in `logs\elab-done.csv`, ledgers republished, successor handoff finalized at `C:\Users\Meta\.claude\worlds\README.md`. Resume waits on operator adjustments and belongs to the successor. Owed and deliberately deferred: integration of `slot/<world>/<title>/<stamp>` branches into the vaults (`codex/ghostlight-worlds`) and `codex/world-<world>`. Idea index: the four `experiments/elaboration/<world>/ledger/` directories on `codex/world-<world>`. Substrate lessons stay in `state/evidence.jsonl`; `Invoke-Worlds.ps1` is retired under `worlds\retired`. Clones at `F:\Projects\Ghostlight-worlds\<world>` and `F:\Projects\<Lore>-worktrees\ghostlight-worlds`; image rendering deferred, prompts only. Deployment gate, deferred behind the operator decisions, 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. + next_action: Plan step 6, the ontology widening, is complete: ten passes integrated on `codex/ghostlight-dungeon-mvp`, tip `a1fd645` (pass tips `5e53beb`, `e99af63`, `d2805fe`, `0f21a49`, `dbe176d`, `cb6a126`, `1852ddd`, `3ed3868`, `8aebfb6`, `a1fd645`); `git status -sb` is the push witness; the series evidence record is dated 2026-09-05. The kernel holds 12 component kinds over 27 operations under one `WorldPatch`, one reducer, one CAS commit, one decode bound (`patch::decode_patch`, `MAX_PATCH_*`), three confined `SystemCapability` arms (`Clock`, `Elaborator`, `Consumer`); pass 10 added `world/consumer.rs`, `PatchGround`, `confine_to_ground`, `ControllerAssignment::ExternallyControlled`, `ConsumerPort`/`submit_consumer`, `POST /cultnet/world-patch` (loopback, msgpack, `CONSUMER_BODY_LIMIT`), `ConsumerRegistry` from `GHOSTLIGHT_CONSUMER_CREDENTIALS`; schemas `world_state.consumer.v1`/`world_commit.consumer.v1`, `STATE_SCHEMA_GENERATION` world-v3 (Idunn expectation changes; every world-v2 phrase below now means world-v3). Baseline 313 tests in `world/`, 357 crate source (focused run 312/352). Pass-10 follow-ups landed in `8173c9c` and the docs in `842b5af`; nothing is in flight and no worktree exists. First local live smoke 2026-09-05 (`5e52943`, runbook `notes/local-live-smoke.md`, harness the ignored test `live_smoke_ticks_a_genesis_world_against_the_connector` in `runtime.rs`, substrate `F:\Projects\Ghostlight-smoke`, connector from the CodexConnector repo head with the `daemon` feature): three ticks against a real connector on a genesis world, revision 2->11, two singleton cells per tick, Persona spoke and the operational lane committed each tick, elaboration clean, 40-70 s per tick; evidence record 2026-09-05T13:42Z. Findings: the road works end to end; prose is thin because genesis is three subjects in one room, so the seed producer is the evidenced gap (no steering surface named it before). Stale: ignored test `real_codex_connector_cognition_modes_commit_speech` (`controllers.rs:6549`) fails at `NoAudience`, retire or place it. Seed producer landed and proven on the road: tip `b7042f1` over `491b06e` (six seed-lane follow-ups) and `697ed07`, pushed, no worktree. Seeded live smoke passed on the twelfth run 2026-09-05 from the Kalsa Public vault (`GHOSTLIGHT_SEED_VAULT_ROOT` `F:\Projects\Kalsa\Kalsa`, root label \"Low Sere\"): one seed session, 39 s, six qualified persons, deficit 6->0; nine subjects, six boundaries; three ticks of eight singleton cells (95-123 s), seeded people speaking to each other by name; table and run block in `notes/local-live-smoke.md`, evidence record 2026-09-05T17:36Z, ontology \"Rules the road imposed\" paragraph. Uncommitted road fixes on main pending a green unit suite: strict-schema `anyOf`/const tags with an offline test over both lanes, connector `REQUEST_EXPIRY` 300 s / `RESPONSE_TIMEOUT` 900 s, content-addressed `provider_request_id`, `SEED_ROUND_BUDGET` 24 with budget-end draft submission, `SEED_INSTRUCTIONS` pacing and obligation rule, brief ids and placement rule, info-level fault and cell-outcome logs, live harness asserting a landed seed and speech. Baseline 342 tests in `world/`, 394 crate source. Connector stopped; smoke substrate stays. Next seams: the outbound consumer response batch with the non-loopback CultMesh lease, then the deployment gate. Operator decisions still open: (a) bounded in-tick re-submission for a refused coupled constituent, decided with the submitted-vs-committed number; (b) authority for owner-only Eve `world.run_tick`. (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`). The elaborator swarm is drained and handed off; this session does not own it: stop flag set 2026-09-04 20:10, drained 21:10 with 98 finished passes in `logs\elab-done.csv`, ledgers republished, successor handoff finalized at `C:\Users\Meta\.claude\worlds\README.md`. Resume waits on operator adjustments and belongs to the successor. Owed and deliberately deferred: integration of `slot/<world>/<title>/<stamp>` branches into the vaults (`codex/ghostlight-worlds`) and `codex/world-<world>`. Idea index: the four `experiments/elaboration/<world>/ledger/` directories on `codex/world-<world>`. Substrate lessons stay in `state/evidence.jsonl`; `Invoke-Worlds.ps1` is retired under `worlds\retired`. Clones at `F:\Projects\Ghostlight-worlds\<world>` and `F:\Projects\<Lore>-worktrees\ghostlight-worlds`; image rendering deferred, prompts only. Deployment gate, deferred behind the operator decisions, 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 3ab23bf..d9f97ba 100644 --- a/state/scratch.md +++ b/state/scratch.md @@ -2,13 +2,11 @@ ## Current Subgoal -Seed follow-ups with Hands in `F:\Projects\Ghostlight-seedfu` on -`hands/seed-followups` from `697ed07` (Vault walk canonicalization and reparse -refusal; `VaultError` without absolute paths; `SeedPort` phase-bound revision; -obligations in the brief; `valid_until` at `submit_principal`; receipt-cap -guard), then the seeded road run against Kalsa Public, root label "Low Sere", -per `notes/local-live-smoke.md` once its run block is corrected. Main tip -`697ed07`; plan step 8 landed. +None. The seed producer is landed (`b7042f1`) and proven by the seeded live +smoke (2026-09-05, Kalsa Public, Low Sere); road fixes are uncommitted on main +pending a green unit suite. The next slice opens on the outbound consumer +response batch, the deployment gate, or one of the two open operator +decisions (see `notes/fresh-workspace-handoff.md`). ## Working Notes