Broadcast Dividend Claim Lens / 播出盈余认领 Lens

This lens observes whether 播出盈余认领线 and 播出盈余认领机制 correctly turn a successful broadcast surplus into playable management/RPG pressure.

A pass cannot be achieved by adding a generic reward, morale scene, post-victory bonus, or raw resource tick. The implementation must show a real source success, a named dividend pool, multiple claimants, an assignable allocation hearing, branch divergence, costed success, and future route or asset mutation.

This lens observes:

It is observed through:

Observable promise

When prior play produces a positive surplus, the game must expose that surplus as a claimable pool. The producer must choose how to allocate it or explicitly let another claimant capture it. The original win remains true, but its surplus becomes scarce.

Must pass

1. Entry is state-triggered

Minimum evidence:

entry_state:
  trigger_kind: state_pressure
  source_success_relief_kept_true: true
  source_cost_or_scar_still_visible: true
  spendable_pool_exists: true
  claimants_min: 2
  future_route_or_asset_effect_possible: true
  no_fixed_turn_trigger: true

The lens fails if eligibility comes from fixed turn number, day interval, chapter quota, raw content count, lens-health state, or generic post-victory label.

2. Source success is preserved

The source row must name what was won and what remains costly.

Required shape:

source_success:
  source_surface: <surface>
  source_session_id: <source session or explicit absence>
  source_relief_kept_true: <relief>
  source_cost_still_live: <debt, scar, heat, claimant, or absence>

The lens fails if the dividend retcons the source victory, deletes all source cost, or appears without a specific prior relief.

3. Spendable pool is declared

播出盈余认领账本 or equivalent must name a pool.

Valid pool classes include:

  • audience_trust;
  • sponsor_uplift;
  • fan_oxygen_surplus;
  • lawful_goodwill;
  • edit_lane_credit;
  • route_asset_momentum;
  • staff_morale;
  • schedule_slack;
  • archive_compliance_credit;
  • equivalent pool with explicit spendable consequence.

The lens fails if the implementation grants generic money, points, or mood without future state effect.

4. Claimants have incompatible demands

At least two claimant rows must demand different uses of the same pool.

Each row must include:

claimant_row:
  claimant: <claimant>
  demanded_use: <use>
  proof_of_claim: <receipt, seal, queue, contract, checksum, body, credit, or absence>
  consequence_if_paid: <relief plus scar>
  consequence_if_unpaid: <resentment, hostile, gate, capture, counterclaim, or recovery-only>

The lens fails if the claimants are only atmosphere or if all claimants benefit equally.

5. Default claimant is known

The replay must record who captures the dividend if the producer does not allocate it.

Acceptable default claimants:

  • sponsor;
  • inspector/archive;
  • fan public;
  • editor/black-box;
  • artist/proxy/staff;
  • producer reserve suspicion;
  • pirate relay;
  • route asset holder;
  • equivalent named faction or actor.

The lens fails if unallocated surplus simply disappears.

6. Ledger and hearing are assignable

The replay must show 播出盈余认领账本 and 播出盈余分配听证 or equivalent.

Required assignment shape:

assignments:
  ledger: storyteller.card.broadcast_dividend_claim_ledger.v1
  dividend_pool: <pool>
  source_success: <source success>
  primary_claimant: <claimant row>
  rival_claimant: <claimant row>
  selected_branch: <branch>
  handler_or_absence: <handler or explicit_absence>
  route_asset_or_absence: <asset or explicit_absence>
  proof_or_receipt_or_absence: <proof/receipt/seal/checksum or explicit_absence>

The lens fails if surplus resolves automatically or only through passive reward UI.

7. Branch outcomes diverge

At least six branch families must be playable or explicitly blocked by state:

  • reinvest route asset;
  • pay harmed claimant;
  • seed public reserve;
  • buy lawful buffer;
  • accept sponsor harvest;
  • protect staff/proxy;
  • hold producer reserve;
  • let default capture.

Expected non-equivalence:

  • route reinvestment improves follow-up use but arms rival gates;
  • harmed-claimant payment softens injury but spends surplus;
  • public reserve opens public witness routes but raises audit and sponsor pressure;
  • lawful buffer reduces contempt but narrows public heat;
  • sponsor harvest improves budget/slot pressure but creates capture;
  • staff/proxy protection preserves people but leaves another claimant unpaid;
  • producer reserve creates future flexibility and suspicion;
  • default capture mutates the pool and future gate without clean relief.

8. Success has cost

Any non-default branch must include at least one relief and one cost.

