Ghostlight/state/map.yaml

269 lines
26 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

experiment:
name: Ghostlight
status: active_mvp_build
phase: ghostlight_dungeon_hosted_playtest
premise: >
Build a durable research and implementation home for socially persistent
generative agents whose behavior emerges from personality, culture,
memory, perception, incentives, and situation rather than flat persona
prompts.
mission:
ghostlight_dungeon: >
Build a persistent, Vault-grounded single-player narrative simulation whose
WorldKernel exclusively owns revisioned world state, while generalized
Projector-Persona-Interpreter machinery produces bounded proposals for the
kernel to validate.
primary: >
Generate psychologically grounded branching scenes, dialogue, actions,
social consequences, and eventually storylines, consumer behavior,
faction decisions, and technology/item manifests for Aetheria.
near_term: >
Produce sandboxed, source-grounded branching-scene training data through
projected local context, responder packets, reviewed outputs, mutation
receipts, sandboxed coordinator continuity, branch compiler artifacts, and
IF review.
voidbot_goal: >
Keep the appraiser, relationship/perception updater, and memory machinery
useful for VoidBot's core companion mission: reading specific humans over
time, forming grounded opinions about them, noticing misreads, and updating
trust, concern, irritation, respect, boundaries, and expectations from
evidence rather than generic friendliness.
active_fixture: >
Pallas Species Strikes is reference-only story quality material.
`pallas-training-loop-v0` is the first small receipt-chain pilot.
`lucent-hostage-feed-v0` is the current open-ended training-loop draft:
fifteen post-restart turns through safe-line resolution, with responder
receipts but coordinator turns still Codex-authored rather than sandboxed.
Call of the Void and Elysium-era gameplay remain procedural consumer
targets.
hard_boundaries:
- Prompt text is projection, not truth storage.
- Canonical agent state and per-agent perceived state must remain distinct.
- Characters act from local knowledge, local perception, local pressure, and bounded affordances.
- Aetheria prose must support tonal range and ordinary life, not only crisis pressure. Wit, warmth, domesticity, ritual, boredom, wonder, and quiet dread are valid state-grounded modes when they fit the scene.
- Character intelligence is modeled state, not a default model capability. Make the Ghostlight machinery as smart as possible, but project each character's cognition, metacognition, manipulation skill, inference speed, education, and blind spots only to the level supported by their stat sheet, culture, experience, stress, and current state.
- Listener misread is first-class; intent and interpretation are not the same object.
- Human-facing appraisal is a first-class target; VoidBot must be able to read people, form grounded opinions, and revise those opinions over repeated contact.
- Generated action is an event proposal; deterministic gates and reviewed mutation decide what becomes state.
- Initiative controls action opportunity, not perception. Every affected participant appraises and mutates from an event before the next actor is projected; the scheduler selects eligible actors from readiness, recovery, load, status, and reaction windows rather than handing everyone a round-robin turn.
- Fuzzy judgments become reviewed training artifacts before they become trained models.
- Aetheria generation is source-first; check lore for factions, bodies, locations, institutions, and constraints before projection.
- Do not import species-comfort assumptions across institutions. AU dry-operation cephalopod labor is bare-minimum productivity support, not Navigator-style or cephalopod-native comfort habitat, unless source lore says otherwise.
- Elysium futures are branch-local canon indexed by lineage, not single-history Sol facts.
- Technology exploration must emit game-usable item, component, assembly, supply-chain, compatibility, and provenance data mapped toward Aetheria-Economy.
- Interactive-fiction fixtures should branch and fold: normalize most consequences into compact state variables and shared-scene conditionals, reserving isolated route splits for major world-changing divergence.
- Interactive-fiction fixtures require independent artifact review before acceptance; tracked variables must materially affect later affordances, risk, appraisal, callbacks, visual state, or outcomes, unless explicitly marked telemetry-only.
- Ghostlight scenes should feel like puppets on elastic strings, not puppets on rails. The coordinator supplies playable affordances, gates, resources, clocks, posture constraints, route options, evidence objects, and risk pressure; actors choose locally within those constraints; state folds from observed action rather than from the coordinator forcing a plot outcome.
- Complete illustrated interactive-fiction fixtures should emit visual art direction for website imagery and replay value, with click-through visual scene segmentation, stable visual character refs for recurring named characters, a global style cue when the visual language matters, one durable base image prompt per distinct section, character visibility and stance controls, and additive modification prompts for branch-visible consequences and scene-state changes; assembled prompts include only actually visible character refs, while continuity notes stay in tooling unless rewritten as concrete visible description.
- Image prompts must be affirmative target descriptions. Describe visible geometry, materials, composition, lighting, bodies, tools, and state deltas; keep forbidden assumptions in reviewer findings or validation errors instead of feeding negative constructions to imagegen.
- Generated environment images are concept and material reference, not geometry authority. Multi-angle or branch-consistent illustrated IF needs a durable scene-set source such as a hand-built 3D blockout, procedural scene file, layout asset, or camera map with staging slots and occluders; imagegen paints over camera-specific visual input instead of preserving topology from memory.
- Visual artifacts are auxiliary illustrated replay and website collateral for the corpus, not core training targets for responder, appraiser, mutator, or relationship models. Visual review judges the playable IF experience and visual plan, not clean-run prose receipts.
live_architecture:
ghostlight_dungeon:
- The authoritative ownership and build map is `docs/architecture/ghostlight-dungeon-mvp.md`.
- One per-campaign WorldKernel mailbox owns canonical state and revision numbers.
- Every player, NPC, institution, scheduler, import, and reload transition uses the same typed WorldCommand validation and atomic CultCache commit path.
- Ghostlight owns generalized Projector to Persona to Interpreter machinery; consuming Personas retain their own canonical minds and commit authority.
- Epiphany consumes the extracted Ghostlight projection crate at an exact Git revision while retaining her canonical Mind, effect admission, and consequence authority.
- Gestalt Personas own shared population state; first-relevance individuation and later folding are revisioned WorldKernel commits, and durable member deltas preserve specific people between appearances.
- The multiresolution agency graph derives a connected cohesive/arena cell cover from canonical actors, institutions, and gestalt leaves under a player-selected 1–32 budget.
- Model-driven strategic cell waves can change remote actors, institutions, gestalts, clocks, and exact-channel news while the absent player remains outside their write authority; the entire wave validates and commits atomically.
- Population activity effects represent exact attributed attempts to prepare, coordinate, investigate, recruit, obstruct, trade, or communicate; graph scope, locations, channels, and semantics validate before the kernel derives an event, and the effect never claims its own success.
- Salient dormant members may emit the same bounded activity vocabulary from their exact location toward their current leaf or adjacent subjects; member activity and migration share one action key, so arena aggregation cannot duplicate or transfer personal agency.
- Resolution-demand focal IDs are salience hints only; model output cannot force singleton cells or override the player-selected Persona-cell budget.
- Projectors receive decision-relevant situation state, Personas receive only lived narrative, and Interpreters receive exact action permissions; runtime-owned cell membership and revisions are bound locally rather than copied by a model.
- Local world compilation sees direct-seed evidence only. A separate Flash lane may establish coarse remote institutions from one short witnessed mandate each; deterministic binding omits unsupported entries into non-canonical approval gaps.
- Remote institutions receive deterministic six-axis coarse profiles with distinct self-authority and explicit unknown facets. The Pro agency compiler profiles only locally materialized subjects; finer remote state compiles on demand.
- Model-stage receipts expose per-attempt provider identity, latency, validation errors, and prompt/completion/cache token usage without storing reasoning content.
- 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.
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.
- `schemas/agent-state.schema.json` is also the first shared cross-runtime payload contract. CultNet clients should move `ghostlight.agent_state.v0` documents unchanged inside typed document envelopes instead of inventing forked state ontologies per repo.
state_model:
- Layer personality through organization, disposition, behavior, presentation, situational activation, relationships, goals, and values.
- Canonical authored state has no certainty; perceived overlays carry observed activation, attributed disposition, and confidence.
- Voice style is a broad communication vector; defensive, comic, tender, ritual, poetic, dry, or evasive verbal behavior should emerge from state, circumstance, relationship, tonal mode, and presentation.
projection:
- Project canonical state into character-local operating context before any responder sees it.
- Include scene facts, relevant memory, relationship read, stakes, embodiment/interface affordances, action affordances, projection controls, retrieved lore, tonal intent, ordinary-life texture, and latent pressure handling.
- Hide raw state internals such as means, plasticity, current_activation, and numeric dimensions from prompt text.
responder_packets:
- `packet_only` tests runtime parity from curated source excerpts.
- `retrieval_augmented` bakes setting texture into reviewed outputs through scoped retrieval.
- `responder_scoped_repository_search` allows the responder to inspect declared seed scope, follow bounded relevant AetheriaLore links, and requires consulted refs, followed refs, research trace, plus research summary.
- Gold responder data must preserve exact visible input, raw output, parsed/reviewed output, hidden-context refs, leakage audit, isolation method, and coordinator interventions.
training_loop_bundles:
- Scene-loop bundles are the receipt-chain unit for training-shaped sequential character scenes before branch compilation.
- A bundle must tie scene-local digest, initial state, coordinator turn artifacts, projected contexts, responder packets, raw responder captures, event records, participant appraisals, reviewed mutations, review summary, and coverage status.
- Training readiness is per organ. A valid responder turn does not automatically make branch compiler, IF reviewer, visual artifact, or whole-fixture coverage training-ready.
initiative_scheduler:
- Initiative scheduling is a deterministic runtime seam between reviewed mutation and the next actor projection.
- Participants carry initiative speed, next-ready time, reaction bias, interrupt threshold, current load, status, and constraints.
- Actions carry scale, recovery, initiative cost, interruptibility, commitment, and local affordance basis.
- Reaction windows are event-triggered opportunities with eligible actors, urgency, expiry, and allowed action scales; they are not automatic responses or hidden-state access.
- Coordinator overrides must record a reason before the artifact can claim training value.
- VoidBot's newer heartbeat routine is the reference for turning this seam into the cast swarm's live timing law: characters take scene turns through heartbeat initiative, cooldown begins after turn completion, and offstage agents use slower rumination/sleep turns for memory consolidation, resonance, incubation, and dreams. See `docs/architecture/voidbot-routine-adoption-plan.md`.
coordinator:
- The coordinator is a trainable soft organ: it stages scenes, chooses next beats and acting agents, invokes specialist machinery, carries unresolved hooks, emits glue prose, and proposes game-engine-shaped state changes.
- Future coordinator turns should be sandboxed as their own promptable worker outputs, with exact visible input, raw output, parsed coordinator artifact, review labels, and interventions preserved. Codex acts as meta-coordinator: it scopes, launches, reviews, repairs, and wires Ghostlight organs, but should not silently collapse the trainable coordinator organ back into omniscient chat.
- Glue prose is training signal, not canonical truth.
- Coordinator prose should choose an intentional tonal mode for the scene and protect breathing room when the story needs routine, levity, domestic texture, wonder, or slow dread before consequence.
- The coordinator/narrator may be smarter than the characters for reader service: explain opaque maneuvers, stakes, institutional games, and social tactics in accessible prose without retroactively making the acting characters more self-aware than their state allows.
- The coordinator nudges by affordance, not decree. Prefer concrete game-ergonomic levers such as safe lines, export locks, security holds, handling categories, visible posture scripts, route access, resource scarcity, clocks, and public proof objects over authorial pressure toward a desired ending.
branch_compiler:
- The branch compiler turns fixture briefs, lore digests, scene/world state, actor-local branch candidates, reviewed consequence packets, fold plans, and optional visual replay requirements into playable Ink plus training sidecars, separate visual plan artifacts when illustrated replay is in scope, and compiler notes.
- The branch compiler owns playable structure, click-through segmentation, conditionals, variables, callbacks, fold materialization, visual scene ids, and image prompt handles; it stores visual prompt data in `.visual.json` artifacts rather than bloating training annotations; it does not own hidden character truth, participant appraisal, or durable social mutation.
coverage_ledger:
- `state/corpus-coverage.json` tracks accepted, draft, planned, rejected, and superseded fixtures by faction, movement, flashpoint, timeline lane, tonal mode, collision axis, training target, artifact refs, review status, and economy hooks.
- `npm run coverage:status` validates the ledger and reports coarse corpus gaps before choosing the next fixture.
training_targets:
- Coordinator/story runtime
- Memory and lore retrieval
- Projector/state interpreter
- Character agent/responder
- Participant appraiser
- State mutator
- Relationship/perception updater
- Branch compiler for Ink materialization, fold/callback structure, and sidecar generation; visual plan generation is auxiliary illustrated replay support when a fixture is meant for website or art presentation
- Interactive-fiction artifact reviewer for fake variables, cosmetic choices, missing state reads, fake folds, and visual callback gaps
- Visual scene continuity reviewer for illustrated IF replay, click-through segmentation, imagegen-ready prompts, character visibility, stance control, and branch/state visual modifiers; this reviewer protects entertainment and presentation value, not core social-model training signal
- Human-facing appraisal and opinion model for VoidBot
- Evaluator/review classifiers
- Aetheria-tuned responder
- Institution, faction, and consumer decision models
active_subgoals:
- Keep Ghostlight focused on the architecture and data pipeline for socially persistent agents.
- Build schema-stable, sandboxed responder, coordinator, branch compiler, and IF review data before chasing larger runtime loops.
- Preserve Aetheria grounding through source-backed lore, branch labels, and reviewed assumptions.
- Preserve Aetheria tonal range: Adams/Pratchett-style wit-with-stakes is a useful default touchstone, while other controlled modes remain valid when grounded in character, setting, and consequence.
- Shape every soft judgment as future training data, not permanent prompt folklore.
- Keep item/technology exploration database-shaped for Aetheria-Economy instead of prose-only worldbuilding, including colony-consumed manufactured trade goods, not only gear assemblies.
- Track corpus coverage across all major factions, minor factions, movements, and flashpoints so no single fixture becomes the training universe by accident.
coverage_targets:
current_lore_counts:
major_powers: 12
minor_powers: 21
movements: 23
pre_elysium_flashpoints: 24
defunct_absorbed_powers: 5
baseline_story_fixtures: 92
baseline_with_defunct: 97
practical_first_broad_target: 100-150 reviewed fixtures
major_power_requirement: founding-era story plus day-in-the-life story
collision_requirement: every coverage story should involve multiple cultures, factions, movements, institutions, or body/infrastructure assumptions colliding
current_artifacts:
canonical_docs:
- notes/documentation-inventory.md
- docs/architecture/corpus-coverage-ledger.md
- docs/architecture/prompt-projection-contract.md
- docs/architecture/projected-local-context.md
- docs/architecture/sequential-agent-runtime.md
- docs/architecture/ink-branching-scenes.md
- docs/architecture/illustrated-if-visual-pipeline.md
- docs/architecture/aetheria-lore-grounding-architecture.md
- docs/architecture/sandboxed-responder-packets.md
- docs/architecture/soft-model-training-artifacts.md
- docs/architecture/training-plan.md
- docs/architecture/technology-item-manifest-plan.md
- docs/architecture/persistence-spine.md
schemas:
- schemas/agent-state.schema.json
- schemas/projection-example.schema.json
- schemas/lore-grounding-digest.schema.json
- schemas/corpus-coverage.schema.json
- schemas/projected-local-context.schema.json
- schemas/coordinator-artifact.schema.json
- schemas/responder-packet.schema.json
- schemas/responder-output.schema.json
- schemas/event-record.schema.json
- schemas/participant-appraisal.schema.json
- schemas/reviewed-mutation.schema.json
- schemas/scene-loop-bundle.schema.json
- schemas/initiative-schedule.schema.json
prompts:
- prompts/README.md
- prompts/sandboxed-responder-packet.md
- prompts/sandboxed-coordinator-turn.md
- prompts/interactive-fiction-weaver.md
- prompts/research-sanity-responder.md
- prompts/narrative-quality-reviewer.md
- prompts/lore-grounding-reviewer.md
- prompts/spatial-geometric-cohesion-reviewer.md
- prompts/visual-scene-continuity-reviewer.md
live_examples:
- state/ghostlight-state.cultcache.jsonl
- tools/ghostlight_state_store.py
- vendor/cultcache-py
- state/corpus-coverage.json
- examples/agent-state.call-of-the-void.json
- examples/projections/call-of-the-void.scene-broken-taxi-oz.jsonl
- examples/projections/call-of-the-void.scene-broken-taxi-oz.pretty.json
- examples/lore-grounding/historical-flashpoint.template.json
- 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/ink/lucent-hostage-feed.branch-and-fold.v0.ink
- examples/ink/lucent-hostage-feed.branch-and-fold.v0.training.json
- examples/ink/lucent-hostage-feed.negotiator-branch.v1.ink
- examples/ink/lucent-hostage-feed.negotiator-branch.v1.training.json
- examples/lore-grounding/corvid-collective-founding.v0.json
- examples/training-loops/corvid-collective-founding-v0/corvid-collective-founding-v0.initial-state.json
- examples/ink/corvid-collective-founding.branch-and-fold.v0.ink
- examples/ink/corvid-collective-founding.branch-and-fold.v0.training.json
- examples/visual/corvid-collective-founding.branch-and-fold.v0.visual.json
- experiments/corvid-collective-founding-v0/sandbox-packets/corvid-collective-founding-v0.coordinator-packet.md
- experiments/corvid-collective-founding-v0/sandbox-captures/corvid-collective-founding-v0.coordinator.capture.json
- experiments/corvid-collective-founding-v0/reviews/corvid-collective-founding-v0.narrative-review.final.json
- experiments/corvid-collective-founding-v0/reviews/corvid-collective-founding-v0.lore-review.final.json
- experiments/corvid-collective-founding-v0/reviews/corvid-collective-founding-v0.narrative-review.visual-enabled.json
- experiments/corvid-collective-founding-v0/reviews/corvid-collective-founding-v0.lore-review.visual-enabled.json
- experiments/corvid-collective-founding-v0/reviews/corvid-collective-founding-v0.spatial-review.final.json
- experiments/corvid-collective-founding-v0/reviews/corvid-collective-founding-v0.visual-review.final.json
- experiments/lucent-hostage-feed-v0/sandbox-packets/lucent-hostage-feed.negotiator-branch.v1.coordinator-packet.md
- experiments/lucent-hostage-feed-v0/sandbox-captures/lucent-hostage-feed.negotiator-branch.v1.coordinator.capture.json
- experiments/lucent-hostage-feed-v0/sandbox-packets/lucent-hostage-feed.negotiator-branch.v1.weaver-packet.md
- experiments/lucent-hostage-feed-v0/reviews/lucent-hostage-feed.negotiator-branch.v1.narrative-review.final.json
- experiments/lucent-hostage-feed-v0/reviews/lucent-hostage-feed.negotiator-branch.v1.lore-review.final.json
- experiments/lucent-hostage-feed-v0/reviews/lucent-hostage-feed.negotiator-branch.v1.spatial-review.final.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
- examples/training-loops/pallas-training-loop-v0/pallas-training-loop-v0.bundle.json
- examples/training-loops/pallas-training-loop-v0/pallas-training-loop-v0.scene-digest.json
- examples/training-loops/pallas-training-loop-v0/pallas-training-loop-v0.initial-state.json
- experiments/pallas-training-loop-v0/pallas-training-loop-v0.clean-run.md
- examples/training-loops/lucent-hostage-feed-v0/lucent-hostage-feed-v0.bundle.json
- examples/training-loops/lucent-hostage-feed-v0/lucent-hostage-feed-v0.scene-digest.json
- examples/training-loops/lucent-hostage-feed-v0/lucent-hostage-feed-v0.initial-state.json
- examples/training-loops/lucent-hostage-feed-v0/lucent-hostage-feed-v0.review.json
- examples/initiative/lucent-hostage-feed-v0.turn-20.initiative.json
- experiments/lucent-hostage-feed-v0/lucent-hostage-feed-v0.clean-run.md
- scripts/materialize_lucent_loop.py
- scripts/materialize_lucent_loop_continuation.py
pruned_receipts:
- Old prototype fixture receipts and local runner files were removed from the live workspace after their lessons were distilled into docs, state, evidence, and git history.
data_flow:
- Rehydrate from map, handoff, system map, implementation plan, and `npm run state:status`.
- Work one bounded organ.
- Verify the seam that matters.
- Add distilled evidence only when future belief changes.
- Steward memory: keep the smallest correct persistent surface current and cut stale steering when it slows re-entry.
- Commit and push completed work.
- If state grows faster than understanding, cut it back.
current_status:
summary: GhostlightDungeon production remains on the verified Starfire release. The acceptance candidate is pressuring multiresolution agency: exact Gestalt activity attempts, typed Gestalt event participation, nested lineage identity preservation, location-bounded presence projection, and automatic refugee callback rematerialization. Production state is untouched while the strict live-fire harness and receipts falsify the candidate.
next_action: Run the strict multiresolution refugee-return live fire after the perspective-ownership, explicit institution-posture, and chosen-travel translation repairs. Require meaningful whole-setting background activity, exact rival-arena attribution, migration across unrelated nested lineage trees, and automatic presence-planner rematerialization of the same durable member. Profile stage receipts and repair only the owning context or typed effect seam.
gestalt_population: Gestalt Personas own shared population baselines; persistent member deltas own named individuality; WorldKernel materialization and approval-gated fission preserve lineage and identity. Presence projection is limited to nearby active leaves and exact-location dormant members. Simulation cells are derived covers only.