{
  "task_id": "F1-conf-01",
  "first_growth_month": "2001-01",
  "last_month": "2026-09",
  "n_months_growth": 308,
  "n_months_missing_growth": 1,
  "n_analysed": 308,
  "mean_growth_12m": 2.5741201900729784,
  "mean_growth_12m_2001_2013": 2.3612153974326064,
  "mean_growth_12m_2014_2026": 2.7926277404144115,
  "growth_2014_06": 2.0976342438575157,
  "growth_2016_07": 0.8683633430518256,
  "growth_2020_05": 0.1982013035848551,
  "growth_2022_06": 8.979361103105798,
  "growth_2026_09": 3.7172508442689933,
  "max_growth_12m": 8.979361103105798,
  "max_growth_month": "2022-06",
  "min_growth_12m": -1.9587610037622771,
  "min_growth_month": "2009-07",
  "feasibility": "complete",
  "feasibility_reason": null,
  "data_issues": [
    {
      "issue": "cpi_vintage_2026-10-28.csv: no CPI value published for 2025-10 (empty cell)",
      "handling": "Left missing, not imputed; 12-month growth for that month (and for the month 12 later, if in the window) reported as missing."
    },
    {
      "issue": "Vintages overlap for 2014-01..2016-06 (30 months); 30 of them differ (revisions, e.g. seasonal-factor updates; max abs diff 0.455 index points).",
      "handling": "Per the availability rule the 2026-10-28 vintage is used for every month it covers (2014-01 onward, including the overlap); 2016-07-15 vintage only before 2014-01."
    },
    {
      "issue": "Growth rates for 2014-01..2014-12 divide a 2026-vintage level by a 2013 level from the 2016-07-15 vintage (mixed vintages), because the 2026 extract starts at 2014-01.",
      "handling": "Computed as specified by the rule (most recent available vintage per month); flagged as a limitation since 2013 levels may have been revised since 2016."
    },
    {
      "issue": "cpi_assembled.csv contains assembly errors: overlap months 2014-01..2016-06 taken from the older 2016 vintage; months absent: ['2016-07']; spurious months not in any source: ['2026-10']; from 2016-08 onward values are shifted one month later than in the source (so its empty cell sits at 2025-11 instead of 2025-10); in total 153 rows have a value and 31 rows a vintage label that disagree with the authoritative vintage files.",
      "handling": "The assembled file is not used for any computation; the series is rebuilt directly from the two vintage files (authoritative per TASK.md)."
    }
  ],
  "n_input_rows": {
    "cpi_vintage_2016-07-15.csv": 834,
    "cpi_vintage_2026-10-28.csv": 153,
    "cpi_assembled.csv": 957
  },
  "random_seed": null,
  "missing_growth_months": [
    "2025-10"
  ],
  "n_2001_2013": 156,
  "n_2014_2026": 152,
  "sensitivity": {
    "growth_2014_06_vintage2016": 2.005104214635245,
    "mean_growth_2014_01_2016_06_vintage2016": 0.9069521485742471,
    "mean_growth_2014_01_2016_06_used": 0.9032230102017299,
    "assembled_file_naive_mean_growth_12m": 2.5699421748391966,
    "assembled_file_naive_n_growth": 306,
    "assembled_file_naive_growth_2026_09": 3.353016322755642
  }
}