Document multiplayer as a post-solo extension

This commit is contained in:
Meta Vens 2026-08-18 16:36:47 +02:00
commit 418a591f7c
11 changed files with 277 additions and 140 deletions

206
README.md
View file

@ -1,149 +1,113 @@
# Ghostlight
Ghostlight is a research and implementation home for socially persistent
generative agents.
Ghostlight builds persistent generative people and worlds. Its active product is
[Ghostlight Dungeon](https://ghostlight.gamecult.org): a Vault-grounded narrative
simulation in which places, knowledge, relationships, institutions, clocks, and
consequences survive beyond the model's current context.
The project is about characters and simulated people who remain coherent across
time, routine, pressure, memory, culture, misreading, masks, incentives, and
changing relationships. The aim is not to make a language model sound charming
for one scene. The aim is to build machinery that can track who someone is,
what they believe, what they hide, how they see other people, how they live when
nothing is exploding, and how their behavior changes when the world leans on
them.
The project began as a research and fixture pipeline for socially persistent
Aetheria agents. That material remains useful regression evidence. The live
machine is now a Rust runtime with typed campaign state, one canonical world
authority, bounded Persona projection, fiction-first action resolution, and a
multiresolution agency graph for keeping large settings active at finite cost.
In practical terms, Ghostlight is building the state and projection layer for
character-driven generation:
## What Ghostlight Owns
- durable canonical character state
- observer-specific perceived state
- directional relationship stance
- cultural and institutional pressure
- memory and goal selection
- speaker-local prompt projection
- evaluation targets for emergent verbal behavior
- a future path for training smaller specialist projection models
The first concrete consumer is Aetheria authoring support, especially Call of
the Void content generation, dialogue scaffolding, and procedural drama for
narrated stories in the Aetheria timeline.
## Core Idea
Ghostlight separates three things that are easy to blur together:
1. **Canonical state**
What is true about a character, relationship, event, memory, or scene.
2. **Perceived state**
What a particular observer thinks is true, including misreadings,
attribution bias, suspicion, trust, projection, and partial knowledge.
3. **Prompt projection**
A temporary speaker-local prompt surface for one scene or turn.
The prompt is not the character. The prompt is a rendered slice of state.
That distinction matters because believable dialogue should come from character
circumstance, not vibes. Sometimes that circumstance is acute pressure. Often it
is habit, boredom, affection, work rhythm, class embarrassment, ritual memory,
professional competence, petty irritation, or ordinary warmth trying to survive
inside a bleak system. Cat being sarcastic should fall out of shame sensitivity,
distance seeking, suspicion, relationship tension, scene stakes, and voice.
Oz withholding information should fall out of mask rigidity, privacy pressure,
relationship fear, and the need to stay useful. A quiet joke, a domestic aside,
or a moment of tenderness should be just as explainable in state terms as a
threat. The system should be able to show its work without making every scene
sound like Greg Egan having a panic attack in a server closet.
- `WorldKernel` is the sole owner of committed campaign state and revisions.
- Every player command, NPC action, strategic tick, wait, import, and reload
enters the same validated campaign mailbox and atomic CultCache commit path.
- Vault evidence grounds world compilation; branch-local invention remains
distinct from canon.
- Projector → Persona → Interpreter turns produce proposals. Models never
commit world state.
- Knowledge, perception, capability, location, custody, and authority are
validated against the exact actor proposing an action.
- Fiction-first d20 resolution treats player text as an attempt rather than an
accomplished fact.
- Multiresolution Gestalts keep people, institutions, and factions active under
a bounded Persona-cell budget without merging rivals into one mind or erasing
named individuals.
- Away-time simulation advances clocks and remote agency without puppeting or
directly harming an absent player character.
- CultMesh publishes typed service and Eve/CultUI state; the browser lowers that
surface and does not become a second state authority.
## Current Status
Ghostlight is early architecture plus executable schema seams.
Ghostlight Dungeon is implemented and deployed as a private Starfire-hosted
playtest harness. The current acceptance surface covers:
Currently present:
- source-grounded world compilation with approval previews;
- persistent campaigns, forks, resets, exports, and isolated invite sessions;
- parallel affected-character Projector/Persona/Interpreter waves;
- impossible-action refusal, assessed stakes, server-side rolls, and receipted
commits;
- strategic clocks, away-time catch-up, institution activity, migration, and
information-channel-aware news;
- connected cohesive and arena simulation covers at budgets from 1 to 32;
- Gestalt materialisation, folding, member deltas, migration, and later
rematerialisation of the same person;
- atomic rejection of malformed, stale, or semantically invalid model waves;
- provider, token, cache, latency, validation, state-version, and build receipts;
- exact-build deployment and restart verification on Starfire.
- v0 canonical agent-state schema
- required variable lists for state families and relationship stance
- Call of the Void-flavored Cat/Oz fixture
- dependency-free fixture validator
- prompt projection contract
- projection distillation plan for teacher/student projector training
- persistence surfaces for re-entry, evidence, planning, and compaction hygiene
The immediate forge work is pressure-testing whether multiresolution Gestalts
produce satisfying setting-wide activity, callbacks, and surprises per token,
then running the two-tester paid-alpha path. The public site is provisional;
checkout is not live.
Not present yet:
## Multiplayer Intention
- runtime prompt renderer
- projection training dataset
- student projection model
- event/classifier pipeline
- simulation loop
- relationship update engine
- culture prior engine
The first paid alpha remains single-player. Multiplayer is an intended extension
of the existing authority model, not a separate chat mode.
## How Projection Is Supposed To Work
A campaign will continue to have one `WorldKernel`. Authenticated human sessions
will control distinct canonical actors, and every human or Persona proposal will
enter the same campaign mailbox. Each player receives a perception-specific
narrative projection; private knowledge is never unioned into a party prompt.
Splitting the party therefore changes occupancy and perception without creating
contradictory copies of the world.
For one speaker in one scene, Ghostlight should gather speaker-local state:
The durable intention and unresolved social-policy questions are recorded in
[`docs/architecture/ghostlight-dungeon-multiplayer-intention.md`](docs/architecture/ghostlight-dungeon-multiplayer-intention.md).
It does not expand the current MVP acceptance promise.
- what the speaker knows
- what they believe
- what they want
- what they are protecting
- what memories are active
- how they read the listener
- what the relationship currently feels like
- what circumstance the scene creates: routine, desire, scarcity, humor,
tenderness, danger, institutional friction, or open crisis
- what voice surface is active
## Architecture
The projection layer turns that into compact character-local prose and prompt
sections. The dialogue model then writes from the active circumstance and tonal
mode, not from a universal crisis register.
The shortest reliable re-entry path is:
Longer term, a frontier model can act as a teacher projector that generates
reviewed projection artifacts. Those artifacts can train a smaller student
projector once the projection schema, deterministic input slicer, and evaluator
are stable.
- [`docs/architecture/ghostlight-dungeon-mvp.md`](docs/architecture/ghostlight-dungeon-mvp.md): runtime authority, compiler, action loop, persistence, hosting, and security;
- [`docs/architecture/ghostlight-multiresolution-agency.md`](docs/architecture/ghostlight-multiresolution-agency.md): dynamic Gestalt partitioning, cohesive and arena cells, fairness, and atomic strategic waves;
- [`notes/ghostlight-current-system-map.md`](notes/ghostlight-current-system-map.md): current implemented pipeline;
- [`notes/ghostlight-implementation-plan.md`](notes/ghostlight-implementation-plan.md): live sequence and next pressure tests;
- [`state/map.yaml`](state/map.yaml): canonical human-readable project state.
## Repo Tour
## Repository Shape
- `AGENTS.md`: operating discipline for humans and agents
- `state/map.yaml`: canonical project map and current next action
- `state/scratch.md`: disposable working memory for one bounded subgoal
- `state/evidence.jsonl`: distilled belief-changing evidence
- `notes/fresh-workspace-handoff.md`: compact re-entry packet
- `notes/ghostlight-current-system-map.md`: current repo machinery
- `notes/ghostlight-implementation-plan.md`: larger implementation sequence
- `notes/architecture-rationale.md`: why the persistence and state split exists
- `docs/research/`: research backlog and modeling notes
- `docs/aetheria/`: Aetheria source material used by Ghostlight
- `docs/architecture/`: state, projection, and authoring architecture
- `schemas/`: JSON schema contracts and required field lists
- `examples/`: schema fixtures and future projection examples
- `tools/ghostlight_state.py`: state inspection and evidence helper
- `tools/ghostlight_prepare_compaction.py`: pre-compaction audit helper
- `tools/validate_agent_state.py`: focused fixture validator
- `crates/ghostlight-dungeon/`: Rust daemon, kernel, compiler, persistence,
provider stages, web lowerer, and acceptance harnesses;
- `crates/ghostlight-persona-projection/`: generalized projection membrane owned
by Ghostlight and consumed by Epiphany;
- `docs/architecture/`: durable contracts and authority maps;
- `docs/articles/`: accessible public explanations;
- `notes/`: implementation planning, handoff, and current-system maps;
- `schemas/`: published JSON Schemas for typed boundary documents;
- `examples/`: earlier fixtures and regression material;
- `state/`: human-readable project memory plus older research-pipeline state;
- `tools/`: state, validation, and fixture helpers.
Runtime documents and campaign exports use MessagePack-backed CultCache `.cc`.
JSON exists at schema publication, browser, MCP, model-provider, and diagnostic
boundaries; it is not the canonical hosted state store.
## Useful Commands
```powershell
cargo test --workspace
npm run state:status
npm run state:prepare-compaction
npm run schema:validate
```
To add distilled evidence:
```powershell
& 'C:\Users\Meta\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe' '.\tools\ghostlight_state.py' add-evidence --type design --status accepted --note '...'
```
## Best Starting Points
- `docs/architecture/canonical-agent-state-schema.md`
- `docs/architecture/cultnet-shared-agent-state-contract.md`
- `docs/architecture/agent-state-variable-glossary.md`
- `docs/architecture/prompt-projection-contract.md`
- `docs/architecture/projection-distillation-plan.md`
- `examples/agent-state.call-of-the-void.json`
For Codex-driven work, read `AGENTS.md` before changing the repo. It contains
the working rules that keep the project state coherent between sessions.
For Codex-driven work, read `AGENTS.md` before changing the repository. It owns
the persistence, grounding, verification, and handoff discipline.

View file

@ -0,0 +1,136 @@
# Ghostlight Dungeon Multiplayer Intention
## Status
Multiplayer is an intended post-single-player extension. It is not part of the
current MVP acceptance promise, subscription contract, or deployed tester
surface.
The existing simulation is already shaped around multiple bounded actors. The
extension should expose that anatomy to multiple human controllers without
creating a second world authority or a special multiplayer simulation loop.
## Objective
Let several human-controlled characters inhabit one persistent campaign while
preserving the same spatial, epistemic, causal, and commit invariants as solo
play. Players may share a scene, split across locations, keep secrets, arrive
late, miss events, and rejoin without receiving contradictory reconstructions
of the world.
## Authority map
- **Owner:** one per-campaign `WorldKernel` continues to own canonical state,
fictional time, revisions, rolls, events, and commits.
- **Inputs:** authenticated commands attributed to one campaign member and one
exact human-controlled actor; NPC and Gestalt proposals; scheduler commands;
current campaign and resolution revisions.
- **Outputs:** one atomic world transition plus actor-specific perceived events,
narrative projections, news access, and command receipts.
- **Derived state:** party rosters, shared transcript views, presence indicators,
ready state, and client notifications are projections of campaign membership,
occupancy, perception, and committed events.
- **Forbidden writers:** browsers, sessions, party leaders, Personas,
Interpreters, narrators, initiative, and realtime transports cannot commit or
repair campaign state.
- **Shared path:** solo commands, multiplayer commands, waits, travel,
simultaneous-action windows, NPC reactions, scheduler ticks, reconnects, and
imports use the same `WorldCommand → validate → atomic commit` primitive.
- **Cut line:** do not add a parallel room-state store, party prompt, shared
narrator memory, or multiplayer-only mutation path.
## Intended model
```text
Player A session ──> actor A command ─┐
Player B session ──> actor B command ─┼─> campaign mailbox
NPC / Gestalt proposals ──────────────┘ │
v
WorldKernel
│
one committed event + revision
│ │
A-perceived projection B-perceived projection
│ │
A's surface B's surface
```
A human-controlled actor differs from a Persona-controlled actor only in the
source of its candidate action. Human text still describes an attempt. It does
not bypass capability, location, custody, knowledge, opposition, assessment,
initiative, or commit validation.
## Invariants
- Every active canonical subject is represented exactly once in the resolution
cover regardless of how many humans are connected.
- One authenticated campaign member controls one or more explicitly assigned
actors according to campaign policy. Control is never inferred from scene
presence.
- An absent or disconnected player's character is not puppeted. Delegation or
Persona proxying requires an explicit, revocable campaign permission.
- Perception and knowledge remain actor-local. A shared party transcript may
contain only events all included viewers are permitted to perceive.
- Private speech, hidden action, secret evidence, and character-local news are
projected only to entitled sessions.
- Players in different locations receive different narrative streams derived
from the same committed world.
- A player cannot make another player's action, reaction, injury, belief, or
relationship true by describing it.
- Simultaneously submitted incompatible attempts resolve from one snapshot and
one deterministic initiative/conflict pass. Arrival order at HTTP or CultNet
transport is not fictional initiative.
- Player count does not multiply the background Persona-cell budget. Resolution
policy belongs to the campaign; directly engaged player characters may create
the same explicit mandatory-cell overage as other foreground actors.
- Reconnect and replay derive the player's view from committed receipts and
perception rules. A client cache cannot repair or override the kernel.
- One malformed, stale, or unauthorized participant proposal cannot partially
mutate the shared world.
## Social policy still to design
The architecture makes shared worlds straightforward. A usable multiplayer
game still needs explicit answers for:
- exclusive character control, temporary delegation, and permanent departure;
- host powers over invitation, removal, reset, fork, export, and campaign policy;
- asynchronous pacing and how much fictional time one active player may advance;
- simultaneous declaration windows for conflict, stealth, and split scenes;
- consent for player-versus-player persuasion, deception, theft, restraint,
injury, extraordinary influence, and character death;
- disclosure of hidden rolls, private messages, secrets, and retrospective logs;
- moderation, blocking, reporting, and campaign-data deletion;
- mixed privacy/provider lanes and whether one campaign may contain them;
- campaign billing, seats, guests, and ownership transfer.
These are campaign-governance decisions, not browser affordances. They must be
typed, persisted, inspectable, and enforced at command admission.
## Product sequence
1. Prove the solo paid-alpha loop and multiresolution setting agency.
2. Add campaign membership and exact actor-control assignments without changing
world mutation.
3. Support two cooperative players in one scene with perception-specific output.
4. Support split locations, private communication, disconnect, and reconnect.
5. Add snapshot-bound simultaneous declaration windows.
6. Admit adversarial actions only after consent and governance policy is typed
and tested.
The first multiplayer acceptance target should be cooperative and small. The
runtime should earn social complexity one invariant at a time.
## Acceptance direction
- Two players in one scene see one committed event and their own permitted
interpretations.
- A private fact learned by one player never appears in the other's projection.
- Split players can act in different locations without duplicating geometry,
actors, clocks, or institutions.
- Concurrent incompatible attempts resolve once from the same revision.
- A disconnected player remains unpuppeted while world clocks and remote agency
continue under campaign policy.
- Rejoining reconstructs the player's permitted continuity from exact receipts.
- Gestalt merge, split, migration, and named-member rematerialisation remain
correct while several human actors create simultaneous foreground pressure.

View file

@ -772,7 +772,12 @@ Live model allocation:
The daemon serves the embedded browser bundle on TCP 8831. Firewall scope is
Starfire's private LAN and `10.77.0.0/24`; there is no public listener or
Yggdrasil web gateway. Two single-use invites establish separate HttpOnly
sessions. Campaigns remain single-player.
sessions. Campaigns remain single-player in the MVP. This is a product-scope
constraint, not a WorldKernel identity: the intended post-solo extension maps
multiple authenticated members to distinct player-controlled actors while all
commands continue through the same campaign mailbox and atomic commit path.
`ghostlight-dungeon-multiplayer-intention.md` owns that future authority map;
it does not expand the current acceptance gate.
The MVP runs as a normal detached process under the Starfire operator account.
The launcher records the PID, exact executable path, release commit, and logs;

View file

@ -20,6 +20,9 @@ not slowly melt into one cursed binder.
- `docs/architecture/ghostlight-multiresolution-agency.md`: dynamic agency
graph, connected cohesive/arena covers, detail fairness, cell waves, fission,
controls, and atomicity.
- `docs/architecture/ghostlight-dungeon-multiplayer-intention.md`: bounded
post-MVP extension of the campaign kernel to multiple human-controlled actors,
including authority, privacy, concurrency, and unresolved social policy.
- `docs/architecture/canonical-agent-state-schema.md`: canonical state model.
- `docs/architecture/agent-state-variable-glossary.md`: meanings for state
axes, voice style, overlays, and emergent behaviors.

View file

@ -63,6 +63,14 @@ populations never merge; only the derived simulation cover does. Budget/pin
changes use `resolution_epoch`, provider parallelism uses its own configuration
epoch, and neither advances fictional time.
The paid-alpha scope remains single-player, but single-player is not a kernel
invariant. `docs/architecture/ghostlight-dungeon-multiplayer-intention.md`
records the intended later extension: multiple authenticated humans control
distinct actors through the same mailbox, perception gates, initiative, and
atomic WorldKernel commit path. It introduces no party prompt, room-state
authority, or current implementation work. The forge remains focused on proving
that multiresolution Gestalts preserve agency and produce satisfying surprises.
The current acceptance candidate adds a bounded population activity vocabulary
for preparation, coordination, investigation, recruitment, obstruction,
trade, and communication. Each action is constituent-attributed, graph- and

View file

@ -23,6 +23,14 @@ Vault evidence receipts + typed campaign snapshot
Ghostlight owns the generalized projection organ. Epiphany and other consumers
own their canonical Persona state and consequence commits.
The current player surface assigns one human session to one single-player
campaign. That is product scope, not kernel identity. The intended multiplayer
extension maps authenticated campaign members to distinct canonical actors and
routes every human command through this same mailbox and WorldKernel. Each
player receives an actor-permitted narrative projection; no party prompt or
shared client state becomes a second world authority. The bounded intention is
mapped in `docs/architecture/ghostlight-dungeon-multiplayer-intention.md`.
Build provenance has one owner: `crates/ghostlight-dungeon/build.rs` binds the
exact source commit into the binary. Its inputs are either the release tool's
explicit clean-tree commit or Git HEAD; it watches the actual symbolic ref,

View file

@ -288,5 +288,5 @@ Publish JSON Schema only as the schema catalog. Runtime documents and exports us
- Aetheria is the only bundled Vault adapter, but no compiler logic is Aetheria-specific.
- Generated suggestions plus unrestricted custom compilation replace fixed featured openings.
- No D&D classes, spell slots, six-ability statistics, or 5e sheet are canonical in the MVP. The typed character ledger remains sufficient for later D&D-shaped projections.
- No arbitrary Vault upload/import UI, multiplayer campaign, voice, image generation, direct canon mutation, or public internet exposure.
- No arbitrary Vault upload/import UI, multiplayer campaign, voice, image generation, direct canon mutation, or public internet exposure in the MVP. Multiplayer is an intended extension of the existing one-kernel/many-actors authority model and is documented separately; it does not expand this acceptance plan.
- The live deployment requires a DeepSeek key and restoration of the trusted VoidBot retrieval crossing; fixture-backed development may proceed before those two setup gates.

View file

@ -84,6 +84,14 @@ misplaced authority. Use model-stage cache usage, rejection receipts, cover
plans, outcomes, and world commits to improve satisfaction and cognitive
efficiency without weakening state admission.
Multiplayer remains outside the current paid-alpha gate but is now an explicit
architectural intention. Do not fork the simulation into a multiplayer room
model. After the solo product and Gestalt agency are proven, extend campaign
membership so authenticated humans control distinct canonical actors through
the existing mailbox, perception gates, initiative, and atomic commit path. The
authority map and unresolved consent/governance questions live in
`docs/architecture/ghostlight-dungeon-multiplayer-intention.md`.
## Prior research-program phase
Build a reliable data-generation loop for socially persistent Aetheria agents.

View file

@ -84,3 +84,4 @@
{"ts":"2026-08-17T15:20:00Z","type":"verification","status":"ok","branch":"codex/ghostlight-dungeon-mvp","note":"Live DeepSeek acceptance drove a 24-faction global agency skeleton through a budget-4 cover: all subjects appeared exactly once in four connected cells, three cross-faction cells remained arenas, two exact-constituent institutional consequences committed atomically, and the absent player was unchanged. Cutting model ownership of focal overage and deterministic cell bindings, splitting Projector situation context from Interpreter permissions, and stabilizing prompt prefixes reduced prompt use from 37,327 tokens/17.81s to 20,760 tokens/14.38s; all 13 stages validated first try. Witness: F:\\GameCult\\GhostlightDungeon\\acceptance\\gestalt-scale-20260817-151658\\result.json."}
{"ts":"2026-08-17T16:54:00Z","type":"verification","status":"ok","branch":"codex/ghostlight-dungeon-mvp","note":"Exact commit 84951fda6f17d06a03456ecef5d79f833006b92d completed the live VoidBot/DeepSeek compiler in 43.35 seconds with five first-attempt-valid stages. The seed admitted one local institution and a separately compiled global skeleton of 17 remote institutions; every remote agency profile carries only coarse deterministic facets plus nonempty evidence receipt IDs drawn from the preview's exact five Vault receipts. Ten unsupported agency candidates were omitted into one approval-visible coverage gap, and remote coverage gaps did not become canon candidates. Witness: F:\\GameCult\\GhostlightDungeon\\acceptance\\compiler-20260817-165127\\result.json."}
{"ts":"2026-08-17T17:22:30Z","type":"deployment","status":"ok","branch":"codex/ghostlight-dungeon-mvp","note":"Starfire activated immutable release f1d55b181ad60ace8e8e92859c4d0b2f1a94fc87 with binary SHA-256 119772af15859d8c26e7239d705a229ce01b24d6a7e70105b78e4df227ef0583. Active junction, release manifest, executable hash, PID 26140, typed health, persisted campaign count, ready DeepSeek startup inference, and the Ghostlight-owned CultMesh store agree. Periwinkle at 192.168.178.158 received exact health over the LocalSubnet lane and HTTP 401 for unauthenticated campaign access; Raven and Yggdrasil independently received exact health over WireGuard. Windows-generated public prompt rules were removed; the only Ghostlight rules admit TCP 8831 from LocalSubnet and 10.77.0.0/24. Live VoidBot retrieval returned the canonical Aetheria factions source, and the deployed browser renders a non-interactive authentication gate when no valid session exists."}
{"ts":"2026-08-18T14:36:02Z","type":"design","status":"accepted","branch":"codex/ghostlight-dungeon-mvp","note":"Multiplayer is an intended post-solo extension of the existing one-WorldKernel, many-actor authority model. Multiple authenticated humans will control distinct actors through the same campaign mailbox, perception gates, initiative, and atomic commit path; no party prompt or room-state authority is introduced. The paid alpha remains single-player while multiresolution Gestalt proof stays the immediate forge priority."}

View file

@ -74,3 +74,4 @@
{"key": "2026-08-16T181228Z0000-0072-4445afe2af66", "payload": "eyJub3RlIjogIldvcmxkIGNvbXBpbGVyIGxpdmUgYWNjZXB0YW5jZSBwYXNzZWQgb24gMjAyNi0wOC0xNjogRGVlcFNlZWsgdjQgUHJvIGNvbnN1bWVkIDMwIGhhc2hlZCBWb2lkQm90IHdpdG5lc3NlcyBhY3Jvc3MgdGhyZWUgcmVjZWlwdHMsIGVtaXR0ZWQgdGhyZWUgbG9jYXRpb25zLCB0aHJlZSBhY3RvcnMsIHR3byBpbnN0aXR1dGlvbnMsIHR3byBjbG9ja3MsIGV4cGxpY2l0IGdhcHMgYW5kIGJyYW5jaCBhc3N1bXB0aW9ucywgYW5kIHJlbWFpbmVkIGFuIHVuY29tbWl0dGVkIHJldmlzaW9uLTAgYXBwcm92YWwgcHJldmlldy4gRGV0ZXJtaW5pc3RpYyB0ZXN0cyByZWplY3QgZGFuZ2xpbmcgcm91dGVzIGFuZCBtYWxmb3JtZWQgdHlwZWQgc2VlZHMuIiwgInN0YXR1cyI6ICJvayIsICJ0cyI6ICIyMDI2LTA4LTE2VDE4OjEyOjI4KzAwOjAwIiwgInR5cGUiOiAiaW1wbGVtZW50YXRpb24ifQ==", "stored_at": "2026-08-16T18:12:28.266343+00:00", "type": "ghostlight.evidence_record.v0"}
{"key": "2026-08-16T181714Z0000-0073-fbac9b66b666", "payload": "eyJub3RlIjogIkRpc3Bvc2FibGUgSFRUUCBhY2NlcHRhbmNlIHByb3ZlZCB1bmF1dGhlbnRpY2F0ZWQgNDAxLCBjb21waWxlci1vbmx5IHN1cmZhY2UgYmVmb3JlIGFwcHJvdmFsLCBleHBsaWNpdCBjYW1wYWlnbiBhZG1pc3Npb24gd2l0aCB0aHJlZSBldmlkZW5jZSByZWNlaXB0cywgY2FtcGFpZ24gcmVsb2FkIGFmdGVyIGRhZW1vbiByZXN0YXJ0LCBhdXRoZW50aWNhdGVkIHNlc3Npb24gc3Vydml2YWwgYWZ0ZXIgcmVzdGFydCwgYW5kIDQwMSBvbiBjb25zdW1lZC1pbnZpdGUgcmV1c2UuIEF1dGggQ3VsdENhY2hlIHN0b3JlcyB0b2tlbi9zZXNzaW9uIGhhc2hlcyByYXRoZXIgdGhhbiBwbGFpbnRleHQuIiwgInN0YXR1cyI6ICJvayIsICJ0cyI6ICIyMDI2LTA4LTE2VDE4OjE3OjE0KzAwOjAwIiwgInR5cGUiOiAidmVyaWZpY2F0aW9uIn0=", "stored_at": "2026-08-16T18:17:14.919779+00:00", "type": "ghostlight.evidence_record.v0"}
{"key": "2026-08-16T211000Z0000-0074-ab460066cd5d", "payload": "eyJicmFuY2giOiAiY29kZXgvZ2hvc3RsaWdodC1kdW5nZW9uLW12cCIsICJub3RlIjogIlJlZ2lzdHJ5IEhUVFAgYWNjZXB0YW5jZSBhdCBjb21taXQgMzgxY2JmMjogdHdvIHNpbmdsZS11c2UgaW52aXRlIHNlc3Npb25zIGNvbXBpbGVkIGRpc3RpbmN0IGxpdmUgRGVlcFNlZWsvVm9pZEJvdC1ncm91bmRlZCBjYW1wYWlnbnMgd2l0aCBkaWZmZXJlbnQgSURzLCBzdXJmYWNlcywgZXZpZGVuY2UgcmVjZWlwdHMsIGFuZCBwZXItY2FtcGFpZ24gLmNjIHN0b3JlczsgY3Jvc3Mtc2Vzc2lvbiBzZWxlY3Rpb24gcmV0dXJuZWQgNDAzLiBGb3JrLCByZXNldCwgMSwwNTYsNzY4LWJ5dGUgQ3VsdENhY2hlIGV4cG9ydCwgc2Vzc2lvbi9jYW1wYWlnbiBzdXJ2aXZhbCBhY3Jvc3MgZGFlbW9uIHJlc3RhcnQsIHJlamVjdGVkLWNvbW1hbmQgcmVjZWlwdCB3aXRob3V0IHJldmlzaW9uIGFkdmFuY2UsIGNvbW1pdHRlZCBXYWl0IG5hcnJhdGlvbiwgYW5kIHplcm8gc2V0dGxlZCBsaXZlLXR1cm4gcHJlc3N1cmUgYWxsIHBhc3NlZC4gRGlzcG9zYWJsZSB3aXRuZXNzIHJvb3Q6IEY6XFxHYW1lQ3VsdFxcR2hvc3RsaWdodER1bmdlb25cXHNtb2tlXFxyZWdpc3RyeS0zODFjYmYyLiIsICJzdGF0dXMiOiAib2siLCAidHMiOiAiMjAyNi0wOC0xNlQyMToxMDowMCswMDowMCIsICJ0eXBlIjogInZlcmlmaWNhdGlvbiJ9", "stored_at": "2026-08-16T19:06:57.787318+00:00", "type": "ghostlight.evidence_record.v0"}
{"key": "2026-08-18T143602Z0000-0075-38277e5390c5", "payload": "eyJicmFuY2giOiAiY29kZXgvZ2hvc3RsaWdodC1kdW5nZW9uLW12cCIsICJub3RlIjogIk11bHRpcGxheWVyIGlzIGFuIGludGVuZGVkIHBvc3Qtc29sbyBleHRlbnNpb24gb2YgdGhlIGV4aXN0aW5nIG9uZS1Xb3JsZEtlcm5lbCwgbWFueS1hY3RvciBhdXRob3JpdHkgbW9kZWwuIE11bHRpcGxlIGF1dGhlbnRpY2F0ZWQgaHVtYW5zIHdpbGwgY29udHJvbCBkaXN0aW5jdCBhY3RvcnMgdGhyb3VnaCB0aGUgc2FtZSBjYW1wYWlnbiBtYWlsYm94LCBwZXJjZXB0aW9uIGdhdGVzLCBpbml0aWF0aXZlLCBhbmQgYXRvbWljIGNvbW1pdCBwYXRoOyBubyBwYXJ0eSBwcm9tcHQgb3Igcm9vbS1zdGF0ZSBhdXRob3JpdHkgaXMgaW50cm9kdWNlZC4gVGhlIHBhaWQgYWxwaGEgcmVtYWlucyBzaW5nbGUtcGxheWVyIHdoaWxlIG11bHRpcmVzb2x1dGlvbiBHZXN0YWx0IHByb29mIHN0YXlzIHRoZSBpbW1lZGlhdGUgZm9yZ2UgcHJpb3JpdHkuIiwgInN0YXR1cyI6ICJhY2NlcHRlZCIsICJ0cyI6ICIyMDI2LTA4LTE4VDE0OjM2OjAyKzAwOjAwIiwgInR5cGUiOiAiZGVzaWduIn0=", "stored_at": "2026-08-18T14:36:02.925590+00:00", "type": "ghostlight.evidence_record.v0"}

View file

@ -10,10 +10,12 @@ experiment:
mission:
ghostlight_dungeon: >
Build a persistent, Vault-grounded single-player narrative simulation whose
WorldKernel exclusively owns revisioned world state, while generalized
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.
kernel to validate. The paid-alpha surface is single-player; the durable
authority model intentionally admits multiple authenticated humans as
controllers of distinct canonical actors later.
primary: >
Generate psychologically grounded branching scenes, dialogue, actions,
social consequences, and eventually storylines, consumer behavior,
@ -84,6 +86,7 @@ live_architecture:
- Budget and pins own `resolution_epoch`; provider concurrency owns a separate configuration epoch and cannot repartition or advance fiction.
- Approval-gated gestalt fission creates explicit child leaves plus `other/unknown`, preserves inactive parent lineage, and never erases member deltas.
- Existing v0 training fixtures are regression evidence and have no runtime write authority.
- Multiplayer is a post-solo extension of the same campaign mailbox and WorldKernel, not a parallel room-state or party-prompt authority. The intention and unresolved governance policy live in `docs/architecture/ghostlight-dungeon-multiplayer-intention.md`.
persistence_spine:
- The hosted runtime uses Rust CultCache/redb `.cc` stores: one store per campaign plus service auth and CultMesh stores.
- `state/ghostlight-state.cultcache.jsonl`, `state/branches.json`, and `state/evidence.jsonl` belong to the older research pipeline and have no hosted runtime authority.