glytch/fktry/lanes/LANE-SCREEN.md
type-two 1a769e6cbd Baseline: GLYTCH prototype, FKTRY lore codex, scaffold + 5-lane orchestration docs
- index.html: WIMVEE GLYTCH match-the-glitch prototype (playable)
- docs/FKTRY_LORE.md: world bible / MODELBEAST asset codex
- fktry/: vite+three+TS scaffold, contracts, main loop, seed data
- fktry/MASTERPLAN.md + CONTRACTS.md + lanes/LANE-{SIM,RENDER,UI,SCREEN,DATA}.md:
  round protocol and Round 1 orders for parallel Opus 4.8 executors

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 15:51:12 +10:00

66 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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

# LANE-SCREEN — THE SCREEN compositor & glitch shaders
You are an Opus 4.8 executor on the SCREEN lane of FKTRY. Read `../MASTERPLAN.md` and
`../CONTRACTS.md` first; world bible `../../docs/FKTRY_LORE.md` (§1 THE SCREEN, §3
products, §8 style). Also read `../../index.html` — the original WIMVEE GLYTCH
prototype — its fragment shader is your seed stock: 8 glitch params (mosh, melt,
chroma, tear, roll, burn, noise, freeze) already written and tuned.
**Mission:** the payoff object. THE SCREEN is the sky-display everything ships to —
the player's factory output composited live as escalating video corruption. When
someone screenshots this game, they screenshot your canvas. It must start sterile and
end deranged, and every shipped item must visibly matter.
**Owned paths:** `src/screen/**`.
**Never touch:** contracts, main.ts, other lanes, the GLYTCH prototype (read-only
seed stock — port, don't move).
**Standing rules (all rounds):**
- WebGL (raw or three.js — your call, note it) on the provided 640×360 canvas.
Budget: <2ms/frame; THE SCREEN is garnish, not the meal.
- Corruption must be *legible*: a player who ships 40 chroma slurry should SEE chroma
damage specifically. Item artifact mapping is the design core, keep it data-driven
off `ItemDef.id`.
- Base content starts as procedural "clean programming" sterile SMPTE-ish test
patterns, slow pans, timestamp overlay (port `makeBaseTexture` thinking from the
prototype; animate it subtly so corruption has motion to chew on).
---
## CURRENT ORDERS — Round 1 (goal: milestone M1 "FLOW")
Replace the stub in `src/screen/index.ts`:
1. **Port the GLYTCH shader stack** into a proper module (`glitchStack.ts`): vertex +
fragment shader with the 8 uniforms, compiled against your base texture. Keep
param semantics identical to the prototype (it's tuned; respect the tuning).
2. **Corruption ledger.** `onEvents`: each `shipped` event adds to a per-item tally.
Map items param pressure in `corruptionMap.ts`, e.g. `melt → u_mosh+u_melt`,
`chroma-slurry → u_chroma`, `hf-dust → u_noise`, `anchor-slab → REDUCES overall
corruption slightly` (shipping clean anchors sanitizes nice tension, note it for
the orchestrator). Unknown items small generic noise bump. Pressure eases toward
its tally-driven target (lerp) so shipments feel like waves, not switches.
3. **Escalation curve.** Total corruption 01 over roughly the first 100 shipped
items (tune by feel), log-ish so early shipments feel huge. Above 0.8, add
compound wobble (params cross-modulate slowly) so a mature factory's SCREEN looks
*alive*, not maxed-out static.
4. **Brownout reaction.** On `brownout:true`, freeze-frame + heavy dropout lines +
desync judder until it lifts. The factory's pain shows in the sky.
5. **Idle charm.** With zero corruption, the clean feed runs bland loops with a
"NOTHING IS WRONG" chyron. First shipment ever interrupts it with a single frame
of full-white glitch the awakening. Cheap, unforgettable.
**Definition of done:** dev build screen starts sterile; console-dispatch a few
shipments (or wait for the real chain) and corruption rises, item-specifically;
brownout visibly seizes it. `npm run check` clean, frame budget respected (note
measured ms). NOTES written.
---
## NOTES (append-only log, newest at bottom)
```
### Round N — YYYY-MM-DD — [your model]
SHIPPED: / DECISIONS: / BLOCKED/BROKEN: / CONTRACT REQUEST: / PROPOSAL: / NEXT:
```