Oxygen Reserve Gap Docket / 呼吸储备缺口案卷

Oxygen Reserve Gap Docket is the card that records the uncovered remainder after reserve provenance, priority, rebate, makegood, or haircut logic has made the available oxygen-like sources legible.

The card exists because 呼吸储备来源线 can prove which sources may be used, but a correct provenance result can still leave an obligation partly uncovered. That uncovered gap is not allowed to disappear into delay, sponsor covered, fans accepted, or reserve balanced.

Playable promise

A reserve gap must name its holder, reader scope, proof, burdened reader, and future route effect before the obligation can be treated as paid, closed, postponed, or converted to recovery-only.

Required fields

oxygen_reserve_gap_docket:
  card: storyteller.card.oxygen_reserve_gap_docket.v1
  gap_row_id: <stable row id>
  source_provenance_row_id: <oxygen reserve provenance row id or explicit_absence>
  source_obligation: sponsor_makegood | fan_refund | ward_air | public_receipt | recovery_air | route_asset_care | archive_lien | broadcast_stability | equivalent
  obligation_state_before: unpaid | partially_paid | segregated_underfunded | sponsor_matched_short | opt_in_short | escrow_short | haircut_short | ringfenced_short | hidden_short | equivalent
  usable_cover_sources:
    - source_id: <stable source id>
      source_kind: fan_oxygen_cell | sponsor_makegood | ward_air_reserve | archive_escrow | recovery_inventory | public_receipt_credit | route_asset_care | equivalent
      source_scope_after: fan_only | sponsor_only | ward_only | archive_only | public_only | recovery_only | route_asset_only | lawful_only | split_required | equivalent
      accepted_by_reader: <reader or explicit_absence>
  uncovered_gap:
    gap_kind: amount_short | scope_short | proof_short | mandate_short | care_short | timing_short | authority_short | explicit_absence
    gap_visible_to: sponsor | fan_public | ward_reader | archive | lawful_reader | route_asset | producer_license | broadcast_reality | equivalent
    gap_holder_before: unassigned | sponsor | producer_license | fan_public_queue | archive_escrow | route_asset | recovery_shelf | claimant | worker_carrier | explicit_absence
    protected_reader: <reader or explicit_absence>
    burdened_or_excluded_reader: <reader or explicit_absence>
  proposed_assignment: sponsor_true_up | producer_underwrite | fan_public_queue_credit | archive_gap_escrow | route_asset_ration | recovery_conversion | split_gap | visible_block | gap_capture_default
  proof_or_absence: invoice | public_receipt | audit_annex | reserve_trace | ringfence_seal | witness_oath | sponsor_clause | explicit_absence
  result:
    gap_state_after: assigned | queued | escrowed | rationed | converted | split_required | blocked | captured | false_closed | recovery_only | equivalent
    future_reader_or_route_effect: <effect>
    counter_deltas:
      relief: []
      cost: []
      future: []

Failure shape

The docket fails if it stores only a raw deficit, money owed, oxygen balance, or generic delay. The important data is who may cite the partial cover, who is still short, who carries that shortfall, and which future route must read the scar.

Non-goals

  • Not a global economy ledger.
  • Not a raw oxygen HP remainder.
  • Not a replacement for reserve provenance or priority ranking.
  • Not valid if an uncovered gap becomes clean closure without a holder.