{
  "ncfu": {
    "definition": "Normalized Causal Future Uplift: future reward caused by model state update, normalized by the oracle update improvement over no-update.",
    "formula_pre": "NCFU = E[J(G(S_t ⊕ ΔS_model)) - J(G(S_t))] / (E[J(G(S_t ⊕ ΔS_gold)) - J(G(S_t))] + ε)",
    "interpretation": "Higher is better. Unlike raw return, NCFU asks whether the state update itself caused future improvement."
  },
  "behavior_fidelity": {
    "definition": "How well the simulator predicts observed user behavior such as continue/drop, dwell, comment and fast-swipe.",
    "formula_pre": "BehaviorFidelity = mean( AUC_continue, AUPRC_comment, 1 - normMAE_log_dwell, 1 - ECE_behavior )",
    "interpretation": "Higher means the simulator can reproduce behavior distributions; report by user segment and scenario."
  },
  "state_delta_cosine": {
    "definition": "Cosine similarity between predicted and gold state-delta vectors for trust/fatigue/satisfaction/preferences.",
    "formula_pre": "StateDeltaCosine = cos( Δs_pred, Δs_gold ) = (Δs_pred · Δs_gold) / (||Δs_pred|| ||Δs_gold|| + ε)",
    "interpretation": "Higher means the encoder learns direction of state change, not only whether the current chapter was liked."
  },
  "story_consistency": {
    "definition": "Canon/entity/plot continuity score for generated later content under personalized state updates.",
    "formula_pre": "StoryConsistency = 1 - weighted_mean(contradiction_rate, unsupported_major_fact_rate, invalid_retcon_rate, entity_status_error_rate)",
    "interpretation": "Personalization cannot win by breaking the novel. Track story consistency jointly with engagement."
  },
  "feedback_credit_assignment": {
    "definition": "Ability to trace later content changes back to the right feedback event and state field.",
    "formula_pre": "CreditAssignment = mean(culprit_event_F1, state_field_F1, credit_nDCG, repair_gain_correlation)",
    "interpretation": "Higher is better for delayed feedback and long-horizon fatigue scenarios."
  },
  "encoder_state_score": {
    "definition": "Aggregate score for the v4 encoder-state simulator across behavior, state and intervention validity.",
    "formula_pre": "EncoderStateScore = 0.35*BehaviorFidelity + 0.35*StateDeltaCosine + 0.20*CounterfactualConsistency + 0.10*(1-ECE)",
    "interpretation": "Use as a compact dashboard score, but always show component metrics to avoid hiding failures."
  },
  "calibration_ece": {
    "definition": "Expected calibration error for behavior and state-update confidence.",
    "formula_pre": "ECE = Σ_b |B_b|/n · | observed_accuracy(B_b) - mean_confidence(B_b) |",
    "interpretation": "Lower is better. Essential for implicit-only, noisy and sarcastic feedback."
  }
}
