# KEY stage text
The complete on-screen text contract for The Key Emerges
Final layer of the three-layer presentation contract
Parent: KEY presentation intent, KEY renderer spec, KEY visual grammar
-----
1. PURPOSE
This document defines exactly what text appears on screen, when it appears, and what it is permitted to say.
It is not a writing guide. It is a constraint system on language.
The text layer exists to prevent incorrect conclusions. It does not exist to explain the system, narrate the demo, or sell the result. If the text layer were removed, the demo would remain valid. The text layer only closes interpretive gaps the visuals cannot close alone.
-----
1. GOVERNING CONSTRAINT
The renderer must reveal the computation, not replace it with a story.
Stage text is the layer most likely to violate this constraint. A single sentence of narrator voice destroys the epistemic neutrality of everything that precedes it. Every text string must be evaluated against this constraint before use.
-----
1. CORE TEXT PRINCIPLES
Declarative. Text states what happened. It does not explain why, predict what comes next, or interpret significance.
Post-event. Text appears only after the computational event it names has completed. It never precedes the event it describes.
Minimal. One sentence on screen at a time. One idea per sentence. No elaboration.
Bounded. Text claims only what the visuals already show. It does not add information. It names what is visible.
Neutral. No sentence may imply that success is better than failure, that the system is impressive, or that the viewer should feel anything in particular.
-----
1. TIMING RULES
Text is event-driven. It appears when a computational event completes and is replaced when the next event completes.
Trigger: a new RendererSnapshot arrives with a changed stage or a defined event marker.
Behavior: current text is replaced immediately. No fade. No hold timer. No transition animation. The old sentence is gone. The new sentence is present.
Duration: a text string remains on screen until the event that replaces it occurs. The kernel determines duration. The renderer does not impose minimum or maximum display times.
No timer-driven text. If the computation is slow, the current text persists. If the computation is fast, text changes rapidly. The viewer’s experience of tempo is the computation’s tempo, not a designed pacing.
-----
1. FORBIDDEN TEXT PATTERNS
These patterns are prohibited. Any sentence matching one of these is invalid regardless of content.
“Now the system will…” — predicts future state
“The system is discovering…” — narrator voice
“This is where GIE…” — interpretive framing
“Notice how…” — directs attention
“This proves…” — claim beyond the demo
“Successfully…” — evaluative
“Searching for the answer…” — misrepresents the architecture
“Almost there…” — predicts and evaluates simultaneously
“The correct structure…” — labels before world confirmation
“GIE demonstrates…” — promotional
Any sentence ending in “!” — emphasis signaling
Any sentence using “…” — implies suspense
Any rhetorical question — narrator voice
Any metaphor — introduces interpretation not in computation
-----
1. ALLOWED TEXT FORM
Subject: the system, a structure, a candidate, or the world. Never the viewer.
Verb: past tense or present tense. Never future.
Object: a computational fact — a count, a state, an event.
No evaluative adverbs (successfully, finally, correctly, surprisingly).
No adjectives beyond technical precision.
Allowed sentence forms:
“X occurred.” — names a completed event
“X. Y.” — names two simultaneous facts, only if both visible
“X. No Y yet.” — names current state and absence of a condition
Sentence length: under twelve words. Fewer is better.
-----
1. STAGE-TO-TEXT MAPPING
[LOCKED] strings are canonical. Must appear exactly as written. No variation.
[DERIVED] strings follow the form rules and may be adjusted only if the computational event changes.
-----
PRE-COMPUTATION
Trigger: demo opens, no snapshots yet received.
[LOCKED] The system doesn’t search for the key. It survives in a space where only keys can exist.
Duration: until first snapshot arrives. Only two-sentence string. Replaced and never shown again.
-----
SIGNAL GENERATION
Trigger: stage == SIGNAL_GENERATION, first snapshot received.
[LOCKED] Two independent signals. No solution exists yet.
-----
LENS SEARCH ACTIVE (arm 1 or arm 2, pre-promotion)
Trigger: stage == LENS_SEARCH, no promoted_views yet.
[LOCKED] Candidate lenses tested under survival.
Note: identical for arm 1 and arm 2. Same text because same kernel.
-----
SURVIVAL EVALUATION ACTIVE
Trigger: stage == SURVIVAL_EVALUATION, admissibility failures accumulating.
[DERIVED] Constraint eliminates before scoring.
Note: names the dual-pressure event. May be omitted if visual grammar makes the distinction legible without text support.
-----
PROMOTION ARM 1
Trigger: promoted_views non-empty, arm_id == ARM_1.
[LOCKED] Invariance survived. Structure promoted.
Note: two sentences because two events occurred. Do not merge.
-----
LENS SEARCH ACTIVE (arm 2, post arm 1 promotion)
Trigger: arm 1 promotion complete, stage == LENS_SEARCH, arm_id == ARM_2.
[DERIVED] Second signal. Independent search.
-----
PROMOTION ARM 2
Trigger: promoted_views non-empty, arm_id == ARM_2.
[LOCKED] Invariance survived. Structure promoted.
Note: identical to arm 1. Same event, same text.
-----
COMPOSITION SEARCH ACTIVE
Trigger: stage == COMPOSITION_SEARCH, no successful composition yet.
[LOCKED] Same kernel. New substrate.
Note: most important text string after the opening line.
-----
COMPOSITION ATTEMPTS FAILING
Trigger: stage == COMPOSITION_SEARCH, admissibility_failures increasing, best score below 1.0.
[LOCKED] Composition attempted under hard constraint.
-----
CONTRAST BRANCH INTRODUCED
Trigger: stage == CONTRAST_EVALUATION, first contrast candidate shown.
[DERIVED] No survival pressure. World constraint unchanged.
Note: names conditions, not outcome. Must not pre-signal failure.
-----
CONTRAST BRANCH FAILURE
Trigger: contrast candidate fails world evaluation.
[LOCKED] Plausible is not sufficient.
Note: appears after the world returns failure, not before.
-----
WORLD EVALUATION ACTIVE
Trigger: stage == WORLD_EVALUATION, GIE composition being evaluated.
[LOCKED] The world enforces structure.
-----
WORLD EVALUATION SUCCESS
Trigger: world_view.success == True, stage == STATE_TRANSITION.
[LOCKED] State transition.
Note: two words. Nothing more claimed.
-----
PERTURBATION TEST SETUP
Trigger: perturbation test begins, both candidates shown, original world results visible.
[DERIVED] World shifted. Both evaluated again.
Note: no hint of outcome.
-----
PERTURBATION TEST RESULT
Trigger: perturbed world results visible for both candidates, divergence shown.
[LOCKED] One worked once. The other held.
Note: final substantive string. Names what happened. Viewer draws the conclusion.
-----
RUN COMPLETE
Trigger: all seven outputs produced, no further computation.
[DERIVED] Seven outputs. All from computation.
Note: optional. May be omitted. If included, must not summarize or interpret.
-----
1. REPLACEMENT RULES
One sentence on screen at a time. Hard replacement, no overlap, no fade, no transition.
When trigger fires:
1. Current text removed.
1. New text appears immediately.
1. No visual transition.
Exception: the opening two-sentence string is treated as one unit. Both appear together and are replaced together by the first stage string.
-----
1. PLACEMENT RULES
Position: bottom of screen, below all panels, centered horizontally.
Margins: text never confused with panel annotation.
Overlap: never overlaps main panel, secondary panel, or world geometry.
Persistence: fixed position throughout. Does not move or animate.
-----
1. STYLING CONSTRAINTS
Font: monospace or clean sans-serif.
Size: consistent throughout. No variation.
Weight: regular. No bold, no italic, no emphasis.
Color: neutral throughout. Same color for all strings.
Animation: none. Text appears and remains.
The text is information. It is not design.
-----
1. ALIGNMENT CONSTRAINT
Text must not exceed visuals.
The text layer is downstream of computation and downstream of visuals. It names what has already been shown. It never names what has not yet appeared on screen.
-----
1. SILENCE RULE
When in doubt, show nothing.
If no string is defined for the current state, the text layer is blank. Blank is correct. Filler text is prohibited. Silence is the text layer’s correct behavior when no interpretive gap exists.
-----
1. INTEGRITY CHECKS
Before any string is approved, verify all of the following. All must pass.
Is this text post-event? Yes.
Is this text bounded by visuals? Yes.
Does this text predict? No.
Does this text interpret? No.
Does this text evaluate? No.
Does this text use narrator voice? No.
Does this text pre-signal the contrast failure? No.
Does this text make claims beyond this demo? No.
Is this text under twelve words? Yes.
Is this replacing a locked string? If yes, confirm locked string is unchanged.
If any check fails, the string is invalid.
-----
1. ONE-LINE SUMMARY
Text names what happened. It does not say what it means.
-----
End of KEY stage text.
The three-layer presentation contract is complete.
KEY renderer spec — how state flows.
KEY visual grammar — how state looks.
KEY stage text — what is allowed to be said.