Card Schema Ingestion Review / 卡牌结构入库复核
Card Schema Ingestion Review is the assignable rite for deciding whether a card row can enter the requested slot, reader, or route.
Required slots
assignment_required:
docket: storyteller.card.card_schema_ingestion_docket.v1
source_card_id: <card id or explicit_absence>
declared_card_family: schedule | character | scene | resource | secret | thought | blackout | equivalent | explicit_absence
requested_use: schedule_slot | on_screen_slot | route_asset | proof_bridge | public_narrative | lawful_annex | sacrifice_payment | blackout_repair | equivalent
required_card_family_or_slot: <family or slot>
mismatch_kind: missing_field | wrong_family | stale_countdown | hidden_blackout | owner_absent | reader_scope_gap | equivalent
carrier_or_owner: <owner or explicit_absence>
proof_bridge_or_absence: <proof or explicit_absence>
handler_or_reader: <reader or explicit_absence>
selected_response: certify_declared_schema | narrow_schema_scope | convert_with_receipt | split_card_faces | quarantine_miscast_card | schema_waiver_with_debt | schema_miscast_default
accepted_cost_or_debt: <cost or explicit_absence>
future_reader_or_route_effect: <effect>A visible card title or UI family icon is not enough. The rite must name requested use, mismatch, proof bridge or absence, accepted cost, and future effect.
Branch families
certify_declared_schema
relief_any: [slot_legality_confirmed, route_reader_accepts_scope]
cost_any: [off_family_use_blocked, alternate_reader_delayed]
future_effect_any: [declared_family_locked, current_route_only]narrow_schema_scope
relief_any: [partial_slot_use_allowed, route_pressure_reduced]
cost_any: [broad_route_blocked, later_reader_requires_addendum]
future_effect_any: [narrow_reader_only, route_costlier]convert_with_receipt
relief_any: [requested_slot_filled, proof_bridge_created]
cost_any: [conversion_debt_up, source_family_scarred]
future_effect_any: [converted_with_receipt, future_audit_required]split_card_faces
relief_any: [two_reader_surfaces_preserved, contradiction_visible]
cost_any: [custody_debt_up, future_reader_split_required]
future_effect_any: [split_custody, later_reconciliation_required]quarantine_miscast_card
relief_any: [false_schema_claim_blocked, future_fraud_cost_down]
cost_any: [route_delayed, replacement_needed]
future_effect_any: [quarantine_required, recovery_only_until_rebuilt]schema_waiver_with_debt
relief_any: [immediate_airing_or_route_unblocked, pressure_temporarily_down]
cost_any: [sponsor_capture_up, edit_debt_up, archive_debt_up]
future_effect_any: [waived_with_debt, audit_reopen_required]schema_miscast_default
emitted_event: storyteller.event.schema_miscast_default.v1
missing_or_hidden_inputs:
- source_card_id
- declared_card_family
- requested_use
- mismatch_kind
- carrier_or_owner
- proof_bridge
- future_reader_or_route_effect
future_effect_any:
[route_blocked, false_schema_recovery, blackout_pressure_up, clean_laundering_blocked]Cost rule
Every constructive branch must show at least one relief, one cost, and one future reader or route mutation. The default branch must show durable penalty and cannot be treated as a harmless validation error.