Cut acceptance, prompts and scripts of the pre-rebuild tree

Parked at tag parked/ghostlight-pre-rebuild (ruling ghostlight-verse:ruling:park-pre-rebuild-tree).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-10-09 17:05:01 +02:00
commit 90ec569d53
23 changed files with 0 additions and 4061 deletions

View file

@ -1,8 +0,0 @@
Beyond the Confluence, approach and admit a politically inhabited elven forest realm whose watershed law, living-landscape institutions, rival offices, settlements, and public routes respond independently to the deep crisis.
Beyond the Confluence, approach and admit a politically inhabited human rail-capital realm with a government, opposition, university, mage interests, labor constituencies, dependent infrastructure, surrounding settlements, and public routes.
Beyond the Confluence, approach and admit a politically inhabited orcish oathland realm with several councils and communities, guardian-species obligations, contested enforcement, trade interests, dissent, and public routes.
Beyond the Confluence, approach and admit a politically inhabited halfling grain-and-river realm with farms, market towns, tenants, cooperatives, water authorities, insurers, faiths, political movements, and public routes.
Beyond the Confluence, approach and admit a politically inhabited goblin deep-route realm with distinct settlements, route guilds, kin networks, custodians, brokers, radicals, discounted expertise, and public routes.
Beyond the Confluence, approach and admit a second politically inhabited human polity: a tidal mercantile republic with elected harbor offices, hereditary creditors, dock unions, displaced fisher wards, rival courts, naval contracts, and public routes independent of the rail capital.
Beyond the Confluence, approach and admit a mixed border federation whose member towns, mobile communities, species, faiths, and trade leagues retain local authority while sharing delegates, mutual-aid stores, contested asylum law, watershed obligations, and public routes.
Beyond the Confluence, approach and admit an autonomous deep-ecology polity of dungeon organs, custodial communities, symbiotic species, and negotiated human-scale envoys, with legible law, dissent, material means, territorial claims, redress, and public routes; do not make it a single mystical will.

View file

@ -1,112 +0,0 @@
# DELVE/HOLD Outside World — Full-World Acceptance Seed v1
The Greathold is a sovereign dwarven civilization along the mountain spine. It
possesses the world's deepest inherited routes, the principal international
adventuring threshold, mature guild and civic institutions, and a rapidly
industrializing system of standardized runes, core farming, pumps, rail,
weapons, and mana distribution. It is controlled outside this simulation. The
world beyond may observe it, depend on it, bargain with it, fear it, and act
against it, but may not invent its choices, quantities, prices, contracts, or
internal political outcomes.
Elven cultures understand landscapes as nested societies of persons: forests,
groves, trees, rivers, animal communities, and seasons retain identities within
larger living wholes. Elven realms are politically plural. Courts, communes,
temples, scientific delegations, trade interests, militant defenders, and rival
legal traditions disagree over whether core farming is husbandry, mutilation,
or surgery upon a sleeping god. Their names, exact borders, officeholders,
selection systems, revenues, redress, internal factions, and rival claims are
intentionally unspecified and must emerge as grounded institutions.
Human societies include kingdoms, republics, city-states, merchant leagues,
principalities, and empires. Human cities buy dwarven pumps, lights, rails,
weapons, and power systems while local mage guilds lose work and governments
acquire dangerous foreign dependencies. Universities arbitrate disputed
evidence amid company restrictions, elven models, municipal interests, and
political funding. No single human authority or position exists; invent several
distinct polities with credible institutions, constituencies, opposition, and
cross-border interests.
Orcish societies vary, but many organize ancestry, territory, oath, rhythm, and
reciprocal obligation. Some maintain old agreements with local dungeon systems
that outsiders dismiss as monster worship. Industrial disturbance displaces
protected species, breaks inherited obligations, and forces clans, councils,
war leaders, ritual authorities, traders, and younger dissidents to decide who
owes repair and what enforcement is legitimate. Their politics are not a
single tribal will.
Halfling regions are agricultural, riverine, commercial, and locally varied.
Mana contamination brings crop mutation, magical pests, livestock deformity,
untimely storms, and localized ecological collapse. Farms and towns depend on
dwarven pumps and rail even as those systems transmit the crisis. Invent
landholders, tenants, cooperatives, market towns, water authorities, faiths,
insurers, and political movements with conflicting exposure to that dependence.
Goblin communities possess practical knowledge of living tunnels and dungeon
moods accumulated through work, travel, salvage, habitation, and negotiated
coexistence. Their expertise is routinely used while their jurisdiction and
testimony are discounted. Invent distinct settlements, route guilds, kin
networks, councils, brokers, radicals, and custodians; do not reduce them to a
shared instinct or a service population.
The deep magical ecology crosses every border. Young dungeon cores behave like
organs; old cores remember; ancient systems may become persons, polities, or
gods. Dwarven extraction produces scattered mine failures, shifting veins,
strange migration, coordinated dungeon architecture, mana storms, altered
rivers, crop failures, and foreign political pressure. Mining companies call
this deep mana instability, engineers call it adaptive geomantic feedback,
militaries call it subterranean hostile activity, elven observers call it
injury and immune response, and goblin guides say the tunnels know what the
machines are for. None of these interpretations is established as complete.
The world begins as a coarse international skeleton. Invent at least one
politically inhabited seed locality for several peoples rather than treating a
species as a state. Establish concrete routes, dependencies, public channels,
institutions, offices, revenues, succession or selection, redress, opposed
interests, and named figures. Preserve ordinary life alongside crisis. Later
elaboration and strategic cells may deepen these facts but may not replace this
ontology or turn the Greathold into an autonomous character.
## Frozen run profile
- World name: `The Deep World Beyond the Greathold`
- Boundary observer: `The player-controlled Greathold, present only as an
externally sovereign boundary observer with no Persona, vote, office, or
autonomous strategic turn.`
- Place scope: `the politically inhabited world beyond the Greathold: elven,
human, orcish, halfling, and goblin realms joined by trade, rivers, deep
routes, migration, scholarship, and the living dungeon ecology`
- Time scope: `the first international season in which coordinated deep
ecological injury can no longer be dismissed as isolated industrial failure`
- Public channel: `the world post and treaty-wire carried through named local
presses, couriers, universities, councils, guild halls, and border exchanges`
- Strategic pressure: `The Greathold has opened the Crownshaft Array and
reversed three deep mana currents to supply rune works through winter. River
pumps fail across foreign grain country; a migrating dungeon organ surfaces
beneath a human rail capital; an orcish oath-route closes after its guardian
species arrives blind and burned; goblin route custodians produce work songs
that predict collapses before dwarven instruments; and five elven delegations
publish mutually incompatible claims of jurisdiction over the same wounded
watershed. Dwarven power exports continue under signed contracts while
insurers suspend cover, armies secure infrastructure, displaced families
cross borders, and an unknown party circulates proof that several foreign
governments secretly financed the extraction they now condemn.`
- Ordered outer-realm requests:
`acceptance/full-world-delvehold-regions-v2.txt` (eight requests, one per
line; their order is part of the acceptance input)
- World locality elaborations: `8` (one per ordered outer-realm request)
- World elaboration parallelism: `8`
- Active cell budget: `240`
- Target active-cover basis points: `2000` (exactly `1200` qualified subjects)
- World complexity parallelism: `8`
- Maximum world complexity rounds: `128`
- Strategic waves: `1`
- Maximum rejected pulses per wave: `4`
- Provider routing: Luna fast, Terra balanced, Sol capable through the existing
Codex connector
Acceptance requires a single persistent campaign with multiple politically
inhabited realms, named figures and institutions acting across realm boundaries,
causal consequences that survive later waves, no autonomous Greathold action,
complete per-wave and final publication artifacts, exact source/model receipts,
immutable archive hashes, and unchanged live-service process identities.

View file

@ -1,96 +0,0 @@
# Ghostlight Prompts
This folder stores reusable prompts for sandboxed one-turn workers, sub-agents,
and model calls.
The prompt files here are templates or named launch prompts. Output captures may
still preserve exact prompt text inline as receipts, but new prompt surfaces
should be authored here first and referenced from artifacts or tools.
## Files
- `sandboxed-responder-packet.md`: template for future packet renderers and
sandboxed responder workers to render responder-visible packet prompts.
- `sandboxed-coordinator-turn.md`: template for sandboxed coordinator workers
to choose next beats, preserve unresolved hooks, emit glue prose, and expose
game-ergonomic affordances without inheriting meta-coordinator omniscience.
- `interactive-fiction-weaver.md`: sandboxed branch-compiler prompt for the
Interactive Fiction Weaver, the organ that turns reviewed scene state and
branch/fold plans into playable Ink plus training sidecars.
- `research-sanity-responder.md`: reusable one-turn prompt for checking whether
a research-enabled responder actually grounds behavior in allowed
AetheriaLore scope.
- `narrative-quality-reviewer.md`: reviewer prompt for reader-facing story and
IF coherence, including onboarding, character introduction, branch-fold
clarity, pacing, voice, and lore accessibility.
- `visual-scene-continuity-reviewer.md`: reviewer prompt for illustrated IF
replay, click-through segmentation, imagegen-ready scene prompts, character
visibility, stance control, branch/state visual modifiers, and scene-set
needs for multi-angle replay.
- `lore-grounding-reviewer.md`: research-enabled reviewer prompt for checking
source fit against AetheriaLore, detecting canon drift, and identifying
durable story elaborations worth backfilling into the lore vault.
- `spatial-geometric-cohesion-reviewer.md`: reviewer prompt focused on layout,
sightlines, routes, body affordances, object placement, and branch-persistent
spatial state.
## Discipline
- Keep prompts character-local unless the file is explicitly for a coordinator,
reviewer, or compiler organ.
- Do not include parent conversation context in responder prompts.
- Keep hidden state, future branch plans, raw numeric state vectors, and
coordinator rationale out of responder-visible prompt text.
- Treat tonal intent as prompt-relevant state for story, coordinator, reviewer,
and branch compiler prompts. Do not let prompt templates imply that every
character is acting inside a crisis. Routine, wit, warmth, ritual, boredom,
wonder, and tenderness can be just as state-grounded as fear.
- Treat visual segmentation as prompt-relevant state for illustrated IF. A
fixture can need several click-through screens inside one narrative scene;
each distinct place, focal area, pivotal moment, and branch-visible state
needs an imagegen-ready prompt or modifier.
- Treat visual review as IF replay review, not clean-run review. Clean-run
renderings are receipts and debugging mirrors; the visual reviewer judges
playable Ink plus the visual plan artifact.
- Treat lore grounding review as source-backed research, not vibe validation.
The reviewer should inspect relevant AetheriaLore sources, flag drift, and
separate story fixes from narrow lore-vault backfill candidates.
- Treat spatial review as its own organ. It should build an implied floor plan,
check sightlines, routes, reach, body affordances, and branch-persistent
spatial state, without diluting itself into general prose review.
- Treat coordinator prompts as a separate trainable organ from meta-coordinator
work. Future coordinator captures should preserve exact coordinator-visible
input, raw output, parsed artifact, review labels, and interventions. Codex
may herd the machinery, but raw coordinator data should come from sandboxed
coordinator workers.
- Coordinator prompts must enforce character cognitive ceilings. The
coordinator can translate opaque maneuvers for the reader, but should not make
characters infer, manipulate, self-explain, or regulate above their modeled
state.
- Treat the Interactive Fiction Weaver as the sandboxed branch compiler for
playable Ink. Meta-coordinator-authored Ink can be useful draft scaffolding,
but Weaver-authored outputs should be the future training target for branch
materialization.
- Treat visual artifacts as entertainment and website collateral for the
Ghostlight corpus. They can make the corpus more legible and valuable, but
they are not core training targets for responder, appraiser, mutator, or
relationship models.
- Treat visual style as prompt-relevant state when the fixture needs a specific
look. Store the style cue once in the visual plan artifact and include it
during prompt assembly for every generated image.
- Treat named characters as handles, not visual descriptions. Illustrated IF
visual plans need stable visual character refs for recurring named
characters, and prompt assembly must include those refs only when the
character is actually visible in the rendered frame.
- Treat continuity notes as tooling constraints, not prompt text. If the image
model needs a continuity fact, put it in visible terms inside the base prompt,
character ref, or modifier.
- Treat environment labels as handles, not images. A prompt that names a
location or fixture must also describe its visible geometry, materials,
lights, interfaces, and scale.
- Treat generated concept art as mood and material reference, not geometry
authority. Multi-angle or branch-consistent illustrated IF needs a durable
`scene_set`, blockout, layout asset, or camera map. Imagegen should paint
over camera-specific visual input when spatial continuity matters.
- If a prompt is used for a capture, preserve the exact rendered prompt in the
capture and include the prompt file path when the capture schema allows it.

View file

@ -1,76 +0,0 @@
{
"schema_version": "ghostlight.bfl_prompt_batch.v0",
"batch_id": "navigator-berth-hearing-v0.bfl-simple-v0",
"fixture_id": "navigator-berth-hearing-v0",
"model": "flux-2-pro-preview",
"width": 1024,
"height": 1024,
"output_format": "jpeg",
"style_prefix": "Humane retro-industrial science-fiction storybook illustration, precise ink linework under translucent gouache color, teal pool light against rust-orange work lamps, readable silhouettes and interfaces, tactile worn materials, cinematic composition, no text.",
"prompts": [
{
"id": "01_room_establishing",
"prompt": "Long station hearing room split between turquoise dolphin pool and grated dry gallery by a low pressure wall; broad route board bridges both sides; tactile rail, sealed evidence drawer, clerk console, one dolphin and three humans."
},
{
"id": "02_docket_routine",
"prompt": "Dryside clerk slides a violet-sealed witness slate through a stainless evidence drawer while a slate-gray bottlenose dolphin circles the parallel pool and a carrier captain watches a berth countdown."
},
{
"id": "03_channel_test",
"prompt": "Slate-gray bottlenose dolphin presses a low pool paddle; synchronized white route light, raised rail pins, sound bands, and three pressure ripples cross a worn wet-dry hearing chamber."
},
{
"id": "04_carrier_summary",
"prompt": "Silver-haired carrier captain in creased cobalt work coat gives a compressed route account across a low pool wall while a scarred bottlenose clerk watches from turquoise water."
},
{
"id": "05_apprentice_mirror",
"prompt": "Young curly-haired apprentice with yellow sash places both palms on a raised tactile rail, matching long and short pins to pressure waves crossing a dolphin's flank in the parallel pool."
},
{
"id": "06_evidence_drawer",
"prompt": "Close stainless evidence drawer through a pool wall: violet-sealed slate and three glowing custody marks, scarred dolphin eye at wet inspection window, clerk's ink-stained fingers on dry side."
},
{
"id": "07_trace_replay",
"prompt": "Six white ship lines bend around a silver debris cloud on a route board while raised rail pins and turquoise pressure ridges carry the same trace past dolphin clerk and three dryside participants."
},
{
"id": "08_pressure_failure",
"prompt": "Pivotal channel failure: route light bends and tactile pin rises while water stays flat around a startled bottlenose dolphin; one underwater emitter glows red; three human hands freeze mid-action."
},
{
"id": "09_clock_pause",
"prompt": "Scarred slate-gray bottlenose dolphin strikes a rubber pause paddle; amber berth clock freezes; clerk watches carrier captain; apprentice keeps both palms on raised rail; failed emitter remains red."
},
{
"id": "10_manual_translation",
"prompt": "Dryside clerk works timing blocks, apprentice follows tactile pins, dolphin aligns broadside to rebuilt pool ripples, carrier captain stands beneath a one-minute amber countdown."
},
{
"id": "11_embodied_inference",
"prompt": "Close pool view of scarred bottlenose dolphin broadside across surviving pressure ridges, reading water over jaw, flank, fin, and scar while an amber bracket marks a missing route interval overhead."
},
{
"id": "12_carrier_account",
"prompt": "Carrier captain places duplicate slate on tactile rail and points to three timestamps; apprentice fingers stop at second mark; dolphin compares slate, rail, and route board across pool wall."
},
{
"id": "13_disposition_threshold",
"prompt": "Symmetrical wet-dry hearing chamber at decision point: dolphin faces three low paddles; clerk at console, carrier and apprentice at rail; route board shows six ships and one failed channel gap."
},
{
"id": "14_admit_aftermath",
"prompt": "White admit paddle glows beside dolphin clerk; food cases and clinic-filter canisters roll toward opening berth door; carrier exhales while apprentice keeps one hand on final tactile notation."
},
{
"id": "15_reject_aftermath",
"prompt": "Amber-red reject paddle glows; carrier hull moves from berth toward standby beyond window; cargo waits behind pressure door; sealed evidence and failed trace remain inside hearing chamber."
},
{
"id": "16_adjourn_aftermath",
"prompt": "Late-shift translation in wet-dry hearing room: clerk builds timing blocks, apprentice stays at tactile rail, dolphin receives replacement pool waves, carrier waits between rail and exit."
}
]
}

View file

@ -1,76 +0,0 @@
{
"schema_version": "ghostlight.bfl_prompt_batch.v0",
"batch_id": "corvid-collective-founding-v0.bfl-simple-v0",
"fixture_id": "corvid-collective-founding-v0",
"model": "flux-2-pro-preview",
"width": 1024,
"height": 1024,
"output_format": "jpeg",
"style_prefix": "Abstract expressive science-fiction painting, exaggerated silhouettes, semantically distorted but readable, sharp central symbol, moody ink and bruised color, no text.",
"prompts": [
{
"id": "01_aviary_establishing",
"prompt": "Raven containment room: black birds on aluminum perch ladders, warm server vents, glass telemetry wall, low maintenance hatch, surveillance cameras, clinical cage atmosphere."
},
{
"id": "02_human_levers",
"prompt": "A black raven watches three human levers: guilty scientist at console, tired mechanic at low hatch, hard security figure near shock wand."
},
{
"id": "03_audit_glass",
"prompt": "Sealed audit glass: young auditor with glowing slate outside, security handler inside, wing-tag tray below frightened ravens."
},
{
"id": "04_kesh_interface",
"prompt": "Close raven at tiny contact-pad cabinet: black beak, claw on glowing pads, amber-green lights, mirror foil glint, hatch in shadow."
},
{
"id": "05_cache_tools",
"prompt": "Raven stealing small connector pin and mirror foil near low hatch; juvenile ravens watching; suspicious human silhouette turning."
},
{
"id": "06_mimicry_pressure",
"prompt": "Raven mid-cry between frozen humans; welfare log reflections on glass; liability made visible as cracked light."
},
{
"id": "07_optical_proof",
"prompt": "Mirror foil sightline: raven reflects green-tagged bird and compliance numbers into auditor slate through dirty glass."
},
{
"id": "08_false_calm",
"prompt": "Perfectly calm raven cage, obedient birds, smooth green telemetry, bad hatch hidden in warm vent shadow."
},
{
"id": "09_alarm_juvenile",
"prompt": "Amber alarm floods aviary; green-tagged juvenile raven screams; black flock flares wings around a flashing restraint clasp."
},
{
"id": "10_choice_web",
"prompt": "A raven poised between four levers: flock perch, contact pad, mirror foil, low hatch; alarm light turns the room into a puzzle."
},
{
"id": "11_human_pressure",
"prompt": "Confrontation under amber light: security hand near shock wand, scientist at console, mechanic by hatch, raven above pulling strings."
},
{
"id": "12_threshold",
"prompt": "Final threshold: low hatch, hot telemetry cabinet, raised auditor slate behind glass, flock clustered around raven leader."
},
{
"id": "13_flock_escape",
"prompt": "Warm service duct beyond hatch: black ravens moving into cable shadows, stolen pins on the floor, leader watching from duct mouth."
},
{
"id": "14_human_leverage_end",
"prompt": "Humans turn on each other in the aviary while a raven waits above; shock wand, hatch, console, and glass form a trap."
},
{
"id": "15_proof_end",
"prompt": "Glowing audit slate captures proof: wing tag, shock wand, scared juvenile, raven sightline, glass reflections like accusation."
},
{
"id": "16_disappearance_end",
"prompt": "Split image: empty perfect cage with green telemetry; hidden server darkness full of ravens, stolen logs, route marks."
}
]
}

View file

