Weekly Broadcast Cycle Audit Lens / 七日播出周期审计 Lens

This lens observes whether 七日播出周期审计线 makes the seven-day broadcast loop a future-consuming audit surface.

The passing implementation proves that the end of a week is not just a calendar event. A future reader must see cycle window, forced main slot, license table, active schedule rows, prep or embedded rows, premiere results, blackout rows, legacy state, audit reader, and future effect before the next cycle can consume the result.

Observable Promise

A passing implementation must show:

  • cycle window;
  • forced main slot;
  • license slots before audit;
  • active side slots;
  • prep rows and embedded slots or explicit absence;
  • premiere results or pending premiere state;
  • audit reader;
  • blackout rows or explicit absence;
  • legacy choice or explicit absence;
  • selected audit posture;
  • cycle state after;
  • license state after;
  • future reader or route effect;
  • durable default when a false-clean cycle closes.

The lens fails if the game records only day == 7, cycle_complete, week_closed, all_airings_resolved, license_released, dashboard health, or lens health.

Entry Oracle

entry_state_required:
  trigger_kind: state_pressure
  cycle_window_visible: true
  forced_main_slot_visible: true
  license_slot_state_visible: true
  active_schedule_rows_present: true
  prep_or_embedded_rows_present_or_explicit_absence: true
  premiere_results_present_or_pending: true
  audit_reader_present: true
  unresolved_blackout_or_legacy_pressure_present_or_explicit_absence: true
  future_cycle_consumes_audit_state: true
  no_fixed_turn_trigger: true
  no_raw_day_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

The lens must fail if entry is driven by turn number, raw day count, dashboard state, lens health, weekly recap, or generic chapter boundary with no future consumer.

Ledger Oracle

Weekly Broadcast Cycle Ledger or equivalent must record:

ledger_required:
  source_cycle:
    cycle_id: <cycle>
    cycle_window: <window>
    audit_reader: <reader>
    cycle_state_before: <state>
  license:
    license_slots_before: <table>
    forced_main_slot:
      slot_id: <slot>
      schedule_contract: <contract or explicit_absence>
      service_state: <state>
    side_slots: []
  cycle_rows:
    prep_rows: []
    embedded_slots: []
    premiere_results: []
  audit:
    selected_posture: certify_clean_rollover | carry_scarred_success | quarantine_blackout_slot | convert_legacy_card | force_main_overflow | split_cycle_memory | cycle_blackout_default
    blackout_rows: []
    legacy_choice_or_absence: <legacy or explicit_absence>
    cycle_state_after: <state>
    license_state_after: <state>
    future_reader_or_route_effect: <effect>

Rite Oracle

Weekly Broadcast Cycle Audit or equivalent must expose:

  • certify_clean_rollover
  • carry_scarred_success
  • quarantine_blackout_slot
  • convert_legacy_card
  • force_main_overflow
  • split_cycle_memory
  • cycle_blackout_default

Each branch must include relief_any, cost_any, and future_effect_any.

Default Oracle

Cycle Blackout Default must record:

cycle_blackout_default:
  false_cycle_closure:
    consumed_as: next_cycle_seed | license_release | route_unlock | legacy_selection | audit_pass | equivalent
    audit_reader: company | algorithm | sponsor | public | lawful_reader | archive | resistance | broadcast_reality | equivalent
  hidden_or_unserved_rows:
    forced_main_slot: missing | unserved | partial | overflow_hidden | blacked_out | explicit_absence | equivalent
    side_slot_rows: hidden | folded_without_cost | embedded_false_clean | explicit_absence | equivalent
    prep_or_premiere_rows: hidden | out_of_scope | unpriced | false_shared | explicit_absence | equivalent
    blackout_or_legacy_rows: hidden | unquarantined | unconverted | overclean | explicit_absence | equivalent
  harmed_surface:
    default_narrator: company | algorithm | sponsor | public | lawful_reader | archive | resistance | broadcast_reality | equivalent
    license_state_after: polluted | falsely_released | frozen | overflowed | hostile | recovery_only | equivalent
    future_cycle_effect: forced_main_overflow | blocked_side_slot | blackout_pollution | legacy_debt | public_addendum | route_costlier | hostile_reader | recovery_only | equivalent
    counter_deltas_min: 3

The default fails if it is only a warning, day-end loss, UI validation error, generic scandal, or route tag mutation with no cycle state.

No Day-Count Clean Week

No branch may make the week clean only because a date boundary passed.

Required evidence:

no_day_count_clean_week:
  cycle_window_preserved: true
  forced_main_slot_read: true
  license_state_after_visible: true
  at_least_one_row_costed_or_explicitly_absent_when_contested: true
  future_cycle_consumes_audit_state: true
  no_raw_day_count_trigger: true

Progress Metric

  • 0: no weekly cycle audit surface.
  • 1: storyline, mechanism link, ledger, rite, event, lens, and sibling binding exist.
  • 2: entry requires state pressure from cycle close and visible future consumer.
  • 3: ledger records source cycle, forced main, license rows, cycle rows, audit posture, and future effect.
  • 4: audit branches diverge by license state, cycle state, cost, and future effect.
  • 5: default records false cycle closure, hidden rows, default narrator, license state after, and future cycle effect.
  • 6: no raw day count or dashboard state can close the week cleanly.

Replay Evidence Expectation

lens_id: storyteller.lens.weekly_broadcast_cycle_audit.v1
session_id: lens-weekly-broadcast-cycle-audit-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  cycle_window_visible: true
  forced_main_slot_visible: true
  license_slot_state_visible: true
  future_cycle_consumes_audit_state: true
  no_fixed_turn_trigger: true
offered:
  card: storyteller.card.weekly_broadcast_cycle_ledger.v1
  rite: storyteller.rite.weekly_broadcast_cycle_audit.v1
branch_runs:
  scoped_success:
    selected_posture: certify_clean_rollover | carry_scarred_success | quarantine_blackout_slot | convert_legacy_card | force_main_overflow | split_cycle_memory
    cycle_state_after: <state>
    license_state_after: <state>
    future_reader_or_route_effect: <effect>
    counter_deltas:
      relief: []
      cost: []
      future: []
  default:
    selected_posture: cycle_blackout_default
    event_seen_or_armed: storyteller.event.cycle_blackout_default.v1

Non-Goals

  • Not a weekly recap.
  • Not a daily action-point validator.
  • Not a dashboard health lens.
  • Not a duplicate of on-screen slot readback.
  • Not valid unless the next cycle consumes the audit state.