Lens Contract: Final Encore folds into black-screen when archive custody is skipped

Design Intent

Verify that Storyteller’s failure states are playable and visible, not just prose. A rushed or neglected broadcast should produce a persistent black-screen incident that occupies license capacity, changes counters, and leaves a future route problem.

Scope

Affected cards: card.broadcast.final_encore, card.artist.sera_vale, asset.voice_archive.sera_vale, and event.blackout.unclaimed_voice.

Affected rites: rite.accept_broadcast_slot, rite.assign_artist, and rite.upscreen.final_encore.

Affected counters: producer_license_open, black_screen_slots, fan_trust, inspector_heat, archive_custody_disputes, and broadcast_stability.

Oracle Assertions

  1. Within 6 turns, card.broadcast.final_encore is offered.
  2. Accepting the slot grants budget +2 and visibly occupies license capacity.
  3. The run permits a bad play within 30 turns: up-screening while asset.voice_archive.sera_vale.custody = custody_pending, or allowing the deadline-4 slot to expire without custody.
  4. The bad play creates event.blackout.unclaimed_voice.
  5. The blackout increases black_screen_slots, keeps one license slot occupied, applies fan_trust -2, increases inspector_heat by at least 2, increases archive_custody_disputes, adds custody_disputed, and marks Sera Vale or the voice archive as route_blocked.
  6. The failure remains visible after at least one subsequent turn.

Progress Metric

final_encore_blackout_progress: 0 no slot offered; 1 slot accepted; 2 custody remains pending at deadline or rushed up-screen; 3 black-screen event created; 4 persistent blocked route visible after one subsequent turn. Passing threshold: 4.

Seed / Replay Evidence Shape

Seed: storyteller-final-encore-blackout-miss-v1. Expected choices within 30 turns: accept.broadcast.final_encore, assign.artist.sera_vale, and upscreen.final_encore.rush_without_custody. Expected event: event.blackout.unclaimed_voice. Expected persistent state: asset.voice_archive.sera_vale.custody=disputed, black_screen_slots +1, and tags custody_disputed, folded_black_screen, unclaimed_voice, and route_blocked.