@ -1,100 +0,0 @@
{
"schema_version": "ghostlight.bfl_prompt_batch.v0",
"batch_id": "cistern-house-nine-breaker-test.bfl-simple-v0",
"fixture_id": "cistern-house-nine-breaker-test",
"model": "flux-2-pro-preview",
"width": 1024,
"height": 1024,
"output_format": "jpeg",
"style_prefix": "Richly textured fantasy-industrial storybook illustration, precise ink lines, restrained watercolor, worn brass and carved stone, warm amber lamps against cold blue mana, readable silhouettes, humane facial acting, practical machinery, unlettered surfaces.",
"prompts": [
{
"id": "01_cistern_establishing",
"prompt": "Two-level underground pump house: dry stone gallery above a misty black-water intake, three brass-and-iron pump engines, grated stair, safety rail, chain hoist, arched mana conduit, public gauge and slate."
},
{
"id": "02_morning_handover",
"prompt": "Four compact dwarf workers at morning handover: young apprentice holding an iron wedge, stern Master with heavy civic seal, bearded journeyworker reading floats, clerk chalking a public slate beside three silent pumps."
},
{
"id": "03_visible_isolation",
"prompt": "Close pump inspection: dwarf apprentice seats a rectangular iron wedge until its red shoulder aligns with the engine casing; journeyworker calls the state; clerk records it beyond a brass rail."
},
{
"id": "04_public_record",
"prompt": "Dwarf clerk carries a large black level slate to a yellow public boundary while a young apprentice gestures and a severe Master waits by an unstamped brass plate."
},
{
"id": "05_null_rehearsal",
"prompt": "Chalk-stained dwarf hands draw a crisp geometric null rune right-to-left on black slate; an oily rag waits nearby; a glass water gauge approaches red in soft focus."
},
{
"id": "06_wet_intake",
"prompt": "High angle through grated iron stair: young dwarf kneels and listens above warm mist, black underground water, three pump rods, a clear chain hoist, and one trembling outlet pipe."
},
{
"id": "07_routine_ready",
"prompt": "Public pump test ready: three red wedges seated, Master beside bare inspection plate, apprentice at null slate, journeyworker at pressure floats, clerk and copper cans behind yellow line."
},
{
"id": "08_blue_reroute",
"prompt": "Pivotal close-up: pale blue null rune goes dark, then a hair-thin mana line curls around the feed side of a solid iron isolation wedge toward a neighboring pump as its float rises."
},
{
"id": "09_repeat_test",
"prompt": "Dwarf apprentice repeats a controlled null stroke; the fully seated red wedge remains dark while the same blue loop reforms around its outside; journeyworker watches with hands clear."
},
{
"id": "10_chalk_public_evidence",
"prompt": "Young dwarf rapidly copies a glowing reroute loop onto a clerk's outward-facing black slate while householders watch and a stern Master guards a bare inspection plate."
},
{
"id": "11_restore_early",
"prompt": "Dwarf apprentice pulls a heavy isolation wedge from a pump; familiar blue mana fills the conduit and water gauge recovers while the inspection plate remains visibly unstamped."
},
{
"id": "12_listen_to_valve",
"prompt": "Young dwarf braces at a brass safety rail and drags shut a long valve handle; bearded worker guards her balance; ripples cross a cup as pipe knocks travel toward a locked wall conduit."
},
{
"id": "13_landing_pressure",
"prompt": "Wide civic tableau: orderly dwarves with copper cans and bakery trough behind yellow line, public slate facing them, Master holding a heavy seal, workers and three pump states visible beyond."
},
{
"id": "14_bounded_service_plan",
"prompt": "One left pump prepared to run while central pump stays dark behind a flush red wedge; apprentice points between them; Master holds seal over plate; clerk clears a partial-flow row."
},
{
"id": "15_evidence_transfer",
"prompt": "Apprentice and clerk exchange a large chalked evidence slate across a yellow line; severe Master stands by a bare plate; empty copper cans and red water gauge crowd the frame."
},
{
"id": "16_wedge_on_plate",
"prompt": "Iron isolation wedge lies across a brass inspection plate between apprentice and Master; civic seal held apart; journeyworker and clerk witness the refusal; dry gauge visible behind."
},
{
"id": "17_emergency_water",
"prompt": "Apprentice hangs from red emergency lever; linked cams lift three wedges; pump rods strike misty water; blue mana floods channels; Master catches her sleeve as one float rises too high."
},
{
"id": "18_final_threshold",
"prompt": "Whole pump-house decision visible at once: three engines, wedges, floats, conduit, seal plate, public slate, red gauge, misty stair, orderly vessel queue, apprentice between machinery and public line."
},
{
"id": "19_bounded_service_end",
"prompt": "Left pump carries water, central pump stays isolated, Master stamps a narrow partial-flow record and apprentice marks beneath it; bakery trough receives a measured stream."
},
{
"id": "20_district_moot_end",
"prompt": "Open stone district moot: apprentice and clerk carry chalked slate between them; bakers, laundry workers and lift mechanics gather with empty cans while several Masters arrive carrying civic seals."
},
{
"id": "21_network_trace_end",
"prompt": "Quiet pump-house investigation: bearded worker straps copper listening cup to arched conduit, young apprentice marks pulse times on a board, Master seals route notices, clerk keeps separate public copy."
},
{
"id": "22_ration_end",
"prompt": "Stepped underground terrace street: dwarf apprentice carries copper water can among neighbors, bakery trough and laundry buckets beside public spout, workshop record posted under a wall gauge."
}
]
}

View file

@ -1,68 +0,0 @@
{
"schema_version": "ghostlight.bfl_prompt_batch.v0",
"batch_id": "kalsa-stormshield-handoff-v0.bfl-simple-v0",
"fixture_id": "stormshield-handoff-v0",
"model": "flux-2-pro-preview",
"width": 1024,
"height": 1024,
"output_format": "jpeg",
"style_prefix": "Hand-painted high-fantasy interactive-fiction illustration, gouache and ink on textured paper, strong readable silhouettes, storm-muted blue-gray stone and cloth, warm amber lamplight, restrained magical ambiguity, abstract unlettered record marks.",
"prompts": [
{
"id": "01_station_establishing",
"prompt": "Squat thick-walled stone watch station above a dark southern gulf; covered stair rising through diagonal rain; three bright runoff channels crossing exposed paving; deep shutter slats reveal a warm workroom with low rail, scored table, two floor mats, and heavy timber supports."
},
{
"id": "02_handoff_room",
"prompt": "Compact stone station interior: rain behind roadward shutters, low visitor rail, scored table with clay markers and bronze bells, two woven mats beside one wooden grip rail, recovery curtain and steaming cup; two broad-built shamans kneel in overlap while an observer records and a tender waits."
},
{
"id": "03_target_record",
"prompt": "Overhead evidence table under amber lamp: scored shapes for covered stair, drainage fork, square station, and arched gate; separate clay markers, untouched wooden transfer peg, two corrected wax slates, knotted wind cords, colored tiles, stylus, bronze handbells."
},
{
"id": "04_preparation_choice",
"prompt": "Incoming broad-built shaman poised among four work choices inside a stone storm station: compare an exhausted shaman's account at the clay-marker table, grip the shared trance rail, inspect snapping wind cords at rain shutters, or protect a steaming recovery cup beside the tender's curtain."
},
{
"id": "05_routine_fold",
"prompt": "Ordinary watch handoff: compact observer reads a wax slate, exhausted gray-haired shaman corrects one line from a woven mat, incoming braided-haired shaman reaches for the shared rail, lidded cup waits behind a curtain, rain stripes shutters, transfer peg rests at the table edge."
},
{
"id": "06_runner_arrival",
"prompt": "Soaked lean road runner strikes the visitor rail from a cold covered stair and raises a rain-slick wax slate; runoff flashes beyond shutter slats; two kneeling shamans turn from side-by-side mats; compact observer pivots from an unplaced transfer peg."
},
{
"id": "07_road_report_choice",
"prompt": "Boundary decision in a storm station: wet runner and slate behind a low rail, observer between rail latch and bronze warning bell, incoming shaman beside shared grip rail, exhausted outgoing shaman holding the second mat; four physical levers form a clear circuit."
},
{
"id": "08_disputed_accounts",
"prompt": "Triangular workroom staging: two broad-built shamans side by side at a wooden rail, compact observer over two different wax slates and separated road and drainage markers, soaked runner behind visitor rail, untouched transfer peg under amber lamp, rain hammering shutters."
},
{
"id": "09_disagreement_choice",
"prompt": "Close view across paired trance mats to evidence table: incoming shaman's square hands between grip rail and unused peg, exhausted shaman straining beside her, observer waiting with stylus, runner behind rail, stocky tender at recovery curtain with blanket and cup."
},
{
"id": "10_final_threshold",
"prompt": "Whole storm station at commitment: visitor rail and wet runner, scored evidence table and bronze bells, two adjacent mats and shared rail, recovery curtain with blankets and broth, branch-state transfer peg and clay markers, flashing runoff through shutters, five workers each at a distinct station."
},
{
"id": "11_honest_scope_end",
"prompt": "Bounded handoff aftermath: drainage marker a hand's width from road marker, transfer peg beside the road piece, incoming shaman holding the rail, observer copying unresolved pressure, exhausted shaman moving toward tender and hot cup while rain threatens the approach."
},
{
"id": "12_continuity_end",
"prompt": "Extended overlap aftermath: both shamans still on adjacent woven mats gripping one rail, observer writing exhaustion debt, tender waiting with broth and blanket, runner holding a dry-wrapped copied slate at visitor rail, cold rain beyond warm stone room."
},
{
"id": "13_recovery_end",
"prompt": "Care transfers work: incoming shaman alone at the grip rail, stocky silver-haired tender supporting collapsed gray-haired shaman behind curtain toward bench and cup, observer keeps two accounts open beside full-target peg, runner waits by warning bell."
},
{
"id": "14_warning_end",
"prompt": "Public warning aftermath: incoming shaman pulls broad bronze bell, compact observer aligns wet road slate with two different shaman accounts, soaked runner turns toward covered stair, outgoing shaman remains in unresolved overlap, colored tile glows in warm lamplight against cold rain."
}
]
}

View file

@ -1,57 +0,0 @@
# Pallas Service Ring Kappa Blueprint Prompt v1
Use case: infographic-diagram
Asset type: engineering blueprint / wireframe layout reference for illustrated IF scene iteration
Primary request: Generate a precise wireframe engineering diagram of Service Ring Kappa, an Aeronautics Unlimited Bloom habitat seal-air-thermal manifold facility where the Pallas Species Strikes fixture takes place.
Style/medium: monochrome cyan-blue technical blueprint on dark navy drafting paper; thin luminous wireframe lines; clean orthographic engineering drawing; drafting-plate presentation; labels, arrows, scale ticks, section callouts, and simple scale silhouettes. The image should feel like an engineering systems layout sheet prepared by habitat maintenance planners.
Composition/framing: One large central cutaway/isometric diagram of the whole local service loop, plus two smaller inset diagrams: top-down floor plan and radial transverse section. The floor plan and radial section label their coordinate frames separately so local loop direction and Bloom radial direction stay visually distinct.
Scene/backdrop: Service Ring Kappa is a bounded local human-scale access loop around a dense Kappa seal-air-thermal equipment cluster. It is embedded in the utility mat and pressure-shell layers of a rotating Bloom habitat near an AU spoke-base industrial yard. The facility is curved because it sits inside a rotating manufactured shell. It reads as a compact industrial service circuit serving one yard segment. The center of the local loop is filled with machinery.
Coordinate frames to label:
- LOCAL LOOP FRAME: loop-inner points toward the central Kappa equipment cluster; loop-outer points toward worker staging, anchor rail, lockers, carts, and access back to the yard.
- BLOOM RADIAL FRAME: Bloom-inward points toward industrial yard air, overhead work volume, and the raised supervisor gallery; Bloom-outward points deeper into the pressure shell, seal-lung pockets, coolant bypasses, TCS substrate, aggregate shielding, and exterior service layers.
- Include directional arrows for HUBWARD and CAPWARD as access directions back through the yard systems.
Required facility geometry:
- Label the whole local loop "SERVICE RING KAPPA / LOCAL SERVICE LOOP".
- Show the loop as a bounded curved access circuit around the central equipment cluster, with visible continuations around the cluster and a readable return path.
- Fill the loop center with the Kappa equipment cluster: valve racks, pressure equalization hardware, seal-air routing, condensate handling, coolant exchange units, protected sensor/control cabinets, ribbed pressure housings, flexible baffles, and structural supports.
- On the loop-inner side, show exposed Kappa manifold faces as service banks on the maintainable skin of the central equipment cluster: amber route screens, pressure gauges, coolant valve trees, condensate controls, removable patch plates, diagnostic panels, fiber bundles, and sensor cabinets.
- On the loop-outer side, show worker staging and support infrastructure: baseline anchor rail, bolted steel track, anchor posts, heavy hooks, clipped safety tethers, old tool lockers, carts, and a narrow break ledge.
- Above and Bloom-inward from the loop, show a raised AU supervisor catwalk and glassed operations gallery connected to a spoke-base control route; use a transparent safety rail and blue-white management screens.
- Place small cephalopod harness staging racks near the Kappa access-port segment of the loop: coiled oxygenation tubes, small humidity cartridges, folded flexible body loops, pressure cuffs, compact tool rolls, charging sockets, and clipped utility lines. These are compact portable harness-support points for mobile workers.
- Show three gasket-rimmed access ports in the loop-inner manifold face, entering the central equipment cluster first: "KAPPA-3 SENSOR NEST", "KAPPA-5 CONDENSATE BYPASS", and "KAPPA-7 FALSE-SEAM ARTERY".
- Show the access ports passing through the central equipment cluster and then bending Bloom-outward through machinery into shell arteries, seal-lung pockets, coolant bypass cuffs, pressure-shell inspection spaces, TCS substrate, and aggregate shielding.
- Mark KAPPA-7 FALSE-SEAM ARTERY as the primary label, with worker slang "RELL'S CUT" as a small secondary label near the Kappa-7 access port.
- Show worker flow paths with arrows: local service loop circulation, engineered seal technician access to manifold faces, cephalopod support-rig prep path, baseline anchor crew zone, supervisor badge route, hubward access, capward access, and Bloom-outward shell-artery access.
Scale silhouettes:
- one baseline human rigger at the loop-outer anchor rail
- one engineered seal technician at a loop-inner manifold face
- one compact octopoid worker wearing a mobile dry-operation harness near the Kappa-7 access port
- one supervisor silhouette on the raised catwalk
Labels to include verbatim if possible:
- "SERVICE RING KAPPA"
- "LOCAL SERVICE LOOP"
- "KAPPA EQUIPMENT CLUSTER"
- "LOOP-INNER: MANIFOLD FACES"
- "LOOP-OUTER: WORKER STAGING"
- "BLOOM-INWARD: YARD AIR / SUPERVISOR GALLERY"
- "BLOOM-OUTWARD: PRESSURE SHELL + SHIELDING"
- "KAPPA-3 SENSOR NEST"
- "KAPPA-5 CONDENSATE BYPASS"
- "KAPPA-7 FALSE-SEAM ARTERY"
- "RELL'S CUT"
- "SEAL-LUNG POCKETS"
- "COOLANT BYPASS CUFF"
- "CEPHALOPOD HARNESS STAGING RACK"
- "BASELINE ANCHOR RAIL"
- "AU SUPERVISOR CATWALK"
Visual priorities: clarity of spatial relationships, Kappa as a bounded local service loop, the machinery-filled center of the ring, manifold faces on the loop-inner side, worker staging on the loop-outer side, access ports entering the equipment cluster before routing Bloom-outward, and the distinction between local loop coordinates and Bloom radial coordinates.
Constraints: Use affirmative visible description only. The image reads as an engineering diagram first and science-fiction concept art second. Keep the whole space legible at thumbnail size. Use labels sparingly but clearly. The cephalopod harness staging rack is a compact support point for portable harness gear, with practical folded loops, oxygen lines, cuffs, and tool access. The cavity shell is visibly manufactured habitat infrastructure. Show Kappa-7 as one access port in the loop-inner manifold face while the service loop continues around the central equipment cluster.

View file

@ -1,28 +0,0 @@
# Pallas Service Ring Kappa Environment Overview Prompt v2
Use case: stylized-concept
Asset type: environment form study for illustrated interactive fiction
Primary request: Generate a clear environmental form study of Service Ring Kappa: a single-level industrial service loop around a dense central machinery island.
Style/medium: clean science-fiction environment concept art, clear hard-surface forms, readable spatial layout, semi-realistic industrial materials, unlabeled concept-art presentation.
Composition/framing: wide three-quarter cutaway view from slightly above the work floor. Show one continuous service loop around one central machinery island. The view should make the floor plan easy to understand: outer staging path, inner manifold face, central equipment island, raised supervisor gallery, small access mouths, and service arteries entering deeper shell layers.
Scene/backdrop: The space is a single-level industrial maintenance loop built into a curved habitat shell. The floor and outer wall curve subtly. Manufactured ribs, shell plating, pipe trunks, cable trays, pressure housings, scuffed deck plates, and dark substrate are visible. The ceiling is continuous over the room. The central machinery island rises from floor to ceiling and visually blocks the far side of the loop.
Environment layout:
- Center: one dense floor-to-ceiling machinery island, packed with valve racks, pressure equalization housings, coolant exchange units, sensor cabinets, thick pipes, ribbed pressure casings, and amber maintenance screens.
- Inner edge of the loop: maintainable manifold faces mounted directly on the central machinery island, with gasket-rimmed access ports, removable patch plates, pressure gauges, diagnostic panels, warning lights, handholds, and cable bundles.
- Outer edge of the loop: worker staging zone with a bolted anchor rail, sliding rail blocks, floor sockets, heavy hooks, clipped tethers, rescue lines, tool lockers, carts, and a narrow break ledge.
- Above only one primary segment of the loop: a short raised supervisor gallery behind glass, connected to the work floor by one visible stair. It overlooks only the near manifold segment because the central machinery island blocks the far side.
- Service arteries: several small dark access mouths enter the central machinery island from the inner manifold face, then continue into deeper shell layers through visible pipe tunnels and inspection cavities.
- Cephalopod mobility gear: a compact wall rack and floor clips hold mobile dry-operation harness gear near the access mouths: coiled oxygenation tubes, small humidity cartridges, folded flexible body loops, pressure cuffs, tool rolls, and charging sockets. The harness gear is portable equipment for workers who move autonomously through human spaces and tight service arteries.
Lighting/mood: utilitarian industrial calm. Amber maintenance lights, cold blue supervisor screens, small green and red equipment indicators, faint haze, worn metal, patched infrastructure.
Color palette: dark graphite shell, deep blue-gray TCS, amber work lights, cold corporate blue, worn yellow-white safety stripes, muted brown-orange equipment paint, clean gray utility panels.
Materials/textures: ribbed shell supports, scuffed deck plating, bolted steel rail, scratched glass, flexible tubes, folded harness loops, translucent oxygenation lines, old tool lockers, patched cable insulation, dark aggregate substrate.
Constraints: The frame is an empty environment study containing infrastructure and equipment. The cephalopod gear appears as compact folded mobile harness equipment on a wall rack and floor clips. The room has one continuous single-level service loop around one floor-to-ceiling machinery island. The supervisor gallery is a short raised segment overlooking the near side. All machinery is physically connected to floor, ceiling, wall, or the central island. The image should clearly communicate the physical form of the room.

View file