Valid costs include:

  • sponsor stop-loss pressure;
  • contract capture;
  • public receipt distrust;
  • fan oxygen resentment;
  • inspection heat;
  • bureau favor debt;
  • edit debt;
  • source ambiguity;
  • handler burden;
  • proxy protection debt;
  • route asset pressure;
  • claimant resentment;
  • coalition pressure;
  • future blackmail cost;
  • recovery route cost;
  • spend of the pool itself.

The lens fails if the dividend improves all parties cleanly.

9. Unpaid claimant or capture persists

After allocation, at least one row must remain visible as unpaid, narrowed, delayed, hostile, captured, converted, or recovery-only unless the branch explicitly defaulted.

The unpaid row may feed later:

10. Default capture mutates future state

盈余认领默认 or equivalent must fire or be armed when the producer hides the pool, fails to assign it, reserves it without denied claimant, falsely gives it to all parties, or lets the strongest claimant narrate first.

The event must mutate at least one of:

  • pool state;
  • route asset state;
  • accepted future channel;
  • claimant posture;
  • crisis ticket state;
  • proof/receipt custody;
  • route cost or availability.

Accepted outcomes include:

  • sponsor_gate_required;
  • lawful_only;
  • public_only;
  • editor_only;
  • staff_unavailable;
  • hostile_claim;
  • route_asset_costlier;
  • captured;
  • blocked;
  • recovery_only.

11. At least three deltas exist

Every resolved allocation must mutate at least three counters or durable states.

Expected surfaces:

  • dividend_pool_state;
  • producer_reserve;
  • audience_trust;
  • public_receipt_legitimacy;
  • public_receipt_distrust;
  • fan_oxygen_balance;
  • fan_oxygen_resentment;
  • sponsor_stop_loss_pressure;
  • contract_capture;
  • budget_pressure;
  • inspection_heat;
  • bureau_favor_debt;
  • lawful_buffer;
  • edit_lane_credit;
  • edit_debt;
  • source_ambiguity;
  • handler_burden;
  • proxy_protection_debt;
  • staffing_capacity;
  • route_asset_momentum;
  • route_asset_pressure;
  • claimant_resentment;
  • coalition_pressure;
  • future_blackmail_cost;
  • recovery_route_cost.

12. Replay provenance is not trigger logic

Replay evidence may record source session ids, seed, current session id, branch results, and turn range as provenance. Eligibility remains state-based: source success, spendable pool, claimant conflict, default claimant, and future effect.

Branch assertions

Reinvest route asset

selected_branch: reinvest_route_asset
pool_state_after_any:
  - allocated
  - converted
relief_any:
  - route_asset_state_up
  - followup_rite_unlocked
  - route_access_stability_up
cost_any:
  - rival_claimant_resentment_up
  - sponsor_stop_loss_pressure_up
  - inspection_heat_up
  - public_expectation_up
future_route_effect_any:
  - followup_assignment_open_with_cost
  - claimant_gate_armed
  - route_asset_momentum_spent

Pay harmed claimant

selected_branch: pay_harmed_claimant
pool_state_after: allocated
relief_any:
  - fan_oxygen_resentment_down
  - witness_protection_debt_down
  - artist_trust_up
  - public_receipt_legitimacy_up
cost_any:
  - sponsor_uplift_spent
  - schedule_slack_down
  - lawful_goodwill_down
  - producer_reserve_down
future_route_effect_any:
  - harmed_claimant_route_softened
  - sponsor_gate_costlier
  - public_reserve_open

Seed public reserve

selected_branch: seed_public_reserve
pool_state_after_any:
  - allocated
  - converted
relief_any:
  - public_receipt_legitimacy_up
  - audience_trust_up
  - private_capture_blocked
cost_any:
  - sponsor_stop_loss_pressure_up
  - inspection_heat_up
  - public_audit_required_up
future_route_effect_any:
  - public_route_open_with_audit
  - lawful_use_costlier
  - sponsor_use_costlier

Buy lawful buffer

selected_branch: buy_lawful_buffer
pool_state_after_any:
  - allocated
  - converted
relief_any:
  - inspection_heat_down
  - lawful_acceptance_up
  - contempt_risk_down
cost_any:
  - bureau_favor_debt_up
  - public_receipt_distrust_up
  - fan_oxygen_resentment_up
future_route_effect_any:
  - lawful_buffer_open
  - public_counter_route_costlier

Accept sponsor harvest

selected_branch: accept_sponsor_harvest
pool_state_after_any:
  - allocated
  - converted
relief_any:
  - budget_pressure_down
  - sponsor_stop_loss_pressure_down
  - schedule_slack_up
cost_any:
  - contract_capture_up
  - public_receipt_distrust_up
  - artist_boundary_risk_up
  - clean_ending_capture_risk_up
future_route_effect_any:
  - sponsor_gate_required
  - public_route_costlier
  - artist_route_costlier

