Branch Reward Vesting Lens / 分支奖励归属固化 Lens
This lens observes whether 分支奖励归属固化线 and 分支奖励归属固化机制 correctly make positive branch rewards playable before future routes spend them.
The oracle is: a successful branch reward is not a universal clean key. A sponsor credit, public goodwill bump, archive fast-lane, lawful forbearance, handler favor, route-asset privilege, schedule cushion, audience oxygen lift, fan delegate trust, access window, or proof shortcut can be earned and still require owner, reader scope, excluded reader, cost, and future effect before reuse.
Primary observation link
This lens observes:
- 分支奖励归属固化线;
- 分支奖励归属固化机制;
- 分支奖励归属案卷;
- 分支奖励归属听证;
- 未固化奖励捕获默认;
- adjacent boundaries: 播出确认基准线, 播出盈余认领线, 救济回叫义务线, 相对方信赖撤回线, 分支资格回执线, and 路线装配兼容线;
- Route Assets and Custody, Broadcast Reality, and Producer License and Pressure.
It is observed through:
Observable promise
A passing implementation proves that a reward can be positive without becoming clean. The source success remains true, but the future reward must be vested before it can unlock a route, patch broadcast reality, satisfy a sponsor package, bridge branch eligibility, enter a loadout, satisfy a lawful annex, or support management closure.
The implementation must answer:
- what source success created the reward;
- whether the reward object exists or is explicitly absent;
- who provisionally owns it;
- which future reader wants to spend it;
- who is excluded or subordinated by that spend;
- what scope, proof bridge, handler, and cost apply;
- which branch posture was chosen;
- what future route effect follows.
The lens fails if the game stores only reward_unlocked, bonus_available, goodwill_up, sponsor_credit_plus, fastlane_active, favor_available, or route_discount.
Entry oracle
entry_state_required:
trigger_kind: state_pressure
source_success_present: true
source_success_kept_true: true
reward_object_present_or_explicit_absence: true
reward_spendable_by_future_reader: true
provisional_owner_or_explicit_absence_visible: true
candidate_spend_reader_visible: true
excluded_or_subordinated_reader_visible_or_explicit_absence: true
future_reader_or_route_consumes_reward: true
player_can_vest_split_escrow_convert_transfer_spend_forfeit_or_default: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_reward_count_trigger: true
no_dashboard_or_lens_health_trigger: trueThe lens fails if entry opens from fixed chronology, chapter quota, raw victory count, raw reward count, dashboard status, lens health, generic post-success pacing, generic economy upkeep, or achievement progress.
Docket oracle
分支奖励归属案卷 or equivalent must record:
docket_required:
row_id: <stable id>
source_success:
source_surface: <storyline rite event card route asset or explicit_absence>
source_result_kept_true: true
source_beneficiary: <reader actor route asset or explicit_absence>
reward_object:
reward_id: <stable reward id or explicit_absence>
reward_kind: sponsor_credit | public_goodwill | archive_fastlane | lawful_forbearance | handler_favor | route_asset_privilege | schedule_cushion | audience_oxygen_lift | fan_delegate_trust | access_window | proof_shortcut | equivalent
reward_state_before: unvested | provisional | claimed | disputed | scoped | escrowed | spent_unvested | captured | explicit_absence | equivalent
spendable_by_future_reader: true
custody:
provisional_owner_or_absence: sponsor | producer_license | public_fan | archive | inspector | editor | artist_boundary | handler | route_asset | claimant | explicit_absence | equivalent
candidate_spend_reader: sponsor | lawful_reader | public_fan | archive | inspector | editor | route_asset | management | broadcast_reality | equivalent
excluded_or_subordinated_reader: <reader claimant or explicit_absence>
accepted_scope_or_absence: <scope or explicit_absence>
vesting:
selected_posture: vest_to_beneficiary | split_by_reader | escrow_reward | convert_to_route_asset | transfer_with_receipt | spend_now_with_scar | forfeit_or_quarantine | default_capture
handler_or_absence: <handler or explicit_absence>
proof_bridge_or_absence: <proof receipt basis row or explicit_absence>
cost_or_scar_or_absence: <cost scar or explicit_absence>
result:
reward_state_after: vested | split_required | escrowed | route_asset_scoped | transferred | spent_with_scar | quarantined | forfeited | captured_default | recovery_only | equivalent
future_route_effect: accepted_with_scope | costlier | public_only | lawful_only | sponsor_only | route_asset_required | bridge_required | blocked | contradiction_pending | recovery_only | equivalentThe lens fails if the row names a reward without owner, spend reader, excluded reader, proof bridge or explicit absence, selected posture, and future route effect.
Hearing oracle
分支奖励归属听证 or equivalent must require concrete assignment:
assignment_required:
docket: storyteller.card.branch_reward_vesting_docket.v1
selected_reward_row: <row id>
source_success: <surface id>
reward_object_or_absence: <reward or explicit_absence>
provisional_owner_or_absence: <owner or explicit_absence>
candidate_spend_reader: <reader>
excluded_or_subordinated_reader: <reader or explicit_absence>
selected_posture: vest_to_beneficiary | split_by_reader | escrow_reward | convert_to_route_asset | transfer_with_receipt | spend_now_with_scar | forfeit_or_quarantine | default_capture
handler_or_absence: <handler or explicit_absence>
proof_bridge_or_absence: <recognized basis reward receipt route asset proof public receipt lawful annex or explicit_absence>
cost_or_scar_or_absence: <cost scar or explicit_absence>
future_reader_or_route: <reader route rite package proof window or explicit_absence>The lens fails if sponsor money, public goodwill, legal wording, archive stamp, editor checksum, producer authority, or a famous handler can spend the reward without these slots.
Branch divergence oracle
A satisfying implementation must expose at least six constructive branch families plus default/capture, or explicitly block unavailable families with state reasons.
| Branch | Required relief | Required cost | Required future effect |
|---|---|---|---|
| Vest to beneficiary | reward owner can spend with clarity | rival reader pressure, scope cost, public distrust, sponsor pressure, or archive debt rises | accepted_with_scope |
| Split by reader | multiple readers get scoped access | ambiguity, bridge debt, handler burden, or future collision rises | split_required |
| Escrow reward | false spend blocked | delay, archive debt, sponsor pressure, public distrust, or inspection heat rises | bridge_required or blocked_until_bridge |
| Convert to route asset | reward becomes playable object | custody, maintenance, loadout, or route-asset pressure rises | route_asset_required |
| Transfer with receipt | reward moves to a new owner | transfer debt, notice cost, claimant hostility, or public receipt pressure rises | transferred_with_receipt |
| Spend now with scar | current route opens | reward is spent, reader-limited, costlier, or contradiction-pending | accepted_with_scar |
| Forfeit or quarantine | unsafe future reward use blocked | current route loses perk, slows, or becomes recovery-only | blocked or recovery_only |
| Default capture | fastest desk gains short relief | reward capture, hidden reader, false universal, drift, or hostile reader hardens | captured, hostile, contradiction_pending, recovery_only |
The lens fails if every branch returns reward_ready, perk_claimed, all_readers_accept, or one generic pressure delta.
No positive reward universal key
Required evidence:
no_reward_universal_key:
source_success_kept_true: true
reward_state_after_not_clean_universal: true
owner_visible_or_explicit_absence: true
spend_scope_visible_or_explicit_absence: true
excluded_reader_visible_or_explicit_absence: true
future_route_effect_not_clean_universal: trueThe lens fails if one positive reward cleanly satisfies sponsor, public/fan, lawful/archive, inspector, editor, handler, artist-boundary, claimant, route asset, management, and broadcast-reality readers.
Default oracle
未固化奖励捕获默认 must fire or arm when:
- owner is absent;
- spend scope is absent;
- excluded reader is hidden;
- proof bridge is absent without explicit absence;
- future route consumes reward as clean;
- a desk files itself as owner before vesting;
- transfer has no receipt;
- split reward is reported as universal;
- public, lawful, sponsor, archive, route asset, management, and broadcast-reality readers all receive the same clean reward.
Required default payload:
default_required:
event: storyteller.event.unvested_reward_capture_default.v1
source_success_or_absence: <source result or explicit_absence>
reward_object_or_absence: <reward or explicit_absence>
reward_kind_or_absence: sponsor_credit | public_goodwill | archive_fastlane | lawful_forbearance | handler_favor | route_asset_privilege | schedule_cushion | audience_oxygen_lift | fan_delegate_trust | access_window | proof_shortcut | explicit_absence | equivalent
missing_or_failed_vesting:
owner: present | absent
spend_scope: present | absent
excluded_reader: present | absent
proof_bridge: present | absent
cost_or_scar: present | absent
future_reader: present | absent
default_actor: sponsor | management | archive | inspector | editor | public_fan | lawful_reader | route_asset | handler_absence | producer_absence | broadcast_reality | equivalent
false_clean_claim: reward_is_universal | sponsor_credit_equals_public_acceptance | lawful_forbearance_equals_approval | goodwill_spendable_by_management | archive_fastlane_equals_truth | route_privilege_equals_custody | handler_favor_is_free | schedule_cushion_clears_deferred_reader | equivalent
captured_reward_owner: <actor reader or explicit_absence>
hidden_or_subordinated_reader: <reader claimant or explicit_absence>
reward_state_after: captured_default | false_universal | sponsor_only | lawful_only | public_only | route_asset_captured | spent_unvested | contradiction_pending | recovery_only | equivalent
future_route_effect: costlier | blocked | hostile | sponsor_only | lawful_only | public_only | route_asset_required | bridge_required | contradiction_pending | recovery_only | equivalent
counter_deltas_min: 3The default fails if it only removes a bonus, changes mood, displays warning text, or increments generic danger without mutating future play.
Future consumption oracle
At least one downstream surface must consume reward state:
- route bundle loads reward only as a scoped route asset;
- sponsor package checks sponsor-only, split, or captured state;
- public receipt checks public-only, hidden-reader, or transfer receipt state;
- lawful annex checks escrow, bridge, or forbearance scope;
- archive route checks fast-lane debt or inspection cost;
- branch eligibility checks the reward as bridge, bond, or false-unavailable pressure;
- management closure is blocked or costed by unvested reward state;
- broadcast reality hardens, rejects, or marks the captured reward story as contradiction-pending.
If the reward result never changes future play, the lens is incomplete.
Replay evidence shape
lens_id: storyteller.lens.branch_reward_vesting.v1
session_id: lens-branch-reward-vesting-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
source_success_present: true
source_success_kept_true: true
reward_object_present_or_explicit_absence: true
reward_spendable_by_future_reader: true
provisional_owner_or_explicit_absence_visible: true
candidate_spend_reader_visible: true
excluded_or_subordinated_reader_visible_or_explicit_absence: true
future_reader_or_route_consumes_reward: true
no_fixed_turn_trigger: true
offered:
card: storyteller.card.branch_reward_vesting_docket.v1
rite: storyteller.rite.branch_reward_vesting_hearing.v1
source_reward:
source_surface: <surface id>
reward_kind: <kind or explicit_absence>
provisional_owner_or_absence: <owner or explicit_absence>
candidate_spend_reader: <reader>
excluded_or_subordinated_reader: <reader or explicit_absence>
branch_runs:
constructive_branch:
selected_posture: vest_to_beneficiary | split_by_reader | escrow_reward | convert_to_route_asset | transfer_with_receipt | spend_now_with_scar | forfeit_or_quarantine
reward_state_after: <state>
owner_state_after: <state>
excluded_reader_state_after: <state>
future_route_effect: <effect>
counter_deltas:
relief: []
cost: []
future: []
default_branch:
selected_posture: default_capture
event_seen_or_armed: storyteller.event.unvested_reward_capture_default.v1
default_actor: <actor>
false_clean_claim: <claim>
hidden_or_subordinated_reader: <reader or explicit_absence>
reward_state_after: captured_default | false_universal | sponsor_only | lawful_only | public_only | recovery_only | equivalent
downstream_read:
future_reader_or_route: <reader route rite package proof window or broadcast reality>
consumed_reward_state: <state>
route_effect_after_read: <effect>
assertions:
- entry_is_state_triggered
- source_success_kept_true
- reward_object_visible_or_explicit_absence
- owner_scope_and_excluded_reader_visible_or_explicit_absence
- reward_is_not_universal_key
- branch_outcomes_diverge
- success_has_cost
- default_is_durable
- future_reader_consumes_reward_state
- no_fixed_turn_day_week_raw_reward_count_dashboard_or_lens_health_triggerProgress metric
branchRewardVestingProgress = 0..10:
0: no source success or reward object.1: source success remains true and reward object or explicit absence is visible.2: reward is identified as future-spendable.3: provisional owner or explicit absence is visible.4: candidate spend reader is visible.5: excluded or subordinated reader is visible or explicitly absent.6: 分支奖励归属案卷 enters play.7: 分支奖励归属听证 exposes assignment slots.8: constructive branch mutates reward state, cost, and future route effect.9: 未固化奖励捕获默认 creates durable capture when skipped or underfilled.10: downstream reader consumes reward state before route unlock, proof use, package closure, loadout, or broadcast fact.
Non-goals
- Not a global economy.
- Not a perk shop.
- Not achievement tracking.
- Not raw reward-count satisfaction.
- Not fixed-turn reward cleanup.
- Not a dashboard or governance page.
- Not a replacement for basis recognition, dividend claim, relief callback, counterparty reliance, branch eligibility, or route loadout compatibility.
- Not valid unless positive reward state changes future playable acceptance.