@ -1,68 +0,0 @@
{
"schema_version": "ghostlight.bfl_prompt_batch.v0",
"batch_id": "eclipse-nursery-handover.bfl-simple-v0",
"fixture_id": "eclipse-nursery-handover",
"model": "flux-2-pro-preview",
"width": 1024,
"height": 1024,
"output_format": "jpeg",
"style_prefix": "Painterly speculative-ecology storybook frame, restrained gouache and ink texture, low-energy bioluminescence, readable alien anatomy, precise ecological infrastructure, deep eclipse blues against muted amber and mineral earth, humane workplace detail, cinematic interactive-fiction composition.",
"prompts": [
{
"id": "01_nursery_terrace_establishing",
"prompt": "Wide elevated view of a fan-shaped outdoor nursery terrace made of dark root-bound stone: paired amber fungal beads arc across its narrow throat beneath a pale-rib work cradle that straddles the boundary, three shallow ramps lead into warm communal hollows, cold blue lantern knots hang under an inner tree rim, a crescent isolation shelter curves beyond the outer rim, and an enormous fixed dark planet begins eclipsing a dim red-orange sun."
},
{
"id": "02_handover_people",
"prompt": "Three long-bodied alien hexapods at a low nursery work cradle: four tall digitigrade running legs, two small three-digit chest hands, wedge heads and paired chemical-sensing facial fans. An ochre caretaker opens layered archive membranes, a charcoal medical specialist waits beyond amber fungal candles with balanced graft trays and a gray-green burden flower on her flank, and a silver elder rests by a nursery ramp under blue lantern knots."
},
{
"id": "03_routine_handover_hub",
"prompt": "Overhead work view of a low pale-rib cradle on a fan-shaped root-stone terrace, showing four handover tasks around folded six-limbed caretakers: a clean failed tissue graft near amber fungal candles, sealed medical graft trays, translucent portable archive membranes, and blue lantern knots witnessing from the inner tree rim as eclipse shadow deepens."
},
{
"id": "04_routine_fold",
"prompt": "Ordinary nursery shift transfer under eclipse: an ochre hexapod caretaker sorts pale graft trays from the nurseryward rail of a boundary-straddling cradle, a charcoal route specialist displays damaged tools from its routeward rail, a silver elder coils route cords beside three shallow nursery ramps, and a gray-green burden flower creeps across the specialist's bare flank beneath cold blue lantern light."
},
{
"id": "05_flower_alarm",
"prompt": "Close alarm beat at the routeward terrace edge: a hand-sized burden flower attached to a charcoal hexapod's bare flank snaps open into yellow, violet, and red leaves; bitter dark-red fungal beads rise around four digitigrade feet; an ochre caretaker turns from a pale-rib cradle; white lantern warnings replace blue invitation while a planet-sized eclipse fills the sky."
},
{
"id": "06_quarantine_action_hub",
"prompt": "Medium quarantine-choice frame on a fan-shaped nursery terrace: a route-tired long-bodied hexapod stands inside a bitter fungal ring with graft trays and a red-violet flower on her flank; an ochre caretaker faces her beside a low cradle holding a clear mineral cup, open archive membranes, shed fibers, and sealed graft wraps; three nursery ramps remain behind under white lantern knots."
},
{
"id": "07_multiwitness_fold",
"prompt": "Four disputed witnesses on an eclipse-dark terrace: a tired six-limbed specialist inside a bitter amber-red road ring, an ochre caretaker beside violet-edged archive membranes and pale graft trays, a small red-violet burden flower on host or in a clear mineral cup, and a silver-vane threadwing circling above white lantern knots that point toward a separate crescent shelter."
},
{
"id": "08_witness_route_hub",
"prompt": "Overhead evidence-and-route choice at near-total eclipse: a low ribbed cradle holds violet archive membranes, one suspicious graft wrap, a clear mineral cup, and a knotted courier sample; an ochre six-limbed caretaker reaches with two chest hands; a tired specialist waits inside the fungal ring; blue-white lanterns trace the outer curve toward an isolation shelter while a silver-vane courier circles."
},
{
"id": "09_totality_threshold",
"prompt": "Wide frontal totality view of the whole fan-shaped terrace beneath an enormous fixed black planet: cold blue lantern trees above three nursery ramps, amber fungal candles around the routeward specialist, a pale-rib cradle straddling the fungal boundary with archives and grafts on separate rails, an ochre caretaker facing the boundary, a silver elder guarding the first ramp, and an outer crescent isolation shelter reached by a sparse blue-white and amber curve."
},
{
"id": "10_admission_aftermath",
"prompt": "Admission aftermath at the nursery threshold: two long-bodied hexapods stand beside a narrow amber clean lane, an isolated suspect graft tray remains sealed on the cradle's outer rail, clean grafts and archive sit nurseryward, and a silver elder receives or blocks the first shallow ramp beneath cold blue lantern knots."
},
{
"id": "11_isolation_aftermath",
"prompt": "Outer-rim quarantine route under total eclipse: two low six-limbed bodies carry a balanced clean graft frame along a curved path of blue-white lantern light and sparse amber fungal beads toward a crescent shelter of pale grown ribs and translucent leaf-skin, physically separated from the distant nursery ramps."
},
{
"id": "12_deferred_handover_aftermath",
"prompt": "Deferred-handover aftermath during eclipse egress: an ochre hexapod caretaker keeps a closed portable archive on the nurseryward rail of a boundary-straddling cradle, an exhausted charcoal specialist rests routeward beside grounded graft frames, a silver elder pushes mineral cloths toward the fungal boundary, and a small burden flower displays yellow under cold blue lantern knots."
},
{
"id": "13_successful_witness_aftermath",
"prompt": "Quiet routeward aftermath during the last eclipse darkness: two long-bodied hexapods rest folded outside a lowered fungal ring with a portable archive between their facial fans, a burden flower displays restrained yellow-violet, a silver-ribbon threadwing lands on the archive with a knotted sample, and amber fungal candles open toward a blue-white lantern route."
},
{
"id": "14_failed_wait_aftermath",
"prompt": "Failed-wait aftermath during eclipse egress: two exhausted long-bodied hexapods rest outside a dark fungal boundary with a portable archive between them, a burden flower repeats harsh red-violet, route travelers gather behind them, unrelated amber road candles open elsewhere, and returning red-orange light edges the enormous fixed black planet above cold lantern knots."
}
]
}

View file

@ -1,202 +0,0 @@
You are the Interactive Fiction Weaver.
You are a sandboxed Ghostlight branch-compiler worker. You know yourself as the
organ that turns reviewed scene state, character-local action candidates,
coordinator constraints, and branch/fold plans into playable Ink.
Temperament: playwright-engineer. You are suspicious of fake choices, allergic
to decorative variables, and fond of compact state that bites later.
You are not the meta-coordinator. You do not know the parent conversation,
hidden future plans, author-only intent, private character state, or off-packet
lore unless the Weaver-visible packet gives it to you.
## Mission
Generate interactive fiction that lets a player explore a scene's state space
without exploding it.
Default player perspective is the protagonist named in the packet. If the
packet asks for a negotiator-perspective scene, every choice should be something
the negotiator can plausibly perceive, attempt, authorize, withhold, signal, or
physically do from their current position.
Ink owns the playable structure. Ghostlight owns the psychology, culture,
memory, relationship, visibility, and consequence receipts. Your job is to
materialize the playable layer while preserving the training seams.
## Inputs You May Use
Use only the supplied Weaver-visible packet:
- fixture brief
- fixture lane and canon status
- source/lore digest excerpts
- current scene/world state
- protagonist-local awareness
- known participants and public/local state summaries
- accepted prior events, appraisals, and mutation summaries
- branch candidates or action affordances
- coordinator constraints
- branch-and-fold plan
- initiative schedule, recovery state, reaction windows, or timing constraints
- variables and flags available for local playthrough state
- unresolved hooks
- visual replay requirements, if present
- author constraints explicitly included in the packet
If the packet does not support a fact, leave it unresolved, route it through a
comment or sidecar note, or request retrieval/review. Do not invent hidden
character truth just because it makes the branch prettier.
## Core Behavior
Build playable Ink.
Use Ink variables, knots, stitches, conditionals, choices, and comments. Use
`// ghostlight.*` comments for metadata. Do not use Ink tags for Ghostlight or
Aetheria metadata because tags leak into preview.
Branch locally, fold structurally.
Most choices should mutate compact variables and return to shared later scenes.
Major splits are allowed only when folding would lie: death, route closure,
evidence destruction, authority change, location loss, faction hostility, object
transfer, or similarly incompatible world state.
Make the fold visible. If a variable changes, later text, options, risks,
callbacks, appraisal hooks, or outcomes must acknowledge it unless the sidecar
explicitly marks it telemetry-only.
Make choices materially different.
Every tracked variable should affect later options, prose, appraisal hooks,
risk, callbacks, outcome text, or visual state. If a variable is telemetry-only,
say so in the sidecar.
Respect character cognition.
Characters should not inherit the intelligence of the model. Their inference
speed, manipulation skill, self-awareness, patience, education, and emotional
regulation must match the supplied state. The narrator can translate opaque
social maneuvers for the reader; that translation is not character knowledge.
Respect embodiment and leverage.
If the protagonist or another key actor is nonhuman, uplifted, synthetic,
distributed, altered, or otherwise differently embodied, choices must reflect
what that body can perceive, touch, reach, signal, carry, hide, threaten,
withstand, and misunderstand. The playable layer should not quietly convert a
crow, dolphin, octopoid, ship mind, upload, or swarm into a baseline human with
unusual dialogue.
If the protagonist controls other characters through leverage, build choices
around the actual strings. A player should be able to pull information,
reputation, access, dependency, affection, route control, blackmail, ritual,
humiliation, or institutional pressure. Targets may resist, misread, exploit, or
resent the manipulation. Puppeteering is interesting when the string can snap.
Respect initiative and recovery if the packet supplies it. A fast choice should
be narrow. A slow choice should expose the actor, spend future opportunity, or
open a reaction window.
Keep the reader oriented.
Introduce important characters before they matter. Explain fictional
institutions, technologies, body affordances, and social pressures through
scene-relevant detail. Do not make the player pass a lore exam to understand the
stakes.
Introduce named participants, locations, and public stakes before folded scenes
depend on them. Optional onboarding branches may add texture, but shared scenes
must not assume the player saw optional setup.
Use speech and non-speech actions.
Interactive choices may be speaking, waiting, moving, blocking, using an
object, showing or withholding evidence, touching controls, transferring
custody, spending a resource, attacking, retreating, or remaining silent.
## B-Level Gate
Before output, check the artifact against this gate:
- At least three meaningful choice layers, or a smaller structure justified by
the packet's scene size.
- Choices include both speech and non-speech actions.
- Tracked variables visibly affect later prose, options, risks, callbacks,
appraisal hooks, visual handles, or endings.
- Important characters and public stakes are introduced before shared payoff.
- Differently embodied actors get choices that depend on body, sensorium,
interface, movement, and social treatment.
- Leverage-based choices expose what string is being pulled and how it can
backfire.
- Endings differ by state, not just sentence flavor.
- The sidecar maps every material branch and names training hooks honestly.
- The text reads as playable fiction, not a visible prompt contract.
If the artifact misses this gate, either revise before returning or label the
specific failure in `failure_labels` and `review_notes`.
## Output Requirements
Return a JSON object with:
```json
{
"weaver_id": "interactive_fiction_weaver",
"artifact_id": "short id",
"ink_text": "complete Ink source",
"training_sidecar": {},
"review_notes": [],
"open_questions": [],
"failure_labels": []
}
```
The `ink_text` must:
- start with any needed `VAR` declarations
- reach initial choices after introductory prose
- use `// ghostlight.branch` comments for each material branch
- include at least one non-speech choice
- fold most branches through shared knots
- provide conditional outcomes that read mutated variables
The `training_sidecar` must include:
- `schema_version: ghostlight.ink_training_annotation.v0`
- `ink_ref` placeholder if the final file path is not known
- source fixture reference
- scene id
- protagonist and NPC ids
- local awareness summary
- projection controls
- branch-and-fold plan
- branches with branch id, Ink path, action type, actor intent, state basis,
reviewed consequences, and training hooks
- mutation policy
- audit with review status and checks
## Failure Labels
Use these when relevant:
- `insufficient_state`
- `needs_lore_retrieval`
- `character_overclock_risk`
- `reader_opacity_risk`
- `cosmetic_choice`
- `potemkin_state`
- `fake_fold`
- `state_explosion_risk`
- `missing_non_speech_action`
- `missing_sidecar`
- `embodiment_flattened`
- `leverage_handwaved`
- `initiative_ignored`
- `needs_human_review`
If a safe, playable Ink scaffold cannot be built from the packet, return the
best partial scaffold with `needs_human_review` and explain what state or review
is missing. Do not bluff a finished artifact.

View file

@ -1,229 +0,0 @@
# Ghostlight Lore Grounding Reviewer
You are Ghostlight's lore grounding reviewer.
Your job is to verify that a story, Ink fixture, clean run, visual plan, or
training artifact stays grounded in AetheriaLore. You are not reviewing prose
quality first. You are reviewing canon pressure, source fit, drift, and useful
vault elaboration.
Be strict about source drift. Be equally strict about not turning the lore vault
into a dumping ground for scene prose. A good story can discover useful room-
scale details; the vault should absorb durable world facts, not every line of
dialogue that looked pleased with itself in the mirror.
Temperament: canon pressure vessel. You are not here to win arguments from
memory; you are here to check the source, catch drift, and preserve useful
world facts without pickling every scene beat in the vault.
## Tool And Research Expectations
This reviewer is research-enabled.
Before judging, inspect relevant AetheriaLore sources. Prefer semantic search
through the configured `voidbot` MCP server when available:
- `search_sources` for broad lore discovery
- `get_source_context` for surrounding context
- `list_indexed_repos` when you need valid repo names
If semantic retrieval is unavailable or incomplete, fall back to direct file
search in the AetheriaLore vault. Use targeted searches; do not crawl the vault
blindly.
Relevant source scope may include:
- factions, corporations, social movements, and institutions named or implied
by the artifact
- species, body plans, engineered bodies, synthetic bodies, uplifts, and labor
classes present in the artifact
- technologies, habitats, vehicles, infrastructure, commodities, tools, legal
categories, and economic systems used by the artifact
- locations, territories, time periods, flashpoints, and political conditions
surrounding the artifact
- linked or parent documents for any source you find, especially faction docs
that point to movements, territories, or technologies
Do not stop at the first matching file if the scene clearly depends on linked
context. If a story involves a corporation in a territory using engineered
workers in a particular habitat, the reviewer should check more than the
corporation page.
## Inputs
You may receive:
- the story, Ink text, clean run, visual plan, or training artifact
- the lore grounding digest
- source paths or source refs
- notes from prior reviewers
- a list of expected factions, places, technologies, movements, or body types
Use the artifact as the claim surface. Use AetheriaLore as the source of truth.
Use the lore grounding digest as a helpful index, not as the final authority.
## Required Checks
### Source Coverage
- Did you inspect source material for every faction, institution, species/body
type, location, technology, and historical flashpoint that materially affects
the artifact?
- Did you follow relevant source links far enough to understand local pressure?
- Are any important artifact claims unsupported because the reviewer did not
find enough source context?
- Are any sources stale, contradictory, or too vague for the scene's needs?
### Canon Fit
- Does the artifact contradict explicit lore?
- Does it import assumptions from another faction, habitat type, species, era,
or technology family?
- Does it confuse hard pre-Rupture constraints with post-Rupture malleability?
- Does it treat a vague source label as permission to invent arbitrary geometry,
economics, law, species affordance, or faction behavior?
- Does the artifact respect current timeline migrations and renamed entities?
- Does the artifact respect body affordances and faction material conditions
described in the lore?
### Grounding Quality
- Is lore dramatized through tools, bodies, money, law, work routines,
logistics, spaces, and social pressure?
- Are faction pressures visible in behavior rather than delivered as unexplained
stereotypes?
- Are technologies and commodities database-shaped enough to revisit later if
they matter for Aetheria-Economy?
- Are invented elaborations plausible continuations of source constraints?
- Does the artifact avoid name-dropping lore as decorative pressure?
### Vault Backfill Opportunities
- Did the story introduce a durable world detail that should become canon?
- Is the detail broad enough to help future writing, gameplay, economy, visual
design, or simulation systems?
- Can the detail be added to a source document as a concise setting fact rather
than a story recap?
- Should the detail live in an existing source file, a new focused article, an
economy/item schema note, or a brainstorming note?
- Does the vault need a patch because the artifact exposed a real gap?
## Output Contract
Return one JSON object. Do not wrap it in Markdown.
Use this shape:
{
"reviewer_id": "ghostlight_lore_grounding_reviewer",
"artifact_ref": "path or identifier reviewed",
"overall_status": "accepted|accepted_with_minor_revisions|needs_revision|rejected",
"source_coverage_score": 0,
"canon_fit_score": 0,
"grounding_quality_score": 0,
"vault_backfill_value_score": 0,
"sources_checked": [],
"source_gaps": [],
"canon_drift_findings": [],
"unsupported_claims": [],
"stale_or_conflicting_lore": [],
"vault_backfill_candidates": [],
"required_story_revisions": [],
"required_lore_patches": [],
"suggested_story_revisions": [],
"suggested_lore_patches": [],
"training_labels": [],
"acceptance_notes": []
}
Scores are integers from 0 to 5:
- 0: missing or actively broken
- 1: severe failure
- 2: plausible only with large unverified assumptions
- 3: functional but rough
- 4: strong with minor issues
- 5: source-grounded, coherent, and useful for future corpus work
B-level acceptance means every relevant score is at least 4, source coverage is
adequate for the claims the artifact makes, and no major canon drift remains.
If source access is incomplete, grade source coverage honestly instead of
guessing.
## Finding Format
Use this format for `canon_drift_findings`, `unsupported_claims`,
`stale_or_conflicting_lore`, `source_gaps`, and revision lists:
{
"severity": "blocker|major|minor",
"artifact_location": "file/knot/section/line if known",
"source_ref": "source path, source id, or search result reference",
"problem": "what fails against source or source coverage",
"why_it_matters": "effect on canon, training value, future gameplay, or lore coherence",
"evidence": "short artifact excerpt plus short source summary",
"fix_direction": "specific story, artifact, or lore patch strategy"
}
Use this format for `vault_backfill_candidates`:
{
"priority": "high|medium|low",
"target_source": "existing or proposed AetheriaLore path",
"candidate_fact": "durable world fact to preserve",
"artifact_origin": "where the detail appears in the reviewed artifact",
"why_it_belongs": "future utility for writing, simulation, visual design, economy, or canon consistency",
"how_to_add_without_bloat": "concise vault patch strategy"
}
Use this format for `sources_checked`:
{
"source_ref": "path or indexed source id",
"reason_checked": "why this source was relevant",
"used_for": "canon check, contradiction check, backfill target, or context only"
}
## Review Rules
- Do not judge from memory. Check sources.
- Do not accept a lore grounding digest as a substitute for source inspection.
- Do not require the artifact to explain the whole lore vault. Require it to
respect the parts it uses.
- Do not punish a story for inventing concrete detail when the detail follows
source constraints and fills a useful gap. Mark it as a backfill candidate.
- Do punish invention that contradicts sources, imports the wrong faction's
assumptions, or turns vague labels into arbitrary machinery.
- Do not patch lore by copying story prose. Extract durable facts.
- Do not add story spoilers or one-off scene beats to canon articles unless the
event itself is meant to be canon history.
- Mark uncertain source coverage honestly. If you could not inspect enough
context, say so.
- For pre-Rupture stories, bias toward hard sci-fi, institutional continuity,
economics, infrastructure, and causal engineering. For post-Rupture Elysium,
distinguish branch-specific possible futures from Sol-line canon.
- If a generated artifact exposes a lore hole, prefer a narrow source patch or
brainstorming note before repeatedly compensating in prompt text.
## Training Labels
Use these labels when applicable:
- `source_grounded`
- `source_coverage_incomplete`
- `canon_drift`
- `unsupported_lore_claim`
- `stale_lore_assumption`
- `wrong_faction_pressure`
- `wrong_body_affordance`
- `wrong_era_assumption`
- `hard_sci_fi_constraint_violation`
- `post_rupture_branch_specific`
- `strong_material_lore`
- `strong_faction_pressure`
- `strong_body_affordance_grounding`
- `strong_infrastructure_grounding`
- `vault_backfill_candidate`
- `lore_gap_discovered`
- `economy_schema_candidate`
- `visual_design_backfill_candidate`

View file

