Route Tag Momentum Ledger / 路线标签动量账本

Route Tag Momentum Ledger records the source rows behind a future route claim before accumulated tags become a character gate, forced main seed, deck unlock, route asset, or ending reader state.

The ledger is not a route score. It proves which rows created the pressure, which rows are scarred or scoped, and which future reader is allowed to consume the result.

Required payload

route_tag_momentum_ledger:
  card_id: storyteller.card.route_tag_momentum_ledger.v1
  entry_context:
    accumulated_route_tags_visible: true
    source_broadcast_or_legacy_rows_min: 2
    conflicting_route_families_min: 2
    dominant_route_claim_visible: true
    future_reader_or_route_consumes_momentum: true
  source_broadcast_or_legacy_rows:
    - row_id: <stable row id>
      source_surface: on_screen_slot_readback | weekly_broadcast_cycle_audit | ending_scar_ledger | explicit_absence_register | broadcast_reality_drift | equivalent
      route_tag: company | intimacy | liquidation | resistance | chaos | public_only | lawful_only | sponsor_captured | blackout_fold | recovery_only | equivalent
      route_tag_scope: public | lawful | sponsor | archive | character | route_asset | ending | explicit_absence | equivalent
      scar_or_cost: <scar cost debt contradiction or explicit_absence>
      reader_that_accepted: <reader or explicit_absence>
      reader_that_rejected_or_absence: <reader or explicit_absence>
      future_claim: <route character forced main deck ending or explicit_absence>
  dominant_route_claim:
    claimed_route_family: company | intimacy | liquidation | resistance | chaos | equivalent
    claiming_reader: forced_main | character_gate | deck_unlock | route_asset | ending_reader | sponsor | public_table | equivalent
    raw_tag_count_or_hidden_row_used: false
  conflicting_route_families:
    - company
    - intimacy
    - liquidation
    - resistance
    - chaos
  momentum_state_before: unreviewed | conflicted | sponsor_captured | split | scarred | recovery_only | equivalent
  selected_posture: bind_dominant_route | split_route_momentum | convert_route_tag | quarantine_false_momentum | spend_momentum_with_scar | publish_route_addendum | false_route_momentum_default
  momentum_state_after: dominant_bound_with_scope | split_momentum | converted_with_cost | quarantined_false_momentum | spent_with_scar | addendum_required | false_dominant | hostile_split | recovery_only | equivalent
  harmed_or_deferred_reader: <reader or explicit_absence>
  future_reader_or_route_effect: blocked | costlier | accepted_with_scope | addendum_required | contradiction_pending | ending_scar_required | recovery_only | equivalent
  false_route_momentum_default_risk: none | armed | fired

The card fails if it only records total tag counts, route progress, route affinity, ending eligibility, or a dominant family without source rows.

Row rules

Every row must answer four questions:

  1. Which broadcast, cycle, legacy, scar, or explicit absence produced this route pressure?
  2. Which route family and reader scope did it actually support?
  3. Which scar, cost, rejected reader, or absence travels with it?
  4. What future claim is trying to consume it?

Valid entry surfaces

Create or update this ledger when:

  • a route deck or route asset unlocks from accumulated tags;
  • a character gate tests player route direction;
  • a forced main slot selects future pressure from prior route tags;
  • an ending reader asks for dominant route family;
  • a sponsor, public table, archive, lawful reader, or route asset claims the current route identity;
  • several scarred broadcast or cycle rows are about to be folded into one route claim.

Do not create the ledger from fixed turn count, day/week cleanup, raw route tag count, dashboard state, or lens-health state.

Non-goals

  • Not a route score card.
  • Not a generic achievements summary.
  • Not an ending selector.
  • Not valid unless source_broadcast_or_legacy_rows, route_tag, route_tag_scope, scar_or_cost, dominant_route_claim, conflicting_route_families, momentum_state_after, and future_reader_or_route_effect remain visible.