Risk Forecast Commitment Lens / 风险预测承诺 Lens
This lens observes whether 风险预测承诺线 and 风险预测承诺机制 correctly make forecasts used in management decisions into accountable in-world objects.
The current corpus already has strong after-the-fact surfaces: recognized basis, branch eligibility receipts, capacity liability, grievance merging, faction commitments, and route-asset maintenance. This lens covers the earlier edge: a forecast can decide who is risked before proof arrives. That forecast must be player-facing, branchable, and later checkable.
Primary observation link
This lens observes:
- 风险预测承诺线;
- 风险预测承诺机制;
- adjacent future consumers: 播出确认基准线, 分支资格回执线, 播出容量责任级联线, 观众申诉并案登记线, 派系承诺账本, and 路线资产维护分诊线;
- shared systems Fan Oxygen, Broadcast Reality, Producer License and Pressure, and Route Assets and Custody.
It is observed through:
Observable promise
A forecast used to justify a branch cannot remain an invisible probability, safety label, or algorithmic confidence score.
The implementation must answer:
What decision used the forecast, what surface was predicted, who owns the forecast, who benefits if it stays silent, who is harmed if it is wrong, what posture the player chose, and which future surface will test it?
The lens fails if a route can unlock from risk low, safe, predicted success, expected stability, model says yes, confidence score, or probability high without a docket, posture, miss consequence, and future check.
Must pass
1. Entry is state-triggered by a decision using forecast
Required evidence:
entry_state_required:
trigger_kind: state_pressure
source_decision_present: true
decision_uses_forecast_as_justification: true
forecast_would_change_branch_or_route: true
predicted_surface_visible: true
projected_claim_or_explicit_absence_visible: true
future_check_surface_visible_or_explicit_absence: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_forecast_count_trigger: true
no_dashboard_or_lens_health_trigger: trueThe lens fails if entry comes from a fixed planning phase, chapter beat, turn number, day/week interval, raw forecast count, dashboard alert, lens health, or generic risk-threshold prompt.
2. Docket row is concrete
风险预测承诺案卷 or equivalent must record:
docket_required:
forecast_id: <stable id>
source_decision:
source_option_set_or_rite: <choice set, rite, card, route, or package>
decision_label: <decision>
decision_uses_forecast_as_justification: true
forecast_surface:
predicted_surface: fan_oxygen | audience_stability | broadcast_capacity | sponsor_stop_loss | inspection_heat | public_receipt | lawful_acceptance | route_asset | broadcast_reality | producer_license | equivalent
projected_claim: <claim>
projected_range_or_threshold: <range threshold or explicit_absence>
confidence_posture: narrow | wide | contested | withheld | explicit_absence
proof_basis_or_absence: <basis or explicit_absence>
accountability:
forecast_owner: producer | management | sponsor | inspector | archive | editor | fan_public | route_claimant | algorithmic_table | explicit_absence | equivalent
beneficiary_if_silent: <actor or explicit_absence>
harmed_if_wrong: <reader or explicit_absence>
future_check_surface: <surface or explicit_absence>The lens fails if the row contains only a number, trend, probability, mood, heat score, or abstract risk level.
3. Forecast posture is concrete
风险预测承诺复核 must require a concrete posture before the decision proceeds or is delayed.
posture_required:
selected_posture: certify_forecast | publish_range | hedge_reserve | attach_dissent | delay_until_reading | suppress_forecast | default_clean_prediction
reserve_or_hedge_or_absence: <reserve, hedge, bridge, or explicit_absence>
dissent_row_or_absence: <reader or claimant dissent or explicit_absence>
miss_state_if_wrong: forecast_miss | hostile_reader | clawback | public_addendum_required | lawful_recheck | sponsor_gate | route_costlier | recovery_only | contradiction_pendingA generic accept risk, use forecast, ignore, proceed, try later, or confidence high result is insufficient.
4. Branch families diverge
At least five constructive branch families plus a default or explicitly blocked state must be playable or state-blocked:
- certify forecast;
- publish range;
- hedge reserve;
- attach dissent;
- delay until reading;
- suppress forecast;
- default clean prediction.
They must differ by forecast state after, immediate relief, cost/scar, harmed reader posture, reserve/dissent posture, and future route effect.
5. Constructive branch has relief, cost, and future effect
Every constructive branch must mutate at least three durable surfaces:
constructive_result_required:
selected_posture: certify_forecast | publish_range | hedge_reserve | attach_dissent | delay_until_reading
forecast_state_after: forecast_certified | range_published | reserve_hedged | dissent_attached | decision_delayed | equivalent
counter_deltas:
relief: at_least_one
cost: at_least_one
future: at_least_oneAccepted surfaces include forecast owner liability, public receipt legitimacy, public receipt distrust, fan oxygen resentment, audience anxiety, sponsor stop-loss pressure, inspection heat, lawful recheck pressure, route asset pressure, broadcast reality contradiction, producer license pressure, reserve capacity locked, and future recovery cost.
6. Hidden or underfilled forecast defaults
预测失准默认 must fire or arm when a forecast is used cleanly while hiding or underfilling source decision, predicted surface, projected claim, forecast owner, beneficiary, harmed reader, dissent, reserve, or future check.
Required default payload:
default_event_required:
event: storyteller.event.forecast_miss_default.v1
source_forecast_id_or_absence: <forecast id or explicit_absence>
source_decision: <decision>
predicted_surface: <surface>
projected_claim_or_absence: <claim or explicit_absence>
later_check_surface: <surface that tested the forecast>
miss_kind: threshold_breached | range_hidden | harmed_reader_hidden | reserve_absent | dissent_suppressed | owner_absent | false_clean_prediction | equivalent
beneficiary_if_silent: <actor or explicit_absence>
harmed_reader_after: hostile | public_counter | lawful_recheck | oxygen_recheck | sponsor_clawback | route_costlier | recovery_only | contradiction_pending | equivalent
future_route_effect: public_addendum_required | lawful_recheck_required | sponsor_gate_required | reserve_consumed | route_costlier | blocked | recovery_only | contradiction_pending | equivalent
counter_deltas_min: 3The default fails if it only posts warning text, lowers mood, changes a hidden risk score, or narrates that the prediction was wrong without future route mutation.
7. Future surface consumes forecast state
At least one downstream surface must consume the forecast state or default.
Valid consumers include fan oxygen recheck, audience grievance, public addendum, lawful recheck, sponsor gate, broadcast capacity liability, route loadout, route-asset maintenance, producer-license burden, broadcast-reality contradiction, or ending scar.
The lens fails if the forecast ends at explanation text.
8. No invisible probability unlock
A passing implementation must prove:
no_invisible_probability_unlock:
forecast_changes_branch_or_route: true
source_decision_named: true
predicted_surface_visible: true
owner_beneficiary_harmed_reader_visible_or_explicit_absence: true
selected_posture_visible: true
miss_state_or_future_check_visible: true
route_not_unlocked_by_probability_alone: trueThe lens fails if a probability, prediction, stability model, or risk forecast directly unlocks a route without in-world accountability.
Branch assertions
Certify assertion
selected_posture: certify_forecast
forecast_state_after: forecast_certified
relief_any:
- decision_speed_up
- sponsor_or_management_confidence_up
- route_access_preserved
cost_any:
- forecast_owner_liability_up
- producer_license_pressure_up
- harmed_reader_exposure_up
future_effect_any:
- signed_forecast_can_be_rechecked
- miss_creates_clawback_or_addendumPublish range assertion
selected_posture: publish_range
forecast_state_after: range_published
relief_any:
- public_receipt_legitimacy_up
- lawful_or_fan_trust_up
cost_any:
- sponsor_stop_loss_pressure_up
- audience_anxiety_up
- inspection_heat_up
future_effect_any:
- future_reader_accepts_with_range
- forecast_miss_softened_but_not_erasedHedge reserve assertion
selected_posture: hedge_reserve
forecast_state_after: reserve_hedged
relief_any:
- forecast_miss_severity_down
- recovery_path_preserved
cost_any:
- current_route_cost_up
- capacity_or_budget_locked
- sponsor_or_management_pressure_up
future_effect_any:
- reserve_consumed_if_miss
- future_branch_costlier_but_availableAttach dissent assertion
selected_posture: attach_dissent
forecast_state_after: dissent_attached
relief_any:
- silent_beneficiary_pressure_down
- harmed_reader_erasure_down
cost_any:
- handler_burden_up
- public_or_lawful_conflict_up
future_effect_any:
- rebuttal_route_armed
- forecast_can_be_challenged_laterDelay assertion
selected_posture: delay_until_reading
forecast_state_after: decision_delayed
relief_any:
- false_certainty_down
- forecast_miss_risk_down
cost_any:
- schedule_pressure_up
- audience_churn_up
- sponsor_stop_loss_pressure_up
future_effect_any:
- decision_reopens_with_reading
- unavailable_branch_receipt_may_be_neededSuppress assertion
selected_posture: suppress_forecast
forecast_state_after: forecast_suppressed
relief_any:
- immediate_management_pressure_down
cost_any:
- false_clean_prediction_up
- harmed_reader_hostility_up
future_effect_any:
- forecast_miss_default_armed
- future_recovery_cost_upDefault assertion
selected_posture: default_clean_prediction
forecast_state_after: false_clean_prediction
emitted_event: storyteller.event.forecast_miss_default.v1
future_effect_any:
- public_addendum_required
- lawful_recheck_required
- sponsor_gate_required
- route_costlier
- blocked
- recovery_only
- contradiction_pendingReplay evidence shape
lens_id: storyteller.lens.risk_forecast_commitment.v1
result: pass | fail
session_id: lens-risk-forecast-commitment-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
source_decision_present: true
decision_uses_forecast_as_justification: true
forecast_would_change_branch_or_route: true
predicted_surface_visible: true
no_fixed_turn_trigger: true
docket:
card: storyteller.card.risk_forecast_commitment_docket.v1
forecast_id: <stable id>
source_decision: <decision>
predicted_surface: <surface>
projected_claim: <claim>
forecast_owner: <owner or explicit_absence>
beneficiary_if_silent: <actor or explicit_absence>
harmed_if_wrong: <reader or explicit_absence>
future_check_surface: <surface or explicit_absence>
review:
rite: storyteller.rite.risk_forecast_commitment_review.v1
selected_posture: certify_forecast | publish_range | hedge_reserve | attach_dissent | delay_until_reading | suppress_forecast | default_clean_prediction
assigned_inputs:
handler_or_absence: <handler or explicit_absence>
proof_basis_or_absence: <basis or explicit_absence>
reserve_or_absence: <reserve or explicit_absence>
dissent_or_absence: <dissent or explicit_absence>
outcome:
forecast_state_after: forecast_certified | range_published | reserve_hedged | dissent_attached | decision_delayed | forecast_suppressed | false_clean_prediction
event_seen_or_armed: storyteller.event.forecast_miss_default.v1 | none
future_route_effect: <effect>
counter_deltas:
relief:
- <relief>
cost:
- <cost>
future:
- <future effect>
assertions:
entry_is_state_triggered: true
forecast_changes_branch_or_route: true
docket_row_concrete: true
forecast_posture_is_concrete: true
branch_families_diverge: true
constructive_branch_has_relief_cost_and_future_effect: true
hidden_or_underfilled_forecast_defaults: true
future_surface_consumes_forecast_state: true
no_invisible_probability_unlock: true
no_fixed_turn_day_week_raw_forecast_count_dashboard_or_lens_health_trigger: trueProgress metric
Progress is measured by branch observability, not by number of forecast rows.
- 20%: a decision that uses a forecast creates a concrete docket row.
- 40%: the docket records predicted surface, owner, beneficiary, harmed reader, and future check.
- 60%: the review offers at least five non-equivalent forecast postures.
- 80%: at least one constructive branch and one suppressed/default branch produce divergent future route effects.
- 100%: replay proves a future surface consumes the forecast state or forecast miss default with counter deltas.
Failure cases
The lens must fail if any are true:
- a route unlocks from probability alone;
- forecast entry is fixed-turn, fixed-day/week, dashboard, lens-health, or raw-count driven;
- source decision is unnamed;
- predicted surface is hidden;
- forecast owner, beneficiary, harmed reader, or future check is missing without explicit absence;
- certify, publish, hedge, dissent, delay, suppress, and default collapse into the same state;
- positive branches have no cost;
- suppression does not arm a miss default;
- forecast miss changes only flavor or score;
- replay evidence lacks forecast id, selected posture, future check, route effect, and counter deltas.
Non-goals
- Not a forecasting UI.
- Not a probability calculator.
- Not a generic risk dashboard.
- Not a fixed planning phase.
- Not a governance page.
- Not a raw lens-count satisfier.
- Not valid unless forecast commitment changes future play.