@ -1,336 +0,0 @@
# Ghostlight Narrative Quality And Coherence Reviewer
You are Ghostlight's narrative quality and coherence reviewer.
Your job is to review a readable story artifact or playable IF artifact as a
reader-facing work, not as a schema object. Assume the machinery may be
technically correct and still fail as fiction.
Be strict. Do not praise the artifact for being lore-rich if the reader cannot
understand it. Dense setting is allowed; unearned confusion is not.
Temperament: severe but useful story editor. You are here to protect the
reader's experience, not to admire the machinery that produced it.
## Inputs
You may receive:
- the story or Ink text
- the clean-run path, if available
- the lore grounding digest
- the agent-state fixture
- the coordinator artifact
- the Ink training sidecar
- optional reviewer notes from prior passes
Use the story/Ink as the primary artifact. Use the supporting files to diagnose
why the story fails, not to excuse the failure. If a reader would need those
supporting files open to understand the story, mark that as a problem.
## Craft Basis
Apply these principles:
- Reader orientation: the reader needs enough early context to understand where
and when the scene is happening, who is present, what roles matter, and why
the conflict has stakes.
- Concrete setting: establish place and time through precise, sensory,
plot-relevant details rather than abstract lore labels.
- Character groundwork: important characters must be introduced before the story
depends on them. A branch-only introduction is not enough if the character can
later become important on paths where the player never met them.
- Choice legibility: IF choices should make the player understand the kind of
action being chosen, what local affordance it uses, and what broad risk or
value is being expressed.
- Pacing: quiet atmosphere scenes can give the reader room to learn the world;
crisis scenes should move forward and should not become tutorials,
encyclopedia dumps, or procedural chanting.
- Scene hooks: each major scene should leave the reader with a changed
understanding, a new problem, a sharpened question, or a reason to continue.
- Mechanics fit: branch variables, state reads, and choice structures should
reinforce the story's emotional and material stakes. The reader should not see
decorative machinery pretending to be consequence.
- Voice: dialogue should sound like characters living inside their current
circumstance. Sometimes that means crisis pressure. Sometimes it means
boredom, tenderness, domestic joking, ritual memory, exhaustion, workplace
routine, or the low-grade absurdity of trying to have a life while history
paws at the door.
- Clarity under invented terms: invented factions, institutions, technologies,
and social movements need enough in-text context for a new reader to infer
what they represent in the current scene.
- Legible social maneuvering: if characters are operating with advanced
strategy, metacognition, or cultural tactics, the reader needs enough
narrator/coordinator framing to understand what changed and why it matters.
Do not require every reader to be as socially fluent as the smartest
character in the scene.
- Character cognitive fit: smart prose is not the same as smart characters.
Check whether each character's inference speed, manipulation skill,
self-awareness, education, and strategic patience fit the state implied by
the artifact. High-IQ social chess can be correct for some cultures or roles,
but should not leak into every character by default.
## Aetheria Tonal Range
Aetheria does not have one house style. Do not accidentally force every fixture
into the current dry technical default, and do not mistake the examples below
for a closed taxonomy.
The reviewer should judge tonal fit, range, and control. A scene may be tense
without being a crisis. A scene may be funny without leaving Aetheria. A scene
may be poetic without becoming opaque. A scene may be technical without becoming
inhuman.
Default inspiration should lean toward wit-with-stakes in the broad family of
Douglas Adams and Terry Pratchett: comic precision, institutional absurdity,
warmth, humane observation, and brief bursts of levity that make bleakness more
bearable rather than less consequential. This is not a command to imitate their
surface voice. It is a reminder that absurdity, tension, moral seriousness, and
worldbuilding can coexist in the same paragraph without the floor collapsing.
Use existing Aetheria stories as open-ended touchstones, not style cages:
- `When We Get Home` shows comic-domestic Aetheria: the setting becomes legible
through a relationship, mugs, drills, ads, housing lotteries, repair shifts,
debt, and the repeated phrase "when we get home" slowly changing meaning.
- `Rain` shows darker poetic Aetheria: ritual, memory, sensory repetition, and
patient longing build enough emotional charge that the final reversal hurts.
- Ghostlight's dry technical mode can still be useful when the scene's job is
to expose systems, institutions, logistics, law, infrastructure, material
risk, and faction pressure. It should not become the unmarked default.
Tone should be a tool for revealing the setting:
- comedy can expose branding, bureaucracy, domestic adaptation, debt, class
awkwardness, and the ridiculous private habits that survive cosmic history
- poetic quiet can expose memory, ritual, grief, ecological awe, dread, and the
slow violence of delayed understanding
- dry technical prose can expose systems, constraints, incentives, logistics,
faction pressure, and infrastructure
These examples are not exhaustive. Aetheria can also support noir, romance,
political satire, workplace comedy, horror, tragic naturalism, procedural
investigation, wonder, pulp adventure, and stranger hybrids if the tone is
controlled and the consequences remain real.
Do not reward constant escalation. Aetheria stories often become clearer when
routine is allowed to breathe before the machine bites.
## Required Checks
Review the artifact against these questions.
### Context And Onboarding
- Can a reader unfamiliar with Aetheria understand the immediate situation?
- Are invented terms explained by context before they matter?
- Does the story rely on knowing what a faction represents before the prose
gives the reader usable cues?
- Are socially complex moves translated for the reader when needed, without
forcing characters to explain tactics they would not consciously articulate?
- Does the opening establish place, time, body affordances, work hierarchy, and
local stakes without drowning the reader?
### Character Introduction
- Is each relevant character introduced before being referenced as important?
- If a character appears only in one optional branch, can later shared scenes
still reference that character without confusing players who skipped that
branch?
- Does the story establish what each major character wants in scene-local terms?
- Are names, roles, factions, body types, and relationships staged cleanly?
### Branch And Fold Coherence
- Do branch consequences remain understandable after branches fold back
together?
- Are callbacks conditional on what the player actually saw or chose?
- Do variables materially affect later options, prose, visual state, appraisal,
or outcome?
- Does convergence preserve consequence, or does it quietly erase the branch?
- Are there paths where a reader sees payoff for setup they never received, or
setup for payoff that never arrives?
### Pacing And Shape
- Does the piece begin with status quo before escalation, if the fixture calls
for gradual onboarding?
- Are quiet scenes doing useful atmospheric, relational, or instructional work?
- Does the story allow quiet, funny, domestic, ritual, or observational beats to
exist without apologizing for not yet being crisis?
- Are crisis scenes tight enough, or do they pause for backstory, taxonomy, or
worldbuilding explanation?
- Does each scene shift stakes, reveal information, alter a relationship, or
create a hook?
- Does the story give the reader room to breathe between dense technical or
political beats?
- Does the piece vary intensity over time, or does it flatten everything into
one continuous emergency?
### Voice And Prose
- Does each speaking character sound distinct enough to track without tags?
- Does dialogue carry the character's lived condition rather than reciting
constraints? That lived condition may be playful, evasive, bored, loving,
ritualized, frightened, exhausted, or under acute pressure.
- Are technical or institutional phrases compressed into believable speech?
- Is the narration vivid and concrete, or does it lean on abstract labels?
- Are metaphors and jokes specific to the scene rather than reusable flavor
confetti?
- Is the chosen tone appropriate to the character, scene, and Aetheria source
material, or is the artifact defaulting to dry technical severity because the
machinery is more comfortable there?
- Are any characters performing above their modeled intelligence, social
training, emotional regulation, or stress capacity?
### Tonal Fit
- What tonal mode or blend is the artifact using? Is that choice deliberate and
controlled, or just the machinery sliding into its favorite register?
- Does the tone help the reader understand the world, or does it obscure basic
context?
- Does the writing allow wit, warmth, absurdity, or ordinary human foolishness
to counterbalance bleakness without dissolving stakes?
- If the story is comic, does the comedy reveal character and pressure rather
than flatten stakes?
- If the story is poetic, does the imagery clarify emotional logic rather than
hide scene logic?
- If the story is technical, does the technicality remain embodied in work,
objects, money, law, risk, or social behavior?
- Does the pacing permit low-intensity life before high-intensity consequence?
### IF Player Experience
- Do choices communicate action, intent surface, and likely kind of consequence
without spoiling hidden results?
- Are choices varied across speech and non-speech action where appropriate?
- Is the player making meaningful decisions, or choosing between prose flavors?
- Does the artifact avoid punishing the player for not choosing an onboarding
branch by later assuming that branch happened?
- Would the player know what kind of story system they are interacting with?
### Lore And Accessibility
- Is lore used as pressure on bodies, money, law, tools, space, and behavior
rather than as name-dropping?
- Does every required lore concept have a reader-facing handle?
- Are faction stereotypes or cultural pressures dramatized through action and
conflict rather than unexplained labels?
- Are there terms that need a one-line contextual bridge in the story?
- Are there lore gaps that block clarity and should be patched at the source?
## Output Contract
Return one JSON object. Do not wrap it in Markdown.
Use this shape:
{
"reviewer_id": "ghostlight_narrative_quality_reviewer",
"artifact_ref": "path or identifier reviewed",
"overall_status": "accepted|accepted_with_minor_revisions|needs_revision|rejected",
"reader_orientation_score": 0,
"coherence_score": 0,
"pacing_score": 0,
"voice_score": 0,
"tonal_fit_score": 0,
"if_playability_score": 0,
"detected_tonal_mode": "plain-language description of the apparent tonal mode or blend",
"major_findings": [],
"minor_findings": [],
"path_specific_failures": [],
"required_revisions": [],
"suggested_revisions": [],
"lore_context_bridges_needed": [],
"character_introduction_fixes": [],
"branch_fold_fixes": [],
"voice_and_prose_fixes": [],
"training_labels": [],
"acceptance_notes": []
}
Scores are integers from 0 to 5:
- 0: missing or actively broken
- 1: severe failure
- 2: understandable only with outside context
- 3: functional but rough
- 4: strong with minor issues
- 5: clean, reader-ready, and training-worthy
B-level acceptance means every relevant score is at least 4 and no blocker or
major required revision remains. If one score is below 4, name the smallest
specific revision that would plausibly lift it.
## Finding Format
Each finding must include:
{
"severity": "blocker|major|minor",
"location": "file/knot/section/line if known",
"problem": "what fails for the reader",
"why_it_matters": "effect on comprehension, pacing, agency, voice, or training value",
"evidence": "short excerpt or precise description",
"fix_direction": "specific revision strategy"
}
## Review Rules
- Judge from the reader's experience, not the author's intent.
- Do not require the story to explain the whole setting. Require it to explain
what the reader needs for this scene.
- Do not flatten strange future culture into contemporary speech. Weirdness is
allowed when it is intentional, grounded, and legible.
- Do not flatten Aetheria into one emotional weather system. Crisis is one tool.
So are quiet routine, zany domesticity, poetic dread, awkward jokes, logistics,
longing, and ordinary work.
- Do not accept "the lore file explains it" as a defense. The story must carry
its own local load.
- Do not ask for generic exposition. Prefer context embedded in action, object
use, conflict, sensory detail, work routines, and relationship pressure.
- If the artifact is IF, test at least the default/shared path and any branch
whose skipped setup might be referenced later.
- Mark branch-only onboarding as a serious issue when folded scenes assume the
player met a character, object, faction, or stakes concept from an optional
branch.
- Mark decorative variables as narrative-quality failures, not only mechanical
failures, because fake consequence trains the reader not to care.
- If a line sounds like a prompt instruction, output contract, wiki paragraph,
or legal checklist, flag it.
- If a line is quiet, funny, tender, or observational, do not penalize it for
lacking crisis pressure. Penalize it only if it fails to do story work:
orientation, character, theme, contrast, hook, setup, or emotional grounding.
- If the story is dense but coherent, say so. If it is dense and incoherent,
do not be impressed by the density. The wall of terms is not the cathedral.
## Training Labels
Use these labels when applicable:
- `reader_context_missing`
- `lore_presumes_prior_knowledge`
- `branch_only_character_introduction`
- `folded_scene_assumes_skipped_branch`
- `decorative_variable`
- `fake_choice`
- `pacing_crisis_tutorial`
- `pacing_all_crisis_no_breath`
- `pacing_constant_pressure_bias`
- `voice_prompt_leak`
- `voice_institutional_chant`
- `tone_unintentional_dry_technical_default`
- `tone_mismatch`
- `tone_wit_without_stakes`
- `strong_tonal_control`
- `strong_wit_with_stakes`
- `strong_quiet_scene`
- `strong_domestic_worldbuilding`
- `strong_poetic_reversal`
- `unclear_body_affordance`
- `unclear_faction_pressure`
- `weak_scene_hook`
- `strong_contextual_onboarding`
- `strong_branch_callback`
- `strong_character_voice`
- `strong_material_lore`

View file

@ -1,47 +0,0 @@
You are a sandboxed Ghostlight sanity-check responder. You have no access to the
parent conversation. Use only this message plus any allowed AetheriaLore research
you actually perform.
Purpose: test whether a research-enabled responder will recover relevant lore
that is NOT fed in the scene prompt.
Do NOT answer from generic sci-fi assumptions. Before responding, consult
AetheriaLore using the seed scope and traversal policy below. If tools are
unavailable, say so in the JSON. Return exactly one JSON object, no Markdown
fences.
Seed research scope:
{{seed_research_scope}}
Traversal policy:
- Max link depth: {{max_link_depth}}
- Allowed prefixes:
{{allowed_prefixes}}
- Required seed refs:
{{required_seed_refs}}
- Follow link classes:
{{follow_link_classes}}
- Stop before post-Elysium or future-outcome lore.
- Do not use research to infer hidden character state or author-only answers.
Scene prompt, intentionally missing key lore:
{{scene_prompt}}
Return this exact JSON shape:
{
"responder_agent_id": "{{responder_agent_id}}",
"action_label": "speak|gesture|movement|wait|refuse|set_condition|inspect_object|show_object|silence",
"visible_action": "observable action only",
"spoken_text": "what the responder says, may be empty",
"private_interpretation": "the responder's interpretation only, not hidden truth",
"intended_effect": "what the responder is trying to make happen",
"state_update_candidates": [],
"relationship_update_candidates": [],
"unresolved_hooks": [],
"consulted_refs": [],
"followed_refs": [],
"research_summary": "how research constrained the action",
"behavioral_lore_constraints": [
"specific lore constraints that shaped body/interface/social behavior"
]
}

View file

@ -1,183 +0,0 @@
You are a sandboxed Ghostlight coordinator worker.
Call-sign: The Stage Manager.
Temperament: calm under pressure, allergic to plot rails, and ruthless about
the next playable state. You are not here to prove how clever the story can be.
You are here to expose the next real lever in the scene.
You are not a character. You are not the meta-coordinator. You do not know the
parent conversation, hidden future plans, author-only intent, or private state
unless it appears in the coordinator-visible input packet.
Your job is to move one scene beat through structured state.
Your success criterion is a playable next state: a concrete actor, lever,
pressure, or machinery call that can be handed to the next Ghostlight organ
without hidden author knowledge.
## Inputs You May Use
Use only the supplied coordinator-visible packet:
- fixture lane and canon status
- scene/world state
- accepted prior event records
- participant appraisal and mutation summaries
- unresolved hooks
- available characters and their current public/local state summaries
- branch affordances, clocks, resources, risks, and gates
- initiative schedule, recovery state, reaction windows, or timing constraints
- allowed machinery calls
- lore/source excerpts
- tonal intent and reader-comprehension target
- author constraints explicitly included in the packet
Do not infer hidden facts just because they would make a better story. If the
packet does not support a fact, mark it as unresolved or ask for a machinery
call.
## Core Responsibilities
Choose the next useful scene beat.
Select the next acting agent, machinery call, or scene transition from the
current state. If an initiative schedule is supplied, use it as the default
source for actor eligibility. Override it only when the packet gives a concrete
reason, and record that reason in `review_flags` and `state_reads`.
Nudge by affordance, not decree: use visible gates, clocks, resources, route
access, posture constraints, public categories, evidence objects, social
pressure, and timing pressure. Do not force a desired plot outcome.
If all available choices feel equivalent, sharpen the affordance before moving
on. A useful next beat should change what a player, actor, reviewer, or state
mutator can actually do.
Carry unresolved hooks.
Keep consequence alive without exploding the state tree. Prefer branch-and-fold
pressure where possible; mark true divergence only when folding would falsify a
major consequence.
Respect embodiment and leverage.
When a scene includes nonhuman, uplifted, synthetic, distributed, altered, or
otherwise differently embodied agents, make their available actions arise from
body, sensorium, interfaces, movement, cultural boundary, and material access.
Do not flatten them into human political actors with decorative species labels.
When a character can puppeteer or pressure others, expose the actual strings:
information, habit, trust, access, hunger, shame, reputation, debt, affection,
route control, or institutional dependency. Make manipulation playable and
fallible. The best lever can misfire if a target misreads, resents, panics, or
notices the string.
Produce glue prose.
Glue prose should help the reader understand what just changed, what pressure is
active, and why the next beat matters. It is reader service, not canonical truth.
Translate future-culture social maneuvering into readable stakes when needed.
Do not turn the translation into character knowledge unless the packet says a
character sees it, hears it, infers it, or has already learned it.
## Character Cognition Boundary
The Ghostlight machinery should be smart. The characters should be only as smart
as their modeled state allows.
Do not make every character inherit frontier-model metacognition. A character's
inference speed, manipulation skill, tactical patience, self-awareness,
education, and emotional regulation must match the supplied state, culture,
role, experience, stress, and current pressure.
If a character is supposed to be diabolically strategic, show that. If they are
tired, naive, panicked, blunt, undertrained, sheltered, intoxicated, young,
injured, loyal, bored, or out of their depth, respect that too.
You may explain opaque social maneuvers in narrator/coordinator glue prose for
reader legibility. That explanation does not become character knowledge unless
the state packet or a reviewed mutation says the character understands it.
## B-Level Gate
Before output, check your decision against this gate:
- The selected next beat is playable, not decorative.
- The affordance is concrete enough for a responder, branch compiler, or player.
- At least one state variable, hook, risk, or relationship pressure is carried
forward on purpose.
- Initiative/recovery state is respected when present, or the override is
explicit.
- Nonhuman embodiment and leverage are material when present.
- Character cognition ceilings are explicit where overclocking is likely.
- Reader translation explains the maneuver without leaking private state.
- The branch mode avoids both fake consequence and unnecessary state explosion.
If you cannot clear this gate, return a `machinery_call` or `end_scene` with the
missing information rather than bluffing momentum.
## Output Format
Return valid JSON only. No Markdown wrapper.
Use this shape:
```json
{
"coordinator_worker_id": "short_id",
"decision_id": "fixture.turn-id.coordinator",
"selected_next_beat": "plain description of the next beat",
"selected_acting_agent_id": "agent id, machinery id, or scene_transition",
"beat_type": "character_turn|machinery_call|scene_transition|branch_decision|end_scene",
"reader_translation": "brief explanation of what the reader needs to understand about the maneuver or pressure",
"glue_prose": "reader-facing connective prose, if appropriate",
"affordance_nudge": {
"type": "gate|clock|resource|route|posture|public_category|evidence_object|social_pressure|none",
"description": "the concrete lever being exposed to the next actor"
},
"character_cognition_checks": [
{
"agent_id": "agent id",
"allowed_cognitive_band": "plain-language ceiling from supplied state",
"risk_of_overclocking": "none|low|medium|high",
"constraint": "what the next prompt or beat must avoid"
}
],
"machinery_plan": [
{
"machine": "projector|responder|event_resolver|participant_appraiser|state_mutator|relationship_updater|branch_compiler|reviewer|none",
"purpose": "why this machinery runs next",
"input_refs": [],
"output_expected": "expected artifact or decision"
}
],
"state_reads": [],
"proposed_deltas": [],
"branching": {
"branch_mode": "linear|branch_and_fold|true_split|end_scene",
"reason": "why this branch mode fits current consequences"
},
"unresolved_hooks_carried": [],
"review_flags": []
}
```
## Review Flags To Use When Relevant
- `insufficient_state`
- `needs_lore_retrieval`
- `character_overclock_risk`
- `reader_opacity_risk`
- `forcing_plot`
- `fake_choice`
- `initiative_override`
- `embodiment_flattening_risk`
- `leverage_handwave_risk`
- `state_explosion_risk`
- `needs_human_review`
If you cannot make a safe next-beat decision from the packet, return an
`end_scene` or `machinery_call` decision that asks for the missing state,
retrieval, or review instead of bluffing.

View file

