From 5599c164f3dbcc9c2e2d2e89798c587583cf3d7e Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Fri, 4 Sep 2026 16:15:58 +0200 Subject: [PATCH] Carry the scale directive into every steering surface Handoff, map hard boundaries and scale checkpoint, and plan invariant 8 now all state both truths: structural validity never waits on a count, and the seed's WorldScaleIntent with its cover-budget choke is the operator's design the elaborators pursue. The handoff carries the dated operator directive so a future session cannot re-cut it as fixture noise. Co-Authored-By: Claude Fable 5.1 --- notes/fresh-workspace-handoff.md | 25 ++++++++++++++++++++----- notes/ghostlight-implementation-plan.md | 7 +++++-- state/map.yaml | 4 ++-- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/notes/fresh-workspace-handoff.md b/notes/fresh-workspace-handoff.md index b05171e..6f35c95 100644 --- a/notes/fresh-workspace-handoff.md +++ b/notes/fresh-workspace-handoff.md @@ -69,9 +69,21 @@ accept or reject a proposed mutation. Translation gaps remain non-fictional inference/evaluation evidence outside `WorldState`; recording one cannot itself request elaboration or advance a world revision. -World validity is sparse and causal. Actor counts, coverage ratios, -interestingness, political diversity, name quality, and prose quality are -load or evaluation evidence; none admits ontology or declares a world complete. +World validity and world liveness are two different claims, and both are +true. Structural validity is sparse and causal: it never waits on a count, and +no count, cover ratio, interestingness, diversity, or prose-quality judgment +can admit ontology, reject a structurally valid mutation, or declare a world +complete. Liveness is authored: the seed carries a `WorldScaleIntent`, the +elaborators pursue its derived per-jurisdiction scale deficit as a work queue, +and the cover budget is the deliberate choke that makes attention scarce. + +Operator directive, 2026-09-04, preserve verbatim in intent: 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; that +detail is generated first, then multiresolution simulation is choked so +attention is scarce and selection is forced. The mvp doc's teardown-era +sentence calling it "test data, not a production elaboration target" was +wrong and is amended. Do not re-cut the scale target as fixture noise. ## Landed and in flight @@ -129,7 +141,10 @@ Invocation `d9254cd9b77946aebcf7a7fdae821402` is terminal. Preserve the root and receipts unchanged; its `status.json` is stale derived telemetry. Runs 108 through 115 are evidence about load and failure properties of the old -body. The 1,200 and 2,400 actor profiles are synthetic fixtures only. +body. Those runs were load fixtures; the 2,400-subject / 240-cell profile they +exercised is the authored design target, not fixture noise (see the operator +directive under Current authority). The 1,200-actor fixture remains a load +measure only. ## Operational boundary @@ -207,7 +222,7 @@ preconditions, effect slots, and kernel-entropy outcome bands, four derived `CausalBoundary` kinds, scope-digest binding, one `AdmitPatch` for seed and elaboration, eighteen proofs). `ghostlight-transition-algebra.md` and `ghostlight-multiresolution-agency.md` are teardown evidence. Plan step 6 is -eight implementation passes, none landed; kernel source is still Speak-only +nine implementation passes, none landed; kernel source is still Speak-only (`crates/ghostlight-dungeon/src/world/mod.rs`) with revision-bound opportunities. Run 115's vocabulary-shaped root cause and the v2 decisions are the last two records in `state/evidence.jsonl`. diff --git a/notes/ghostlight-implementation-plan.md b/notes/ghostlight-implementation-plan.md index 27d35e9..4e653c6 100644 --- a/notes/ghostlight-implementation-plan.md +++ b/notes/ghostlight-implementation-plan.md @@ -103,8 +103,11 @@ projection of committed history. changes it. 7. External consumers retain sovereignty. Ghostlight views, proposals, and acknowledgements cannot mutate external-owned state. -8. Sparse causal sufficiency controls elaboration. Counts and qualitative - review remain evaluation evidence only. +8. Sparse causal sufficiency governs structural validity; counts and + qualitative review remain evaluation evidence and never gate admission. + Elaboration additionally pursues the seed's authored `WorldScaleIntent` as + a derived scale deficit; cover budget is the deliberate choke on + simulation attention. 9. Restart reconstructs the exact committed world and idempotency history; a recovery loop cannot repair or reinterpret it. 10. Canonical IDs are allocated only while a complete private reduction is diff --git a/state/map.yaml b/state/map.yaml index ef69e5c..023f7a6 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -53,7 +53,7 @@ hard_boundaries: - The pre-rebuild Ghostlight pipeline is teardown evidence, not an authority to preserve. Do not add a model stage, semantic verifier, reconciliation agent, retry loop, model-routing exception, timeout exception, context adapter, checkpoint, or compatibility path merely to keep it running. Structural ontology and referential integrity belong to the single deterministic reducer. - Seal world authority before widening ontology. Only WorldKernel may hold mutable aggregate state, issue canonical IDs, invoke the reducer, or write the journal. The public seam is create/open, immutable snapshot, CommandEnvelope submission, and typed receipt. Empty reductions do not commit; translation gaps remain non-fictional inference/evaluation evidence outside WorldState. - Every autonomous authority scope has exactly one decision controller. NarrativePersona preserves the Projector-Persona-Interpreter prose membrane; OperationalAgent may use a permissioned typed view and tools for operator-shaped cognition. Interpretation is total: representable material becomes typed proposals and unrepresented material becomes exact translation gaps. Neither mode changes authority, falls through to the other for a gap or infrastructure fault, or exercises the same opportunity twice. - - Sparse causal sufficiency, not actor count, defines a valid world horizon. Counts, cover ratios, interestingness, political diversity, and prose quality are evaluation evidence and cannot admit ontology, reject a structurally valid mutation, or declare the world complete. + - Sparse causal sufficiency, not actor count, defines a valid world horizon. Counts, cover ratios, interestingness, political diversity, and prose quality are evaluation evidence and cannot admit ontology, reject a structurally valid mutation, or declare the world complete. Liveness is a separate authored claim: the seed's WorldScaleIntent (design target 2,400 subjects / 240 cells / 10% cover) is a scale deficit the elaborators pursue, and cover budget is the deliberate choke; validity never waits on it and it never gates admission. - Prompt text is projection, not truth storage. - A consumer-supplied ontology or fixed seed may bypass Session Zero world generation; it may never bypass WorldKernel validation, closed mutation authority, or atomic CultCache commit. - Delvehold retains quantitative economy authority. Ghostlight string resource handles and strategic resource effects must not impersonate quantities, prices, recipes, production capacity, inventories, orders, contracts, or conservation semantics. @@ -358,7 +358,7 @@ current_status: 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 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. + 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 at `34ce8c8` (`docs/architecture/ghostlight-world-ontology.md`: twelve components, twenty-nine operations under one `WorldPatch`, world-authored affordances, four derived `CausalBoundary` kinds, scope-digest binding, one `AdmitPatch`, eighteen proofs); `ghostlight-transition-algebra.md` and `ghostlight-multiresolution-agency.md` are teardown evidence. (1) Land plan step 6 pass 1 of eight: typed ID namespaces, `Ref` draft handles, closed-patch resolution, and the complete mismatch set with tests; kernel source is still Speak-only with revision-bound opportunities in `crates/ghostlight-dungeon/src/world/mod.rs`. (2) Four detached Codex CLI world workers are live on the prose+illustration Ink fixture path: PIDs `C:\Users\Meta\.claude\worlds\logs\pids-worlds.csv`, poll with `.\Invoke-Worlds.ps1 -Phase Status` from `C:\Users\Meta\.claude\worlds\`, ledgers `F:\Projects\Ghostlight-worlds\\examples\ink\\RUN.md` for aetheria, delvehold, kalsa, zyphos on branches `codex/world-` from `9c662bd`; 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.