{
 "bundle_of": "C1",
 "schema_version": "0.40",
 "paper": {
  "id": "entrylib:2026.000002",
  "version": 3,
  "title": "Admissibility of lagged state space models through the ARIMA form of the whole model",
  "licence": "CC-BY-4.0",
  "status": "corrected",
  "date": "2026-11-10",
  "status_notice": {
   "date": "2026-11-10",
   "reason_code": "correction",
   "statement": "Limitations L2 and L4 are answered by a planned independent check (new evidence E25): an exact oracle in rational arithmetic with certified root enclosures, written by a new contributor (P5) without the prototype, compared on the models of the planned tests; it agrees with the PBH reference, the cyclotomic cancellation, the step-down test and the bisection on every model it decides, and its four hypotheses are reported as claims C29-C32, one of them inconclusive by its rule. The assumptions C14 (reworded to the band the tests leave out) and C19 are tested by it; claims C1-C5, C10, C11 and C16 carry its checks; claims C3, C4, C16 and C24-C26 relate to the earlier work they extend, supersede or contradict. The lab record (A9) and the results file (A18) are updated to the record's current version. No earlier claim's conclusion or ID changed.",
   "issued_by": "Ivan Svetunkov (ORCID 0000-0001-7826-0281)"
  }
 },
 "claims": [
  {
   "id": "C1",
   "statement": "The [[D4:per-lag check]] accepted all [[D17:3042 ETS(A,N,A) grid models]], 1482 of which do not have [[D3:decaying weights]], and 193 of [[D18:200 random GUM models with lags (1, 12)]], 10 of which do not have decaying weights.",
   "about": {
    "subject": "D4",
    "relation": "accepts models without",
    "object": "D3",
    "comparator": null,
    "conditions": [
     "D17",
     "D18"
    ]
   },
   "type": "descriptive",
   "role": "principal",
   "novelty": "refutation",
   "support": [
    {
     "kind": "simulation",
     "evidence": "E1",
     "artefacts": [
      "A1",
      "A3"
     ],
     "results": [
      "E1.R1",
      "E1.R3",
      "E1.R4",
      "E1.R6"
     ]
    }
   ],
   "provenance": "author_stated",
   "hypothesis": {
    "lab_event": "H1",
    "outcome": "supported"
   },
   "planning": "confirmatory",
   "planned_at": "2026-10-21T15:21:29Z",
   "planned_at_anchor": "git_remote",
   "test": {
    "framework": "deterministic",
    "parameters": {
     "seed": 2026,
     "edge_band": 1e-08,
     "pbh_tolerance": 1e-07,
     "cancellation_tolerance": 1e-09,
     "sample": "3042 ETS grid models and 200 random GUM models, fixed; no interim analysis"
    },
    "quantities": {
     "ets_bad": {
      "variable": "models accepted by the per-lag check that do not forget their initial states",
      "conditions": {
       "family": "ETS(A,N,A)"
      }
     },
     "gum_bad": {
      "variable": "models accepted by the per-lag check that do not forget their initial states",
      "conditions": {
       "family": "GUM"
      }
     }
    },
    "supported": "ets_bad > 0 and gum_bad > 0",
    "not_supported": "ets_bad == 0 and gum_bad == 0",
    "verdict": "computed",
    "runs": 1,
    "lab_plan": "PL1"
   },
   "scope": {
    "population": "pure additive lagged SSOE models",
    "conditions": [
     "ETS(A,N,A) with m = 4 and m = 12, alpha and gamma on the grid 0.05, 0.10, ..., 1.95",
     "GUM with lags (1, 12) and normal random F, g and w (standard deviations 0.35, 0.175, 0.175; mean of w 1)",
     "largest mode modulus from the PBH reference, band of 1e-8 around 1"
    ],
    "excludes": [
     "models with adaptive regressors",
     "multiplicative models"
    ]
   },
   "assumptions": [
    "C13",
    "C14"
   ],
   "limitations": [
    "L1",
    "L2"
   ],
   "relations": [
    {
     "type": "contradicts",
     "reference": "B3",
     "locator": "gum(), documentation of the argument bounds",
     "self": true,
     "note": "The documentation of gum() states that bounds = \"admissible\" guarantees the stability of the model."
    }
   ],
   "assessments": [
    {
     "by": "author",
     "strength": "moderate",
     "rationale": "Deterministic counts on a fixed grid and one seeded GUM sample, resting on a numpy reimplementation of the per-lag check and a reference written by the same agent."
    }
   ],
   "checks": [
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "Re-ran confirm.py --test perlag --seed 2026 --n 200: ETS 1482 of 3042 and GUM 10 of 200 reproduced; per_lag_max implements D4 and pbh_max implements D5; counts unchanged with PBH tolerances 1e-9 to 1e-3 and with the cancelled-theta roots as reference. Noted that the earlier wording 'accepted 1482 of 3042' was ambiguous because all 3042 were accepted; the statement was reworded."
    },
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "Reworded statement checked against a re-run at seed 2026: 3042 ETS accepted, 1482 of them not forgetting; 193 GUM accepted, 10 of them not forgetting."
    },
    {
     "by": "P5",
     "outcome": "confirmed",
     "extent": "partial",
     "notes": "The reference side checked by the exact oracle of P5 (E25): with it in place of the PBH reference, 1482 of the 3042 ETS(A,N,A) and 10 of the 200 GUM models accepted by the per-lag check do not forget their initial states (E25.T3); the per-lag values are the prototype's, not recomputed. 78 grid models with alpha + gamma = 2 lie within 4.4e-16 of 1 and are left out, as by the original test."
    }
   ],
   "verifiability": "open",
   "verifiability_flags": []
  },
  {
   "id": "C13",
   "statement": "The numpy function per_lag_max() returns the same largest eigenvalue modulus as smoothEigensCpp() of smooth 4.6.0 (replaced in commit 4a44c1c) for models with a constant measurement vector and without adaptive regressors.",
   "type": "methodological",
   "role": "supporting",
   "support": [
    {
     "kind": "assumption"
    }
   ],
   "assumption_category": "methodological",
   "check": "unchecked",
   "verifiability": "not_applicable",
   "verifiability_flags": []
  },
  {
   "id": "C14",
   "statement": "The [[D5:PBH reference]] with relative rank tolerance 1e-7 classifies every eigenvalue of modulus at least 1 of the [[D2:expanded discount matrix]] of the tested models correctly as both reachable and observable or not, outside the band of 1e-8 around the unit circle that the tests leave out.",
   "type": "methodological",
   "role": "supporting",
   "support": [
    {
     "kind": "assumption"
    }
   ],
   "assumption_category": "methodological",
   "check": "tested",
   "check_evidence": "E25",
   "verifiability": "not_applicable",
   "verifiability_flags": []
  }
 ],
 "definitions": [
  {
   "id": "D2",
   "term": "expanded discount matrix",
   "definition": "The transition matrix $\\tilde D$ of size $\\sum_j l_j$ of the lag-1 system equivalent to $v_t = D v_{t-l}$, in which component $j$ carries itself and its $l_j - 1$ lagged copies; $\\tilde F$, $\\tilde g$ and $\\tilde w$ are expanded in the same way, so that $\\tilde D = \\tilde F - \\tilde g \\tilde w'$.",
   "kind": "concept"
  },
  {
   "id": "D3",
   "term": "decaying weights",
   "definition": "A lagged SSOE model has decaying weights when the weights $\\tilde w' \\tilde D^j \\tilde g$ of the past observations in its fitted values tend to zero, that is, when every eigenvalue $\\lambda$ of its expanded discount matrix that is reachable from $\\tilde g$ and observable through $\\tilde w$ has $|\\lambda| < 1$; the largest such $|\\lambda|$ is its largest mode modulus. A mode that $\\tilde g$ does not reach but $\\tilde w$ sees carries an initial state whose effect is not covered: with $|\\lambda| > 1$ it grows.",
   "kind": "concept"
  },
  {
   "id": "D4",
   "term": "per-lag check",
   "definition": "The test applied by smoothEigens() of smooth 4.6.0 and of its repository until commit 4a44c1c (src/headers/eigenCalc.h) to models without adaptive regressors: every eigenvalue of every diagonal block of $D$, one block per unique lag, has modulus below 1; reimplemented in numpy as per_lag_max().",
   "kind": "method"
  },
  {
   "id": "D5",
   "term": "PBH reference",
   "definition": "The largest modulus among the eigenvalues $\\lambda$ of the expanded discount matrix for which the smallest singular values of $[\\lambda I - \\tilde D;\\ \\tilde w']$ and of $[\\lambda I - \\tilde D,\\ \\tilde g]$ both exceed $10^{-7}(\\|\\tilde D\\|_2 + \\|\\tilde g\\| + \\|\\tilde w\\|)$ (Popov-Belevitch-Hautus rank tests), computed with numpy as pbh_max().",
   "kind": "method"
  },
  {
   "id": "D6",
   "term": "cyclotomic cancellation",
   "definition": "The procedure that computes the coefficients of $$\\begin{aligned} \\theta(B) &= \\det(I - D L(B)) \\\\ \\phi(B) &= \\det(I - F L(B)) \\end{aligned}$$ by an inverse discrete Fourier transform of their values at the $N$-th roots of unity ($N$ the smallest power of 2 above $\\sum_j l_j$), and divides both by every cyclotomic polynomial $\\Phi_n(B)$, $n$ dividing one of the lags, for as long as it divides both with a remainder at most $10^{-9}$ times the sum of absolute coefficients; the quotient of $\\theta$ is the cancelled MA polynomial $\\theta^*(B)$.",
   "kind": "method"
  },
  {
   "id": "D7",
   "term": "step-down test",
   "definition": "The Levinson-Durbin step-down (Schur-Cohn) recursion on $1 + c_1 B + \\dots + c_n B^n$: for $j = n, \\dots, 1$, $$\\kappa_j = c_j, \\qquad c_i \\leftarrow \\frac{c_i - \\kappa_j c_{j-i}}{1 - \\kappa_j^2};$$ the test passes when every $|\\kappa_j| < 1$, which holds if and only if all roots lie outside the unit circle (the $\\kappa_j$ are the partial autocorrelations of the autoregression with this polynomial).",
   "source": "B2",
   "kind": "method"
  },
  {
   "id": "D8",
   "term": "GUM",
   "definition": "Generalised Univariate Model of the smooth package: a lagged SSOE model whose $F$, $g$ and $w$ are all estimated.",
   "source": "B3",
   "kind": "method"
  },
  {
   "id": "D9",
   "term": "ETS(A,N,A)",
   "definition": "Exponential smoothing with additive error, no trend and additive seasonality of period $m$; here in the lagged form with a level of lag 1 and one seasonal state of lag $m$, $F = I$, $w = (1, 1)'$, $g = (\\alpha, \\gamma)'$.",
   "source": "B1",
   "kind": "method"
  },
  {
   "id": "D10",
   "term": "check of the whole model",
   "kind": "method",
   "definition": "Admissibility of a lagged SSOE model from the MA polynomial $$\\theta(B) = \\det(I - D L(B))$$ of its ARIMA form: $\\theta$ is divided by its common factors with $\\phi(B) = \\det(I - F L(B))$ by [[D6:cyclotomic cancellation]], and the model is accepted when the cancelled polynomial $\\theta^*$ has no root in $|B| \\le 1$ and, for a model with ARIMA components, the AR polynomial of its ARIMA part is stationary; its largest mode modulus is $1/\\min|B|$ over the roots of $\\theta^*$. In the numpy prototype (admissibility.py, confirm.py, ets_arima.py) the roots come from numpy; in smooth the [[D7:step-down test]] decides and bisection gives the modulus."
  },
  {
   "id": "D11",
   "term": "bisection for the largest root modulus",
   "kind": "method",
   "definition": "Bisection on $r$ over the [[D7:step-down test]] applied to $\\theta^*(B/r)$, which passes exactly when $1/|B| < r$ for every root $B$ of $\\theta^*$, so that the smallest such $r$ is the largest mode modulus; run to a width of 1e-10 in the prototype and to a tolerance of 1e-6 in smooth.",
   "part_of": [
    "D10"
   ]
  },
  {
   "id": "D17",
   "term": "ETS(A,N,A) grid",
   "kind": "data",
   "definition": "The 3042 [[D9:ETS(A,N,A)]] models with $m = 4$ and $m = 12$ and $\\alpha$ and $\\gamma$ on the grid 0.05, 0.10, ..., 1.95 (confirm.py, plan PL1)."
  },
  {
   "id": "D18",
   "term": "random GUM models with lags (1, 12)",
   "kind": "data",
   "definition": "200 [[D8:GUM]] models with lags (1, 12): entries of $F$ normal with mean 0 and standard deviation 0.35, of $g$ with mean 0 and standard deviation 0.175, of $w$ with mean 1 and standard deviation 0.175 (confirm.py, seed 2026)."
  },
  {
   "id": "D20",
   "term": "random additive ETS and GUM models with long seasonal lags",
   "kind": "data",
   "definition": "The 575 models of plan PL4 (confirm.py --test stepdown --seed 2026 --n 200): the 500 models of plan PL3 generated afresh, 50 additive ETS models with seasonal lags from {24, 168, 365} and 25 GUM models with lags (1, 24, 168) and normal $F$ (standard deviation 0.3). The generator allows MA polynomial degrees up to 536 (level, trend, seasonal lags 168 and 365, constant)."
  },
  {
   "id": "D26",
   "term": "comparison with a reference",
   "kind": "design",
   "definition": "Each model's admissibility decision, and its largest mode modulus where both find it inadmissible, computed by the method studied and by a reference on the same model (the [[D5:PBH reference]], the roots by numpy, the numpy prototype of the check of the whole model or an exact oracle); the result is the number of models whose decisions differ and the largest absolute difference of the modulus. In the planned tests, models whose reference modulus lies within 1e-8 of 1 are left out and counted."
  },
  {
   "id": "D29",
   "term": "admissibility decision",
   "kind": "variable",
   "definition": "Whether a method accepts a model as admissible ([[D3:decaying weights]]); compared between a method and a reference as the number of models on which the two differ."
  },
  {
   "id": "D30",
   "term": "largest mode modulus",
   "kind": "variable",
   "definition": "The largest modulus of the modes that decide admissibility: for the [[D5:PBH reference]] the largest $|\\lambda|$ of the reachable and observable eigenvalues of the [[D2:expanded discount matrix]], for the check of the whole model $1/\\min|B|$ over the roots $B$ of the cancelled MA polynomial, for the per-lag check the largest $|\\lambda|$ of its blocks; a model is admissible when it is below 1."
  },
  {
   "id": "D41",
   "term": "exact oracle",
   "kind": "method",
   "definition": "Admissibility decided in exact rational arithmetic with certified root enclosures (independent/oracle.py, python-flint 0.9.0), written by the contributor P5 from the definitions of this claimset without the prototype: each float of $F$, $g$, $w$ is converted exactly to a rational, $D = F - g w'$, and $$\\theta(B) = \\det(I - D L(B)), \\qquad \\phi(B) = \\det(I - F L(B))$$ by fraction-free elimination over $\\mathbb{Q}[B]$; $G = \\gcd(\\theta, \\phi)$ exactly and $\\theta_G = \\theta / G$; $C$ is the product of the cyclotomic polynomials $\\Phi_n$, $n$ dividing a lag, at the multiplicity dividing both, and $\\theta_C = \\theta / C$; the roots of $\\theta_G$, $\\theta_C$ and $G / C$ are enclosed in Arb balls of 128 bits, raised to 512 and 2048 bits while a modulus ball contains 1, and a root counts as on the unit circle only when it is proved a root of unity whose $\\Phi_n$ divides the polynomial. The largest mode modulus is $1/\\min|B|$ over the roots; a model is admissible when it is below 1."
  },
  {
   "id": "D42",
   "term": "models of the planned tests",
   "kind": "data",
   "definition": "The models of the planned tests PL1-PL6 and the two examples of C10 and C11, drawn again by export_models.py exactly as confirm.py and cpp_check.py draw them (the counts of the original tests are reproduced), with the prototype's values for each: 3242 models of PL1 and PL2, 500 of PL3, 575 of PL4 and PL5 (MA degree up to 535), 800 of PL6 and 2 examples; 5119 in all."
  },
  {
   "id": "D43",
   "term": "comparison with the exact oracle",
   "kind": "design",
   "definition": "For each model, the admissibility decision and largest mode modulus of a method of the study against those of the [[D41:exact oracle]]: the PBH reference against $\\theta_G$; the prototype's cancellation, step-down test and bisection against $\\theta_C$. Counted are the models whose decisions differ and the largest absolute difference of the modulus on the models both find inadmissible (for the bisection, on every model with a value). Models the oracle cannot decide, and models whose certified largest modulus lies within $10^{-8}$ of 1, are left out and counted."
  },
  {
   "id": "D44",
   "term": "non-cyclotomic shared factor in the closed unit disc",
   "kind": "variable",
   "definition": "Whether $G / C$, the factor shared by $\\theta$ and $\\phi$ after removing the cyclotomic polynomials $\\Phi_n$ ($n$ dividing a lag), has a root in $|B| \\le 1$, certified by the [[D41:exact oracle]]; counted over models."
  }
 ],
 "evidence": [
  {
   "id": "E1",
   "profile": "simulation",
   "description": "Planned test of the per-lag check (lab plan PL1, run RN7): confirm.py --test perlag --seed 2026 --n 200 computed, for 3042 ETS(A,N,A) models (m = 4 and 12, alpha and gamma on the grid 0.05, 0.10, ..., 1.95) and 200 GUM models with lags (1, 12) (entries of F normal with mean 0 and standard deviation 0.35, of g with mean 0 and standard deviation 0.175, of w with mean 1 and standard deviation 0.175), the per-lag check's largest eigenvalue modulus and the PBH reference, and counted the models on which the two decisions disagree beyond a band of 1e-8 around 1.",
   "setup": {
    "studied": [
     "D4"
    ],
    "cases": [
     "D17",
     "D18"
    ],
    "procedure": [
     "D26",
     "D5"
    ],
    "lens": [
     "D29"
    ]
   },
   "availability": {
    "level": "public"
   },
   "lab_runs": [
    "RN7"
   ],
   "results": [
    {
     "id": "R1",
     "variable": "models accepted by the per-lag check that do not forget their initial states",
     "value": 1482.0,
     "conditions": {
      "family": "ETS(A,N,A)",
      "models": 3042
     }
    },
    {
     "id": "R2",
     "variable": "models rejected by the per-lag check that forget their initial states",
     "value": 0.0,
     "conditions": {
      "family": "ETS(A,N,A)",
      "models": 3042
     }
    },
    {
     "id": "R3",
     "variable": "models accepted by the per-lag check",
     "value": 3042.0,
     "conditions": {
      "family": "ETS(A,N,A)",
      "models": 3042
     }
    },
    {
     "id": "R4",
     "variable": "models accepted by the per-lag check that do not forget their initial states",
     "value": 10.0,
     "conditions": {
      "family": "GUM",
      "models": 200
     }
    },
    {
     "id": "R5",
     "variable": "models rejected by the per-lag check that forget their initial states",
     "value": 1.0,
     "conditions": {
      "family": "GUM",
      "models": 200
     }
    },
    {
     "id": "R6",
     "variable": "models accepted by the per-lag check",
     "value": 193.0,
     "conditions": {
      "family": "GUM",
      "models": 200
     }
    }
   ],
   "execution": {
    "code_version": "fe3ecfad42341fb0d2b81d02a7919b43baa5f695",
    "software": {
     "python": "3.13.16",
     "platform": "Linux-6.18.44-fc-v139-x86_64-with-glibc2.39"
    }
   },
   "artefacts": [
    "A1",
    "A3"
   ],
   "model": "random lagged SSOE models (additive ETS and GUM) generated by confirm.py",
   "parameters": "A3",
   "runs": 1,
   "seeds": [
    2026
   ]
  },
  {
   "id": "E25",
   "profile": "simulation",
   "description": "Planned test of the contributor P5 (lab plan AC5.PL1, run AC5.RN8, with the breakdown run AC5.RN9): the [[D41:exact oracle]], written without the prototype, on the [[D42:models of the planned tests]] exported by runs RN57-RN61, against the prototype's values stored with each model. The oracle was tried beforehand only on models of other seeds (AC5.RN2, AC5.RN6, AC5.RN7) and on hand-checkable models. AC5.RN8 took 30 s.",
   "setup": {
    "studied": [
     "D5",
     "D10",
     "D7",
     "D11",
     "D4"
    ],
    "cases": [
     "D42",
     "D17",
     "D18",
     "D20"
    ],
    "procedure": [
     "D43",
     "D41"
    ],
    "lens": [
     "D29",
     "D30",
     "D44"
    ]
   },
   "availability": {
    "level": "public"
   },
   "lab_runs": [
    "AC5.RN8",
    "AC5.RN9"
   ],
   "execution": {
    "code_version": "dc74fc0c9dd1efc112b3f4b97a57c52ba54595c7",
    "software": {
     "python": "3.13.18",
     "platform": "Linux-6.18.44-fc-v338-x86_64-with-glibc2.39"
    }
   },
   "artefacts": [
    "A19",
    "A20",
    "A18"
   ],
   "model": "the random and grid models of the planned tests PL1-PL6, and two examples",
   "parameters": "A19",
   "runs": 2,
   "tables": [
    {
     "id": "T1",
     "description": "Each set of models of the planned tests (D42) given to the exact oracle (D41), and over all sets: models given, left out by the edge band and undecided; decisions of the PBH reference and of the prototype's cancellation that differ from the oracle, and the largest absolute difference of the largest mode modulus on the models both find inadmissible; models with a non-cyclotomic shared factor in the closed unit disc (D44); models whose cancelled MA degree differs from the prototype's. Empty cells: the set has no such value of the prototype (perlag holds the PBH reference only; stepdown and cpp the cancellation only).",
     "row_labels": [
      "set"
     ],
     "columns": [
      {
       "variable": "models given to the oracle"
      },
      {
       "variable": "models on which the oracle failed"
      },
      {
       "variable": "models compared"
      },
      {
       "variable": "models whose shared non-cyclotomic factor could not be located"
      },
      {
       "variable": "models with a shared non-cyclotomic factor, all roots in |B| > 1"
      },
      {
       "variable": "models excluded by edge"
      },
      {
       "variable": "models excluded by undecided"
      },
      {
       "variable": "admissibility decisions of the PBH reference that differ from the exact oracle"
      },
      {
       "variable": "max abs difference of the largest mode modulus, PBH reference against the exact oracle, models both find inadmissible"
      },
      {
       "variable": "admissibility decisions of the prototype's cancellation that differ from the exact oracle"
      },
      {
       "variable": "max abs difference of the largest mode modulus, prototype's roots after cancellation against the exact oracle, models both find inadmissible"
      },
      {
       "variable": "models with a shared factor of theta and phi that is not a product of Phi_n, n dividing a lag, with a root in |B| <= 1"
      },
      {
       "variable": "models whose cancelled MA degree differs from the prototype's"
      }
     ],
     "artefact": "A18",
     "rows": [
      {
       "id": "r1",
       "label": [
        "perlag"
       ],
       "values": [
        3242.0,
        0.0,
        3164.0,
        0.0,
        0.0,
        78.0,
        0.0,
        0.0,
        4.21885e-15,
        null,
        null,
        0.0,
        null
       ]
      },
      {
       "id": "r2",
       "label": [
        "cancel"
       ],
       "values": [
        500.0,
        0.0,
        500.0,
        0.0,
        8.0,
        0.0,
        0.0,
        0.0,
        4.66294e-15,
        0.0,
        4.39426e-13,
        0.0,
        0.0
       ]
      },
      {
       "id": "r3",
       "label": [
        "stepdown"
       ],
       "values": [
        575.0,
        0.0,
        575.0,
        0.0,
        8.0,
        0.0,
        0.0,
        null,
        null,
        0.0,
        6.58518e-12,
        0.0,
        0.0
       ]
      },
      {
       "id": "r4",
       "label": [
        "cpp"
       ],
       "values": [
        800.0,
        0.0,
        797.0,
        0.0,
        8.0,
        3.0,
        0.0,
        null,
        null,
        0.0,
        5.20488e-10,
        0.0,
        0.0
       ]
      },
      {
       "id": "r5",
       "label": [
        "examples"
       ],
       "values": [
        2.0,
        0.0,
        2.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
       ]
      },
      {
       "id": "r6",
       "label": [
        "all"
       ],
       "values": [
        5119.0,
        0.0,
        5038.0,
        0.0,
        24.0,
        81.0,
        0.0,
        0.0,
        4.66294e-15,
        0.0,
        5.20488e-10,
        0.0,
        0.0
       ]
      }
     ]
    },
    {
     "id": "T2",
     "description": "The 575 models of PL4 and PL5 (MA degree up to 535 before cancellation): step-down decisions of the prototype that differ from the exact oracle; the largest absolute difference of the bisection value from the certified largest mode modulus, over the models that have one; and the degrees.",
     "conditions": {
      "set": "stepdown"
     },
     "row_labels": [
      "set"
     ],
     "columns": [
      {
       "variable": "step-down decisions of the prototype that differ from the exact oracle"
      },
      {
       "variable": "max abs difference of the largest mode modulus, prototype's bisection against the exact oracle"
      },
      {
       "variable": "models with a bisection value"
      },
      {
       "variable": "max degree of theta, exact"
      },
      {
       "variable": "max degree of the cancelled MA polynomial, exact"
      }
     ],
     "artefact": "A18",
     "rows": [
      {
       "id": "r1",
       "label": [
        "stepdown"
       ],
       "values": [
        0.0,
        5.7387e-11,
        198.0,
        535.0,
        533.0
       ]
      }
     ]
    },
    {
     "id": "T3",
     "description": "The models of PL1 and PL2 (3042 ETS(A,N,A) grid models, 200 GUM models with lags (1, 12)): the counts of C1 and C2 with the exact oracle in place of the PBH reference and the band of 1e-8.",
     "conditions": {
      "set": "perlag"
     },
     "row_labels": [
      "family"
     ],
     "columns": [
      {
       "variable": "models accepted by the per-lag check that do not forget their initial states, exact oracle"
      },
      {
       "variable": "models rejected by the per-lag check that forget their initial states, exact oracle"
      },
      {
       "variable": "models accepted by the per-lag check"
      },
      {
       "variable": "models of the family"
      }
     ],
     "artefact": "A18",
     "rows": [
      {
       "id": "r1",
       "label": [
        "ETS(A,N,A)"
       ],
       "values": [
        1482.0,
        0.0,
        3042.0,
        3042.0
       ]
      },
      {
       "id": "r2",
       "label": [
        "GUM"
       ],
       "values": [
        10.0,
        1.0,
        193.0,
        200.0
       ]
      }
     ]
    },
    {
     "id": "T4",
     "description": "The models in the edge band, by set and family (run AC5.RN9): their number, the largest distance of the certified largest mode modulus from 1, those with roots proved on the unit circle, and those whose decision by the method of the original test (the PBH reference for perlag, the prototype's cancellation for cpp) differs from the oracle's, with the largest modulus difference.",
     "row_labels": [
      "set",
      "family"
     ],
     "columns": [
      {
       "variable": "models in the edge band"
      },
      {
       "variable": "max distance of the certified largest mode modulus from 1, edge models"
      },
      {
       "variable": "edge models with roots proved on the unit circle"
      },
      {
       "variable": "edge models whose decision differs from the exact oracle"
      },
      {
       "variable": "max abs difference of the largest mode modulus against the exact oracle, edge models"
      }
     ],
     "artefact": "A18",
     "rows": [
      {
       "id": "r1",
       "label": [
        "perlag",
        "ETS(A,N,A)"
       ],
       "values": [
        78.0,
        4.44089e-16,
        2.0,
        6.0,
        2.44249e-15
       ]
      },
      {
       "id": "r2",
       "label": [
        "cpp",
        "ETS high degree"
       ],
       "values": [
        3.0,
        6.89469e-09,
        0.0,
        0.0,
        3.70814e-14
       ]
      }
     ]
    },
    {
     "id": "T5",
     "description": "The examples of C10 and C11 (run AC5.RN9): the certified largest mode modulus, its difference from the PBH reference and from the prototype's roots after cancellation, and the exact degrees of theta, of the shared cyclotomic factor and of the gcd of theta and phi.",
     "row_labels": [
      "model"
     ],
     "columns": [
      {
       "variable": "largest mode modulus, exact oracle (theta_G)"
      },
      {
       "variable": "abs difference of the largest mode modulus, PBH reference against the exact oracle"
      },
      {
       "variable": "abs difference of the largest mode modulus, prototype's roots after cancellation against the exact oracle"
      },
      {
       "variable": "degree of theta, exact"
      },
      {
       "variable": "degree of the shared cyclotomic factor, exact"
      },
      {
       "variable": "degree of the exact gcd of theta and phi"
      }
     ],
     "artefact": "A18",
     "rows": [
      {
       "id": "r1",
       "label": [
        "ETS(A,N,A,A), alpha=0.3, gamma=(0.1,0.05)"
       ],
       "values": [
        0.999997,
        1.66533e-15,
        1.11022e-16,
        193.0,
        25.0,
        25.0
       ]
      },
      {
       "id": "r2",
       "label": [
        "GUM start, orders (2,2), lags (1,12)"
       ],
       "values": [
        0.982937,
        7.77156e-16,
        2.22045e-16,
        26.0,
        14.0,
        14.0
       ]
      }
     ]
    }
   ]
  }
 ],
 "limitations": [
  {
   "id": "L1",
   "category": "analytic_flexibility",
   "statement": "The 3042 ETS(A,N,A) models of the planned test of the per-lag check form the same fixed grid as exploratory run RN3, whose result prompted the hypothesis; only the 200 GUM models of that test were new data.",
   "affects": [
    "C1"
   ],
   "impact": "reduces_transferability",
   "mitigation": "partial",
   "mitigation_evidence": "E1"
  },
  {
   "id": "L2",
   "category": "measurement",
   "statement": "The PBH reference and the cyclotomic cancellation were written by the same agent and share the lag-1 expansion code and numpy's LAPACK eigenvalue routines.",
   "affects": [
    "C1",
    "C2",
    "C3",
    "C10",
    "C11",
    "C16"
   ],
   "impact": "could_reverse",
   "mitigation": "addressed",
   "mitigation_evidence": "E25"
  }
 ],
 "artefacts": [
  {
   "id": "A1",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/fe3ecfad42341fb0d2b81d02a7919b43baa5f695/.claude/research/eigenChecker/admissibility.py",
   "availability": {
    "level": "public"
   },
   "version": "sha256:f966bd9f065ee5453a2f809cb4e0f3aee938068589540b45ddf36eaa225c8b04",
   "licence": "LGPL-2.1-only",
   "description": "numpy prototype of the admissibility check of pure additive lagged SSOE models: lag-1 expansion, the per-lag check of smoothEigens(), the PBH reference, ARIMA-form polynomials by inverse DFT, cyclotomic cancellation, step-down test and bisection; ETS and GUM model builders"
  },
  {
   "id": "A3",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/fe3ecfad42341fb0d2b81d02a7919b43baa5f695/.claude/research/eigenChecker/confirm.py",
   "availability": {
    "level": "public"
   },
   "version": "sha256:626d350fd940dd6fc4bdc057e350a3bbfcd92f71a51244fda0c31cb7d97e11f6",
   "licence": "LGPL-2.1-only",
   "description": "test script: per-lag check against the PBH reference, cancellation against the PBH reference, step-down decisions and bisection against roots, on seeded random model sets"
  },
  {
   "id": "A18",
   "kind": "data",
   "uri": "https://entrylib.org/p/2026.000002/v3/files/files/adam-admissible-bounds.results.csv",
   "version": "sha256:96615c120ab55a010bb7fb0343bd8200729319db710c0e8a329209e385f674ac",
   "availability": {
    "level": "public"
   },
   "licence": "CC-BY-4.0",
   "description": "Every result of the lab record at full precision, one row per result: the lab result, the run that produced it, the quantity, its conditions (JSON) and the value.",
   "columns": [
    {
     "name": "lab_result",
     "dimension": "lab record result"
    },
    {
     "name": "run",
     "dimension": "lab record run"
    },
    {
     "name": "quantity",
     "dimension": "quantity"
    },
    {
     "name": "conditions",
     "dimension": "conditions of the result"
    },
    {
     "name": "value",
     "variable": "value of the quantity"
    }
   ]
  },
  {
   "id": "A19",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/dc74fc0c9dd1efc112b3f4b97a57c52ba54595c7/claimset-code/adam-admissible-bounds/independent/oracle.py",
   "version": "sha256:7be8ce868a8ca841e448deef541e48a99d9600581aeda524c38f28c7e3cf39c6",
   "availability": {
    "level": "public"
   },
   "licence": "LGPL-2.1-only",
   "description": "The exact oracle of the contributor P5 (with test_oracle.py and, from commit e4963c49, edge_report.py in the same folder): exact theta, phi, gcd and cyclotomic cancellation over the rationals, certified root enclosures with python-flint 0.9.0, and the comparison with the prototype's values."
  },
  {
   "id": "A20",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/d0872799007766a53c31c243b67fb21e99fc35a4/claimset-code/adam-admissible-bounds/export_models.py",
   "version": "sha256:f5da0ffd7e8b77e330604f24ddddf6a68dc6c5f138548e1854505bf2a904f891",
   "availability": {
    "level": "public"
   },
   "licence": "LGPL-2.1-only",
   "description": "Draws the models of the planned tests PL1-PL6 as confirm.py and cpp_check.py do and writes them, with the prototype's values for each, to models.json (lab runs RN57-RN61)."
  }
 ],
 "references": [
  {
   "id": "B1",
   "target": "10.1007/978-3-540-71918-2",
   "id_type": "doi"
  },
  {
   "id": "B2",
   "target": "10.1016/0047-259X(73)90030-4",
   "id_type": "doi"
  },
  {
   "id": "B3",
   "target": "10.32614/CRAN.package.smooth",
   "id_type": "doi"
  }
 ]
}