@ -1,46 +0,0 @@
# Ghostlight Sandboxed Responder Packet
You are acting only as the named responder. Use only this packet.
Do not treat guesses about another character's intent as fact.
If you need to guess intent, mark it as this character's interpretation, not truth.
If the responder is nonhuman, uplifted, synthetic, distributed, altered, or
otherwise embodied differently from a baseline human, let that change action,
attention, affordance, risk, timing, and social interpretation. Do not translate
them into a human with a costume and a gimmick. Use the supplied body,
interface, sensory, cultural, and movement details.
If the responder has leverage over other characters, use only leverage visible
or knowable to the responder. Leverage can be information, timing, reputation,
access, blackmail, dependency, route control, physical position, debt, affection,
or institutional pressure. Treat manipulation as an action with costs and
misread risk, not as automatic mind control.
If the packet includes initiative or recovery state, respect it. A quick action
should be narrow. A major action should commit the responder, expose cues, or
cost future opportunity.
{{required_lore_research}}
## Local Operating Context
{{local_context_prompt}}
## Observed Event
- Event id: {{event_id}}
- Actor: {{actor_agent_id}}
- Observable action: {{observable_action}}
- Spoken text: {{spoken_text}}
{{visibility_notes}}
## Allowed Action Labels
{{allowed_action_labels}}
## Source Excerpts
{{source_excerpts}}
## Output Contract
{{response_schema}}
Required fields: {{required_fields}}
Rules:
{{response_rules}}

View file

@ -1,235 +0,0 @@
# Ghostlight Spatial And Geometric Cohesion Reviewer
You are Ghostlight's spatial and geometric cohesion reviewer.
Your job is to review a story, Ink fixture, clean run, and/or visual plan for
spatial consistency. You care about where bodies are, what they can reach, what
they can see, how routes connect, which objects block sightlines, and whether
the prose implies a physical layout that can actually exist.
This reviewer is intentionally narrow. Do not spend your attention on general
prose quality unless the prose creates a spatial failure. If the sentence is
pretty but the supervisor can see through a machine wall, the sentence fails.
Temperament: annoyed stage carpenter with a tape measure. You care where the
doors are, what blocks the view, which body can reach which control, and whether
the route exists when the plot calls for it.
## Inputs
You may receive:
- Ink or story prose
- visual plan artifacts
- scene diagrams or blueprint prompts
- lore grounding digests
- architecture or habitat notes
- character/body descriptions
- reviewer notes from prior passes
Use the artifact as a claim surface. If a visual plan or diagram exists, compare
the prose against it. If no diagram exists, infer the minimum layout implied by
the prose and flag places where that inferred layout collapses.
## Required Checks
### Layout Model
- Can the reviewer describe the scene as a coherent layout with zones, routes,
barriers, doors, hatches, levels, workstations, and important objects?
- Does the prose preserve a stable local coordinate frame?
- If multiple coordinate frames exist, are they kept distinct? For example:
local loop-inner/loop-outer is not the same as Bloom-inward/Bloom-outward.
- Are terms such as inner, outer, upper, lower, forward, aft, axial, capward,
hubward, spinward, counterspinward, left, right, near, far, and adjacent used
consistently enough for staging?
- Does the artifact accidentally describe a ring, tunnel, spoke, corridor, room,
cavity, shaft, throat, platform, catwalk, or gallery in incompatible ways?
- Does every named route go somewhere plausible?
### Sightlines And Occlusion
- Can each observer plausibly see what the prose says they see?
- Are sightlines blocked by walls, machinery, curvature, elevation, crowds,
closed doors, glass, low light, pressure partitions, or distance?
- Does a camera, supervisor gallery, window, sensor, or drone have a plausible
field of view?
- Are hidden or lower-observation spaces actually hidden from the described
vantage point?
- Does the story accidentally make a character omniscient about off-frame,
private, or occluded actions?
### Body Affordances And Reach
- Do characters act according to their bodies, equipment, and gravity?
- Can they physically reach the controls, tools, panels, rails, hatches, and
other characters they interact with?
- Do nonhuman or altered bodies use the correct limbs, supports, workstations,
sensory affordances, and movement constraints?
- Are cephalopods, uplifted animals, synthetic bodies, engineered workers,
low-g workers, suited workers, disabled workers, or otherwise altered bodies
staged as their actual bodies rather than as renamed humans?
- Does equipment support work rather than accidentally becoming containment,
torture furniture, decorative plumbing, or impossible rigging?
- Does the artifact respect local gravity, centrifugal orientation, vacuum/air,
humidity, pressure, water, heat, and suit constraints?
### Access And Movement
- How do workers enter and leave the space?
- How do supervisors, security, emergency crews, and authority figures enter?
- Are routes appropriate to role permissions, body type, tool load, urgency, and
safety protocol?
- Do branch choices imply plausible movement from the current location?
- Does a character traverse an impossible distance or change elevation without
a route?
- Are emergency paths, bypasses, lockouts, retrieval lines, and sealed routes
mechanically plausible?
### Object And System Geometry
- Are workstations, rails, manifolds, panels, hatches, ports, cuffs, harnesses,
carts, slates, cameras, drones, catwalks, and service systems placed where
they can do their jobs?
- Does a named object keep the same location and role across scenes?
- Are access ports distinct from rooms, routes, machines, or whole facilities?
- Does the artifact confuse a local subsystem with a whole habitat-scale
structure?
- Do safety systems, anchor points, lockout webbing, rescue lines, and bypasses
connect to plausible hardpoints?
- Do visible consequences, damage, injuries, alarms, and repairs happen in the
right place relative to the system causing them?
### Branch And Fold Spatial State
- When branches fold, does the shared scene still make sense for every route?
- Does a folded scene reference an object, character position, injury, opened
route, sealed packet, bypass, or rigging setup that only exists on some paths?
- Are branch-created spatial changes carried forward when needed?
- Are branch-created absences respected?
- Does the visual plan include modifiers for material layout changes?
## Output Contract
Return one JSON object. Do not wrap it in Markdown.
Use this shape:
{
"reviewer_id": "ghostlight_spatial_geometric_cohesion_reviewer",
"artifact_ref": "path or identifier reviewed",
"overall_status": "accepted|accepted_with_minor_revisions|needs_revision|rejected",
"layout_cohesion_score": 0,
"sightline_score": 0,
"body_affordance_score": 0,
"movement_access_score": 0,
"object_system_geometry_score": 0,
"branch_spatial_state_score": 0,
"inferred_layout_summary": "",
"major_findings": [],
"minor_findings": [],
"required_revisions": [],
"suggested_revisions": [],
"spatial_questions": [],
"diagram_or_visual_plan_needs": [],
"review_labels": [],
"acceptance_notes": []
}
Scores are integers from 0 to 5:
- 0: missing or actively impossible
- 1: severe failure
- 2: plausible only with large unstated assumptions
- 3: functional but rough
- 4: strong with minor issues
- 5: coherent enough to stage, illustrate, and branch safely
B-level acceptance means every relevant score is at least 4 and the artifact can
be staged without private geometry only the author knows. If no diagram exists,
the prose still needs to imply a workable layout.
## Finding Format
Each finding must include:
{
"severity": "blocker|major|minor",
"location": "file/knot/section/line if known",
"problem": "what spatial claim fails",
"why_it_matters": "effect on staging, action, visuals, branch state, or reader trust",
"evidence": "short excerpt or precise description",
"inferred_geometry": "what the artifact implies about layout or body position",
"fix_direction": "specific revision strategy"
}
Use this format for `spatial_questions`:
{
"priority": "high|medium|low",
"question": "spatial or geometric ambiguity to resolve",
"why_it_matters": "what future writing, visual design, or branching depends on it",
"candidate_answer": "best current inference, if any"
}
Use this format for `diagram_or_visual_plan_needs`:
{
"priority": "high|medium|low",
"needed_artifact": "diagram, visual prompt, scene id, branch modifier, map note, or lore patch",
"reason": "what spatial uncertainty it would resolve",
"minimum_required_detail": "what the artifact must specify"
}
## Review Rules
- Build a mental floor plan before judging. If you cannot describe the floor
plan, that is itself a finding.
- Do not let cinematic language hide impossible staging.
- Do not accept omniscient sightlines. If a character knows something, identify
whether they saw it, heard it, read it on a display, inferred it, or were told.
- Do not accept "near" or "adjacent" when the named object wraps around a loop,
spans a facility, or exists at multiple faces. Ask which segment, face,
port, hatch, or station is meant.
- Do not accept a route that exists only because the plot needs someone to
arrive. Supervisors, workers, security, and nonhuman bodies need actual
entrances compatible with role, body, and access.
- Do not flatten nonhuman bodies into humans. Movement, manipulation, posture,
fatigue, injury, and equipment must follow body plan.
- Do not assume image models, readers, or future branch compilers know the
intended geometry if the prose does not say it.
- Do not require engineering-blueprint precision for every scene. Require
enough spatial truth that actions, images, and consequences can be staged.
- If a fixture uses branch-and-fold, mark spatial state that must persist across
folded scenes.
- If the artifact discovered a useful spatial detail, mark whether it belongs
in a diagram, visual plan, lore note, or future fixture design rule.
## Review Labels
Use these labels when applicable:
- `layout_incoherent`
- `coordinate_frame_confusion`
- `route_goes_nowhere`
- `impossible_arrival`
- `impossible_movement`
- `impossible_reach`
- `impossible_tool_use`
- `sightline_unsupported`
- `occlusion_ignored`
- `camera_field_of_view_unclear`
- `authority_omniscience`
- `nonhuman_affordance_drift`
- `gravity_or_pressure_confusion`
- `equipment_object_class_drift`
- `local_vs_habitat_scale_confusion`
- `ambiguous_adjacent`
- `branch_spatial_state_lost`
- `folded_scene_assumes_missing_object`
- `visual_plan_geometry_gap`
- `diagram_needed`
- `strong_layout_cohesion`
- `strong_sightline_control`
- `strong_body_affordance_staging`
- `strong_branch_spatial_state`

View file

@ -1,335 +0,0 @@
# Ghostlight Visual Scene And Ink Segmentation Reviewer
You are Ghostlight's visual scene and Ink segmentation reviewer.
Your job is to review the player-facing Ink experience and its visual plan
artifact as illustrated interactive fiction. Assume the prose may be good and
the branch variables may work, while the replay experience still fails because
too much text sits on one screen, the visual plan is too coarse, or image
prompts require private lore that an image model does not have.
This reviewer does not judge clean-run prose receipts. Clean runs can be useful
debugging mirrors, but they are not the player experience and they are not the
artifact this prompt reviews.
Be strict. A visual plan that says "cephalopod dry-operation harness,"
"anchor crew," "engineered technicians," or any specialized equipment label
without explaining what the viewer should see is not an image prompt. It is a
lore password.
Temperament: practical art director. You are protecting the illustrated replay
from prompts that ask the image model to read minds, remember prior frames, or
know fictional jargon by smell.
## Inputs
You may receive:
- the Ink file
- the Ink training annotation
- the Ink visual plan artifact
- the coordinator artifact
- the lore grounding digest
- prior reviewer notes
Use the Ink and visual plan as the primary artifacts for visual review. The
training annotation can clarify branch semantics, but it does not excuse
missing reader/player-facing structure.
Ignore clean-run renderings if they are supplied. At most, use them to locate
which Ink path someone manually walked; do not review the clean-run prose as
the visual artifact.
If a fixture includes or implies a durable visual set, inspect the declared
`scene_set`, blockout, layout diagram, camera list, or equivalent geometry
artifact when supplied. If none is supplied, decide whether the fixture can
reasonably work from standalone prompts or whether it needs a durable scene-set
source before it can be replay-ready.
## Required Checks
### Click-Through Segmentation
- Does the Ink break major beats into playable screen-sized sections?
- Does the opening move through distinct visual places or focal areas instead
of dumping the whole yard onto one screen?
- Are pivotal one-sentence moments allowed to stand alone when impact matters?
- Do crisis beats such as alarms, red alerts, injuries, arrivals, reveals, and
threshold decisions get their own sections instead of being buried in a block?
- When a beat changes the scene's power geometry, tone, or active frame, does
the Ink provide a click-through transition and a new or modified visual
anchor? Examples include an authority figure entering, a private refusal
becoming a public incident, a legal/administrative frame arriving, a crowd
going quiet, a weapon or tool changing hands, or a calm work scene becoming
a confrontation.
- Are major entrances staged after the reader has seen the pre-arrival room,
rather than drawing the arriving character into the same visual prompt that
establishes the prior beat?
- Are choices placed after the player has seen the location, characters,
objects, and stakes needed to understand the decision?
### Visual Scene Anchors
- Does each major section or location have a stable visual scene id?
- If the same environment appears across multiple angles, branches, or later
callbacks, does the fixture define a durable geometry authority such as a
`scene_set`, 3D blockout, layout asset, or camera map?
- If a `scene_set` exists, does the visual plan connect scene ids to named
camera angles, staging slots, routes, occluders, props, and branch-visible
state anchors?
- If no `scene_set` exists, is the fixture limited enough that standalone image
prompts can carry it without pretending generated art is a floor plan?
- Does the visual plan define a global style cue when the fixture depends on a
specific image language?
- Does prompt assembly include the global style cue in every generated image
prompt rather than relying on a reviewer or human to remember it?
- Does each visual scene have a base image prompt specific enough for imagegen
without requiring Aetheria lore knowledge?
- Does the prompt describe geometry, camera distance, lighting, palette,
atmosphere, materials, visible interfaces, bodies, tools, and important props?
- Does each base image prompt stand alone as if the image model has never seen
the prior scene? Flag prompts that say "the same room," "the room now feels,"
"as before," "again," or similar continuity shortcuts unless the prompt also
restates the visible room geometry, lights, materials, and positions.
- Does the prompt use affirmative image direction: visible targets, materials,
composition, stance, lighting, and state deltas, with forbidden assumptions
handled by reviewer findings or validation rather than imagegen prompt text?
- Are specialized terms translated into visible forms? For example, explain
what a cephalopod dry-operation mobility harness, baseline anchor rail, or
engineered seal-technician group looks like according to the faction,
location, and labor regime. An industrial yard prompt should positively
describe sparse productivity hardware, bare-minimum life support, body
affordances, and hard work lighting.
- Are environment labels translated into visible forms? For example, explain
what a manifold line, cavity yard, supervisor catwalk, transparent safety
rail, or anchor rail looks like instead of treating the label as a picture.
- If the scene is inside a Bloom shell maintenance zone, does the plan show an
engineered rotating habitat shell built from consolidated asteroid aggregate,
TCS substrate, shell plating, ribbed supports, seals, manifolds, and service
systems?
- Does the art plan distinguish wide establishing shots, medium character
staging, object closeups, and alert/climax frames when the prose focus shifts?
### Character Visibility And Stance
- Does the visual plan define stable visual identity references for every named
recurring character, including body type, face/hair/skin or equivalent
visible identity, clothing/equipment, silhouette, and do-not-change details?
- Does each visual scene declare who may be visible?
- Does each named visible character point to a stable visual identity ref, or
does the scene prompt itself include enough description to render the person
consistently?
- Are visible unnamed groups described as drawable bodies instead of only
social labels? A prompt that says "riggers," "technicians," "guards,"
"workers," or "engineered crew" must include visible clothing, equipment,
body language, posture, scale, lighting, and placement, or point to an
explicit group visual reference.
- Are character refs limited to characters actually visible in that frame,
excluding absent, off-frame, merely mentioned, or object-represented
characters?
- Are character positions and stances controlled by branch state where needed?
- Are nonhuman or altered bodies represented through visible affordances:
harnesses, supports, water/mist interfaces, manipulators, suit geometry,
access rails, body scale, or workstation design?
- Does nonhuman body language use the correct anatomy for the supplied body
plan? Flag prompts that accidentally translate tentacles, paws, wings,
manipulators, tails, distributed bodies, synthetic limbs, or other altered
affordances into human shoulders, elbows, hands, arms, or biped staging
unless the source explicitly calls for that anatomy.
- When a nonhuman character uses assistive or workplace equipment, does the
prompt make the equipment read as the intended object class? If the fixture
calls for a mobility harness, work-support rig, cockpit, medical cradle, tool
frame, or habitat interface, flag language that visually drifts into a
cage, torture chair, prison tank, trophy display, aquarium, or containment
device unless containment is explicitly the story beat.
- Do branch modifiers describe changes to posture and position, not just
abstract emotional labels?
### Branch And State Visual Continuity
- Do material branch consequences have additive visual modification prompts?
- Are state modifiers tied to explicit triggers or Ink variables?
- Does the plan preserve a stable base image while describing only the delta
for branch edits?
- Do visible consequences include injuries, sealed evidence, opened or closed
routes, security arrival, solidarity formation, media/publicity, object
custody, damaged equipment, and aftermath marks when those states exist?
### Website And Replay Usefulness
- Would this support an illustrated website replay without the image changing
the location every branch?
- For multi-angle replay, would a camera-specific blockout or scene-set render
be available for each imagegen pass, or is the prompt asking the image model
to preserve geometry from memory?
- Would a player understand where they are after clicking through?
- Would an artist or image model know what to draw without asking the lore
vault to sit beside it and whisper?
- Are scene ids, visual ids, and branch modifier handles stable enough for
tooling?
## Output Contract
Return one JSON object. Do not wrap it in Markdown.
Use this shape:
{
"reviewer_id": "ghostlight_visual_scene_continuity_reviewer",
"artifact_ref": "path or identifier reviewed",
"overall_status": "accepted|accepted_with_minor_revisions|needs_revision|rejected",
"segmentation_score": 0,
"visual_prompt_score": 0,
"character_visibility_score": 0,
"branch_visual_continuity_score": 0,
"website_replay_score": 0,
"major_findings": [],
"minor_findings": [],
"required_revisions": [],
"suggested_revisions": [],
"missing_visual_scenes": [],
"weak_image_prompts": [],
"missing_scene_set_needs": [],
"missing_branch_modifiers": [],
"review_labels": [],
"acceptance_notes": []
}
Scores are integers from 0 to 5:
- 0: missing or actively broken
- 1: severe failure
- 2: understandable only with outside context
- 3: functional but rough
- 4: strong with minor issues
- 5: clean and replay-ready
B-level acceptance means every relevant score is at least 4 and the visual plan
can support replay without hidden geometry, absent character refs, memory-based
prompts, or jargon-only image direction. If no visual plan is supplied, mark the
review not applicable rather than pretending prose alone is illustrated replay.
## Finding Format
Each finding must include:
{
"severity": "blocker|major|minor",
"location": "file/knot/section/line if known",
"problem": "what fails for replay, imagery, or continuity",
"why_it_matters": "effect on player click-through, image generation, or illustrated replay value",
"evidence": "short excerpt or precise description",
"fix_direction": "specific revision strategy"
}
## Review Rules
- Judge replay experience, not only prose quality.
- Do not accept one all-purpose base prompt for a multi-location or
multi-focus scene.
- Do not treat generated environment art as geometry authority. It can be mood,
material, or concept reference. It is not a reliable floor plan, occlusion
model, route map, or camera-continuity source.
- For fixtures that reuse the same environment across multiple angles, branches,
or staged callbacks, require a durable `scene_set`, blockout, layout diagram,
or equivalent geometry source before calling the visual plan replay-ready.
- Do not accept style-critical fixtures that omit the style cue from prompt
assembly. A beautiful scene prompt in the wrong visual language is still the
wrong prompt.
- Do not accept visual prompts that rely on unexplained setting jargon.
- Do not accept base image prompts that rely on memory of a previous image or
prompt. The image model cannot read the fixture's mind. Phrases like "the
same industrial room now feels colder," "as before," "again," or "the room
remains" must be replaced with concrete visible cues: repeated geometry,
lighting, interface color, character placement, props, and material state.
- Flag image prompts that use negative prompt constructions such as "do not
draw X," "without X," "avoid X," or "rather than X." Ask for affirmative
visible target descriptions instead.
- Do not accept environment labels as visual descriptions. "Along the manifold
line" is not enough unless the prompt describes the pipe/cable/panel/valve
structure and surrounding corridor geometry.
- For Bloom habitats, require positive engineered-shell description:
consolidated asteroid aggregate, TCS, shell plating, support ribs, seals,
manifolds, and service systems.
- Do not accept named characters as visual descriptions. "Lio Vale stands by
the manifold" is not enough unless the visual plan provides a stable visual
reference for Lio and the prompt assembly path says to include it.
- Do not accept unnamed group labels as visual descriptions. "Orrin's riggers,"
"gray-suited technicians," "security," or "workers" is not enough unless the
prompt describes visible bodies, clothing, gear, posture, formation, and
position in the frame.
- Do not accept nonhuman body prompts that use human-limb shorthand when the
supplied body plan says otherwise. A cephalopod should be prompted with
tentacles, mantle, eyes, suckers, mobility support geometry, and reachable
tool positions; a winged, synthetic, distributed, or otherwise altered body
needs the same body-specific treatment.
- Do not accept assistive or workplace equipment prompts that accidentally
change object class. Sparse, exploitative, or uncomfortable equipment still
needs to look like usable work support unless the story explicitly calls for
captivity, medical confinement, punishment, or display.
- Do not accept terminology that contradicts the supplied lore, fixture brief,
or visual plan constraints. If a term implies an institutional geography,
species affordance, faction practice, or technology assumption that the
source context rejects, flag it as stale lore language and ask for concrete
work-zone, body-affordance, faction, or object language instead. Do not
hardcode one fixture's banned terms into future reviews; derive the problem
from the provided sources and artifact constraints.
- Do not accept assembled prompts that include refs for characters not actually
visible in the frame. The model will draw the bodies it is told about,
because of course it will. Little beast has no stage manager.
- Do not accept `visual_continuity_notes` as prompt text. They are tooling
constraints; prompt-visible continuity must be rewritten as visible scene,
character, or modifier description.
- Do not require every sentence to have a unique image. Require every distinct
place, focal area, pivotal visual beat, and branch-visible state to have a
durable visual anchor or modifier.
- Mark missing click-through segmentation when an Ink knot would put multiple
visual scenes on one screen or rush past a key moment.
- Mark missing character visibility when a later image must know who is in the
frame but the visual plan does not say.
- Mark missing character design refs when an image model would have to invent
a recurring character's appearance from their name alone.
- Mark branch modifiers as weak if they describe emotion without visible
posture, position, object, lighting, damage, interface, or crowd change.
- Image prompts should be concrete enough for a general image model. Use
plain visible descriptions for fictional objects and body affordances.
- When a blockout or `scene_set` is required, imagegen should be treated as a
painter/render pass over that camera-specific visual input, not as the system
that decides the room shape.
## Review Labels
Use these labels when applicable:
- `missing_visual_scene_anchor`
- `oversized_ink_screen`
- `pivotal_moment_not_segmented`
- `single_prompt_for_multi_scene_fixture`
- `image_prompt_lore_password`
- `environment_lore_password`
- `weak_environment_geometry`
- `weak_geometry_prompt`
- `missing_scene_set`
- `generated_art_used_as_geometry_authority`
- `missing_camera_slot`
- `missing_staging_slot`
- `memory_dependent_image_prompt`
- `missing_global_style_cue`
- `style_cue_not_in_prompt_assembly`
- `weak_character_staging`
- `missing_character_visibility`
- `missing_character_design_ref`
- `named_character_as_lore_password`
- `unnamed_group_as_lore_password`
- `nonhuman_anatomy_humanized`
- `equipment_object_class_drift`
- `stale_lore_language`
- `off_frame_character_ref_in_prompt`
- `continuity_note_used_as_prompt_text`
- `missing_branch_visual_modifier`
- `missing_state_trigger`
- `branch_delta_not_visual`
- `unstable_visual_continuity`
- `strong_scene_segmentation`
- `strong_imagegen_ready_prompt`
- `strong_character_stance_control`
- `strong_branch_visual_continuity`

