{
  "example_kind": "original synthetic manual planning case",
  "slug": "forecast-percentage-error-zero-boundary",
  "title": "Keep zero outcomes out of undefined percentage-error claims",
  "scenario": "Synthetic planning case: A toy duration evaluation has A:forecast two recorded minutes, observed zero; B:forecast three, observed four. A’s zero can reflect the recording convention, whose physical meaning is unresolved.",
  "layout": "evaluation",
  "dataset": {
    "heading": "Inspect the invented case records",
    "headers": [
      "Case",
      "Forecast recorded minutes",
      "Observed recorded minutes",
      "Absolute error",
      "Absolute percentage error"
    ],
    "rows": [
      [
        "A",
        "2",
        "0",
        "2 min",
        "Undefined: zero denominator"
      ],
      [
        "B",
        "3",
        "4",
        "1 min",
        "25%"
      ]
    ]
  },
  "derivation": "Absolute percentage error uses 100×|actual−forecast|/|actual|. B gives 100×1/4=25%; A requires 2/0 and is undefined. A’s unscaled absolute error remains two minutes.",
  "result": "A’s absolute percentage error is undefined because its observed denominator is zero. B’s is 25%; report A’s two-minute absolute error separately rather than inventing an overall finite percentage average.",
  "boundary": "This checks an observed-zero denominator in percentage error, distinct from a zero training-reference scale.",
  "limitations": "Recorded zero does not establish actual effort or duration semantics. No future forecast performance is inferred.",
  "sources": [
    "forecast"
  ],
  "tasks": [
    [
      "Verify observed-value semantics",
      "Evaluation owner",
      "Zero’s recording convention and unit are retained without inferring instantaneous physical work."
    ],
    [
      "Keep undefined scores visible",
      "Reviewer",
      "A is not replaced with zero percent or silently dropped from all-case coverage."
    ],
    [
      "Choose a justified comparison",
      "Planning lead",
      "Report compatible unscaled errors or an explicitly justified different metric, with its changed meaning declared."
    ]
  ],
  "faqs": [
    [
      "Does a zero observed value mean zero prediction error?",
      "No. A predicts two while zero is recorded, so its absolute difference is two."
    ],
    [
      "Can I divide by a tiny substitute value?",
      "Not silently. That introduces an arbitrary scoring rule and can radically change the result."
    ]
  ],
  "method_references": [
    {
      "id": "forecast",
      "title": "Forecasting: Principles and Practice — accuracy",
      "url": "https://otexts.com/fpp3/accuracy.html",
      "scope": "Genuine held-out forecast and point-error evaluation context. Binary scoring examples use their own explicit toy definitions; no real task model is validated."
    }
  ]
}
