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: trueInvalid 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: trueDefault 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_coverageNon-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.