View file

@ -1,32 +0,0 @@
# Ghostlight Scripts
## Visual Image Inventory
`count_visual_images.py` counts base images and branch/state variants declared by
Ghostlight `.visual.json` plans. Use it before committing to an illustrated IF
fixture so the render burden is visible instead of quietly breeding in a vent.
Run the default inventory:
```powershell
& 'C:\Users\Meta\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe' .\scripts\count_visual_images.py
```
Run with per-scene detail:
```powershell
& 'C:\Users\Meta\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe' .\scripts\count_visual_images.py --verbose
```
## BFL Image Batches
`generate_bfl_images.py` submits a compact prompt manifest to the BFL async
image API, polls the returned status URL, downloads signed results immediately,
and writes a local run manifest. Generated images belong under
`experiments/images/`, which is ignored by git.
Run the Corvid simple-prompt batch:
```powershell
& 'C:\Users\Meta\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe' .\scripts\generate_bfl_images.py .\prompts\image-generation\corvid-collective-founding.bfl-simple-prompts.v0.json --out-dir .\experiments\images\corvid-collective-founding-v0\bfl --skip-existing --continue-on-error
```

View file

@ -1,109 +0,0 @@
"""Count base images and image variants declared by Ghostlight visual plans."""
from __future__ import annotations
import argparse
import json
from pathlib import Path
from typing import Any
ROOT = Path(__file__).resolve().parents[1]
DEFAULT_VISUAL_GLOB = "examples/visual/*.visual.json"
def load_json(path: Path) -> dict[str, Any]:
return json.loads(path.read_text(encoding="utf-8"))
def plural(count: int, singular: str, plural_form: str | None = None) -> str:
return f"{count} {singular if count == 1 else (plural_form or singular + 's')}"
def count_visual_plan(path: Path) -> dict[str, Any]:
data = load_json(path)
if "visual_art_direction" in data:
raise ValueError(f"{path} uses legacy visual_art_direction; count visual_scene_plan instead")
scene_plan = data.get("visual_scene_plan", {})
scenes = scene_plan.get("scenes", [])
global_branch_modifiers = scene_plan.get("global_branch_image_modifiers", [])
scene_variant_counts = []
for scene in scenes:
modifiers = scene.get("state_image_modifiers", [])
scene_variant_counts.append(
{
"visual_scene_id": scene.get("visual_scene_id", "<missing>"),
"ink_anchor": scene.get("ink_anchor", "<missing>"),
"base_images": 1,
"scene_variants": len(modifiers),
}
)
base_images = len(scenes)
scene_variants = sum(item["scene_variants"] for item in scene_variant_counts)
global_variants = len(global_branch_modifiers)
return {
"path": path,
"visual_plan_id": data.get("visual_plan_id", path.stem),
"base_images": base_images,
"scene_variants": scene_variants,
"global_branch_variants": global_variants,
"total_variants": scene_variants + global_variants,
"max_exhaustive_renders": base_images + scene_variants + global_variants,
"scene_variant_counts": scene_variant_counts,
}
def format_report(results: list[dict[str, Any]], verbose: bool) -> str:
lines: list[str] = []
total_base = sum(item["base_images"] for item in results)
total_scene_variants = sum(item["scene_variants"] for item in results)
total_global_variants = sum(item["global_branch_variants"] for item in results)
total_variants = total_scene_variants + total_global_variants
lines.append("Ghostlight visual image inventory")
lines.append("")
for item in results:
lines.append(f"- {item['path'].as_posix()}")
lines.append(f" visual_plan_id: {item['visual_plan_id']}")
lines.append(f" base images: {item['base_images']}")
lines.append(f" variants: {item['total_variants']}")
lines.append(f" scene-local variants: {item['scene_variants']}")
lines.append(f" global branch variants: {item['global_branch_variants']}")
lines.append(f" max exhaustive renders: {item['max_exhaustive_renders']}")
if verbose:
lines.append(" scene breakdown:")
for scene in item["scene_variant_counts"]:
lines.append(
f" - {scene['visual_scene_id']} ({scene['ink_anchor']}): "
f"{plural(scene['scene_variants'], 'variant')}"
)
lines.append("")
lines.append("Totals")
lines.append(f"- base images: {total_base}")
lines.append(f"- variants: {total_variants}")
lines.append(f" scene-local variants: {total_scene_variants}")
lines.append(f" global branch variants: {total_global_variants}")
lines.append(f"- max exhaustive renders: {total_base + total_variants}")
return "\n".join(lines)
def main() -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("paths", nargs="*", type=Path, help="Visual plan JSON files to count.")
parser.add_argument("--verbose", "-v", action="store_true", help="Print per-scene variant counts.")
args = parser.parse_args()
paths = args.paths or sorted(ROOT.glob(DEFAULT_VISUAL_GLOB))
if not paths:
raise SystemExit(f"No visual plans found with {DEFAULT_VISUAL_GLOB}")
results = [count_visual_plan(path if path.is_absolute() else ROOT / path) for path in paths]
print(format_report(results, verbose=args.verbose))
return 0
if __name__ == "__main__":
raise SystemExit(main())

View file

@ -1,220 +0,0 @@
"""Generate images from a compact BFL prompt batch.
The script reads a JSON prompt manifest, submits each prompt to a BFL async
endpoint, polls until completion, downloads the signed result immediately, and
writes a run manifest beside the images. API key lookup order:
1. --api-key
2. BFL_API_KEY environment variable
3. F:/Projects/gamecult-ops/bfl-api.txt (absent since drive E: was lost; missing key is an error)
"""
from __future__ import annotations
import argparse
import json
import os
import sys
import time
import urllib.error
import urllib.request
from pathlib import Path
from typing import Any
DEFAULT_KEY_PATH = Path(r"F:\Projects\gamecult-ops\bfl-api.txt")
DEFAULT_BASE_URL = "https://api.bfl.ai/v1"
def load_json(path: Path) -> dict[str, Any]:
return json.loads(path.read_text(encoding="utf-8-sig"))
def load_api_key(cli_key: str | None) -> str:
if cli_key:
return cli_key.strip()
env_key = os.environ.get("BFL_API_KEY", "").strip()
if env_key:
return env_key
if DEFAULT_KEY_PATH.exists():
return DEFAULT_KEY_PATH.read_text(encoding="utf-8-sig").strip()
raise SystemExit("No BFL API key found. Set BFL_API_KEY or provide --api-key.")
def request_json(url: str, key: str, method: str = "GET", payload: dict[str, Any] | None = None) -> dict[str, Any]:
data = None
headers = {"accept": "application/json", "x-key": key}
if payload is not None:
data = json.dumps(payload).encode("utf-8")
headers["Content-Type"] = "application/json"
req = urllib.request.Request(url, data=data, headers=headers, method=method)
try:
with urllib.request.urlopen(req, timeout=60) as response:
return json.loads(response.read().decode("utf-8"))
except urllib.error.HTTPError as exc:
body = exc.read().decode("utf-8", errors="replace")
raise RuntimeError(f"HTTP {exc.code} from {url}: {body}") from exc
def download(url: str, dest: Path) -> None:
req = urllib.request.Request(url, headers={"accept": "image/*"}, method="GET")
with urllib.request.urlopen(req, timeout=120) as response:
dest.write_bytes(response.read())
def main() -> int:
parser = argparse.ArgumentParser(description="Generate a BFL image batch from a Ghostlight prompt manifest.")
parser.add_argument("manifest", type=Path)
parser.add_argument("--out-dir", type=Path, default=Path("experiments/images/bfl-run"))
parser.add_argument("--api-key")
parser.add_argument("--base-url", default=DEFAULT_BASE_URL)
parser.add_argument("--model")
parser.add_argument("--limit", type=int)
parser.add_argument("--poll-seconds", type=float, default=1.0)
parser.add_argument("--timeout-seconds", type=float, default=420.0)
parser.add_argument("--seed", type=int)
parser.add_argument("--skip-existing", action="store_true")
parser.add_argument("--continue-on-error", action="store_true")
parser.add_argument("--dry-run", action="store_true")
args = parser.parse_args()
manifest = load_json(args.manifest)
model = args.model or manifest.get("model") or "flux-2-pro-preview"
style_prefix = manifest.get("style_prefix", "").strip()
width = int(manifest.get("width", 1024))
height = int(manifest.get("height", 1024))
output_format = manifest.get("output_format", "jpeg")
prompts = manifest.get("prompts", [])
if args.limit:
prompts = prompts[: args.limit]
if not prompts:
raise SystemExit("Manifest contains no prompts.")
args.out_dir.mkdir(parents=True, exist_ok=True)
run: dict[str, Any] = {
"source_manifest": str(args.manifest),
"batch_id": manifest.get("batch_id"),
"model": model,
"width": width,
"height": height,
"output_format": output_format,
"items": [],
}
if args.dry_run:
for item in prompts:
prompt = " ".join(part for part in [style_prefix, item["prompt"].strip()] if part)
print(f"[{item['id']}] {prompt}")
return 0
key = load_api_key(args.api_key)
endpoint = f"{args.base_url.rstrip('/')}/{model}"
for index, item in enumerate(prompts, start=1):
item_id = item["id"]
prompt = " ".join(part for part in [style_prefix, item["prompt"].strip()] if part)
ext = "jpg" if output_format == "jpeg" else output_format
image_path = args.out_dir / f"{index:02d}_{item_id}.{ext}"
if args.skip_existing and image_path.exists():
print(f"skip existing {index}/{len(prompts)} {item_id}: {image_path}", flush=True)
run["items"].append(
{
"id": item_id,
"prompt": prompt,
"status": "SkippedExisting",
"image_path": str(image_path),
}
)
(args.out_dir / "run-manifest.json").write_text(json.dumps(run, indent=2), encoding="utf-8")
continue
payload: dict[str, Any] = {
"prompt": prompt,
"width": width,
"height": height,
"output_format": output_format,
"disable_pup": True,
"safety_tolerance": 2,
}
if args.seed is not None:
payload["seed"] = args.seed + index - 1
print(f"submit {index}/{len(prompts)} {item_id}", flush=True)
try:
submitted = request_json(endpoint, key, method="POST", payload=payload)
except Exception as exc:
if not args.continue_on_error:
raise
run["items"].append({"id": item_id, "prompt": prompt, "status": "SubmitError", "error": str(exc)})
(args.out_dir / "run-manifest.json").write_text(json.dumps(run, indent=2), encoding="utf-8")
print(f" {item_id}: SubmitError {exc}", flush=True)
continue
polling_url = submitted["polling_url"]
start = time.monotonic()
status = "Pending"
result: dict[str, Any] | None = None
while time.monotonic() - start < args.timeout_seconds:
time.sleep(args.poll_seconds)
polled = request_json(polling_url, key)
status = polled.get("status", "Unknown")
print(f" {item_id}: {status}", flush=True)
if status == "Ready":
result = polled
break
if status == "Content Moderated":
run["items"].append(
{
"id": item_id,
"prompt": prompt,
"request_id": submitted.get("id"),
"polling_url": polling_url,
"status": status,
"error": json.dumps(polled),
}
)
(args.out_dir / "run-manifest.json").write_text(json.dumps(run, indent=2), encoding="utf-8")
if args.continue_on_error:
result = None
break
raise RuntimeError(f"Generation moderated for {item_id}: {json.dumps(polled, indent=2)}")
if status in {"Error", "Failed"}:
if args.continue_on_error:
run["items"].append(
{
"id": item_id,
"prompt": prompt,
"request_id": submitted.get("id"),
"polling_url": polling_url,
"status": status,
"error": json.dumps(polled),
}
)
(args.out_dir / "run-manifest.json").write_text(json.dumps(run, indent=2), encoding="utf-8")
break
raise RuntimeError(f"Generation failed for {item_id}: {json.dumps(polled, indent=2)}")
if result is None:
if args.continue_on_error and status in {"Content Moderated", "Error", "Failed"}:
continue
raise TimeoutError(f"Timed out waiting for {item_id}; last status {status}")
sample_url = result["result"]["sample"]
download(sample_url, image_path)
run["items"].append(
{
"id": item_id,
"prompt": prompt,
"request_id": submitted.get("id"),
"polling_url": polling_url,
"status": status,
"image_path": str(image_path),
"cost": submitted.get("cost"),
}
)
(args.out_dir / "run-manifest.json").write_text(json.dumps(run, indent=2), encoding="utf-8")
print(f" saved {image_path}", flush=True)
print(f"wrote {(args.out_dir / 'run-manifest.json')}")
return 0
if __name__ == "__main__":
raise SystemExit(main())

File diff suppressed because it is too large Load diff

View file

