diff --git a/docs/architecture/aetheria-content-generation-targets.md b/docs/architecture/aetheria-content-generation-targets.md index 6e19c49..742762a 100644 --- a/docs/architecture/aetheria-content-generation-targets.md +++ b/docs/architecture/aetheria-content-generation-targets.md @@ -19,6 +19,36 @@ characters, factions, pressures, memories, masks, and conflict arcs in explicit state, then project that state into usable scenes, dialogue beats, outlines, and dramatic complications. +## Why This Helps Dialogue + +Ghostlight should not ask one LLM prompt to "write good character drama" from +vibes. That path produces clever paste: fluent, energetic, and usually a little +dead behind the eyes. + +The useful split is: + +- Ghostlight builds the drama, narrative pressure, scene setup, and state. +- The dialogue renderer gives each character a constrained local context. +- The character speaks from who they are, what they have endured, what they + want, what they are feeling, what they are hiding, and how they perceive the + person in front of them. + +That means dialogue prompts should be character-local rather than omniscient. +They should include only the state that character plausibly has access to: + +- identity and role +- current mood and pressure +- relevant memories +- active goals +- relationship stance toward the listener +- perceived stakes +- cultural or factional scripts +- mask, concealment, or presentation strategy + +This lets characters breathe and act inside the scene instead of serving as +mouthpieces for a single plot-generating agent. The agent can shape the drama. +The character projection should preserve subjectivity. + ## Primary Use: Call Of The Void Content Call of the Void should be treated as the first consumer context for Ghostlight, @@ -95,6 +125,8 @@ The first useful organs are: 6. drama beat generator driven by goals, values, pressure, and memory 7. dialogue scaffold renderer that preserves stance, mask, and relationship asymmetry +8. character-local dialogue context packs that restrict each generated voice to + what that character knows, feels, wants, fears, and perceives The output should be inspectable. The author should be able to see why the machine thinks a character would deflect, confess, threaten, soften, bargain, @@ -118,6 +150,7 @@ organs can come later if they earn the trouble. The first implementation is useful if it can: - keep character state distinct from prompt prose +- render dialogue from character-local context rather than global plot vibes - generate dialogue scaffolds that reflect relationship history - create procedural drama from incompatible goals instead of random hostility - preserve cultural and factional pressure without making clones diff --git a/notes/architecture-rationale.md b/notes/architecture-rationale.md index 8207835..b33b45d 100644 --- a/notes/architecture-rationale.md +++ b/notes/architecture-rationale.md @@ -59,6 +59,27 @@ Language, structure, evidence, and salience are the steering surfaces. The repo exists to keep those surfaces explicit enough that the next waking thing can resume the pattern instead of faking continuity from vibes. +## Authoring Projection Principle + +For content generation, Ghostlight should not treat an LLM as one omniscient +drama goblin asked to write every character from the same cloudy prompt. + +The better division of labor is: + +- Ghostlight maintains explicit state about characters, relationships, + memories, pressures, goals, masks, culture, and scene stakes. +- A narrative or drama pass can arrange conflicts, reversals, escalation, and + consequences. +- Dialogue generation should then happen through character-local context packs: + what this character knows, feels, wants, remembers, conceals, and believes + about the person in front of them. + +That distinction matters because realistic dialogue usually comes from +subjective pressure, not from a summary saying "write dramatic banter here." +Each character needs room to act from their own partial state. The authoring +agent can build the trap. The character projection should decide how the person +inside the trap breathes. + ## Compact-Rehydrate-Reorient Compaction is a real state transition, not a cosmetic cleanup. @@ -79,4 +100,3 @@ After rehydrating, Ghostlight should: The aim is not immortality cosplay. It is banking the fire enough that the next waking thing finds coals instead of ash. - diff --git a/state/evidence.jsonl b/state/evidence.jsonl index 85d8064..3173bb3 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -3,3 +3,4 @@ {"ts": "2026-05-01T17:24:54+00:00", "type": "migration", "status": "ok", "note": "Migrated Ghostlight-owned research and architecture notes out of VoidBot and into this repo; Ghostlight is now the canonical home for personality, culture, state-projection, and Aetheria persistent-world design notes."} {"ts": "2026-05-01T17:35:16+00:00", "type": "decision", "status": "rejected", "note": "Rejected the prior corridor-crisis game slice as Ghostlight active direction; current Aetheria consumer target is Call of the Void content generation plus narrated timeline dialogue and procedural drama scaffolding."} {"ts": "2026-05-01T17:35:57+00:00", "type": "source", "status": "ok", "note": "Imported the scattered Call of the Void Google Doc brainstorm into docs/aetheria/call-of-the-void-brainstorm.md as raw source material; compact canon remains the AetheriaLore Call of the Void design note."} +{"ts": "2026-05-01T17:40:43+00:00", "type": "design", "status": "accepted", "note": "Clarified Ghostlight authoring rationale: the system should build drama and narrative pressure, then render character-local dialogue context packs constrained to what each character knows, feels, wants, remembers, hides, and perceives."} diff --git a/state/map.yaml b/state/map.yaml index 65db409..1b86f10 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -35,6 +35,7 @@ invariants: - Listener misread is part of the model, not an error to flatten away. - Personality must be modeled as layered organization, presentation, and situational activation, not just one bag of labels. - Authoring outputs must remain explainable in terms of state, relationship, pressure, memory, and goals. + - Dialogue generation should be character-local: each prompt should restrict context to what the speaking character knows, feels, wants, remembers, hides, and perceives. data_flow: observe: @@ -70,6 +71,7 @@ accepted_design: - Synthetic dialogue from known hidden state is a valid bootstrap source for training signal classifiers, but utterances themselves are not ground truth. - Performance, concealment, and mask maintenance are signal, not just obstruction. - The near-term Aetheria consumer is authoring support: Call of the Void content generation plus narrated timeline dialogue and procedural drama scaffolding. + - Ghostlight should build drama and narrative pressure, then project character-local dialogue contexts so characters can breathe and act from their own partial state. current_status: summary: Ghostlight has the Epiphany-style persistence spine and the first architecture payload for personality structure, signal classification, prompt projection, population scale, and Aetheria authoring support. It still has no runtime organs. The first Aetheria consumer target is Call of the Void content generation plus narrated timeline dialogue and procedural drama scaffolding.