Memorial Voice Permit resolves archive custody

Design intent

Prove that a dead or missing artist’s archived voice can become a playable schedule contract, not passive lore.

Affected objects

Cards: card.artist_archive.lio_aftervoice, card.claimant.mother_estate, card.claimant.sponsor_saintglass, card.editor.blackbox_cut, card.inspector.archive_notary, card.fan_cell.candle_queue.

Rites: rite.memorial_voice_permit, rite.archive_notary_hearing.

Events: event.memorial_permit_offered, event.claimant_dispute_opened, event.aftervoice_preview_leaks, event.memorial_broadcast_resolved, event.black_screen_unlicensed_aftervoice.

Counters: counter.schedule_slots_free, counter.archive_custody_dispute, counter.sponsor_claim, counter.fan_trust, counter.inspector_heat.

Oracle

Within 24 turns the replay must offer the permit, expose at least three branches, assign archive/claimant/witness cards, write exactly one final custody tag, release a schedule slot on success, and preserve a black-screen failure branch.

Progress metric

archiveCustodyProgress = 0..4: offer, archive/claimant assignment, witness/hearing, then custody resolution or black-screen failure.

Evidence

  • Code sibling: memorial-voice-permit.lens.ts
  • Replay fixture: lens/replays/archive-voice-custody-memorial-permit.replay.json
  • Evaluator: scripts/evaluate_lenses.mjs