Make the local playtest the next gate; correct stale map claims

The playtest gate goes ahead of the outbound consumer batch. The handoff
defines it and lists the walls found in source. The map no longer claims
co-op for up to eight players on the rebuilt kernel. It points the economy
spec at GameCult/Njordr and says CultCache comes from CultLib, not a
vendored copy.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-15 22:10:52 +02:00
commit 705d298f91
2 changed files with 42 additions and 15 deletions

View file

@ -1,6 +1,6 @@
# Ghostlight Fresh Workspace Handoff
Updated: 2026-09-11
Updated: 2026-09-15
This is the compact re-entry packet. It carries current authority and the next
gate. Git owns chronology, the system map owns teardown detail, and evidence
@ -261,12 +261,36 @@ unplaced; retire it or place its subjects.
### In order
1. The outbound half of the consumer contract: the response batch with a
1. The playtest gate below (operator order, 2026-09-15).
2. The outbound half of the consumer contract: the response batch with a
non-loopback CultMesh lease.
2. The deployment gate below.
3. Integration of the elaborator swarm's ideas (see "World fixtures and
3. The deployment gate below.
4. Integration of the elaborator swarm's ideas (see "World fixtures and
the elaborator swarm" below).
### Playtest gate
Passes when a human, on a local daemon with the SDK sidecar, creates and
seeds a world, activates it, and plays a scene: the human's subject shares a
place with seeded people, speaks and gestures through the Eve surface, and
reads what others said and did, attributed, in the story feed. It proves one
player; hosted play and multi-player membership are not in this gate.
Walls, as found on 2026-09-15 by reading source:
- Genesis places the human subject in The Commons (`world/mailbox.rs`),
and seeded jurisdictions stand beside it, not inside it. Unless the seed
moves people there, the human speaks into an empty room (`NoAudience`).
Confirm on a live run before cutting.
- `world.speak` is the only human action (`runtime.rs`); the human has no
display and no other catalog affordance.
- The Eve story card renders bare speech text only (`eve.rs`): no speaker,
no displays, no place or co-presence.
- Ticks run cells in sequence at 15–50 s each; a reply takes minutes.
`runtime.rs` still registers `session_zero.begin`; check whether it is a
refused name or a surviving authority while in that file.
### Decisions the operator owns
- Whether a refused coupled constituent may re-submit once inside the same

View file

@ -13,10 +13,9 @@ mission:
Build a persistent, Vault-grounded narrative simulation whose WorldKernel
exclusively owns revisioned world state, while generalized
Projector-Persona-Interpreter machinery produces bounded proposals for the
kernel to validate. The current forge surface supports one to eight
authenticated players in bounded shared-scene co-op; the durable
authority model admits those humans only as controllers of their exact
canonical actors through campaign membership.
kernel to validate. The rebuilt kernel admits one human, the world
owner, as controller of one genesis subject; multi-player membership
existed only in the pre-rebuild body and has no replacement yet.
primary: >
Generate psychologically grounded branching scenes, dialogue, actions,
social consequences, and eventually storylines, consumer behavior,
@ -356,7 +355,7 @@ 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 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.
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 one CultCache implementation (now consumed from CultLib `85f7024`) 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. 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.
@ -384,12 +383,16 @@ current_status:
consumer.v4; controller work rows are controller_work.v15 (a turn's
utterance and display are every span cited for them in prose order,
commit 855727f, run 12). Next, in the
operator's order:
(b) the outbound consumer response batch with a non-loopback CultMesh
lease, shaped as the economy daemon's signal surface (custody, pressure
and dependency, route, event deltas; spec docs/architecture/
gamecult-economy-daemon.md, written 2026-09-11, four operator decisions
open); (c) the deployment gate (world-v3, Idunn/Odin as recorded in the
operator's order (2026-09-15):
(a) the playtest gate: a human can play a scene on a local daemon.
Definition and walls are in the handoff's "Playtest gate"; the first
wall is that genesis places the human alone in The Commons, beside
rather than inside the seeded jurisdictions. (b) the outbound consumer
response batch with a non-loopback CultMesh lease, shaped as Njordr's
signal surface (custody, pressure and dependency, route, event deltas;
spec owned by GameCult/Njordr `docs/architecture/njordr.md`, Ghostlight's
obligations in the pointer docs/architecture/gamecult-economy-daemon.md);
(c) the deployment gate (world-v3, Idunn/Odin as recorded in the
handoff); (d) decision on Eve world.run_tick authority and the Eve
owner's fourth command-result state for an overtaken turn. Constraints:
the operator's Claude subscription, inherited by the sidecar from the