License Slot Release Receipt / 牌照档期释放回执线

License Slot Release Receipt is the storyline for the moment a producer-license slot is declared free after completion, quarantine, exemption expiry, blackout cleanup, or scoped release.

The current corpus already proves that accepting a contract occupies capacity and that a forced main arriving at zero free slots creates crisis. Weekly Broadcast Cycle Audit also blocks a week from closing as clean while blackout or legacy rows are hidden. This storyline fills the release seam between them: a slot must not become clean capacity just because a contract resolved, a calendar tick passed, or a blackout was moved off-screen.

Playable question

When a previously occupied, blacked-out, frozen, reserved, or exempted license slot is about to become free, does the producer certify a clean release, narrow the release scope, release with scar, quarantine a blackout release, convert the slot to recovery-only, hold release for an excluded reader, transfer the release claim, or let a false slot release default harden?

The answer must name:

  • the source slot row;
  • the source contract, blackout, freeze, exemption, or explicit absence;
  • the release claim;
  • the release authority;
  • the proof anchor or explicit absence;
  • unresolved claims or explicit absence;
  • the reader scope of the released capacity;
  • the selected posture;
  • the release state after;
  • the future reader, route, forced main, correction, or schedule offer that consumes the slot.

Gap diagnosis

Nearby surfaces already cover the pressure around slot use:

The uncovered seam is the release receipt itself. A run can have a correct cycle audit and still let a later schedule offer, route reader, correction slot, or forced main consume license_slots_free +1 without seeing which row was released and what scar travelled.

State-triggered entry

Open this storyline only when a visible slot-release claim is about to be consumed:

entry_state_required:
  trigger_kind: state_pressure
  release_claim_visible: true
  source_slot_row_visible: true
  release_authority_visible: true
  source_contract_blackout_freeze_or_exemption_visible_or_explicit_absence: true
  unresolved_claims_or_scar_visible_or_explicit_absence: true
  future_reader_consumes_release_state: true
  player_can_certify_narrow_scar_quarantine_convert_hold_transfer_or_default: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_slot_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

A premiere, audit, countdown, cleanup rite, or forced-main intake may explain why the receipt is happening. It cannot be the canonical trigger. The trigger is visible release pressure plus a future consumer.

Bound content pack

Storyline spine

Beat 1 - A release claim reaches the board

A broadcast completed, a blackout was quarantined, an exemption expired, a freeze lifted, a correction slot was retired, or an audit claims that capacity is free. Create or refresh License Slot Release Ledger before the next consumer can spend the capacity.

Beat 2 - The source slot is made answerable

The ledger names the source slot row, what occupied it, who has authority to release it, what proof supports the release, and which reader still has a claim.

Valid source states include occupied, completed_pending_release, folded_blackout, frozen, exempted, reserved_with_claim, borrowed_forward, split, recovery_only, or explicit absence.

Beat 3 - Review prices release

Run License Slot Release Review. The player decides whether the slot is clean, scoped, scarred, quarantined, recovery-only, held, transferred, or falsely released.

Beat 4 - Future play consumes the release state

The next forced main, voluntary side slot, correction bid, route asset, lawful filing, sponsor package, public table, or weekly cycle must consume release_state_after, not a bare free-slot count.

Beat 5 - False release becomes durable

If hidden blackout, unresolved reader, missing proof, sponsor capture, management smoothing, or raw count release makes capacity look clean, False Slot Release Default records the false release and mutates future play.

Branch map

BranchImmediate reliefCost/scarFuture state
Certify clean releaseslot becomes spendableproof receipt and reader scope remain visibleclean_free_with_receipt
Narrow release scopea named reader may spend the slotother readers require addendum or later reviewscoped_free, split-required
Release with scarcapacity returns without pretending cleanblackout, public, lawful, sponsor, or route scarreleased_with_scar, costlier
Quarantine blackout releaseclean license is protected from one bad rowcapacity stays frozen, recovery price risesquarantined_blackout, blocked, recovery-only
Convert to recovery slotfailed capacity becomes usable for recoveryclean routes narrow or blockrecovery_only_slot, scarred_reuse
Hold release for readerexcluded reader is protected before reuseforced main, sponsor, or correction pressure risesheld_pending_reader, addendum_required
Transfer release claimanother holder carries release authorityproxy debt, collateral, or capture risk risesdelegated_release, contestable_free
False slot release defaultimmediate capacity may appear freehidden scar hardens and future consumer is pollutedfalse_free, hostile_reader, recovery_only

No branch may turn hidden blackout, unresolved liability, or absent proof into universal free capacity.

Integration notes

Missability and recovery

This storyline is missed when implementation:

  • increments license_slots_free without source slot and release authority;
  • deletes a blackout row during cleanup;
  • treats a completed contract as clean release while proof, reader scope, or future consumer is hidden;
  • lets a sponsor, management desk, or dashboard declare capacity free without release receipt;
  • lets a forced main, correction slot, route asset, or side contract consume a released row without seeing release state after;
  • uses a fixed day, turn, or audit green flag as the release trigger.

Recovery requires visible scar: reopen the release ledger, narrow the release scope, quarantine the blackout row, convert to recovery-only, hold release for the excluded reader, transfer release through a docket, or mark the consuming route costlier/blocked.

Replay evidence expectation

storyline_id: storyteller.storyline.license_slot_release_receipt.v1
session_id: lens-license-slot-release-receipt-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  release_claim_visible: true
  source_slot_row_visible: true
  release_authority_visible: true
  future_reader_consumes_release_state: true
  no_fixed_turn_trigger: true
offered:
  card: storyteller.card.license_slot_release_ledger.v1
  rite: storyteller.rite.license_slot_release_review.v1
branch_result:
  selected_posture: certify_clean_release | narrow_release_scope | release_with_scar | quarantine_blackout_release | convert_to_recovery_slot | hold_release_for_reader | transfer_release_claim | false_slot_release_default
  release_state_after: <state>
  future_reader_or_route_effect: <effect>
  event_seen_or_armed: storyteller.event.false_slot_release_default.v1 | none
  counter_deltas:
    relief: []
    cost: []
    future: []

Non-goals

  • Not a replacement for weekly cycle audit.
  • Not a forced-main collision duplicate.
  • Not a broad producer-license pressure meter.
  • Not valid if release is just license_slots_free +1.