Protect staff or proxy

selected_branch: protect_staff_proxy
pool_state_after: allocated
relief_any:
  - handler_burden_down
  - proxy_protection_debt_down
  - staffing_capacity_up
  - witness_exposure_down
cost_any:
  - dividend_pool_spent
  - sponsor_pressure_up
  - route_asset_momentum_down
  - rival_claimant_resentment_up
future_route_effect_any:
  - proxy_available_future
  - crisis_ticket_delayed_elsewhere

Hold producer reserve

selected_branch: hold_producer_reserve
pool_state_after: reserved
relief_any:
  - producer_reserve_up
  - future_flexibility_up
cost_any:
  - claimant_resentment_up
  - default_capture_timer_armed
  - public_expectation_unpaid
future_route_effect_any:
  - reserve_token_created
  - claim_default_possible

Let default capture

selected_branch: let_default_capture
event_seen_or_armed: storyteller.event.dividend_claim_default.v1
pool_state_after_any:
  - captured
  - expired
  - recovery_only
cost_any:
  - dividend_captured_by_default_claimant
  - route_asset_pressure_up
  - claimant_hostility_up
  - future_gate_hardened
future_route_effect_any:
  - sponsor_gate_required
  - lawful_only
  - public_only
  - editor_only
  - staff_unavailable
  - recovery_only

Progress metric

broadcastDividendClaimProgress = 0..10:

  • 0: no source success with spendable surplus.
  • 1: source success relief is recorded and preserved.
  • 2: source cost or scar remains visible.
  • 3: a named dividend pool is declared.
  • 4: at least two claimant rows exist.
  • 5: claimant demands are incompatible and default claimant is known.
  • 6: ledger and allocation hearing are offerable with assignments.
  • 7: at least six branch families are playable or explicitly blocked by state.
  • 8: non-default allocation has both relief and cost.
  • 9: unpaid claimant or default capture persists into future route/asset state.
  • 10: replay evidence includes source provenance, seed/session id, pool state, assignments, selected branch, deltas, and future effect.

Replay evidence shape

lens_id: storyteller.lens.broadcast_dividend_claim.v1
session_id: lens-storyteller-broadcast-dividend-claim-v1-<timestamp>
seed: <deterministic-seed>
source_success:
  source_surface: <source>
  source_session_id: <source session or explicit absence>
  source_relief_kept_true: <relief>
  source_cost_still_live: <cost or scar>
entry_state:
  trigger_kind: state_pressure
  dividend_pool:
    pool_id: <id>
    pool_type: audience_trust | sponsor_uplift | fan_oxygen_surplus | lawful_goodwill | edit_lane_credit | route_asset_momentum | staff_morale | schedule_slack | archive_compliance_credit | equivalent
    pool_state_before: declared | contested | unallocated | reserved
  claimants_min: 2
  incompatible_demands_present: true
  default_claimant_known: true
  future_route_or_asset_effect_possible: true
  no_fixed_turn_trigger: true
assignments:
  ledger: storyteller.card.broadcast_dividend_claim_ledger.v1
  hearing: storyteller.rite.broadcast_dividend_allocation_hearing.v1
  primary_claimant: <claimant row>
  rival_claimant: <claimant row>
  handler_or_absence: <handler or explicit_absence>
  route_asset_or_absence: <asset or explicit_absence>
offered_choices:
  - reinvest_route_asset
  - pay_harmed_claimant
  - seed_public_reserve
  - buy_lawful_buffer
  - accept_sponsor_harvest
  - protect_staff_proxy
  - hold_producer_reserve
  - let_default_capture
branch_result:
  selected_branch: <branch>
  paid_claimant: <claimant or none>
  unpaid_claimants:
    - <claimant>
  pool_state_after: allocated | split | reserved | captured | converted | expired | recovery_only
  emitted_event: storyteller.event.dividend_claim_default.v1 | none
  future_route_or_asset_effect: <effect>
  counter_deltas:
    relief:
      - <relief>
    cost:
      - <cost>
assertions:
  - source_success_preserved
  - spendable_pool_declared
  - claimants_min_two
  - incompatible_demands_visible
  - ledger_and_hearing_assignable
  - branch_outcomes_diverge
  - success_has_cost
  - default_capture_mutates_future_state
  - replay_provenance_not_trigger_logic

Non-goals

  • Not a reward chest.
  • Not passive income.
  • Not a global positive mood meter.
  • Not a fixed-turn bonus phase.
  • Not a dashboard/governance page.
  • Not raw volume or count satisfaction.
  • Not a free way to erase prior debt, custody scars, legality mismatch, proxy exposure, coalition pressure, or ending scars.