15 KiB
Ghostlight Current System Map
Ghostlight does not have a runtime yet. The live system right now is the repo's state and re-entry discipline.
Current Control Flow
- A user or agent enters the repo with a bounded question or implementation goal.
- The session rehydrates from:
state/map.yamlnotes/fresh-workspace-handoff.md- this file
notes/ghostlight-implementation-plan.md
- The session runs
npm run state:statusto recover the current summary, next action, and active subgoals. - Work happens in one bounded slice.
- If understanding changes, the map is updated.
- If future belief changes, distilled evidence is appended.
- If compaction pressure rises, the helper audits state hygiene before the session banks the fire.
Live Surfaces
state/map.yaml- canonical experiment, objective, constraints, invariants, active subgoals, accepted design, and current status
state/scratch.md- temporary working memory for one bounded organ
state/evidence.jsonl- durable belief-changing records only
state/branches.json- explicit hypothesis or branch tracking
notes/fresh-workspace-handoff.md- re-entry packet
notes/ghostlight-implementation-plan.md- larger-organ sequence
docs/research/- research backlog and social-model notes
docs/architecture/- world, state, and prompt-system architecture notes
docs/architecture/prompt-projection-contract.md- contract for turning durable state into speaker-local pressure prose and prompt sections
docs/architecture/projection-distillation-plan.md- plan for using a frontier teacher model to generate reviewed projection artifacts before training a smaller student projector
docs/architecture/sequential-agent-runtime.md- scene-local dialogue/runtime loop where agents act from local awareness, generated actions become event proposals, and bounded state mutation drives branchable speech or non-speech scene consequences while preserving training hooks for later open-world, economic, and faction decision models
docs/architecture/ink-branching-scenes.md- integration contract that makes Ink the standard playable branch format while Ghostlight owns local awareness, projection rationale, consequence review, and state mutation around Ink scenes
docs/experiments/cold-wake-story-lab.md- four-scene Cold Wake writing experiment using Ghostlight projection as a story-generation crutch and training-data source
docs/architecture/schema-future-mechanisms.md- parking lot for appraisal, transition, belief, action, conversation, resource, dyad, institution, memory, and embodiment mechanisms not yet promoted into the v0 schema
docs/architecture/aetheria-lore-grounding-architecture.md- boundary and plan for grounding training data in authored Aetheria history while treating Elysium gameplay-era outcomes as procedural branch space
docs/architecture/lore-grounding-digest-format.md- human-facing format guide for cultural, factional, institutional, role, and speaker-boundary lore digests
docs/architecture/qwen-invocation-notes.md- verified local Qwen invocation policy: Ollama
/api/chat, native tools, thinking enabled, repair for known nested-argument double-stringify cases
- verified local Qwen invocation policy: Ollama
docs/architecture/projected-local-context.md- contract for the projector seam that turns canonical state into character-local operating context before a response model sees it, including embodiment and interface affordances
docs/architecture/aetheria-cold-wake-training-fixture.md- human-facing note that reframes the recovered Cold Wake scenario as historical projection feedstock rather than the active product target
schemas/agent-state.schema.json- v0 canonical agent-state contract for agents, relationships, events, scenes, perceived overlays, and dialogue context packs
schemas/projection-example.schema.json- v0 reviewed projection artifact contract for speaker-local prompt projection examples, including projection controls for frame, authority, object custody, required semantics, and forbidden resolutions
schemas/lore-grounding-digest.schema.json- v0 contract for grounding historical fixtures in source-backed cultural and factional pressure fields
schemas/projected-local-context.schema.json- v0 contract for projected character-local operating context artifacts
schemas/agent-state.required-fields.json- required first-class variable names for canonical state and relationship stance
examples/agent-state.call-of-the-void.json- first Call of the Void-flavored fixture for schema and projection work
examples/agent-state.cold-wake-story-lab.json- first story-shaped historical fixture for Cold Wake projection work
examples/projections/call-of-the-void.scene-broken-taxi-oz.jsonl- first reviewed Cat and Oz projection examples
examples/projections/call-of-the-void.scene-broken-taxi-oz.pretty.json- pretty-printed mirror for inspecting the first projection examples
examples/projections/cold-wake-story-lab.jsonl- response-turn projection examples for the Cold Wake story lab, including rejected and accepted Maer/Veyr prompt revisions
experiments/cold-wake-story-lab/- Qwen response captures and reviews from the writing experiment
the-narrowest-possible-margin.md, the first readable short story assembled from accepted projection outputs
examples/lore-grounding/historical-flashpoint.template.json- fillable template for the first historical Aetheria grounding digest
examples/lore-grounding/cold-wake-panic.ganymede-corridor.json- first draft historical grounding digest, centered on Cold Wake Panic in the Ganymede/Jovian corridor
examples/ink/cold-wake-sanctuary-intake.ink- first playable Ink-backed Cold Wake branching scene, using speech, gesture, object revelation, and moral-pressure branches
examples/ink/cold-wake-sanctuary-intake.training.json- reviewed sidecar annotation tying Ink branches to Ghostlight local awareness, projection controls, branch rationale, consequence surfaces, and manual mutation policy
examples/ink/cold-wake-sanctuary-intake.qwen-draft.ink- first Qwen-generated playable Ink draft materialized from a Ghostlight local-awareness prompt
examples/ink/cold-wake-sanctuary-intake.qwen-draft.training.json- sidecar annotation for the generated draft, accepted as training material rather than final polished prose
examples/ink/cold-wake-sanctuary-intake.qwen-sequential-v10.ink- first playable Ink branch materialized from an accepted projector-routed sequential Qwen capture
examples/ink/cold-wake-sanctuary-intake.qwen-sequential-v10.training.json- sidecar annotation for the v10 materialized sequential branch
experiments/ink/cold-wake-sanctuary-intake-qwen-branch-candidates-v1.capture.json- reviewed Qwen branch-generation receipt, including prompt, parsed response, strengths, failure notes, and pipeline lessons
experiments/ink/cold-wake-sanctuary-intake-qwen-sequential-v1.capture.json- useful-needs-revision sequential Qwen receipt that separates Maer-local choice generation from Sella-local next-action generation, while preserving the discovered failure around missing per-turn appraisal/consolidation and invalid action labels
experiments/ink/cold-wake-sanctuary-intake-qwen-sequential-v2.capture.json- useful-needs-revision sequential Qwen receipt using the symmetrical turn
model; it produced canonical action labels and a concrete Sella
withhold_objectnext action, but still needs stricter schema enforcement because some array fields came back as strings or objects
- useful-needs-revision sequential Qwen receipt using the symmetrical turn
model; it produced canonical action labels and a concrete Sella
experiments/ink/cold-wake-sanctuary-intake-qwen-sequential-v3.capture.json- useful-needs-revision thinking-plus-tools receipt that proved Maer could call the tool while later passes still fell back to plain JSON content because old prompt text conflicted with the tool path
experiments/ink/cold-wake-sanctuary-intake-qwen-sequential-v5.capture.json- accepted-as-draft thinking-plus-tools receipt using Ollama
/api/chat, native tools, andthink: truefor Maer choice, Sella appraisal, and Sella next action
- accepted-as-draft thinking-plus-tools receipt using Ollama
experiments/ink/cold-wake-sanctuary-intake-qwen-sequential-v6-projector.capture.json- useful-needs-revision projector-routed receipt proving Qwen prompts can use
character-local operating prose instead of raw state variables; still
exposed nested
response_constraintsstringification in appraisal output
- useful-needs-revision projector-routed receipt proving Qwen prompts can use
character-local operating prose instead of raw state variables; still
exposed nested
experiments/ink/cold-wake-sanctuary-intake-qwen-sequential-v8-projector-tightened.capture.json- useful-needs-revision receipt proving failed Maer choice generation is now
captured instead of crashing the runner; exposed malformed stringified
choices
- useful-needs-revision receipt proving failed Maer choice generation is now
captured instead of crashing the runner; exposed malformed stringified
experiments/ink/cold-wake-sanctuary-intake-qwen-sequential-v9-projector-tightened.capture.json- useful-needs-revision receipt showing Qwen can still drop tool calls entirely under projector-routed prompting
experiments/ink/cold-wake-sanctuary-intake-qwen-sequential-v10-no-think.capture.json- accepted-as-draft receipt showing projector-routed sequential generation works cleanly when strict tool calls run with thinking disabled
examples/projected-contexts/- current rendered projected local context artifacts for Maer and Sella in the sanctuary intake scene
experiments/ink/qwen-chat-tools-smoke.json- smoke receipt proving local
qwen3.5:9breturns bothmessage.thinkingand nativetool_calls
- smoke receipt proving local
experiments/ink/cold-wake-sanctuary-intake-qwen-sequential-v1.mutation.json- first reviewed branch mutation receipt, including manual participant appraisal/consolidation, normalized action labels, applied state deltas, and deferred unresolved facts
examples/agent-state.cold-wake-story-lab.after-sanctuary-ledger.json- mutated Cold Wake fixture after the selected sanctuary ledger branch, updating Maer and Sella state, relationship stance, memories, perceived overlays, event log, and active scene memories
examples/agent-state.cold-wake-story-lab.after-v10-packet-assessment.json- mutated Cold Wake fixture after the v10 packet-assessment branch, preserving unresolved packet personhood while updating state, relationship stance, memories, perceived overlays, event log, and active scene memories
experiments/ink/cold-wake-sanctuary-intake-qwen-sequential-v10.mutation.json- reviewed mutation receipt for v10 materialization, keeping fuzzy appraisal and relationship movement manual and auditable
tools/ghostlight_state.py- compact state inspection and evidence or branch updates
tools/ghostlight_prepare_compaction.py- pre-compaction audit of required files, handoff content, and git hygiene
tools/validate_agent_state.py- dependency-free validator for the current schema fixture invariants
tools/validate_projection_examples.py- dependency-free validator for projection example JSONL records
tools/run_qwen_projection.py- sends a projection prompt to the LAN Qwen box and saves response/capture artifacts without PowerShell encoding footguns
tools/validate_qwen_captures.py- validates reviewed Qwen response capture receipts
tools/validate_lore_grounding.py- dependency-free validator for lore grounding digest examples
tools/validate_ink_examples.py- compiles Ink examples with
inkjsand validates sidecar training annotations plus reviewed Qwen Ink-generation captures
- compiles Ink examples with
tools/run_qwen_ink_branch_generation.py- builds a local-awareness prompt from the Cold Wake fixture and asks Qwen for Ink branch candidates
tools/materialize_qwen_ink_draft.py- turns a reviewed Qwen branch capture into a playable Ink draft and sidecar annotation
tools/materialize_sequential_capture.py- turns an accepted sequential capture into playable Ink, sidecar annotation, reviewed mutation receipt, and a mutated fixture
tools/run_qwen_ink_sequential_generation.py- builds a sequential Qwen prototype through Ollama
/api/chatwith native tools and thinking disabled by default: actor-local choices, participant appraisal/consolidation, then next-actor action from updated state; now routes character context through the projected-local-context seam, captures failed Maer choice calls, separates repair notes from fatal validation notes, and keeps numeric appraisal deltas out of next-action prompt context
- builds a sequential Qwen prototype through Ollama
tools/check_qwen_chat_tools.py- fast smoke test for local Qwen thinking plus native tool calling
tools/project_local_context.py- deterministic first projector that compiles canonical state, scene facts, relationships, memories, projection controls, and optional observed event into character-local operating prose; for cetacean Navigators it projects habitat-native movement and interface affordances instead of generic human body defaults
tools/validate_projected_contexts.py- validates projected context artifacts and rejects prompt text that leaks raw canonical state internals
tools/apply_sequential_ink_branch_mutation.py- applies a reviewed replay of one selected branch into a mutated agent-state fixture and mutation receipt without letting Ink variables become canonical truth
tools/build_cold_wake_story_lab_fixture.py- generator for the verbose Cold Wake story-lab state fixture
What Does Not Exist Yet
- a classifier pipeline
- a prompt renderer
- a full projection training corpus
- a deterministic projection input slicer
- a student projection model
- a simulation/event loop implementation
- a relationship engine
- a culture prior engine
- an automatic Ink branch generator from local awareness
- automatic promotion of Ink branch outcomes into canonical state
The canonical agent-state schema, projection example schema, lore grounding digest schema, projected-local-context schema, first draft Cold Wake grounding digest, and first Cold Wake story-lab Qwen captures now exist as v0 seams. The first complete Cold Wake story pass exists with receipts, projection controls have been promoted, and Ink is now the standard branching scene format. The first Qwen-generated Ink draft now exists with a reviewed capture, the first selected branch now has a reviewed mutation replay that updates both involved characters, v2 shows the symmetrical turn model improves action behavior, v5 proves local thinking-plus-tools invocation works for the scene runner, and v6 routes that runner through projected character-local operating context. v8 and v9 show that Qwen tool-call reliability, not the projector seam, is now the immediate blocker. The v9 thinking trace also showed schema self-check looping instead of tool-call completion, so strict sequential generation now disables thinking by default. v10 validated that correction with an accepted-as-draft projector-routed no-thinking capture, which has now been materialized into Ink plus reviewed mutation training data. The next implementation target is reviewing the embodiment-aware v10 branch and mutation receipt for narrative quality and state-change plausibility before another updated-projector Qwen pass or generalizing the materializer.