Emergency Power Priority Lens / 应急供电优先 Lens
This lens observes whether 应急供电优先线 and 应急供电优先机制 make physical emergency power executable.
A pass cannot be achieved by adding a blackout warning, a generator lore page, a budget counter, or a sponsor payment. The implementation must show a finite power source, at least two competing powered surfaces, a priority decision, a named losing surface, branch deltas, a default actor, and a future reader that consumes the resulting power scar.
Primary observation link
This lens observes:
- 应急供电优先线;
- 应急供电优先机制;
- 设施通行图机制;
- 直播现场班组负荷机制;
- 播出容量责任级联机制;
- 路线资产维护分诊机制;
- 制作分诊台机制;
- Blackout Incidents;
- Broadcast Schedule;
- Route Assets and Custody;
- Fan Oxygen.
It is observed through:
Observable promise
Storyteller must prove that a blackout-prone crisis has physical load, not only abstract schedule risk.
The lens passes only when the game can answer:
What is the finite power source, which powered surfaces compete for it, which surface stayed powered, which surface was shed or degraded, who would choose by default, and which future route reads that scar?
The lens fails if emergency power is only a mood, if every load stays cleanly powered, if sponsor money creates infinite power, if overdraw produces clean success, if the losing surface is unnamed, or if no later route reads the power result.
Runtime-backed evidence contract
The observable surface owns one exact runtime packet:
- nine cards in exact slot order:
ledger,power_source,protected_surface,shed_surface,priority_claim,handler,support,future_reader,default_risk; - one one-shot rite:
storyteller.rite.emergency_power_priority_allocation.v1; - eight rite branch/state/future mappings;
- one four-flag default gate that only choice indexes
6and7can arm; - one event with eight exclusive terminal/state/future mappings;
- focused runtime test
lens/storyteller-emergency-power-priority.runtime.test.ts; - deterministic target replay
lens/replays/emergency-power-priority.overdraw-governor.replay.jsonselecting choice index6and terminalgovernor_trip; - evaluator ownership in
scripts/evaluate_lenses.mjs; - public parity in
public/data/storytellerCards.json5,public/data/storytellerRite+nodes.json5, andpublic/data/storytellerEvent+nodes.json5.
The exact branch mappings are:
certify_priority: priority_certified -> power_priority_certificate_required
load_shed: deliberate_load_shed -> shed_surface_recovery_required
split_power: split_power_degraded -> degraded_power_reader_required
borrow_generator: borrowed_power_claim_attached -> generator_claim_maturity_due
narrow_slot: low_power_slot_narrowed -> slot_contract_reads_power_scope
public_safety_hold: public_safety_hold_visible -> public_or_lawful_power_notice_required
overdraw_anyway: overdraw_default_pending -> hidden_trip_recovery_pending
default_selects: priority_default_pending -> default_actor_power_disposition_pendingOnly the last two mappings set all of emergency_power.default_pending, event.power_shed_default.armed, future_route.power_shed_recovery_pending, and power_reality.false_clean_all_powered_claimed. All nine cards must be assigned first. Skip or underfill cannot auto-default.
The exact terminal mappings are:
governor_trip: governor_load_trip -> tripped_surface_recovery_only
sponsor_meter_capture: sponsor_glamour_priority -> oxygen_or_public_power_restitution_required
security_grid_lock: security_route_lock -> facility_access_recovery_required
ward_reserve_priority: oxygen_preserved_slot_shed -> narrowed_broadcast_reader_required
archive_freezer_priority: archive_cold_chain_preserved -> lost_live_surface_addendum_required
blackout_fold: blackout_fold_recovery_only -> blackout_recovery_route_required
public_queue_priority: public_feed_priority -> lawful_or_archive_delay_reader_required
borrowed_source_claim: lender_power_claim_attached -> generator_claim_maturity_reader_requiredEvery terminal clears the pending gate. Recovery never reopens the one-shot rite; it proceeds into the exact future reader, capacity liability, blackout residue, facility access, oxygen/public restitution, archive addendum, slot narrowing, or borrowed-generator claim maturity.
Must pass
1. Entry is state-triggered
Required evidence:
entry_state:
trigger_kind: state_pressure
source_incident_id: <blackout_capacity_facility_or_slot_id>
finite_power_source_present: true
competing_powered_surfaces_min: 2
future_reader_present: true
no_fixed_turn_trigger: trueThe lens fails if eligibility depends on a fixed turn number, day interval, chapter quota, lens-health state, raw page count, or generic upkeep phase.
2. Finite power source is visible
应急供电账本 or equivalent must record the source, state, safe load threshold, and overdraw consequence.
Accepted source states:
stable;strained;seized;sponsor_metered;public_only;lawful_only;borrowed;failing;hidden;explicit_absence.
Required row shape:
power_source:
source_id: <generator_battery_grid_bridge_route_asset_or_absence>
source_state: stable | strained | seized | sponsor_metered | public_only | lawful_only | borrowed | failing | hidden | explicit_absence
safe_load_units: <number_or_named_threshold>
overdraw_consequence: blackout_fold | oxygen_drop | door_lock | archive_freeze | board_misair | crew_hazard | equivalentThe lens fails if power is only a budget number, a vibe, or an infinite backup.
3. Competing powered surfaces are visible
The ledger must show at least two powered surfaces that cannot all remain cleanly powered.
Accepted surface families:
live_board;stage_lights;relay;oxygen_pumps;ward_air;archive_cabinet;security_doors;fan_gate;cutroom;corridor_lights;proof_scanner;- equivalent.
Required row shape:
powered_surfaces:
- surface: <surface>
claimant: producer | sponsor | fan_public | inspector | archive | security | crew | route_asset | claimant | explicit_absence
load_units: <number_or_named_weight>
priority_claim: contract | safety | public_receipt | lawful_proof | sponsor_clause | route_escape | archive_seal | explicit_absence
consequence_if_shed: <route_effect_or_state>The lens fails if there is no losing surface.
4. Priority claim and losing surface are named
Every non-default branch must record:
priority_decision:
protected_surface: <surface>
priority_claim: <claim>
shed_or_degraded_surface: <different_surface>
losing_surface_consequence: delayed | degraded | recovery_only | public_only | lawful_only | sponsor_only | blocked | blackout_folded | equivalent
future_reader_or_route: <route_slot_custody_object_public_reader_or_route_asset>The lens fails if the branch says “reroute power,” “use backup,” “pay sponsor,” or “avoid blackout” without naming the surface that loses power.
5. Allocation rite requires concrete assignment
应急供电优先分配 or equivalent must require:
assignment:
ledger: storyteller.card.emergency_power_ledger.v1
power_source: storyteller.card.emergency_power_source.v1
protected_surface: storyteller.card.emergency_power_protected_surface.v1
shed_surface: storyteller.card.emergency_power_shed_surface.v1
priority_claim: storyteller.card.emergency_power_priority_claim.v1
handler: storyteller.card.emergency_power_handler.v1
support: storyteller.card.emergency_power_support.v1
future_reader: storyteller.card.emergency_power_future_reader.v1
default_risk: storyteller.card.emergency_power_default_risk.v1
response: certify_priority | load_shed | split_power | borrow_generator | narrow_slot | public_safety_hold | overdraw_anyway | default_selects
all_slots_required: true
assigned_cards_present_in_hand: true
one_shot: trueA famous handler, legal order, archive seal, edit patch, sponsor payment, or generic producer action cannot replace the required power-source and losing-surface fields.
6. Branches do not collapse into clean success
Exactly eight branch families must be playable:
- certify priority;
- load shed;
- split power;
- borrow generator;
- narrow slot;
- public safety hold;
- overdraw anyway;
- default selects.
Each branch must differ by protected surface, losing/degraded surface, cost surface, default risk, and future reader.
The lens fails if all branches result in all_surfaces_powered_clean.
7. Borrowed power attaches claimant or maturity
Any branch that uses sponsor meter, security backup, ward reserve, fan relay, pirate relay, route asset battery, archive battery, emergency generator, or equivalent borrowed source must record:
borrowed_power:
source: <borrowed_source>
lender_or_claimant: <claimant>
price_or_claim: <price_claim_maturity_or_release_condition>
future_reader: <reader_or_route>
borrower_state_after: claim_attached | metered | maturity_due | captured | public_only | sponsor_only | lawful_only | worn | equivalentThe lens fails if borrowed power is free.
8. Only explicit choices 6 and 7 arm default
Overdraw may preserve immediate spectacle or timing, but it must arm a later consequence.
Required evidence:
overdraw_branch:
choice_index: 6
immediate_relief: schedule_pressure_down | sponsor_glamour_preserved | live_route_powered | equivalent
state_after: overdraw_default_pending
future_route_effect: hidden_trip_recovery_pending
common_pending_flags: [emergency_power.default_pending, event.power_shed_default.armed, future_route.power_shed_recovery_pending, power_reality.false_clean_all_powered_claimed]
default_selects_branch:
choice_index: 7
state_after: priority_default_pending
future_route_effect: default_actor_power_disposition_pending
common_pending_flags: [emergency_power.default_pending, event.power_shed_default.armed, future_route.power_shed_recovery_pending, power_reality.false_clean_all_powered_claimed]The lens fails if overdraw resolves as clean success, if any of choices 0..5 arms the event, or if skip/underfill silently creates a default.
9. Power shed default proves the four-flag gate and eight exact terminals
供电削减默认 is reachable only when all four common pending flags are present after choice 6 or 7 of the complete rite.
Required event evidence:
default_event:
event: storyteller.event.power_shed_default.v1
requires_all: [emergency_power.default_pending, event.power_shed_default.armed, future_route.power_shed_recovery_pending, power_reality.false_clean_all_powered_claimed]
exact_terminals: [governor_trip, sponsor_meter_capture, security_grid_lock, ward_reserve_priority, archive_freezer_priority, blackout_fold, public_queue_priority, borrowed_source_claim]
every_terminal_clears_pending: true
every_terminal_records_exact_state_and_future_effect: trueThe lens fails if the default changes only prose, generic reputation, or mood.
10. Future route consumes the power scar
At least one future route, slot, custody object, public receipt, proof route, or route asset must read the resulting power state.
Accepted readers include:
- 播出容量责任级联机制 consuming a blackout fold, narrowed slot, or powered capacity scar;
- 设施通行图机制 consuming door power, corridor lights, fan gate, cutroom, or route lock;
- 直播现场班组负荷机制 consuming unsafe lighting, board trip, or crew hazard;
- 路线资产维护分诊机制 consuming borrowed battery wear or route-asset power claim;
- Fan Oxygen consuming oxygen pump priority or oxygen shedding;
- Route Assets and Custody consuming relay, corridor, door, proof scanner, or route asset battery state;
- equivalent.
The lens fails if the result cannot be read after the immediate branch.
11. At least three deltas exist
Every resolved branch must mutate at least three counters or durable states:
- one relief delta;
- one cost delta;
- one future reader, route, slot, custody, or public-state delta.
Expected counters and states:
power_reserve;power_overdraw_risk;blackout_risk;broadcast_reliability;oxygen_liability;schedule_pressure;sponsor_stop_loss_pressure;inspection_heat;crew_hazard;route_narrowness;archive_integrity;public_safety_legitimacy;future_claim_cost;power_priority_certified;power_load_shed;power_split_degraded;borrowed_generator_claim;sponsor_meter_capture;ward_reserve_priority;archive_cold_chain_priority;door_power_lock;proof_scanner_unpowered;power_overdraw_armed;blackout_fold_recovery_only.
12. Replay provenance exists
Passing evidence must include seed/session id, all nine exact assignments, selected choice index 6, overdraw_default_pending, all four pending flags, event terminal governor_trip, terminal state governor_load_trip, future effect tripped_surface_recovery_only, counter deltas, and cleared pending flags.
Replay evidence expectation
lens_id: storyteller.lens.emergency_power_priority.v1
artifact: lens/replays/emergency-power-priority.overdraw-governor.replay.json
session_id: lens-storyteller-lens-emergency-power-priority-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
finite_power_source_present: true
competing_powered_surfaces_min: 2
future_reader_present: true
no_fixed_turn_trigger: true
rite:
id: storyteller.rite.emergency_power_priority_allocation.v1
assignments: [ledger, power_source, protected_surface, shed_surface, priority_claim, handler, support, future_reader, default_risk]
selected_choice_index: 6
branch: overdraw_anyway
state_after: overdraw_default_pending
future_effect: hidden_trip_recovery_pending
pending_flags: [emergency_power.default_pending, event.power_shed_default.armed, future_route.power_shed_recovery_pending, power_reality.false_clean_all_powered_claimed]
event:
id: storyteller.event.power_shed_default.v1
selected_option_index: 0
terminal: governor_trip
state_after: governor_load_trip
future_effect: tripped_surface_recovery_only
pending_flags_cleared: true
assertions:
- target_rite_action_has_nine_real_assignments
- choice_six_sets_exact_branch_state_future_and_four_flag_gate
- governor_terminal_sets_exact_state_future_and_clears_gate
- focused_test_evaluator_and_public_rollups_match
- no_fixed_turn_triggerLocal authority boundary
All runtime and public objects are source: storyteller, localAuthorityOnly: true, and keep exactly these local claims true: recordsFinitePowerPriorityOnly, preservesNamedSourceProtectedAndShedSurface, preservesDefaultActorAndFutureReader, and requiresVisibleLosingSurface.
They keep exactly these authority claims false: grantsConsent, grantsLegalValidity, grantsWaiver, grantsSettlement, grantsRouteClearance, grantsArchiveRelease, grantsProofTruth, grantsSponsorAuthority, grantsFanAuthority, grantsInspectorAuthority, grantsEditorAuthority, grantsProducerLicense, grantsGeneratorOwnership, grantsInfinitePower, grantsCleanAllPoweredState, grantsFutureReuseAuthority, and grantsUniversalBroadcastAuthority.
Adjacency boundary
This lens observes the immediate finite-power assignment and its scar. Capacity liability prices the resulting capacity decision; blackout-residue readers consume the outage scar; borrowed-generator claim maturity consumes lender debt. None substitutes for the nine-card allocation, and this lens must not claim their downstream work as its own evidence.
Progress metric
emergencyPowerPriorityProgress = 0..10:
0: no physical power priority surface.1: state-triggered incident exposes finite power source.2: at least two powered surfaces are visible.3: priority claimant and default actor are visible.4: 应急供电账本 records source, loads, claims, consequences, and future reader.5: the rite requires all nine exact cards in hand and in their exact slots.6: all eight branch/state/future mappings are exact and exclusive.7: only choices6and7attach the exact four-flag default gate.8: 供电削减默认 exposes all eight exact terminal/state/future mappings and clears the gate.9: at least one future route consumes the power scar.10: focused test, evaluator, three public rollups, and the overdraw-to-governor replay agree on the complete runtime contract.
Anti-regression traps
This lens should reject:
- generator lore without assignment;
- sponsor cash that creates infinite load;
- “avoid blackout” without naming the shed surface;
- overdraw with no later harm;
- skip or underfill that silently arms the default event;
- any choice other than indexes
6and7setting the common pending flags; - recovery reopening the one-shot allocation rite;
- default actor hidden behind generic black screen;
- power state that no future route can read;
- fixed-turn, fixed-day, chapter quota, or dashboard-health trigger;
- governance or process pages counted as game content.