Forecast Variance Reconciliation Lens / 预测偏差复核 Lens

This lens observes whether Forecast Variance Reconciliation prevents a checked forecast from becoming a clean accuracy flag or generic miss when a later reader consumes the actual outcome.

Design Intent

Storyteller should let forecasts be useful, but the actual checked variance must become a row with source forecast, check surface, variance kind, beneficiary/owner, harmed reader, and future route effect. The lens fails if forecast_accurate or forecast_missed becomes a clean boolean.

Entry Oracle

entry_state:
  trigger_kind: state_pressure
  source_forecast_row_present: true
  actual_check_surface_present: true
  variance_between_forecast_and_actual_visible: true
  beneficiary_or_owner_visible_or_explicit_absence: true
  harmed_reader_or_explicit_absence_visible: true
  future_reader_consumes_variance_state: 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: true

Oracle Assertions

  1. The lens has bound markdown, an executable TypeScript sibling, a storyline, a mechanism, an addendum card, a reconciliation rite, and a default event.
  2. Entry is state pressure from a visible source forecast row, actual check surface, and future reader, not fixed turn/day/raw count/dashboard/lens health.
  3. The addendum separates source forecast row, actual check surface, forecasted range, observed result, variance kind, owner/beneficiary, harmed reader, variance after-state, and future route effect.
  4. The reconciliation branches diverge across within-range addendum, public notice, hedge reserve, owner clawback, review reopen, split interpretation, and unreconciled default outcomes.
  5. The default records hidden or ignored variance, beneficiary of false accuracy, harmed reader after-state, variance state after, future route effect, and at least three counter deltas.

Evidence Shape

lens_id: storyteller.lens.forecast_variance_reconciliation.v1
storyline: storyteller.storyline.forecast_variance_reconciliation.v1
entry:
  trigger_kind: state_pressure
  source_forecast_row_present: true
  actual_check_surface_present: true
  variance_between_forecast_and_actual_visible: true
  future_reader_consumes_variance_state: true
offered:
  card: storyteller.card.forecast_variance_addendum.v1
  rite: storyteller.rite.forecast_variance_reconciliation.v1
branches:
  constructive:
    selected_posture: accept_within_range_addendum | publish_variance_notice | consume_hedge_reserve | assign_owner_clawback | reopen_forecast_review | split_reader_interpretation
    relief: []
    cost: []
    future_effect_any: []
  default:
    selected_posture: unreconciled_forecast_variance_default
    event_seen_or_armed: storyteller.event.unreconciled_forecast_variance_default.v1
assertions:
  no_universal_clean_forecast_accuracy: true
  source_check_variance_harmed_reader_visible: true

Non-goals

Not a replacement for Risk Forecast Commitment, Forecast Miss Default, or generic replay comparison. It observes the after-check reconciliation between them and future readers.