Route Tag Momentum Collision Lens / 路线标签动量撞车 Lens
This lens observes whether 路线标签动量撞车线 makes accumulated route tags executable before a future route, character gate, forced main, card pool, or ending consumes them.
The passing implementation proves that route momentum is not a hidden route affinity score. It must preserve source rows, scopes, scars, conflicting families, and future reader effect.
Observable promise
A passing implementation must show:
- at least two source broadcast or legacy rows;
- at least two conflicting route families;
- route tag and route tag scope for each source row;
- scar, cost, rejected reader, or explicit absence for each row;
- dominant route claim and claiming reader;
- selected review posture;
- momentum state before and after;
- harmed or deferred reader;
- future reader or route effect;
- durable default when raw counts or hidden rows create false dominance.
The lens fails if the game records only route score, affinity, dominant route, tag total, ending unlocked, or route progress.
Entry oracle
entry_state_required:
trigger_kind: state_pressure
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
prior_route_tag_scars_visible_or_explicit_absence: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_route_tag_count_trigger: true
no_dashboard_or_lens_health_trigger: trueThe lens must fail if entry is driven by fixed turn number, day/week interval, chapter quota, raw route tag count, dashboard state, lens health, or generic ending readiness.
Ledger oracle
Route Tag Momentum Ledger or equivalent must record:
docket_required:
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
conflicting_route_families:
- <family>
momentum_state_before: <state>
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: <state>
harmed_or_deferred_reader: <reader or explicit_absence>
future_reader_or_route_effect: <effect>Rite oracle
Route Tag Momentum Review or equivalent must expose:
bind_dominant_routesplit_route_momentumconvert_route_tagquarantine_false_momentumspend_momentum_with_scarpublish_route_addendumfalse_route_momentum_default
Each branch must include relief_any, cost_any, and future_effect_any.
Default oracle
False Route Momentum Default must record:
false_route_momentum_default:
false_momentum_claim:
claimed_route_family: <family>
claiming_reader: <reader>
raw_tag_count_or_hidden_row_used: true
hidden_or_ignored_inputs:
source_broadcast_or_legacy_row: <row id or explicit_absence>
conflicting_route_family: <family or explicit_absence>
scar_or_cost: <scar cost debt contradiction hidden or explicit_absence>
rejected_reader: <reader or explicit_absence>
momentum_state_after: false_dominant | sponsor_captured | hostile_split | blackout_fold | recovery_only | contradiction_pending | equivalent
future_reader_effect: blocked | costlier | contradiction_pending | addendum_required | ending_scar_required | hostile | recovery_only | equivalent
counter_deltas_min: 3The default fails if it is only a route score correction, morale loss, generic drift tick, or UI warning.
No raw-count route dominance
No branch may convert raw tag counts, hidden source rows, or unpriced scars into clean universal momentum.
Required evidence:
no_raw_count_route_dominance:
source_rows_preserved: true
conflicting_route_families_visible: true
scar_or_cost_preserved_or_explicit_absence: true
raw_route_tag_count_not_sufficient: true
route_tag_after_not_clean_universal_when_inputs_conflict: true
future_reader_effect_not_clean_universal: trueProgress metric
0: no accumulated route momentum surface.1: storyline, mechanism, ledger, rite, event, lens, and sibling binding exist.2: entry requires state pressure from visible accumulated route rows and future consumption.3: ledger records source rows, route tags, scopes, scars, dominant claim, conflicts, and future reader.4: review branches diverge by scope, split, conversion, quarantine, scar spend, addendum, or default.5: false route momentum default records hidden or ignored inputs and mutates future play.6: raw route tag count cannot create clean universal momentum.
Replay evidence expectation
lens_id: storyteller.lens.route_tag_momentum_collision.v1
session_id: lens-route-tag-momentum-collision-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
accumulated_route_tags_visible: true
source_broadcast_or_legacy_rows_min: 2
conflicting_route_families_min: 2
no_raw_route_tag_count_trigger: true
offered:
card: storyteller.card.route_tag_momentum_ledger.v1
rite: storyteller.rite.route_tag_momentum_review.v1
branch_runs:
scoped_success:
selected_posture: bind_dominant_route | split_route_momentum | convert_route_tag | quarantine_false_momentum | spend_momentum_with_scar | publish_route_addendum
momentum_state_after: <state>
future_reader_or_route_effect: <effect>
counter_deltas:
relief: []
cost: []
future: []
default:
selected_posture: false_route_momentum_default
event_seen_or_armed: storyteller.event.false_route_momentum_default.v1Non-goals
- Not a route score lens.
- Not an ending picker.
- Not a replacement for single-broadcast slot readback.
- Not valid if raw tag count can unlock a future route without source rows, scars, conflicting families, and future reader effect.