Ghostlight/notes/ghostlight-current-system-map.md
2026-08-16 20:12:53 +02:00

12 KiB

Ghostlight Current System Map

GhostlightDungeon is the active runtime program. Its authority map is docs/architecture/ghostlight-dungeon-mvp.md. The runtime is not yet complete; the existing validated artifact seams remain regression evidence.

GhostlightDungeon target flow

Vault evidence receipts + typed campaign snapshot
  -> permissioned projection
  -> Persona receives private lived narrative only
  -> Interpreter emits typed deltas and action proposals
  -> deterministic gates + expected revision
  -> one WorldCommand enters the campaign mailbox
  -> atomic CultCache commit + receipt
  -> parallel affected-participant appraisal
  -> CultMesh/Eve projection

Ghostlight owns the generalized projection organ. Epiphany and other consumers own their canonical Persona state and consequence commits.

Control Flow

  1. Rehydrate from state/map.yaml, notes/fresh-workspace-handoff.md, this file, and notes/ghostlight-implementation-plan.md.
  2. Run npm run state:status.
  3. Work one bounded organ.
  4. Validate the seam that matters.
  5. Persist only belief-changing evidence.
  6. Commit and push completed work.

Core Surfaces

  • state/map.yaml: canonical mission, boundaries, live architecture, next action.
  • state/evidence.jsonl: distilled belief-changing evidence only.
  • state/evidence.archive.jsonl: older evidence preserved for archaeology.
  • state/corpus-coverage.json: accepted/planned fixture coverage ledger.
  • notes/fresh-workspace-handoff.md: compact re-entry packet.
  • notes/ghostlight-implementation-plan.md: near-term implementation sequence.
  • docs/architecture/: detailed contracts and rationale.

Active Artifact Pipeline

Aetheria lore/source context
  -> lore grounding digest / source notes
  -> canonical agent and scene state
  -> projected local context
  -> responder packet
  -> sandboxed responder output
  -> review and leakage audit
  -> observable event record
  -> participant-local appraisal receipts
  -> mutation receipt
  -> updated scene/world/social state
  -> initiative schedule updates readiness, reaction windows, and next actor
  -> sandboxed coordinator continuity and next-beat plan
  -> meta-coordinator review, wiring, and labeled interventions
  -> branch compiler materializes Ink + sidecar + visual plan + compiler notes
  -> IF artifact reviewer audits consequence, fold, and visual continuity
  -> narrative/lore/spatial/visual reviewers audit player-facing quality
  -> accepted fixture / future training corpus + optional illustrated replay collateral

Responder packets are one seam, not the whole project. The branching scene path also requires coordinator receipts, branch compiler artifacts, and independent review before a fixture is accepted.

Tone is a live seam. The system should preserve Aetheria's range instead of defaulting to dry technical crisis prose: comic warmth, domestic routine, ritual memory, weird bureaucracy, noir suspicion, wonder, horror, poetic dread, and procedural systems pressure are all valid when source-grounded and character-local. Adams/Pratchett-style wit-with-stakes is a useful default touchstone for counterbalancing bleakness without dissolving consequence.

Visual replay is a presentation seam, not a core social-model training seam. Illustrated IF fixtures need click-through sections with stable visual_scene_id anchors, stable visual character refs for recurring named characters, a global style cue when the visual language matters, imagegen-ready base prompts, character visibility and stance controls, and branch/state modifiers. This data belongs in a separate .visual.json artifact referenced by the training sidecar, not inside the training annotation itself.

Generated images are not geometry authority. They can establish visual mood, materials, and concept direction, but multi-angle illustrated IF needs a durable scene_set source such as a hand-built 3D blockout, procedural scene file, or layout asset with named cameras and staging slots. For those scenes, imagegen is the painter/render pass over a camera-specific blockout, not the architect of the room.

Important Contracts

  • Agent state: schemas/agent-state.schema.json
  • Projection examples: schemas/projection-example.schema.json
  • Lore grounding: schemas/lore-grounding-digest.schema.json
  • Projected local context: schemas/projected-local-context.schema.json
  • Coordinator artifacts: schemas/coordinator-artifact.schema.json
  • Responder packets: schemas/responder-packet.schema.json
  • Responder outputs: schemas/responder-output.schema.json
  • Event records: schemas/event-record.schema.json
  • Participant appraisals: schemas/participant-appraisal.schema.json
  • Reviewed mutations: schemas/reviewed-mutation.schema.json
  • Scene-loop bundles: schemas/scene-loop-bundle.schema.json
  • Initiative schedules: schemas/initiative-schedule.schema.json
  • Ink branch contract: docs/architecture/ink-branching-scenes.md
  • Illustrated IF visual pipeline: docs/architecture/illustrated-if-visual-pipeline.md
  • Training stages and corpus gates: docs/architecture/training-plan.md
  • Corpus coverage ledger: docs/architecture/corpus-coverage-ledger.md

Current Live Examples

Pallas Species Strikes is the active reference-only story fixture:

  • examples/lore-grounding/pallas-species-strikes.awakened-labor.v0.json
  • examples/agent-state.pallas-species-strikes.v0.json
  • examples/coordinator/pallas-species-strikes.branch-and-fold.v0.json
  • examples/ink/pallas-species-strikes.branch-and-fold.v0.ink
  • examples/ink/pallas-species-strikes.branch-and-fold.v0.training.json
  • examples/visual/pallas-species-strikes.branch-and-fold.v0.visual.json
  • experiments/pallas-species-strikes/pallas-species-strikes.branch-and-fold-clean-run.v0.md
  • experiments/pallas-species-strikes/pallas-species-strikes.visual-scene-review.v1.json

