Oxygen Reserve Gap Assignment Lens / 呼吸储备缺口指派 Lens
This lens observes whether 呼吸储备缺口指派线 correctly handles the uncovered remainder after oxygen-like reserve play has made source cover legible.
The oracle is simple: a partly covered oxygen-backed obligation cannot become clean closure until the gap has a holder, reader scope, proof or explicit absence, and future route effect.
Primary observation link
This lens observes:
- 呼吸储备缺口指派线;
- 呼吸储备缺口指派机制;
- 呼吸储备来源线;
- 呼吸储备来源机制;
- 呼吸优先梯线;
- 呼吸返点封顶线;
- 呼吸折让同意债转移线;
- 复原追偿搁架线;
- 残存底线指派线;
- Fan Oxygen;
- Route Assets and Custody;
- Broadcast Reality.
It is observed through:
Design intent
The mesh now correctly prevents several regressions around oxygen:
- source rows cannot be mixed into one clean pool;
- senior and junior readers can be ranked;
- partial relief can be priced as rebate, haircut, consent debt, makegood, clawback, or recovery.
The remaining failure risk is subtler: after all that correct work, the uncovered remainder can still be omitted. A future route may read partial cover with valid provenance as closed obligation. This lens prevents that collapse.
Must pass
1. Entry is state-triggered by partial cover plus gap pressure
Required entry evidence:
entry_state:
trigger_kind: state_pressure
obligation_visible: true
partial_cover_or_scope_limited_cover_visible: true
source_provenance_row_visible_or_explicit_absence: true
gap_kind_visible: true
proposed_or_missing_gap_holder_visible: true
protected_reader_visible_or_explicit_absence: true
burdened_or_excluded_reader_visible_or_explicit_absence: true
future_reader_or_route_effect_possible: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_gap_amount_trigger: true
no_raw_oxygen_count_trigger: true
no_raw_fan_count_trigger: true
no_dashboard_or_lens_health_trigger: trueThe lens fails if the storyline opens from fixed timing, raw deficit amount, raw oxygen count, raw fan count, chapter quota, dashboard state, lens health, or generic late-game pressure.
2. Source provenance or explicit absence survives into the gap docket
呼吸储备缺口案卷 must preserve the source obligation, accepted cover, source scopes, gap kind, and explicit absence when provenance is missing.
Required row shape:
gap_docket_required:
source_provenance_row_id: <row id or explicit_absence>
source_obligation: <obligation>
obligation_state_before: <partial or short state>
usable_cover_sources: []
gap_kind: amount_short | scope_short | proof_short | mandate_short | care_short | timing_short | authority_short | explicit_absence
gap_holder_before: <holder or explicit_absence>
protected_reader: <reader or explicit_absence>
burdened_or_excluded_reader: <reader or explicit_absence>
proof_or_absence: <proof or explicit_absence>
future_reader_or_route_effect: <effect>The lens fails if the docket says only oxygen short, money owed, reserve balanced, sponsor covered, fans accepted, or delay.
3. The gap holder is named or absence is priced
The gap holder after assignment must be one of:
- sponsor;
- producer license;
- fan/public queue;
- archive escrow;
- route asset;
- recovery shelf;
- claimant;
- worker carrier;
- split holder;
- blocked holder;
- explicit absence with default.
The lens fails if the implementation lets holder absence behave like clean closure.
4. Protected and burdened readers diverge
At least two reader surfaces must be visible unless one is explicitly absent with reason:
- sponsor reader;
- fan/public reader;
- ward or care reader;
- archive/lawful reader;
- route-asset reader;
- producer-license reader;
- broadcast-reality reader;
- recovery reader.
A passing result cannot satisfy all readers with the same short payment.
5. Assignment rite prices every playable branch
呼吸储备缺口指派 must resolve or explicitly block these branch families:
| Branch | Required relief | Required cost/scar | Required future state |
|---|---|---|---|
| Sponsor true-up | obligation or slot pressure falls | sponsor capture, contract capture, public distrust | sponsor-only, accepted-with-scope, unwind-required |
| Producer underwrite | route has named backing | license encumbrance, inspection heat, management pressure | accepted-with-cost, costlier, indemnity-shelf |
| Fan/public queue credit | public legitimacy or fan oxygen legibility improves | refund delay, fan resentment, audit pressure | public-only, refund-audit, fan-audit |
| Archive gap escrow | false closure and double use blocked | archive debt, public delay, sponsor hostility, inspection heat | lawful-only, proof-required, release-gated |
| Route-asset ration | protected person or care line survives | care debt, handler burden, excluded-reader resentment | ringfenced, route-asset-only, costlier |
| Recovery conversion | unsafe closure blocked and repair remains possible | downgrade, delay, indemnity price | recovery-only, salvage-floor, indemnity-shelf |
| Split gap | one reader proceeds within scope | contradiction pressure, source ambiguity, omitted-reader hostility | split-required, addendum-required, costlier |
| Visible block | false clean closure prevented | makegood, clawback, priority, or recovery pressure rises | blocked, downgraded, rerouted |
| Gap capture default | immediate report may close | hidden holder becomes challenge surface | captured, false-closed, hostile, blocked, recovery-only |
6. Default is durable
呼吸储备缺口默认 must fire or arm when:
- no gap holder is assigned;
- a sponsor true-up is reused as public closure;
- a fan/public queue credit is reused as sponsor or lawful closure;
- archive escrow is reused as fan acceptance;
- a route-asset ration is hidden from the protected reader;
- recovery conversion is filed as full settlement;
- source provenance is missing and the absence is not priced;
- the burdened reader is hidden.
Required default payload:
default_required:
event_seen_or_armed: storyteller.event.oxygen_reserve_gap_default.v1
source_gap_row_id: <gap row id or explicit_absence>
false_clean_claim: <claim>
capturing_reader: <reader>
hidden_gap_holder: <holder or explicit_absence>
burdened_or_excluded_reader: <reader or explicit_absence>
gap_state_after: captured | false_closed | hostile | blocked | split_required | costlier | recovery_only | contradiction_pending | equivalent
future_reader_or_route_effect: <effect>
counter_deltas_min: 3A default that changes only money, oxygen total, mood, or reputation fails.
7. Future reader consumes gap state
At least one future reader must consume the assignment result before treating the obligation as usable:
The lens fails if the gap row is written but later routes ignore it.
Negative examples
Fail these implementations:
bad_examples:
- payment_result: sponsor_covered
missing: gap_holder protected_reader burdened_reader future_effect
- payment_result: reserve_balanced
missing: source_provenance_row gap_kind reader_scope
- payment_result: fans_accepted_partial_shortfall
missing: mandate proof burdened_reader default_if_reused
- payment_result: route_asset_released
missing: care_gap ration_holder future_route_effect
- payment_result: archive_escrowed
missing: public_addendum burdened_reader release_gateReplay/session evidence expectation
storyline_id: storyteller.storyline.oxygen_reserve_gap_assignment.v1
session_id: lens-oxygen-reserve-gap-assignment-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
obligation_visible: true
partial_cover_or_scope_limited_cover_visible: true
source_provenance_row_visible_or_explicit_absence: true
gap_kind_visible: true
proposed_or_missing_gap_holder_visible: true
protected_reader_visible_or_explicit_absence: true
burdened_or_excluded_reader_visible_or_explicit_absence: true
no_fixed_turn_trigger: true
offered:
card: storyteller.card.oxygen_reserve_gap_docket.v1
rite: storyteller.rite.oxygen_reserve_gap_assignment.v1
branch_runs:
assignment_branch:
selected_posture: sponsor_true_up | producer_underwrite | fan_public_queue_credit | archive_gap_escrow | route_asset_ration | recovery_conversion | split_gap | visible_block
gap_state_after: <state>
assigned_gap_holder_after: <holder or explicit_absence>
protected_reader_state_after: <state>
burdened_reader_state_after: <state or explicit_absence>
future_reader_or_route_effect: <effect>
counter_deltas:
relief: []
cost: []
future: []
default_branch:
event_seen_or_armed: storyteller.event.oxygen_reserve_gap_default.v1
false_clean_claim: <claim>
capturing_reader: <reader>
hidden_gap_holder: <holder or explicit_absence>
future_reader_or_route_effect: <effect>
assertions:
- primary_links_exist
- entry_is_state_triggered
- partial_cover_does_not_become_clean_closure
- source_provenance_or_explicit_absence_visible
- gap_holder_visible_or_defaulted
- protected_and_burdened_readers_diverge
- assignment_has_relief_cost_and_future_effect
- default_is_durable
- future_reader_consumes_gap_state
- no_fixed_turn_day_week_raw_count_dashboard_or_lens_health_triggerNon-goals
- Not raw deficit accounting.
- Not a global oxygen economy.
- Not a replacement for provenance, priority, rebate, clawback, makegood, recovery, or salvage.
- Not a fixed upkeep cadence.
- Not valid unless uncovered gap state changes future play.