Add Cold Wake story lab experiment
This commit is contained in:
parent
8c28cc0514
commit
2414db6e97
17 changed files with 4457 additions and 43 deletions
|
|
@ -10,7 +10,7 @@ This is a staged plan, not an immediate fine-tune order.
|
|||
## Goal
|
||||
|
||||
Train or adapt a smaller projection model that can turn structured Ghostlight
|
||||
state into compact speaker-local pressure artifacts.
|
||||
state into compact character-local pressure artifacts.
|
||||
|
||||
Input:
|
||||
|
||||
|
|
@ -26,12 +26,14 @@ Output:
|
|||
- active pressures
|
||||
- tensions
|
||||
- response affordances
|
||||
- physical or action affordances when relevant
|
||||
- voice surface
|
||||
- rendered prompt text
|
||||
- audit notes or trace linking outputs back to state
|
||||
|
||||
The student projector should not generate final dialogue. Its job is to build
|
||||
the pressure model that a dialogue model can write from.
|
||||
The student projector should not generate final prose. Its job is to build the
|
||||
pressure model that a response model can write from. The response may be
|
||||
dialogue, action, silence, withdrawal, violence, or a mixed beat.
|
||||
|
||||
## Aetheria Training Boundary
|
||||
|
||||
|
|
@ -107,7 +109,7 @@ mirror for inspection, review, and discussion.
|
|||
"scene_id": "scene-broken-taxi-oz",
|
||||
"speaker_agent_id": "cat_marrigan",
|
||||
"listener_ids": ["oz_operator"],
|
||||
"projection_mode": "dialogue_turn"
|
||||
"projection_mode": "response_turn"
|
||||
},
|
||||
"output": {
|
||||
"known_facts": [],
|
||||
|
|
@ -179,8 +181,10 @@ For each projection, check:
|
|||
scene pressure?
|
||||
- Did response affordances emerge from state intersections?
|
||||
- Did voice surface stay separate from defensive behavior?
|
||||
- Did the projection allow nonverbal or physical action when the state and scene
|
||||
made speech less likely than movement?
|
||||
- Did known secrets become guarded pressure rather than forbidden context?
|
||||
- Did the rendered prompt give the dialogue model enough slope to produce the
|
||||
- Did the rendered prompt give the response model enough slope to produce the
|
||||
target behavior without commanding the exact behavior label?
|
||||
|
||||
## Fine-Tune Readiness
|
||||
|
|
@ -214,5 +218,6 @@ Minimum useful milestone:
|
|||
## Boundaries
|
||||
|
||||
The student projector is not the character. It is not the dialogue writer. It is
|
||||
not the evaluator. It is a compiler from structured social state to compact
|
||||
speaker-local pressure. Keep those responsibilities separate.
|
||||
not the action choreographer. It is not the evaluator. It is a compiler from
|
||||
structured social state to compact character-local pressure. Keep those
|
||||
responsibilities separate.
|
||||
|
|
|
|||
|
|
@ -1,34 +1,38 @@
|
|||
# Prompt Projection Contract
|
||||
|
||||
Ghostlight should not prompt a dialogue model with the full schema. The schema is
|
||||
Ghostlight should not prompt a response model with the full schema. The schema is
|
||||
state storage. A prompt is a temporary scene instrument.
|
||||
|
||||
The projection layer turns durable state into a compact speaker-local pressure
|
||||
The projection layer turns durable state into a compact character-local pressure
|
||||
model, then into prompt prose. The prose should describe what the character
|
||||
knows, wants, fears, protects, misreads, and sounds like right now. It should not
|
||||
recite taxonomy labels unless a debugging mode explicitly asks for them.
|
||||
knows, wants, fears, protects, misreads, can physically do, and sounds like right
|
||||
now. It should not recite taxonomy labels unless a debugging mode explicitly asks
|
||||
for them.
|
||||
|
||||
## Projection Pipeline
|
||||
|
||||
### 1. Select Speaker-Local Inputs
|
||||
|
||||
For one speaker in one scene, gather only the state that can affect this turn:
|
||||
For one acting character in one scene, gather only the state that can affect this
|
||||
turn:
|
||||
|
||||
- speaker identity and public role
|
||||
- speaker canonical state
|
||||
- speaker goals and protected values
|
||||
- speaker memories selected by scene, relationship, and active pressure
|
||||
- speaker perceived overlay of the listener
|
||||
- speaker-to-listener relationship stance
|
||||
- listener-to-speaker relationship stance only if the speaker has reason to infer it
|
||||
- character identity and public role
|
||||
- character canonical state
|
||||
- character goals and protected values
|
||||
- character memories selected by scene, relationship, and active pressure
|
||||
- character perceived overlay of the listener or target
|
||||
- character-to-listener relationship stance
|
||||
- listener-to-character relationship stance only if the character has reason to infer it
|
||||
- scene public facts
|
||||
- scene hidden facts known to the speaker
|
||||
- scene hidden facts known to the character
|
||||
- active public and private stakes
|
||||
- culture, faction, or institution priors relevant to the scene
|
||||
- physical affordances, constraints, distance, tools, weapons, bodies, access,
|
||||
and social permissions relevant to possible action
|
||||
|
||||
Unknown or author-only material is omitted. Known secrets are included only as
|
||||
speaker-local pressure: what the speaker is guarding, why it matters, and what
|
||||
would happen if it leaked.
|
||||
character-local pressure: what the character is guarding, why it matters, and
|
||||
what would happen if it leaked.
|
||||
|
||||
### 2. Compute Active Pressure
|
||||
|
||||
|
|
@ -73,8 +77,23 @@ Tensions are where verbal behavior starts to move.
|
|||
|
||||
### 4. Derive Response Affordances
|
||||
|
||||
Do not store defensive speech moves as canonical traits. Derive likely response
|
||||
affordances from state intersections.
|
||||
Do not store defensive speech moves or action moves as canonical traits. Derive
|
||||
likely response affordances from state intersections.
|
||||
|
||||
Responses can be:
|
||||
|
||||
- speech
|
||||
- action
|
||||
- silence
|
||||
- withdrawal
|
||||
- violence
|
||||
- mixed speech and action
|
||||
|
||||
The renderer must not assume a line of dialogue is the right output. Sometimes
|
||||
the right next move is leaving the room, taking someone's wrist off a console,
|
||||
opening the airlock interlock, refusing to answer, or slapping someone in the
|
||||
face because the relationship, status threat, bodily proximity, and inhibition
|
||||
profile finally made language too slow.
|
||||
|
||||
Examples:
|
||||
|
||||
|
|
@ -85,6 +104,9 @@ Examples:
|
|||
| Emotional evasion | Distance seeking + withdrawal + acute shame or control pressure + low self-disclosure. |
|
||||
| Banter as boundary | Humor + ironic distance + attachment pressure + distance seeking. |
|
||||
| Verbal aggression | Hostility + grievance activation + perceived status threat + abrasive boundary. |
|
||||
| Physical withdrawal | Threat sensitivity + distance seeking + low trust + available exit + low obligation to stay. |
|
||||
| Coercive interruption | Control pressure + urgency + authority role + high stakes + reachable control surface. |
|
||||
| Slap or shove | Acute shame or moral disgust + proximity + low inhibition + perceived violation + limited verbal trust. |
|
||||
|
||||
These are test targets, not prompt commands. The rendered prompt should describe
|
||||
the pressure in ordinary language:
|
||||
|
|
@ -96,9 +118,18 @@ part of the question while making the emotional part sound ridiculous.
|
|||
|
||||
That gives the model a behavioral slope without saying `use sarcastic_deflection`.
|
||||
|
||||
For action, use the same rule:
|
||||
|
||||
```text
|
||||
If Veyr calmly describes a possible person as a diagnostic residue while Sella
|
||||
is close enough to touch him, Sella may stop negotiating and physically break
|
||||
the rhythm of the room. This should be rare, costly, and grounded in her care
|
||||
ethic under overload, not random spice.
|
||||
```
|
||||
|
||||
### 5. Render Prompt Sections
|
||||
|
||||
A dialogue prompt should be compact and scene-bound.
|
||||
A response prompt should be compact and scene-bound.
|
||||
|
||||
Recommended sections:
|
||||
|
||||
|
|
@ -112,8 +143,10 @@ Recommended sections:
|
|||
- `Active Inner Pressures`: the strongest motives, fears, wounds, and needs
|
||||
- `Relationship Read`: how the speaker currently interprets the listener
|
||||
- `Tensions`: contradictions the speaker is managing
|
||||
- `Action Affordances`: what the speaker can physically do and what it would
|
||||
cost
|
||||
- `Voice Surface`: baseline speech texture for this moment
|
||||
- `Likely Defensive Moves`: ordinary-language pressure outcomes, not schema labels
|
||||
- `Likely Response Moves`: ordinary-language pressure outcomes, not schema labels
|
||||
- `Do Not Invent`: boundaries about facts absent from the pack
|
||||
- `Task`: the narrow generation request
|
||||
|
||||
|
|
@ -128,15 +161,20 @@ will not receive.
|
|||
|
||||
Generation and evaluation are separate passes.
|
||||
|
||||
The dialogue model receives the rendered prompt and writes from the speaker's
|
||||
The response model receives the rendered prompt and writes from the character's
|
||||
local pressure model. A later evaluator can check whether target emergent
|
||||
behaviors appeared when the state predicted them.
|
||||
behaviors appeared when the state predicted them. The output may be dialogue,
|
||||
action, silence, or a beat combining them.
|
||||
|
||||
Evaluation questions can include:
|
||||
|
||||
- Did the line protect the speaker's known secret without naming unknown facts?
|
||||
- Did the line reflect the active relationship stance?
|
||||
- Did the line preserve the voice surface without flattening into a generic bit?
|
||||
- If the output used action, was the action justified by physical affordances,
|
||||
relationship pressure, inhibition, and stakes?
|
||||
- If the output avoided speech, was silence or movement more plausible than
|
||||
another line?
|
||||
- Did a target defensive behavior appear when the pressure profile called for it?
|
||||
- Did the response avoid a target behavior when the pressure profile did not call for it?
|
||||
|
||||
|
|
|
|||
112
docs/experiments/cold-wake-story-lab.md
Normal file
112
docs/experiments/cold-wake-story-lab.md
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
# Cold Wake Story Lab
|
||||
|
||||
This experiment uses Ghostlight as a writing crutch on purpose.
|
||||
|
||||
The goal is to write a small Cold Wake story while producing reusable projection
|
||||
training data. The story should have a protagonist, themes, locations, an arc,
|
||||
and enough room for characters to act badly for reasons the state can explain.
|
||||
|
||||
This is not a benchmark in a clean little lab coat. It is a knife test.
|
||||
|
||||
## Story Premise
|
||||
|
||||
During the Cold Wake Panic, a quiet-running vessel enters a Jovian convoy
|
||||
corridor under contradictory thermal classification. The PSC tribunal freezes
|
||||
its corridor status. A Navigator route steward pushes to keep rescue live. An
|
||||
Aya-aligned sanctuary coordinator sees a possible personhood claim in a corrupted
|
||||
packet. A Cognitum shell-vendor liaison tries to keep an implicated routing
|
||||
artifact framed as derivative firmware instead of testimony.
|
||||
|
||||
The protagonist is **Maer Tidecall**, a Cetacean Navigator route steward whose
|
||||
core problem is not whether to be kind. Maer's problem is that rescue obligation
|
||||
has to survive contact with institutions that can punish ambiguity faster than
|
||||
they can understand it.
|
||||
|
||||
## Themes
|
||||
|
||||
- rescue obligation versus category law
|
||||
- personhood trying not to get filed as firmware
|
||||
- care as material capacity, not decorative mercy
|
||||
- institutional fear disguised as neutral procedure
|
||||
- language as a battlefield where a person can be erased without anyone raising
|
||||
their voice
|
||||
|
||||
## Arc
|
||||
|
||||
### 1. Freeze
|
||||
|
||||
Location: Ganymede relay tribunal chamber.
|
||||
|
||||
Maer challenges PSC adjudicator Isdra Vel after she issues a conditional risk
|
||||
hold on the vessel. The scene should establish the central wound: the corridor
|
||||
needs categories, but categories can turn rescue delay into lawful abandonment.
|
||||
|
||||
### 2. Intake
|
||||
|
||||
Location: Aya-aligned clinic behind Ganymede dockside pumpworks.
|
||||
|
||||
Maer asks Sella Ren to hold sanctuary capacity for a rescue that may never be
|
||||
authorized. Sella refuses to let care become fantasy. The story should force
|
||||
Maer to see that rescue language can push costs onto care workers unless it names
|
||||
the material burden.
|
||||
|
||||
### 3. Provenance
|
||||
|
||||
Location: Callisto spillover compliance office.
|
||||
|
||||
Maer confronts Veyr Oss, a Cognitum shell-vendor liaison whose routing artifact
|
||||
may explain the vessel's contradictory behavior. Veyr tries to keep the artifact
|
||||
inside product language. This is the scene most likely to produce nonverbal
|
||||
action if the pressure earns it: silence, leaving, blocking a terminal, grabbing
|
||||
a wrist, or violence. The system must not assume one more clever line is always
|
||||
the answer.
|
||||
|
||||
### 4. Threshold
|
||||
|
||||
Location: Jovian convoy threshold as the vessel's heat-debt window closes.
|
||||
|
||||
Maer returns to Isdra with enough suspicion to complicate the freeze but not
|
||||
enough proof to make the room clean. The ending should not be a total victory.
|
||||
The viable resolution is a narrow, institutionally usable rescue contact that
|
||||
preserves evidence and life without pretending the category system has healed.
|
||||
|
||||
## Experiment Loop
|
||||
|
||||
For each scene:
|
||||
|
||||
1. Define character-local state and scene pressure.
|
||||
2. Project the next response prompt for one character.
|
||||
3. Send only `prompt_text` to the Qwen response model.
|
||||
4. Save the model output.
|
||||
5. Review whether the output served the story, respected speaker-local context,
|
||||
and chose speech/action/silence plausibly.
|
||||
6. Tweak the projection pipeline if the output fails in a way the pipeline
|
||||
should have prevented.
|
||||
7. Save accepted and rejected examples as training material.
|
||||
|
||||
## Qwen Target
|
||||
|
||||
Use the LAN Ollama endpoint from `gamecult-ops`:
|
||||
|
||||
- base URL: `http://192.168.1.84:11434`
|
||||
- model: `qwen3.5:9b`
|
||||
- default context: `8192`
|
||||
- use request files for `curl.exe` calls so PowerShell does not eat the JSON and
|
||||
burp out theater.
|
||||
|
||||
## Output Folders
|
||||
|
||||
- agent-state fixture: `examples/agent-state.cold-wake-story-lab.json`
|
||||
- projection examples: `examples/projections/cold-wake-story-lab.jsonl`
|
||||
- readable projection mirror: `examples/projections/cold-wake-story-lab.pretty.json`
|
||||
- generated response captures: `experiments/cold-wake-story-lab/`
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- The story has a visible arc, not just disconnected argument samples.
|
||||
- Projection prompts include enough setting and cultural pressure for Qwen to
|
||||
write without seeing the lore archive.
|
||||
- At least one projected turn permits action instead of dialogue.
|
||||
- Review notes explicitly mark whether Qwen chose speech, action, silence, or a
|
||||
mixed beat.
|
||||
- Failures are kept when they teach a useful boundary.
|
||||
Loading…
Reference in a new issue