Ghostlight/docs/architecture/soft-model-training-artifacts.md

539 lines
20 KiB
Markdown

# Soft Model Training Artifacts
Ghostlight has two kinds of machinery.
Some parts should be boring code:
- schema validation
- visibility filtering
- action legality
- object custody
- resource accounting
- Ink syntax validation and compilation
- event append
- provenance checks
- deterministic context slicing
- mechanical mutation gates
Other parts are soft. They require judgment, taste, social inference, cultural
pressure, and narrative sense. Do not fake those with brittle rules just because
a function-shaped hole is sitting there looking smug.
Soft parts should emit reviewed training artifacts from the beginning. Manual
review is not a temporary embarrassment. It is the dataset.
## Core Rule
If a decision cannot be made reliably by deterministic code, Ghostlight should
save it as a training example.
That includes accepted outputs, rejected outputs, repaired outputs, and weird
half-successes. Especially weird half-successes. They are where the machine is
showing the fracture line.
A useful soft artifact should preserve:
- the deterministic input slice
- the model or human output
- the reviewer decision
- accepted labels
- rejected labels, if any
- rationale grounded in state, scene, culture, memory, relationship, and lore
- failure notes
- provenance to source lore or fixture state
- whether the artifact is grounded canon, transition-grounded, procedural
branch material, or promoted branch material
## Sandboxed Responder Rule
Responder training data must not be authored from an omniscient view.
The coordinator may know the whole scene, hidden state, future branch plan,
author constraints, and private facts. The responder model we eventually train
will not. If a responder example only works because the authoring agent quietly
used omniscient context, the artifact is poisoned. It teaches the future model to
perform an impossible trick, then looks offended when reality asks for receipts.
For gold responder or character-action data:
- the coordinator prepares the scene and selects the acting character
- the projector emits the exact character-local context
- the responder is run from only that projected packet, visible event, allowed
action space, and any explicitly included source excerpts
- the responder does not see other agents' private state, hidden canonical
facts, author-only plot beats, future branch plans, or coordinator rationale
- any isolated worker or sub-agent used for responder generation should be
started without inherited conversation context when the harness supports it
- repo or lore browsing is disabled for the responder unless the projected
packet explicitly includes the excerpts or references the future model will
also receive
- the coordinator reviews after generation, not during it
Artifact requirements:
- `responder_visible_input`: the exact prompt or structured packet the responder
saw
- `responder_raw_output`: the unedited output
- `reviewed_output`: the accepted or repaired turn
- `review_status`: accepted, accepted-as-draft, useful-needs-revision, rejected,
or superseded
- `coordinator_interventions`: every edit, repair, deletion, or normalization
made after raw generation
- `hidden_context_refs`: ids or paths for context intentionally withheld, not
the hidden content itself
- `leakage_audit`: checks for private-state leakage, future-branch leakage,
author-only leakage, raw-state soup, prompt-constraint parroting, and
impossible body or object knowledge
Coordinator-written replacement text can be valuable, but it is not raw
responder output. Mark it as coordinator repair or frontier-curated final. Do
not smuggle repaired prose into the responder corpus as if the sandbox produced
it. That is how a dataset learns to cheat with a straight face.
## Training-Ready Scene Loop Bundle
A scene loop is the smallest useful sequential training unit before branch
compilation. It is not enough to have a nice transcript. The bundle needs the
machine trail that made the transcript possible.
A training-ready scene-loop bundle contains:
- scene-local digest or lore slice
- initial scene/world state
- current character state refs for every participant
- projected local context per acting turn
- responder packet per acting turn
- raw responder output capture per acting turn
- observable event record per accepted action
- participant appraisal receipt for every affected participant
- reviewed mutation receipt for character state, memory, relationship,
perceived overlays, object state, scene/world state, and unresolved hooks
- coordinator turn receipt carrying next-beat selection, world-state reads,
proposed deltas, glue prose, and review labels
- review summary naming which organs are training-ready, reference-only, or not
training data
Training readiness is per organ. A bundle can be useful for responder,
appraiser, mutator, relationship/perception updater, and coordinator training
while still being useless for branch compiler, IF artifact reviewer, or visual
replay training. Count only the receipts that actually exist.
`pallas-training-loop-v0` is the first pilot of this convention. It rebuilds one
Pallas threshold beat as a separate derivative and leaves the Pallas reference
fixture immutable.
## Soft Organs
These organs should be treated as model-training targets, not permanent
hand-authored rule nests.
### Coordinator Or Story Runtime
Glues scenes together, maintains world state, chooses which machinery runs, and
emits the connective prose around character turns.
In training-shaped loops, the coordinator should be sandboxed as its own
promptable organ. A coordinator worker receives only the scene state, accepted
receipts, unresolved hooks, available machinery, branch affordances, tonal
intent, author constraints, and game-engine-shaped state surfaces it is allowed
to use. It then proposes the next beat, acting character, machinery calls, glue
prose, and candidate state changes.
Codex remains the meta-coordinator while the system is being built: it scopes
the task, prepares the coordinator-visible input, launches the sandboxed
coordinator, reviews the output, labels interventions, and wires structured
state between organs. Codex-authored coordinator artifacts are useful draft
material, but they are not raw coordinator training data unless the coordinator
input/output seam was actually sandboxed.
This is a trainable artifact too. Do not let coordinator judgment evaporate into
chat history just because a large model is currently doing the stage management
with jazz hands and plausible deniability.
Training artifacts:
- scene setup receipts
- exact coordinator-visible input packet
- raw sandboxed coordinator output
- parsed and reviewed coordinator artifact
- coordinator plans
- selected next scene or next beat
- chosen acting agent
- selected tools or soft organs invoked
- world-state refs read
- world-state changes proposed
- unresolved hooks carried forward
- branch merge or branch split decisions
- authored glue prose
- rejected glue prose
- reviewer notes about pacing, legibility, state continuity, lore grounding,
game usefulness, and machinery misuse
The coordinator output should be shaped for a future game engine. Even while the
prototype lives in model imagination and authored prose, it should preserve
structured refs for:
- scene id
- location id
- time or sequence marker
- participating agents
- active objects
- active resources
- public world facts
- unresolved facts
- branch flags
- event log refs
- state fixture refs
- consequences awaiting review
Glue prose is part of the artifact. It is not canonical state, but it is useful
training signal for how scenes are bridged, how pressure is restated without
exposition sludge, and how a procedural branch becomes readable narrative.
Coordinator and narrator intelligence are allowed to exceed character
intelligence. This is how opaque high-context scenes become legible without
flattening the characters. If a Lucent negotiator, influencer, or feed operator
is performing layered reputation warfare, the coordinator may explain the
maneuver in reader-facing prose, but the explanation is not automatically
available to the character who performed or witnessed it. Character cognition
still comes from projected state: intelligence, social acuity, training,
cultural scripts, stress, and blind spots.
The coordinator may propose state changes, scene transitions, and tool calls. It
does not bypass deterministic gates. It does not silently decide hidden facts. It
does not mutate another organ's private output after review. It conducts the
little orchestra; it does not eat the violins.
### Projector
Turns canonical state, perceived state, memory, culture, scene pressure, and
affordances into character-local operating context.
Training artifacts:
- projected local context records
- projection examples
- prompt-rendering audits
- leakage failures
- source-grounding failures
The projector does not write final prose. It prepares the local pressure surface
for an acting model.
### Character Agent Or Responder
Chooses what a character does next from local awareness.
This includes speech and non-speech action. The agent may speak, wait, leave,
hide evidence, reveal evidence, spend a resource, attack, comply, defect,
bargain, comfort, or do nothing useful because people are built badly.
Training artifacts:
- exact responder-visible input packet
- hidden context refs, without hidden content
- raw responder output
- coordinator interventions or repairs
- action-choice receipts
- candidate branch sets
- accepted and rejected character turns
- spoken text when speech occurs
- observable non-speech action
- actor intent
- constraints used
- constraints violated
- reviewer notes about voice, lore, embodiment, agency, and scene fit
This model should be fine-tuned or adapted on a corpus of strong Aetheria
responses spread across the timeline. The goal is not a bolt-on lore module.
The goal is for the responder to internalize the shape of the setting: what
people assume, what institutions feel like, which pressures are normal, which
metaphors appear, what bodies can do, and how the universe tends to hurt people
while insisting it is only doing math.
That reduces lore handholding at runtime. It does not remove character-local
context. The tuned responder still needs the specific room, speaker, listener,
state, memory, affordances, and known facts for the current turn.
### Appraiser
Reads an observable event from one participant's local perspective and proposes
how that participant interprets it. This organ is not only for fictional scene
mutation. It is also one of the core paths by which VoidBot becomes better at
reading people: noticing what a human did or said, forming a grounded opinion
without pretending certainty, and revising that opinion as evidence accumulates.
Training artifacts:
- observed event
- participant-local knowledge
- private interpretation
- misread or correct-read label
- emotional appraisal
- relationship implications
- belief implications
- memory candidate
- human-facing opinion update when applicable: trust, concern, irritation,
respect, caution, attachment, boundary pressure, expected future behavior, and
what evidence would change the read
- reviewer corrections
The appraiser should not know canonical private state except where that
participant knows or believes it. Fundamental attribution bias belongs here. For
VoidBot, this means the model must distinguish an observed human behavior from a
durable claim about who that human is, and should preserve uncertainty, repair
signals, and evidence needed to revise the opinion later.
### State Mutator
Turns reviewed appraisal into bounded state changes.
Training artifacts:
- prior state refs
- event refs
- appraisal refs
- proposed state deltas
- accepted deltas
- rejected deltas
- mutation authority notes
- reviewer rationale
The early system should keep this manual and audited. Later a model can learn
common deltas, but deterministic gates still own schema, bounds, and authority.
### Relationship And Social Perception Classifier
Updates perceived overlays and relationship stance from repeated evidence. This
classifier should serve both Aetheria agents and VoidBot's long-running human
relationships; the same machinery that lets Sella update her read on Maer should
also let VoidBot update its read on a specific user without collapsing into
either sycophancy or a permanent first-impression mugshot.
Training artifacts:
- prior relationship stance
- event and appraisal history
- proposed movement
- confidence movement
- stale or reinforced impressions
- prejudice, stakes, memory, and social-reinforcement drivers
- reviewer notes
This is where confidence belongs. Do not grow a second correction-resistance
organ because the first one got lonely.
### Aetheria Responder Corpus
Training artifacts:
- source-grounded scene examples
- factional speech and pressure examples
- institution decision examples
- embodiment/interface examples
- negative examples where generic sci-fi assumptions were rejected
- reviewer notes tied to AetheriaLore paths
This corpus trains the character agent/responder directly. It is how a chosen
base model learns Aetheria's native assumptions rather than waiting for every
prompt to drag the whole lore vault behind it in a little wagon.
The tuned responder should learn the smell of the setting: Dominion severity,
Aya-coded care pressure, Navigator embodiment, corporate certification culture,
insurer cruelty, upload personhood fights, factional misreads, and the dry
little horrors of systems pretending to be neutral.
It still must receive character-local context at runtime. Fine-tuning gives it
priors, not omniscience.
### Branch Compiler
Turns scene intent, reviewed branch candidates, consequence packets, fold plans,
and visual continuity requirements into playable Ink plus sidecar receipts and,
when illustrated replay is in scope, a separate visual plan artifact.
The Branch Compiler is trainable because good branching structure is not just
syntax. It needs to decide where choices belong, which consequences can fold
into compact variables, which choices deserve route splits, which callbacks must
exist later, and how visual modifiers attach to actual state. Deterministic code
can validate Ink and refs. It cannot, by itself, know whether a branch feels
meaningful or whether convergence is lying.
Training artifacts:
- fixture brief
- source-grounded lore digest refs
- input branch candidates
- reviewed consequence packets
- fold plan
- generated Ink
- generated sidecar
- generated visual plan
- compiler notes
- variable set/read map
- route split or fold rationale
- visual prompt handles
- reviewer findings and repair labels
The compiler does not own hidden character truth, participant appraisal, or
durable social mutation. It materializes structure from already reviewed or
explicitly marked draft material.
### IF Artifact Reviewer
Audits playable branch artifacts before they enter the accepted corpus.
This reviewer is separate from the branch compiler because compilers are very
good at producing valid little lies. The reviewer checks whether tracked state
actually matters, whether choices change future affordances or outcomes, whether
folds preserve callbacks, whether visual modifiers correspond to real branch
state, and whether endings read the variables the story told us were important.
Training artifacts:
- Ink fixture under review
- sidecar under review
- coordinator artifact
- compiler notes
- validation output
- accepted/rejected decision
- severity-ranked findings
- failure labels such as `potemkin_state`, `cosmetic_choice`, `fake_fold`,
`missing_state_read`, `state_named_instead_of_checked`,
`visual_callback_missing`, and `ending_ignores_major_state`
- required fixes
- repaired artifact refs, when available
Early branch-and-fold reviews are seed material for this organ because they
caught decorative variables before they were allowed to become training sludge.
### Institution, Faction, And Consumer Decision Models
Eventually Ghostlight should support economic behavior and major faction
decision-making inside a simulated game world.
Training artifacts should preserve why agents:
- buy
- refuse
- trade
- hoard
- comply
- defect
- conceal
- reveal
- punish
- help
- lobby
- exploit
- delay
- sacrifice
The artifact should preserve perceived cost, scarcity, status pressure,
reputation risk, expected future contact, faction norms, institutional authority,
and moral injury when present.
Do not train a dialogue-only pet if the adult machine needs to decide whether a
clinic buys counterfeit cryo valves under blockade.
## Artifact Status
Soft artifacts should use explicit review status:
- `accepted`
- `accepted_as_draft`
- `useful_needs_revision`
- `rejected`
- `superseded`
Rejected artifacts remain valuable when the failure label is clear. A rejected
Navigator action that makes a cetacean walk across a human hallway is not trash.
It is a negative example with teeth.
## Training Corpus Families
Ghostlight should expect several related corpora rather than one heroic pile of
JSONL wearing a crown.
- projection corpus
- projected-local-context corpus
- coordinator/story-runtime corpus
- character-action corpus
- dialogue/prose response corpus
- participant-appraisal corpus
- state-mutation corpus
- relationship/perception corpus
- lore-grounding digest corpus
- Aetheria responder corpus
- Ink branch annotation corpus
- Branch compiler corpus
- IF artifact review corpus
- institution/faction/consumer decision corpus
- negative-example corpus
Some examples can belong to multiple corpora through references. Do not duplicate
truth; link artifacts by ids and source refs.
## Aetheria-Tuned Agent Model
The character agent itself is a training target.
A sensible long-term stack looks like this:
```text
AetheriaLore source corpus
-> source-grounded digests and scene fixtures
-> coordinator scene plans and glue-prose receipts
-> reviewed Ghostlight action/dialogue/appraisal artifacts
-> Aetheria-tuned responder or agent model
-> specialized coordinator/projector/appraiser/mutator students
-> deterministic runtime gates and validators
```
The Aetheria-tuned agent model should learn setting priors and voice ecology:
what institutions feel like, how factions misread each other, what bodies can do,
what pressure sounds like when nobody in the room has enough authority to fix the
machine.
It should not replace Ghostlight state. It should not decide hidden facts. It
should not mutate world state directly. It acts inside the local context and
affordances Ghostlight provides.
## Deterministic Gates Stay Deterministic
Training models does not remove hard gates.
Keep these as code:
- schema validation
- source provenance checks
- speaker-local visibility
- prompt leakage checks
- action enum validation
- body-affordance validation when source-backed
- mutation authority
- object custody
- resource and world-state legality
- Ink compilation
- artifact review status requirements
A model can propose. The runtime decides what is legal, what is visible, what is
accepted, and what becomes state.
## Near-Term Policy
During prototype work:
1. Keep fuzzy updates manual and reviewed.
2. Emit every model call as a receipt when it teaches something.
3. Store accepted and rejected examples with failure labels.
4. Prefer narrow artifacts over one vague transcript blob.
5. When a prompt fix reveals a reusable failure mode, promote it into validator
logic or artifact schema.
6. When a model repeatedly performs a soft judgment well, mark that organ as a
candidate for distillation or fine-tuning.
7. When it repeatedly fails in a patterned way, save the failures. The beast is
drawing us a map in crayon.
The point is not to automate everything today. The point is to stop losing the
manual intelligence we are already spending.