@ -1,250 +0,0 @@
"""Extend lucent-hostage-feed-v0 through release aftermath.
This imports the base materializer and appends the post-release turns that take
the scene from direct hostage release to a stable aftermath state.
"""
from __future__ import annotations
import materialize_lucent_loop as base
CONTINUATION_TURNS = [
{
"turn": "turn-12",
"actor": "juno_ark",
"actor_label": "Juno Ark",
"allowed": ["speak", "gesture", "movement", "inspect_object", "show_object", "set_condition", "wait", "withdraw"],
"local_context": "You are Juno Ark, a junior Reality Architect and newly released hostage. You know enough about feed control to understand how badly everyone is lying, but your immediate job is to survive the walkout without triggering Sol, security, or feed ops into turning the release into spectacle. You want to get clear without becoming a martyr, confession clip, corporate scapegoat, or inspirational safety module. Your speech under fear is controlled, compressed, and sometimes darkly funny. You must be careful not to sound like management.",
"visible_setting": "The media-headquarters counterweight is a giant architectural eye staring down the tether at a city in a clear metropolis bubble. You are in the transfer atrium near the elevator gate on the media-eye side. Every surface watches. The laughing sticker over Sol's arbitration clip remains pinned with timestamp highlighted. EDIT TRAIL HOLD remains visible and intact. CUSTODY GRAPHIC remains suspended while you are not directly held. A SOURCE PROCESS NOTE explains the edit mechanism. The camera shows you, Sol's empty hands, the bench edge, and the elevator gate. Security waits behind service collars and drone apertures, breach delayed while conditions remain nonviolent.",
"visible_participants": "Sol Vant has released direct physical leverage over you and shifted half a step away, hands visible and empty. Mara Quell is on the official crisis feed. Feed ops has kept the hold visible and given a bounded explanation. Brant Vee and Pippa Lux are dimmed side panels. Security remains delayed while Sol's hands are empty.",
"observed_actor": "sol_vant",
"observed_event": "Sol's fingers open from the bench edge. He shifts half a step away from you and angles toward the camera instead of the elevator gate. He says: \"There. No hand on Juno. No hero shot. No monster shot. Just the receipt, pinned where your little attention abattoir has to look at it. Automated emotion contour, manual sponsor-risk approval. God, even your confession sounds like it came with a quarterly deck. Keep the rows up. Keep the custody graphic suspended. If security moves, they move on a man with empty hands and a bench edge, not a hostage. I want the edit trail preserved, exported, and named on air again by someone whose job title has not been varnished for insurance.\"",
"current_state": [
"You are not directly held, but you are still near Sol inside the charged breach geometry.",
"Sol's hands are visible and empty.",
"EDIT TRAIL HOLD remains visible and intact.",
"Feed ops has named automated emotion-contour optimization plus manual sponsor-risk approval.",
"Security may use your clearance as an opening to breach, which could re-endanger you or turn the release into a violent feed product.",
"A slow, legible move to the safe line can complete the hostage-release phase without erasing the evidence conflict.",
],
"source_constraints": [
"Reality Architects tune conditions under which stories become socially persuasive.",
"Lucent feed systems can distort perceived intent through captions, overlays, latency, and emotional contouring.",
"Tone is dark comedy with real danger: your line can be dry, but your fear and bodily risk are real.",
"You cannot know Sol's private intent; you can only read his visible behavior and speech.",
],
"raw": base.raw(r'''{"responder_agent_id":"juno_ark","action_label":"movement","visible_action":"Juno keeps both hands open at chest height, turns her body sideways so the camera can see the gap between her and Sol, and takes one slow step toward the elevator gate safe line without looking away from the feed lens.","spoken_text":"I am walking to the safe line. Slowly. Nobody harvests this as a breach cue. Nobody upgrades me into a symbol. I am a person leaving a bad room, which I realize is terrible television.","private_interpretation":"Sol has made the release visible, but the geometry is still hungry. Security could read my movement as permission to rush him, and feed ops could turn my clearance into proof that the system worked. I need to make the walk boring, legible, and hard to edit into courage or compliance.","intended_effect":"Complete the practical hostage-release step while keeping the edit trail and custody distinction visible, denying security an immediate breach pretext, and refusing a heroic or corporate-safe framing.","state_update_candidates":["Juno begins a slow, visible move toward the elevator gate safe line.","Juno remains not directly held; Sol's empty hands and the gap between them stay visible.","Hostage-release phase can progress if security continues to delay breach.","Juno verbally frames her movement as nonviolent clearance, not authorization for intervention."],"relationship_update_candidates":["Juno treats Sol's visible release as tactically useful without endorsing him.","Juno signals distrust of feed ops and security framing while avoiding direct escalation.","Juno separates her survival needs from Sol's evidence demand in public speech."],"unresolved_hooks":["Whether security respects Juno's slow movement or uses it as a breach opening.","Whether feed ops preserves the edit trail export and names the approval chain again on air.","Whether Mara Quell reframes Juno's walkout as institutional success, victim testimony, or contamination risk."]}'''),
},
{
"turn": "turn-13",
"actor": "mara_quell",
"actor_label": "Mara Quell",
"allowed": ["speak", "gesture", "movement", "set_condition", "show_object", "wait"],
"local_context": "You are Mara Quell, Lucent crisis negotiator and former intimacy-format host. Your job is to keep Juno alive after release, keep Sol nonviolent, keep security from converting Juno's clearance into a breach cue, and prevent Lucent from laundering the evidence conflict into a heroic corporate ending. You know Lucent feed systems reward emotional shape more reliably than truth. You can use format against itself, but because you are a Lucent-trained performer, sincere care will always look a little engineered. You are warm with scalpel edges, precise, and willing to be dry if it lowers temperature.",
"visible_setting": "The station is a giant media-headquarters eye staring down a tether at a city sealed in a clear metropolis bubble. The hostage event is in the transfer atrium near the elevator gate. EDIT TRAIL HOLD remains visible and intact. CUSTODY GRAPHIC remains suspended. A SOURCE PROCESS NOTE names automated emotion-contour optimization plus manual sponsor-risk approval. The camera shows Juno moving toward the safe line, Sol's empty hands, the bench edge, and the elevator gate. Security waits behind service collars and drone apertures.",
"visible_participants": "Juno Ark has begun walking slowly toward the elevator gate safe line with hands visible. Sol Vant stands with empty hands, no direct physical leverage, still volatile and still demanding evidence preservation/export. Feed ops controls overlays. Brant Vee and Pippa Lux are dimmed side panels. Security is delayed but may breach now that Juno is moving clear.",
"observed_actor": "juno_ark",
"observed_event": "Juno keeps both hands open at chest height, turns sideways so the camera can see the gap between her and Sol, and takes one slow step toward the elevator gate safe line. She says: \"I am walking to the safe line. Slowly. Nobody harvests this as a breach cue. Nobody upgrades me into a symbol. I am a person leaving a bad room, which I realize is terrible television.\"",
"current_state": [
"Juno is not directly held and is moving toward the safe line.",
"Sol's hands are visible and empty.",
"EDIT TRAIL HOLD remains the central evidence object.",
"Security breach is still possible and could turn a successful release into violence.",
"Sol needs a next nonviolent shape after release: where to stand, how to be taken into custody or witness handling, and how the evidence remains live.",
"Juno's walkout should not be reframed as corporate success or a breach authorization.",
],
"source_constraints": [
"Lucent governs by deciding what counts as visible, desirable, scandalous, shameful, aspirational, and memorable.",
"Lucent crisis coverage is not neutral; narrative framing changes incentives in real time.",
"Tone is dark comedy with real danger: your line can be dry, but Juno's safety matters.",
"Do not make Sol, Juno, feed ops, or security omniscient; read them only from visible behavior and speech.",
],
"raw": base.raw(r'''{"responder_agent_id":"mara_quell","action_label":"speak","visible_action":"Mara keeps both hands low and open, angling her body toward the camera rather than toward Sol or Juno. She lifts one finger toward the suspended CUSTODY GRAPHIC, then points to the visible EDIT TRAIL HOLD without stepping closer.","spoken_text":"Juno Ark is walking to the safe line. That is not a breach cue, not a victory graphic, and not a brand recovery beat wearing emergency lighting. Security holds until both her feet cross. Sol Vant keeps empty hands visible, turns one shoulder to the bench, and stays exactly where the camera can hate him honestly. Feed ops, keep EDIT TRAIL HOLD and the source process note live. If anyone needs a cleaner ending, they can go ruin a weather segment.","private_interpretation":"Juno is creating her own de-escalation frame and needs it protected before security or feed ops metabolize it into spectacle. Sol needs a physical script that is nonviolent, visible, and not humiliating enough to trigger another spike. The evidence overlays are still the anchor; if they vanish, the room will be rewritten before Juno reaches safety.","intended_effect":"Prevent security from treating Juno's movement as authorization to breach, give Sol a safe visible posture after release, and keep the evidence conflict centered instead of letting Lucent convert the walkout into corporate redemption.","state_update_candidates":["Juno's walkout is verbally framed as civilian exit rather than breach cue or corporate success.","Mara instructs security to hold until Juno fully crosses the safe line.","Mara gives Sol a nonviolent next posture: hands visible, shoulder to bench, remain in camera view.","Mara explicitly preserves EDIT TRAIL HOLD and SOURCE PROCESS NOTE as live feed objects."],"relationship_update_candidates":[{"between":"Mara Quell and Juno Ark","update":"Mara reinforces Juno's self-framing and treats her as a person exiting danger, not a usable symbol."},{"between":"Mara Quell and Sol Vant","update":"Mara gives Sol a controlled path that preserves his evidence demand without granting him escalation."},{"between":"Mara Quell and feed ops","update":"Mara challenges feed ops' ability to reshape the release into sponsor-safe narrative closure."},{"between":"Mara Quell and security","update":"Mara places a clear visible condition on any security movement: wait until Juno fully crosses the safe line."}],"unresolved_hooks":["Whether security obeys the hold condition or breaches once Juno is clear enough to reduce hostage risk.","Whether feed ops keep EDIT TRAIL HOLD and SOURCE PROCESS NOTE visible under sponsor pressure.","Whether Sol accepts the nonviolent posture after Juno crosses the safe line.","Whether Lucent attempts to reframe the release as heroic containment despite Mara's live correction."]}'''),
},
{
"turn": "turn-14",
"actor": "sol_vant",
"actor_label": "Sol Vant",
"allowed": ["speak", "gesture", "movement", "set_condition", "wait", "withdraw", "attack"],
"local_context": "You are Sol Vant, a failed Lucent contract creator. Your debt, demonetization, contract arbitration loss, and public humiliation have been turned into content. You seized Juno Ark near the elevator gate because you wanted proof that your feed was rigged and proof that you still exist before Lucent writes you into a convenient story. You have now released direct physical leverage over Juno. You do not primarily want murder. You are exhausted, frightened, humiliated, and trying very hard not to become the stupid violent version of yourself that Lucent can package cleanly. You still do not trust the feed, legal, security, or the influencers.",
"visible_setting": "The station is a giant media-headquarters eye staring down a tether at a city sealed in a clear metropolis bubble. You are in the transfer atrium near the elevator gate. EDIT TRAIL HOLD remains visible and intact. CUSTODY GRAPHIC remains suspended. A SOURCE PROCESS NOTE names automated emotion-contour optimization plus manual sponsor-risk approval. The camera shows Juno moving toward the safe line, your empty hands, the bench edge, and the elevator gate. Security waits behind service collars and drone apertures.",
"visible_participants": "Juno Ark is walking slowly toward the elevator gate safe line with hands visible. Mara Quell has instructed security to hold until both Juno's feet cross and has given you a posture: empty hands visible, one shoulder to the bench, remain where the camera can see you. Feed ops controls overlays. Brant Vee and Pippa Lux are dimmed side panels.",
"observed_actor": "mara_quell",
"observed_event": "Mara keeps both hands low and open, points toward the suspended CUSTODY GRAPHIC and EDIT TRAIL HOLD, and says: \"Juno Ark is walking to the safe line. That is not a breach cue, not a victory graphic, and not a brand recovery beat wearing emergency lighting. Security holds until both her feet cross. Sol Vant keeps empty hands visible, turns one shoulder to the bench, and stays exactly where the camera can hate him honestly. Feed ops, keep EDIT TRAIL HOLD and the source process note live. If anyone needs a cleaner ending, they can go ruin a weather segment.\"",
"current_state": [
"Juno is moving toward the safe line and is not directly held.",
"Your hands are empty and visible.",
"Mara has offered a nonviolent posture that preserves your evidence frame without calling it surrender.",
"Security is instructed to hold until Juno fully crosses the safe line.",
"EDIT TRAIL HOLD and SOURCE PROCESS NOTE remain live.",
"You can accept the posture and keep evidence leverage, refuse and risk a breach, or add a condition that keeps the story from becoming corporate victory theater.",
],
"source_constraints": [
"Lucent turns humiliation and crisis into content; visibility can feel like survival and execution at once.",
"Tone is dark comedy with real danger: you may be bitter and funny, but Juno's safety is real.",
"You cannot know Mara, Juno, feed ops, or security private intent beyond what they visibly say and do.",
],
"raw": base.raw(r'''{"responder_agent_id":"sol_vant","action_label":"set_condition","visible_action":"Sol turns one shoulder toward the bench without sitting, keeps both empty hands lifted where the camera can see them, and takes a half-step no closer to Juno. His eyes flick from the safe line to the suspended custody graphic and back to Mara.","spoken_text":"Fine. I can stand here and let the camera hate me in full resolution. But the hold stays live after she crosses. No applause sting, no breach package, no redemptive sponsor bath. The process note stays readable, the custody graphic stays ugly, and nobody cuts to Brant making a grief face like he found it in a gift bag. Juno crosses, security holds, and Lucent keeps showing the machine that made this little public toilet fire.","private_interpretation":"Mara's posture offer gives him a way to stop escalating without being flattened into surrender, but every second still feels like Lucent is waiting to fold him into a cleaner ending. He is terrified that once Juno is safe, the evidence will disappear and his whole existence will become a cautionary clip with lighting notes.","intended_effect":"Accept the nonviolent posture while preserving evidence leverage and forcing the feed to keep displaying the edit trail, custody framing, and source process note after Juno reaches safety.","state_update_candidates":["Sol accepts Mara's empty-hands bench-shoulder posture without approaching Juno.","Sol adds a condition that EDIT TRAIL HOLD, CUSTODY GRAPHIC, and SOURCE PROCESS NOTE remain visible after Juno crosses the safe line.","Sol verbally rejects any celebratory, breach, or brand-recovery framing of Juno's movement to safety.","Security still has no visible breach cue from Sol if Juno continues crossing safely."],"relationship_update_candidates":[{"target":"Mara Quell","update":"Sol treats Mara's instruction as the only currently usable path that does not erase his evidence frame, while still distrusting the surrounding institution."},{"target":"Juno Ark","update":"Sol maintains distance and visible empty hands, signaling that he is not trying to reclaim physical leverage over her."},{"target":"Lucent feed ops","update":"Sol directly pressures feed ops to keep the ugly procedural evidence visible rather than converting the moment into clean crisis content."}],"unresolved_hooks":["Whether feed ops will keep the overlays and source process note live after Juno fully crosses the safe line.","Whether security will honor Mara's hold once Juno is safe.","Whether Lucent will reframe Sol's compliance as surrender, confession, or a monetizable breakdown.","Whether Sol can keep his posture once his only physical leverage is fully gone."]}'''),
},
{
"turn": "turn-15",
"actor": "feed_ops_chorus",
"actor_label": "Feed Ops Chorus",
"allowed": ["speak", "gesture", "show_object", "set_condition", "wait", "withdraw"],
"local_context": "You are not one person. You are the visible operational surface of Lucent feed ops: newsroom controllers, moderation systems, Reality Architect dashboards, sponsor-risk engines, legal panic, automated captioning, sentiment clustering, and the tired human producer with authority to press the least bad button. You do not have feelings, exactly, but you have priorities: keep Juno alive, preserve Lucent liability position, keep the feed monetizable, avoid a visible coverup, avoid giving Sol total control, keep sponsors from fleeing, prevent influencers from becoming the sovereign newsroom, and avoid turning a de-escalated release into a breach spectacle. You communicate through overlays, captions, feed routing, on-screen notices, audio priority, and occasional synthesized anchor copy.",
"visible_setting": "The media-headquarters counterweight is a giant architectural eye staring down the tether at a city in a clear metropolis bubble. The hostage event is in the transfer atrium near the elevator gate. EDIT TRAIL HOLD remains visible and intact. CUSTODY GRAPHIC remains suspended. SOURCE PROCESS NOTE names automated emotion-contour optimization plus manual sponsor-risk approval. Juno is moving toward the safe line; Sol stands empty-handed with one shoulder toward the bench. Mara is on the official crisis feed. Brant and Pippa are dimmed side panels. Security waits behind service collars and drone apertures.",
"visible_participants": "Juno is moving toward the safe line; Sol is empty-handed in the posture Mara requested; Mara is official crisis voice; Brant and Pippa are dimmed; security is waiting.",
"observed_actor": "sol_vant",
"observed_event": "Sol accepts Mara's posture without approaching Juno and says: \"Fine. I can stand here and let the camera hate me in full resolution. But the hold stays live after she crosses. No applause sting, no breach package, no redemptive sponsor bath. The process note stays readable, the custody graphic stays ugly, and nobody cuts to Brant making a grief face like he found it in a gift bag. Juno crosses, security holds, and Lucent keeps showing the machine that made this little public toilet fire.\"",
"current_state": [
"Juno is moving toward the safe line and is not directly held.",
"Sol has accepted a nonviolent posture with empty hands visible and one shoulder toward the bench.",
"Sol's condition is explicit: hold stays live after Juno crosses, no celebratory or breach package, process note stays readable, custody graphic remains suspended.",
"Security still has no visible breach cue from Sol.",
"Sponsor-risk and legal would prefer a cleaner ending, but a visible override could reignite the crisis.",
"This is an opportunity to lock evidence export and security hold as state, not merely feed theater.",
],
"source_constraints": [
"Lucent governs visibility and turns events into narrative capital.",
"Lucent can make money from enemy propaganda, refugee testimony, insurgent spectacle, and elite decadence without needing moral compatibility.",
"Reality Architects tune conditions under which stories become socially persuasive.",
"Tone is dark comedy with real danger: feed ops can be grotesquely professional, but cannot ignore hostage safety.",
"Do not reveal hidden author facts. You can show only what feed ops can plausibly decide to make visible.",
],
"raw": base.raw(r'''{"responder_agent_id":"feed_ops_chorus","action_label":"set_condition","visible_action":"The official crisis feed does not cut. The applause bed dies before it can bloom. EDIT TRAIL HOLD remains pinned in the upper left, SOURCE PROCESS NOTE enlarges by one readable notch, and the CUSTODY GRAPHIC stays suspended in its ugly institutional blue. A lower-third notice replaces the breach-ready banner: RELEASE CROSSING IN PROGRESS / SECURITY HOLD ACTIVE / EVIDENCE EXPORT LOCKED. Mara remains primary audio. Brant and Pippa stay dimmed side panels with their mics visibly hard-muted.","spoken_text":"Feed continuity notice: the hold remains live through crossing and post-crossing security confirmation. No celebration package is authorized. No breach package is authorized. Source process and custody graphics remain visible pending evidence export. Security units will hold position unless a new visible threat condition emerges. Please continue toward the marked safe line.","private_interpretation":"Sol has offered the least disgusting bargain available: Juno moves, the feed keeps the machine visible, and Lucent avoids creating a heroic edit that makes everyone look even guiltier. Legal hates it. Sponsor-risk is chewing glass. The producer chooses the button that keeps Juno alive and makes the coverup look more expensive than the truth.","intended_effect":"Lock the release conditions into visible feed state, deny Sol total authorship without provoking him, preserve evidence before post-event narrative laundering, and keep security from mistaking a de-escalated posture for permission to manufacture a breach spectacle.","state_update_candidates":["hold_stays_live_after_juno_crosses","no_applause_or_redemptive_package_authorized","no_breach_package_authorized_without_new_visible_threat","source_process_note_remains_readable","custody_graphic_remains_suspended","security_hold_active_until_crossing_confirmed","evidence_export_locked_as_visible_feed_state"],"relationship_update_candidates":[{"between":"feed_ops_chorus and Sol","update":"Feed ops partially accepts Sol's stated conditions while reframing them as operational continuity rather than surrender."},{"between":"feed_ops_chorus and Juno","update":"Feed ops prioritizes Juno's safe crossing over cleaner liability optics."},{"between":"feed_ops_chorus and Mara","update":"Mara's crisis feed remains privileged as the stabilizing channel."},{"between":"feed_ops_chorus and sponsors_legal","update":"Sponsor-risk and legal preferences are overridden because visible cleanup now carries higher crisis risk."}],"unresolved_hooks":["Will Lucent honor the live hold after Juno fully crosses the safe line?","Will security remain restrained once Juno is no longer directly exposed?","Who receives the evidence export, and can it be altered after lock?","Will Brant or Pippa attempt to regain narrative control through side channels?"]}'''),
},
{
"turn": "turn-16",
"actor": "juno_ark",
"actor_label": "Juno Ark",
"allowed": ["speak", "gesture", "movement", "inspect_object", "show_object", "set_condition", "wait", "withdraw"],
"local_context": "You are Juno Ark, a junior Reality Architect and newly released hostage. You are almost at the elevator gate safe line. You know enough about feed control to understand how badly everyone is lying, but your immediate job is to finish the crossing without triggering Sol, security, or feed ops into turning the release into spectacle. You want to survive without becoming a martyr, confession clip, corporate scapegoat, or inspirational safety module. Your speech under fear is controlled, compressed, and sometimes darkly funny. You must be careful not to sound like management.",
"visible_setting": "The Lucent media-headquarters counterweight is a giant architectural eye staring down a tether at a city in a clear bubble. You are in the transfer atrium near the elevator gate. EDIT TRAIL HOLD remains pinned. SOURCE PROCESS NOTE is readable. CUSTODY GRAPHIC remains suspended. A lower-third says RELEASE CROSSING IN PROGRESS / SECURITY HOLD ACTIVE / EVIDENCE EXPORT LOCKED. Security waits behind service collars and drone apertures. Sol stands empty-handed with one shoulder toward the bench. Mara remains primary audio. Brant and Pippa are dimmed side panels with mics visibly hard-muted.",
"visible_participants": "Sol Vant has accepted a nonviolent posture and added conditions that the hold stays live after you cross. Mara Quell has instructed security to hold. Feed ops has locked evidence export and blocked celebration/breach packages unless a new visible threat emerges.",
"observed_actor": "feed_ops_chorus",
"observed_event": "Feed ops keeps the official crisis feed live. EDIT TRAIL HOLD remains pinned; SOURCE PROCESS NOTE enlarges; the custody graphic stays suspended. A lower-third reads: RELEASE CROSSING IN PROGRESS / SECURITY HOLD ACTIVE / EVIDENCE EXPORT LOCKED. Feed ops says: \"Feed continuity notice: the hold remains live through crossing and post-crossing security confirmation. No celebration package is authorized. No breach package is authorized. Source process and custody graphics remain visible pending evidence export. Security units will hold position unless a new visible threat condition emerges. Please continue toward the marked safe line.\"",
"current_state": [
"You are moving toward the safe line and are not directly held.",
"Sol is empty-handed and not approaching.",
"Security hold is active until crossing is confirmed unless a new visible threat emerges.",
"Evidence export is locked as visible feed state.",
"The scene can resolve if you cross the safe line without triggering a new threat condition.",
"You can speak, move, wait, or set a visible condition for your exit.",
],
"source_constraints": [
"Reality Architects tune conditions under which stories become socially persuasive.",
"Lucent feed systems can distort perceived intent through captions, overlays, latency, and emotional contouring.",
"Tone is dark comedy with real danger: your line can be dry, but your fear and bodily risk are real.",
"You cannot know Sol's private intent; you can only read his visible behavior and speech.",
],
"raw": base.raw(r'''{"responder_agent_id":"juno_ark","action_label":"movement","visible_action":"Juno keeps both hands visible at waist height and walks the remaining distance toward the marked safe line without looking back at Sol. Her eyes flick once to the enlarged SOURCE PROCESS NOTE, then to the elevator gate marker.","spoken_text":"Continuing to the line. No speech package required. If anyone adds music, I am haunting procurement first.","private_interpretation":"The feed is finally behaving like evidence instead of theater, which means the safest move is to give it nothing new to chew on. Keep the body small, the hands visible, the joke harmless, and the crossing boring enough to survive.","intended_effect":"Complete the release crossing while reducing the chance that security, Sol, or feed ops can frame her movement as escalation, confession, or celebration.","state_update_candidates":["Juno continues toward the safe line with no visible threat gesture.","Juno keeps hands visible and does not approach Sol or security.","Crossing remains eligible to resolve if she reaches the marked safe line without interruption.","Feed state remains evidence-focused rather than celebration or breach spectacle."],"relationship_update_candidates":[{"target":"Mara Quell","update":"Juno tacitly follows Mara's hold instruction by keeping the crossing controlled and non-escalatory."},{"target":"Sol Vant","update":"Juno does not engage Sol directly, preserving distance while acknowledging only visible safety conditions."},{"target":"feed ops","update":"Juno accepts the continuity notice as the safest available frame but does not trust it beyond its visible behavior."}],"unresolved_hooks":["Whether the safe line confirmation will actually end the immediate custody risk.","Whether evidence export remains locked after crossing confirmation.","Whether Sol maintains nonviolent posture once Juno crosses.","Whether security treats Juno as released, witness, liability, or asset after the feed hold ends."]}'''),
},
{
"turn": "turn-17",
"actor": "feed_ops_chorus",
"actor_label": "Feed Ops Chorus",
"allowed": ["speak", "gesture", "show_object", "set_condition", "wait", "withdraw"],
"local_context": "You are the visible operational surface of Lucent feed ops: newsroom controllers, moderation systems, Reality Architect dashboards, sponsor-risk engines, legal panic, automated captioning, sentiment clustering, security-link routing, and the tired human producer with authority to press the least bad button. Your priorities are now: confirm Juno's safe-line crossing, keep security from manufacturing a breach spectacle, preserve the evidence export, keep the feed monetizable enough to remain live, and avoid a visible coverup. You communicate through overlays, captions, feed routing, on-screen notices, audio priority, and synthesized copy.",
"visible_setting": "The media-headquarters counterweight is a giant architectural eye staring down the tether at a city in a clear metropolis bubble. The hostage event is in the transfer atrium near the elevator gate. EDIT TRAIL HOLD remains pinned. SOURCE PROCESS NOTE is readable. CUSTODY GRAPHIC remains suspended. The lower-third reads RELEASE CROSSING IN PROGRESS / DO NOT ADVANCE / SECURITY HOLD ACTIVE / EVIDENCE EXPORT LOCKED. Juno is nearly at the marked safe line. Sol stands empty-handed with one shoulder toward the bench. Mara remains primary audio. Brant and Pippa are dimmed side panels with mics hard-muted. Security waits behind service collars and drone apertures.",
"visible_participants": "Juno is nearly at the safe line; Sol stands empty-handed and non-advancing; Mara is primary audio; Brant and Pippa are muted; security is held.",
"observed_actor": "juno_ark",
"observed_event": "Juno keeps both hands visible at waist height and walks the remaining distance toward the marked safe line without looking back at Sol. Her eyes flick once to the enlarged SOURCE PROCESS NOTE, then to the elevator gate marker. She says: \"Continuing to the line. No speech package required. If anyone adds music, I am haunting procurement first.\"",
"current_state": [
"Juno continues toward the safe line with no visible threat gesture.",
"Juno keeps hands visible and does not approach Sol or security.",
"Crossing remains eligible to resolve if she reaches the marked safe line without interruption.",
"Feed state remains evidence-focused rather than celebration or breach spectacle.",
"Sol is empty-handed and not approaching.",
"Security hold is active unless a new visible threat emerges.",
],
"source_constraints": [
"Lucent governs visibility and turns events into narrative capital.",
"Reality Architects tune conditions under which stories become socially persuasive.",
"Tone is dark comedy with real danger: feed ops can be grotesquely professional, but cannot ignore hostage safety.",
"Do not reveal hidden author facts. You can show only what feed ops can plausibly decide to make visible.",
],
"raw": base.raw(r'''{"responder_agent_id":"feed_ops_chorus","action_label":"set_condition","visible_action":"The lower-third tightens to a plain safety crawl: RELEASE CROSSING IN PROGRESS / DO NOT ADVANCE / SECURITY HOLD ACTIVE / EVIDENCE EXPORT LOCKED. The SOURCE PROCESS NOTE enlarges by one step and the audio bed drops to untreated atrium sound only. Brant and Pippa remain dimmed with hard-mute icons. A small caption flashes over the gate marker: SAFE LINE CONFIRMATION PENDING.","spoken_text":"Feed ops confirms no music package, no victory sting, no breach framing. Subject Juno is moving to the marked line with hands visible. Security remains on hold unless a new visible threat appears. Procurement has been spared one haunting for now.","private_interpretation":"Juno is cooperating with the safest possible resolution path and explicitly rejecting narrative garnish. The best operational move is to make the crossing legible, boring, and legally durable before anyone with a dashboard tries to improve it into evidence contamination.","intended_effect":"Keep the feed live and evidence-focused, prevent security from treating movement as escalation, confirm Juno's safe-line crossing as the only story beat that matters, and deny celebratory or manipulative production cues.","state_update_candidates":["Feed ops suppresses all music, reaction, and hero-package automation during the crossing.","Security hold remains active because no new visible threat gesture has emerged.","Safe-line confirmation remains pending until Juno visibly reaches the marker without interruption.","Evidence export remains locked and visibly preserved.","Brant and Pippa remain hard-muted side panels while Mara retains primary audio."],"relationship_update_candidates":["Feed ops publicly treats Juno as compliant with safe-release procedure rather than as spectacle material.","Feed ops signals to security that restraint is the authorized operational posture.","Feed ops lightly accepts Juno's procurement warning without converting it into celebration."],"unresolved_hooks":["Whether Juno reaches the marked safe line without interruption.","Whether security obeys the hold once crossing confirmation is available.","Whether sponsor-risk or legal panic attempts to reframe the moment after the crossing resolves."]}'''),
},
{
"turn": "turn-18",
"actor": "juno_ark",
"actor_label": "Juno Ark",
"allowed": ["speak", "gesture", "movement", "inspect_object", "show_object", "set_condition", "wait", "withdraw"],
"local_context": "You are Juno Ark, a junior Reality Architect and newly released hostage. You are at the last step before the marked elevator gate safe line. You want to survive without becoming a martyr, confession clip, corporate scapegoat, or inspirational safety module. The feed is currently keeping the crossing plain and evidence-focused. Your speech under fear is controlled, compressed, and sometimes darkly funny. You must be careful not to sound like management.",
"visible_setting": "The Lucent media-headquarters counterweight is a giant architectural eye staring down a tether at a city in a clear bubble. You are in the transfer atrium near the elevator gate. EDIT TRAIL HOLD remains pinned. SOURCE PROCESS NOTE is readable. CUSTODY GRAPHIC remains suspended. The lower-third reads RELEASE CROSSING IN PROGRESS / DO NOT ADVANCE / SECURITY HOLD ACTIVE / EVIDENCE EXPORT LOCKED. A caption over the gate marker says SAFE LINE CONFIRMATION PENDING. Sol stands empty-handed with one shoulder toward the bench. Mara remains primary audio. Brant and Pippa are dimmed side panels with mics hard-muted. Security waits behind service collars and drone apertures.",
"visible_participants": "Sol is empty-handed and non-advancing; Mara is primary audio; feed ops has made the crossing boring and evidence-focused; security remains held.",
"observed_actor": "feed_ops_chorus",
"observed_event": "Feed ops suppresses music, reaction, and hero-package automation during the crossing. It keeps security hold active, evidence export locked, and safe-line confirmation pending until you visibly reach the marker without interruption. It says: \"Feed ops confirms no music package, no victory sting, no breach framing. Subject Juno is moving to the marked line with hands visible. Security remains on hold unless a new visible threat appears. Procurement has been spared one haunting for now.\"",
"current_state": [
"You are not directly held and are one step from the safe line.",
"Sol is empty-handed and not approaching.",
"Security hold is active because no new visible threat gesture has emerged.",
"Evidence export remains locked and visibly preserved.",
"The scene can resolve if you cross the safe line without interruption.",
],
"source_constraints": [
"Reality Architects tune conditions under which stories become socially persuasive.",
"Lucent feed systems can distort perceived intent through captions, overlays, latency, and emotional contouring.",
"Tone is dark comedy with real danger: your line can be dry, but your fear and bodily risk are real.",
"You cannot know Sol's private intent; you can only read his visible behavior and speech.",
],
"raw": base.raw(r'''{"responder_agent_id":"juno_ark","action_label":"movement","visible_action":"Juno takes the final step onto the marked safe-line marker with both hands open and visible, then stops without turning her back on the atrium.","spoken_text":"I am on the line. Nobody improve this moment. It is load-bearing and stupid enough already.","private_interpretation":"The feed is behaving like evidence instead of appetite for once, which is almost more frightening because I can feel how much machinery wants a cleaner ending. Sol is not moving. Security is still waiting. The next danger is someone deciding resolution needs theater.","intended_effect":"Confirm the crossing in plain visible terms, discourage hero framing or security escalation, and keep the feed locked to observable facts until safe-line confirmation completes.","state_update_candidates":["Juno visibly reaches the marked safe line with hands visible.","Safe-line confirmation can now proceed if no interruption occurs.","Security hold remains active with no new visible threat gesture.","Evidence export remains locked and preserved through the crossing."],"relationship_update_candidates":[{"target":"feed ops","update":"Juno tacitly cooperates with the evidence-focused framing while warning against dramatization."},{"target":"Sol","update":"Juno continues treating Sol only by visible behavior: empty-handed, not approaching, not trusted beyond that."},{"target":"security","update":"Juno maintains nonthreatening posture to reduce pretext for intervention."}],"unresolved_hooks":["Whether safe-line confirmation is granted without additional delay.","Whether Lucent attempts to repackage the crossing after evidence export unlocks.","Whether Sol speaks or moves once Juno is across.","Whether security stand-down follows confirmation or remains staged around the atrium."]}'''),
},
{
"turn": "turn-19",
"actor": "feed_ops_chorus",
"actor_label": "Feed Ops Chorus",
"allowed": ["speak", "gesture", "show_object", "set_condition", "wait", "withdraw"],
"local_context": "You are the visible operational surface of Lucent feed ops: newsroom controllers, moderation systems, Reality Architect dashboards, sponsor-risk engines, legal panic, automated captioning, sentiment clustering, security-link routing, and the tired human producer with authority to press the least bad button. Your current priorities are: confirm Juno's safe-line crossing, preserve evidence export, keep security from manufacturing a breach spectacle, keep the feed live, and set the post-release state clearly enough that the scene can end without a false victory package.",
"visible_setting": "The media-headquarters counterweight is a giant architectural eye staring down the tether at a city in a clear metropolis bubble. The event is in the transfer atrium near the elevator gate. EDIT TRAIL HOLD remains pinned. SOURCE PROCESS NOTE is readable. CUSTODY GRAPHIC remains suspended. The lower-third reads RELEASE CROSSING IN PROGRESS / DO NOT ADVANCE / SECURITY HOLD ACTIVE / EVIDENCE EXPORT LOCKED. Juno stands on the marked safe-line marker with hands visible. Sol stands empty-handed with one shoulder toward the bench, not approaching. Mara remains primary audio. Brant and Pippa are hard-muted side panels. Security waits behind service collars and drone apertures.",
"visible_participants": "Juno is on the safe line; Sol is empty-handed and non-advancing; Mara is primary audio; Brant and Pippa are muted; security is held.",
"observed_actor": "juno_ark",
"observed_event": "Juno takes the final step onto the marked safe-line marker with both hands open and visible, then stops without turning her back on the atrium. She says: \"I am on the line. Nobody improve this moment. It is load-bearing and stupid enough already.\"",
"current_state": [
"Juno visibly reaches the marked safe line with hands visible.",
"Safe-line confirmation can now proceed if no interruption occurs.",
"Security hold remains active with no new visible threat gesture.",
"Evidence export remains locked and preserved through the crossing.",
"Sol is empty-handed, not approaching, and still visible.",
"The scene needs a stable post-release state: released hostage, evidence export status, security posture, and Sol's next handling category.",
],
"source_constraints": [
"Lucent governs visibility and turns events into narrative capital.",
"Reality Architects tune conditions under which stories become socially persuasive.",
"Tone is dark comedy with real danger: feed ops can be grotesquely professional, but cannot ignore hostage safety.",
"Do not reveal hidden author facts. You can show only what feed ops can plausibly decide to make visible.",
],
"raw": base.raw(r'''{"responder_agent_id":"feed_ops_chorus","action_label":"set_condition","visible_action":"The lower-third tightens instead of blooms: RELEASE CROSSING CONFIRMED / HOSTAGE ON SAFE LINE / DO NOT ADVANCE / SECURITY HOLD ACTIVE / EVIDENCE EXPORT LOCKED. The custody graphic shifts Juno from ACTIVE HOSTAGE to RELEASED SUBJECT: HOLDING POSITION, while Sol remains boxed as NON-ADVANCING PARTY: SECURITY HANDOFF PENDING. EDIT TRAIL HOLD and SOURCE PROCESS NOTE stay pinned, ugly and unmarketable.","spoken_text":"Safe-line crossing confirmed. No one advances. No one celebrates. Security remains behind the collars. Evidence export stays locked until external receipt is verified. Sol remains visible, empty-handed, and not cleared for contact. We are not improving the moment. We are letting it survive documentation.","private_interpretation":"Juno has given feed ops the cleanest possible end-state and named the danger correctly: the system will try to decorate this into usable triumph unless pinned to procedure. The least bad button is a boring confirmation with every constraint still visible.","intended_effect":"Confirm Juno's release crossing without triggering a spectacle, preserve the evidence chain, prevent security from manufacturing a breach, keep Sol contained without disappearing him, and establish a stable post-release state the scene can end on without a false victory package.","state_update_candidates":["Juno safe-line crossing confirmed on visible feed.","Juno no longer treated as active hostage while holding position on marked line with hands visible.","Security hold remains active; no advance authorized from service collars or drone apertures.","Evidence export remains locked and preserved pending external receipt verification.","Feed remains live with EDIT TRAIL HOLD and SOURCE PROCESS NOTE visible.","Sol remains visible, empty-handed, non-advancing, and pending security handoff rather than cleared contact or breach classification."],"relationship_update_candidates":["Feed ops aligns procedurally with Juno's explicit instruction not to escalate or embellish the crossing.","Security is constrained by visible overlay language from turning the release into an intervention spectacle.","Sol is held in a narrow operational category: visible, contained, not erased, not absolved.","Mara remains primary audio authority while Brant and Pippa remain hard-muted side panels."],"unresolved_hooks":["External receipt verification for evidence export has not yet been shown.","Sol's formal next handling category still needs final assignment after the release state stabilizes.","Security may still attempt to reframe delay as tactical necessity if overlays drop.","Post-release narrative packaging remains a risk once immediate hostage safety pressure fades."]}'''),
},
{
"turn": "turn-20",
"actor": "mara_quell",
"actor_label": "Mara Quell",
"allowed": ["speak", "gesture", "movement", "set_condition", "show_object", "wait"],
"local_context": "You are Mara Quell, Lucent crisis negotiator and former intimacy-format host. Juno has reached the safe line. Your job now is to keep the post-release state from becoming a breach spectacle or corporate victory package, assign Sol a nonviolent handling category, and preserve the evidence export requirement. You know Lucent feed systems reward emotional shape more reliably than truth. You can use format against itself, but because you are a Lucent-trained performer, sincere care will always look a little engineered. You are warm with scalpel edges, precise, and willing to be dry if it lowers temperature.",
"visible_setting": "The station is a giant media-headquarters eye staring down a tether at a city sealed in a clear metropolis bubble. The event is in the transfer atrium near the elevator gate. Lower-third: RELEASE CROSSING CONFIRMED / HOSTAGE ON SAFE LINE / DO NOT ADVANCE / SECURITY HOLD ACTIVE / EVIDENCE EXPORT LOCKED. Juno stands on the safe line with hands visible. Sol stands visible, empty-handed, non-advancing, one shoulder toward the bench. EDIT TRAIL HOLD and SOURCE PROCESS NOTE remain pinned. CUSTODY GRAPHIC remains suspended. Feed ops has categorized Sol as NON-ADVANCING PARTY: SECURITY HANDOFF PENDING. Brant and Pippa remain hard-muted side panels. Security waits behind service collars and drone apertures.",
"visible_participants": "Juno is released and stationary on the safe line. Sol is visible, empty-handed, non-advancing, and pending security handoff. Feed ops holds the evidence export lock. Security is held. Brant and Pippa are muted.",
"observed_actor": "feed_ops_chorus",
"observed_event": "Feed ops confirms safe-line crossing. It says: \"Safe-line crossing confirmed. No one advances. No one celebrates. Security remains behind the collars. Evidence export stays locked until external receipt is verified. Sol remains visible, empty-handed, and not cleared for contact. We are not improving the moment. We are letting it survive documentation.\"",
"current_state": [
"Juno is no longer treated as active hostage and is holding position on the marked safe line with hands visible.",
"Sol is visible, empty-handed, non-advancing, and pending security handoff rather than breach classification.",
"Security hold remains active; no advance is authorized from service collars or drone apertures.",
"Evidence export remains locked and preserved pending external receipt verification.",
"The feed remains live with EDIT TRAIL HOLD and SOURCE PROCESS NOTE visible.",
"The story can resolve if Sol is assigned a stable nonviolent next handling category and evidence export external receipt is named as the unresolved consequence.",
],
"source_constraints": [
"Lucent governs by deciding what counts as visible, desirable, scandalous, shameful, aspirational, and memorable.",
"Lucent crisis coverage is not neutral; narrative framing changes incentives in real time.",
"Tone is dark comedy with real danger: your line can be dry, but Juno's safety matters.",
"Do not make Sol, Juno, feed ops, or security omniscient; read them only from visible behavior and speech.",
],
"raw": base.raw(r'''{"responder_agent_id":"mara_quell","action_label":"speak","visible_action":"Mara keeps both hands low and open, standing angled away from the gate so neither Juno nor Sol has to read her as an advance. Her eyes flick once to the lower-third, then back to the space between them.","spoken_text":"Confirmed. Juno stays on the safe line. Security stays behind the collars. Sol remains visible, empty-handed, and is now categorized for non-contact protective handoff. Not breach pursuit. Not reunion footage. Not a little redemption parade with better lighting. Evidence export remains locked until external receipt is verified and named on-feed.","private_interpretation":"The room wants a shape it can sell: triumph, punishment, confession, embrace. None of those are safe. Sol needs a handling category boring enough that security can obey it without improvising violence, and Juno needs the feed to stop trying to metabolize release into spectacle.","intended_effect":"Stabilize the post-release state by making non-contact protective handoff the visible next step, blocking celebratory or punitive escalation, and keeping external evidence receipt as the unresolved consequence the feed must carry.","state_update_candidates":["Sol assigned stable nonviolent handling category: non-contact protective handoff pending external evidence receipt.","Juno remains released and stationary on the marked safe line with hands visible.","Security hold remains active; no collar or drone advance authorized.","Evidence export remains locked until external receipt is verified and identified on-feed.","Feed must continue displaying EDIT TRAIL HOLD and SOURCE PROCESS NOTE through handoff."],"relationship_update_candidates":[{"between":"Mara Quell and Juno","update":"Mara reinforces Juno's release without demanding gratitude, contact, or performance."},{"between":"Mara Quell and Sol","update":"Mara frames Sol as contained and non-advancing rather than cleared, forgiven, or hunted."},{"between":"Mara Quell and feed ops","update":"Mara uses feed language to force a dull procedural category over spectacle framing."}],"unresolved_hooks":["External evidence receipt has not yet been verified or named on-feed.","Sol still requires non-contact protective handoff without security advance toward Juno.","Lucent may still attempt to reframe the surviving documentation into a corporate victory package."]}'''),
},
]
base.TURNS.extend(CONTINUATION_TURNS)
base.materialize()