The fixture is not training-ready data for Ghostlight's model stages. It was coordinator-authored without the exact projected-context, sandboxed responder, appraisal, mutation, relationship-update, and true branch-compiler receipts those stages require. Keep it as a reference for story shape, grounding, branch-and-fold presentation, visual planning, and future fixture expectations.

pallas-training-loop-v0 is the first separate training-shaped derivative. It rebuilds only the Kappa threshold beat through actual receipts:

  • scene digest and initial state under examples/training-loops/pallas-training-loop-v0/
  • projected contexts under examples/projected-contexts/
  • responder packets under examples/responder-packets/
  • raw no-fork subagent captures under experiments/responder-packets/
  • event, appraisal, mutation, review, and bundle receipts under examples/training-loops/pallas-training-loop-v0/
  • clean readable transcript under experiments/pallas-training-loop-v0/

It is training-shaped for projector, responder, event resolver, participant appraiser, mutator, relationship/perception updater, and coordinator/story runtime. It is not branch compiler, IF reviewer, visual, or accepted full-fixture coverage data.

lucent-hostage-feed-v0 is the current open-ended training-loop draft. It tests the same receipt-chain organs in a less reference-bound scene: a Lucent Media hostage-feed negotiation inside the media-eye counterweight of a tethered station staring down at a metropolis bubble.

The Lucent bundle includes:

  • scene digest, initial state, and branch surface under examples/training-loops/lucent-hostage-feed-v0/
  • projected contexts under examples/projected-contexts/
  • responder packets under examples/responder-packets/
  • raw no-fork subagent captures under experiments/responder-packets/
  • event, appraisal, mutation, review, and bundle receipts under examples/training-loops/lucent-hostage-feed-v0/
  • clean readable transcript under experiments/lucent-hostage-feed-v0/
  • fixture materializer at scripts/materialize_lucent_loop.py
  • initiative schedule example at examples/initiative/lucent-hostage-feed-v0.turn-20.initiative.json

Only the fifteen post-restart turns from turn-06 through turn-20 are counted as training-clean responder receipts. The earlier exploratory opening turns are setup/rehearsal context. The loop demonstrates state carryover: feed evidence externalization creates breathing room, breathing room creates a bench-edge substitution, the substitution enables a process-note admission, the admission enables direct hostage leverage to end, and release folds into safe-line confirmation plus non-contact protective handoff.

The current coordinator lesson is explicit: nudge through game-ergonomic state levers rather than forcing plot. Safe lines, evidence locks, security holds, handling categories, posture constraints, route access, clocks, public proof objects, and resource pressure are the elastic strings. Actors pull against those strings from local state; the coordinator records observed action and folds consequences through reviewed mutation.

The coordinator must now be treated as a sandboxable organ in future training-shaped loops. Codex remains the meta-coordinator: it prepares visible input, launches the coordinator worker, reviews the output, labels repairs, and wires structured state between organs. Raw coordinator training data should come from sandboxed coordinator prompts, not from omniscient chat steering.

The initiative scheduler is now an explicit mechanical seam. It decides when an actor is eligible to act from initiative speed, recovery, load, status, and reaction windows; it does not decide what the actor wants or how other participants appraise the event. Every affected participant still appraises and mutates before the scheduler selects the next projected actor.

VoidBot's newer heartbeat routine is the reference shape for turning that seam into a living swarm routine. For Ghostlight, the swarm is the cast: the same heartbeat initiative law selects characters taking turns within a scene, while offstage or maintenance heartbeats handle rumination, sleep consolidation, memory resonance, and reviewed upkeep. See docs/architecture/voidbot-routine-adoption-plan.md.

Pruned Receipts

Old prototype fixture receipts and model-runner files have been removed from the live workspace. Their useful lessons belong in the architecture docs, state map, evidence ledger, and git history. Do not reintroduce deleted receipt paths as active state surfaces.

Missing Or Incomplete Organs

  • World compiler browser flow, selected-opening/role path, live provider acceptance, material-gap approval, on-demand destination expansion, and canon-candidate persistence
  • Deterministic speaker-local input slicer
  • Full prompt renderer
  • Classifier/appraiser pipeline
  • Relationship/perception updater
  • State mutator model
  • Student projector
  • Runtime integration for initiative scheduling beyond validated artifacts
  • Branch compiler implementation beyond coordinator-authored fixtures
  • IF artifact reviewer implementation beyond manual/frontier review
  • Visual scene continuity reviewer implementation beyond prompted specialist review
  • Full scene/event loop implementation
  • Culture prior engine
  • Automatic promotion of branch outcomes into canonical state
  • Corpus coverage ledger expansion beyond the current draft Pallas and Lucent receipt-chain rows

Current North Star

Generate high-quality, sandboxed, source-grounded branching-scene samples that can later train specialized Ghostlight models while staying usable by a game engine: exact inputs, exact outputs, provenance, review labels, state mutation receipts, branch compiler artifacts, IF review findings, visual scene plans, and clear branch consequences. The samples should also train tonal control: a fixture needs an intentional prose mode and enough ordinary life for consequence to matter.

Use npm run coverage:status before choosing new fixtures so the corpus grows by coverage need instead of proximity to the nearest interesting disaster.