Phantom Coverage Crosscheck / 幻覆盖交叉核验机制

Phantom Coverage Crosscheck compares an official coverage claim against the person, proxy, roll-call, answerability, and future route states that the claim depends on.

The mechanic exists because coverage can be true in one reader and false in another. A lane may be sponsor-covered but not physically staffed. A proxy may satisfy management but not public safety. A lawful-only presence row may protect a witness while failing public roll-call. A route asset may be escorted while the worker named as coverage is already absent.

Mechanic promise

A passing implementation proves:

  • coverage source row and official claim are visible;
  • challenged subject or explicit absence is visible;
  • roll-call, answerability, or live-floor conflict is visible;
  • harmed reader and beneficiary of false coverage are visible or explicitly absent;
  • future route consumes the coverage state;
  • resolution branches preserve reader scope and future scar;
  • phantom default hardens into route cost rather than generic failure;
  • no fixed turn, raw staff count, dashboard, or lens-health trigger exists.

Entry model

entry_state_required:
  trigger_kind: state_pressure
  official_coverage_claim_visible: true
  coverage_source_row_visible: true
  challenged_subject_visible_or_explicit_absence: true
  roll_call_or_answerability_conflict_visible: true
  harmed_reader_if_coverage_is_false_visible_or_explicit_absence: true
  beneficiary_of_false_coverage_visible_or_explicit_absence: true
  future_reader_or_route_consumes_coverage: true
  player_can_verify_convert_split_publish_quarantine_accept_or_harden: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_phase_trigger: true
  no_raw_staff_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

Invalid entries include generic staff shortage, generic public apology, relationship threshold, chapter quota, dashboard warning, raw attendance count, or a first-pass live-floor problem that has no cross-desk contradiction.

Crosscheck row

幻覆盖案卷 records:

crosscheck_row:
  coverage_source:
    source_row: <row id>
    source_family: call_sheet_load | missing_roll_call | answerability_seat | crew_refusal | route_asset | public_safety | lawful_quiet_check | sponsor_summary | management_metric | equivalent
    official_coverage_claim: staffed | proxy_covered | lawful_presence | public_safety_certified | route_asset_escorted | sponsor_summary | management_metric | equivalent
    covered_lane_or_obligation: <lane_or_obligation>
    coverage_reader_scope: live_floor | public | lawful | sponsor | archive | route_asset | broadcast_reality | equivalent
  challenged_subject:
    subject: <person route asset proof carrier or explicit_absence>
    subject_state_elsewhere: present | absent | proxy_seated | protected | captured | double_counted | lawful_only | public_only | recovery_only | explicit_absence | equivalent
    proof_of_conflict: call_sheet_warning | empty_seat_row | roll_call_gap | payroll_row | route_asset_conflict | lawful_seal_scope | public_receipt | explicit_absence | equivalent
  pressure:
    harmed_reader_if_false: crew_lane | public_safety | lawful_reader | sponsor_reader | route_asset_reader | archive_reader | broadcast_reality | equivalent | explicit_absence
    beneficiary_of_false_coverage: producer | sponsor | management | archive | public_table | route_claimant | broadcast_reality | equivalent | explicit_absence
    future_reader_or_route: <future consumer>

The row fails if it stores only covered: false, staff mismatch, proxy problem, or reader confused.

Resolution model

幻覆盖交叉核验 must select one posture:

  • verify_named_worker;
  • convert_to_proxy_receipt;
  • split_lane_and_seat;
  • publish_absent_coverage;
  • quarantine_covered_route;
  • accept_limited_coverage;
  • harden_phantom_default.

Every posture writes coverage state, subject state, harmed reader state, beneficiary or default narrator state, and future route effect.

Hard rules

hard_rules:
  coverage_is_reader_scoped: true
  proxy_is_not_physical_presence: true
  lawful_presence_is_not_public_safety: true
  protected_subject_is_not_free_floor_labor: true
  explicit_absence_is_not_coverage: true
  double_counted_subject_requires_split_or_default: true
  accepted_limited_coverage_cannot_cross_readers: true
  hardening_mutates_future_play: true
  no_universal_clean_coverage: true

Default and hardening

幻覆盖默认 remains armed or fires when:

  • a future reader consumes a covered lane while the challenged subject is hidden;
  • proxy seating is counted as physical coverage;
  • lawful-only presence is reused as public safety;
  • a protected worker, witness, or route asset is double-counted;
  • explicit absence is omitted from the future route;
  • limited coverage crosses reader scope;
  • route use proceeds without verification, split, addendum, quarantine, or named scar.

Durable hardening outcomes include phantom_coverage_clean, absent_body_counted, proxy_counted_as_presence, empty_seat_hidden, roll_call_gap_hidden, route_blocked, costlier, sponsor_only, lawful_only, recovery_only, or ending_scar.

Replay evidence shape

mechanic_id: storyteller.mechanic.phantom_coverage_crosscheck.v1
session_id: lens-phantom-coverage-crosscheck-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  official_coverage_claim_visible: true
  coverage_source_row_visible: true
  challenged_subject_visible_or_explicit_absence: true
  future_reader_or_route_consumes_coverage: true
objects:
  docket: storyteller.card.phantom_coverage_docket.v1
  rite: storyteller.rite.phantom_coverage_crosscheck.v1
branch_runs:
  resolved_branch:
    selected_posture: verify_named_worker | convert_to_proxy_receipt | split_lane_and_seat | publish_absent_coverage | quarantine_covered_route | accept_limited_coverage
    coverage_state_after: <state>
    future_reader_or_route_effect: <effect>
    counter_deltas:
      relief: []
      cost: []
      future: []
  hardening_branch:
    event_seen_or_armed: storyteller.event.phantom_coverage_default.v1
    hardened_state: <state>
assertions:
  - entry_state_driven_by_coverage_contradiction
  - coverage_subject_reader_and_future_locks_are_separate
  - resolution_has_reader_scope_and_scar
  - limited_coverage_scoped
  - hardening_mutates_future_play
  - no_universal_clean_coverage

Non-goals

  • Not a staff count mechanic.
  • Not a live-floor replacement.
  • Not an answerability replacement.
  • Not a general proof-burden appeal.
  • Not valid unless a false or limited coverage claim changes future route play.