{
  "generated_from": "platform model files (versions, required inputs) + forecast-ledger.json (grades, hygiene)",
  "purpose": "Every model LEXUN ships, every model it merely imagines, and the wall between them. A model appears as released here only because the code carries it and the release gate passed — never because an interface or a JSON edit exists.",
  "states": [
    "concept",
    "researching",
    "prototyping",
    "historical-validation",
    "shadow mode",
    "beta",
    "release-gated",
    "suspended",
    "retired"
  ],
  "core_version": "1.2.1",
  "models": [
    {
      "id": "runway",
      "version": "1.0.1",
      "required_inputs": [
        "cashToday",
        "monthlyRevenue",
        "revenueGrowthPct",
        "revenueVolPct",
        "monthlyCosts",
        "horizonMonths"
      ],
      "state": "release-gated",
      "validation": "One engine test suite covers all released models together (its check count is derived at each release and published as engine_checks in /system-manifest.json and on /platform — there is no separate per-model count), plus 96 frozen reproducibility results (platform/regression-snapshot.json, byte-compared at every release) and the full zero-fault release gate (self-counted in release-gate.mjs). These are engineering checks, not predictive accuracy — accuracy appears only after 10 resolved outcomes per domain, and no model-originated forecast has resolved yet.",
      "calibration": "no model-originated forecast has resolved; the public register holds operator-judgement forecasts only, scored on their own scoreboard. No accuracy percentage before 10 resolved outcomes per domain.",
      "domain": "business cash survival",
      "target": "probability that cash stays positive for the stated horizon, given the stated inputs",
      "supported_decisions": [
        "keep trading / runway check",
        "affordability of a recurring commitment against cash survival",
        "timing: what waiting typically costs"
      ],
      "unsupported_decisions": [
        "whether the business is a good business",
        "valuation or investment merit",
        "tax planning",
        "sector-specific demand forecasting",
        "anything requiring data the user has not entered"
      ],
      "optional_inputs": [
        "revenueVolPct",
        "committed one-off amounts"
      ],
      "output_distribution": "seeded Monte Carlo, 5,000 paths; survival probability band, runway percentiles (p10/p50/p90), four scenario shifts, per-input sensitivity",
      "horizon": "user-stated, 3–36 months — the bound the validator enforces; beyond it the model refuses rather than extrapolating. Longer horizons are a structural-scenario question this model does not claim.",
      "geography": "recorded on every decision (country + currency, UK preselected and visible) but not an input to the released calculation; UK-only reference figures are withheld for non-UK decisions instead of being presented as relevant",
      "reference_class": "ons-business-demography-2024 (bundled snapshot, shown as outside view only; never enters the simulation)",
      "assumptions": [
        "revenue volatility as stated or defaulted",
        "no unmodelled financing arrives",
        "costs move as entered"
      ],
      "known_weaknesses": [
        "does not model tax deadlines, debt covenants, receivables/payables timing, inventory, seasonality, customer concentration or correlated sector shocks",
        "scenario shifts are predefined stress-test assumptions, not historical shock percentiles",
        "reference class pools all UK businesses — not sector-, age-, size- or region-specific"
      ]
    },
    {
      "id": "career",
      "version": "1.1.1",
      "required_inputs": [
        "bufferToday",
        "monthlyEssentialCosts",
        "expectedNewIncome",
        "rampMonths",
        "incomeVolPct",
        "horizonMonths"
      ],
      "state": "release-gated",
      "validation": "One engine test suite covers all released models together (its check count is derived at each release and published as engine_checks in /system-manifest.json and on /platform — there is no separate per-model count), plus 96 frozen reproducibility results (platform/regression-snapshot.json, byte-compared at every release) and the full zero-fault release gate (self-counted in release-gate.mjs). These are engineering checks, not predictive accuracy — accuracy appears only after 10 resolved outcomes per domain, and no model-originated forecast has resolved yet.",
      "calibration": "no model-originated forecast has resolved; the public register holds operator-judgement forecasts only, scored on their own scoreboard. No accuracy percentage before 10 resolved outcomes per domain.",
      "domain": "career change financial resilience",
      "target": "probability the household buffer survives the transition window, given the stated inputs",
      "supported_decisions": [
        "financial survivability of a career change",
        "buffer adequacy against an income gap"
      ],
      "unsupported_decisions": [
        "whether the new career will succeed — no defensible base rate exists and the model says so",
        "salary negotiation",
        "job-offer probability",
        "occupation-level automation risk as a number"
      ],
      "optional_inputs": [
        "partner income",
        "severance"
      ],
      "output_distribution": "seeded Monte Carlo, 5,000 paths; survival probability band, buffer percentiles, four scenario shifts, per-input sensitivity",
      "horizon": "user-stated, 3–36 months — the bound the validator enforces; beyond it the model refuses rather than extrapolating. Longer horizons are a structural-scenario question this model does not claim.",
      "geography": "recorded on every decision (country + currency, UK preselected and visible) but not an input to the released calculation; UK-only reference figures are withheld for non-UK decisions instead of being presented as relevant",
      "reference_class": "indeed-hiringlab-ons-2026 (bundled snapshot, outside view only)",
      "assumptions": [
        "income gap as stated",
        "spending as entered",
        "no unmodelled income arrives"
      ],
      "known_weaknesses": [
        "models the finances of the transition, not the transition itself — no occupation, vacancy, wage-distribution or training data is connected",
        "automation exposure remains a qualitative, clearly-labelled checker, not an evidence-backed task model",
        "scenario shifts are predefined stress-test assumptions, not historical shock percentiles"
      ]
    },
    {
      "id": "opportunity",
      "version": "1.0.1",
      "required_inputs": [
        "bufferToday",
        "upfrontCost",
        "monthlyCommitment",
        "monthlyNetIncome",
        "monthlyEssentialCosts",
        "incomeVolPct",
        "horizonMonths"
      ],
      "state": "release-gated",
      "validation": "One engine test suite covers all released models together (its check count is derived at each release and published as engine_checks in /system-manifest.json and on /platform — there is no separate per-model count), plus 96 frozen reproducibility results (platform/regression-snapshot.json, byte-compared at every release) and the full zero-fault release gate (self-counted in release-gate.mjs). These are engineering checks, not predictive accuracy — accuracy appears only after 10 resolved outcomes per domain, and no model-originated forecast has resolved yet.",
      "calibration": "no model-originated forecast has resolved; the public register holds operator-judgement forecasts only, scored on their own scoreboard. No accuracy percentage before 10 resolved outcomes per domain.",
      "domain": "major purchase / commitment affordability",
      "target": "probability the buffer survives the commitment over the horizon, given the stated inputs",
      "supported_decisions": [
        "affordability of a major purchase or recurring commitment",
        "largest commitment the median path survives"
      ],
      "unsupported_decisions": [
        "investment value or resale prediction",
        "whether the purchase is worth it — suitability and preference are not modelled",
        "house-price or asset-price forecasting"
      ],
      "optional_inputs": [
        "income volatility"
      ],
      "output_distribution": "seeded Monte Carlo, 5,000 paths; survival probability band, buffer percentiles, four scenario shifts, per-input sensitivity",
      "horizon": "user-stated, 3–36 months — the bound the validator enforces; beyond it the model refuses rather than extrapolating. Longer horizons are a structural-scenario question this model does not claim.",
      "geography": "recorded on every decision (country + currency, UK preselected and visible) but not an input to the released calculation; UK-only reference figures are withheld for non-UK decisions instead of being presented as relevant",
      "reference_class": "fca-financial-lives-2024 (bundled snapshot, outside view only)",
      "assumptions": [
        "commitment cost as entered",
        "income as stated",
        "no depreciation, resale or opportunity-cost modelling"
      ],
      "known_weaknesses": [
        "affordability only — depreciation, maintenance, insurance, resale and opportunity cost are not modelled and the surfaces say so",
        "no specialist modes per purchase type",
        "scenario shifts are predefined stress-test assumptions, not historical shock percentiles"
      ]
    }
  ],
  "proposed_models": [
    {
      "id": "household resilience",
      "state": "concept",
      "release_path": "historical validation against evidence available at the time, then a shadow-mode record, then the release gate — none of which exists yet",
      "blocked_on": "the backend architecture decision recorded in the operator task sheet"
    },
    {
      "id": "hiring",
      "state": "concept",
      "release_path": "historical validation against evidence available at the time, then a shadow-mode record, then the release gate — none of which exists yet",
      "blocked_on": "the backend architecture decision recorded in the operator task sheet"
    },
    {
      "id": "business expansion",
      "state": "concept",
      "release_path": "historical validation against evidence available at the time, then a shadow-mode record, then the release gate — none of which exists yet",
      "blocked_on": "the backend architecture decision recorded in the operator task sheet"
    },
    {
      "id": "debt strategy",
      "state": "concept",
      "release_path": "historical validation against evidence available at the time, then a shadow-mode record, then the release gate — none of which exists yet",
      "blocked_on": "historical validation data and method"
    },
    {
      "id": "housing move",
      "state": "concept",
      "release_path": "historical validation against evidence available at the time, then a shadow-mode record, then the release gate — none of which exists yet",
      "blocked_on": "historical validation data and method"
    },
    {
      "id": "education and retraining",
      "state": "concept",
      "release_path": "historical validation against evidence available at the time, then a shadow-mode record, then the release gate — none of which exists yet",
      "blocked_on": "historical validation data and method"
    },
    {
      "id": "retirement",
      "state": "concept",
      "release_path": "historical validation against evidence available at the time, then a shadow-mode record, then the release gate — none of which exists yet",
      "blocked_on": "historical validation data and method"
    },
    {
      "id": "project delivery",
      "state": "concept",
      "release_path": "historical validation against evidence available at the time, then a shadow-mode record, then the release gate — none of which exists yet",
      "blocked_on": "historical validation data and method"
    },
    {
      "id": "supply-chain risk",
      "state": "concept",
      "release_path": "historical validation against evidence available at the time, then a shadow-mode record, then the release gate — none of which exists yet",
      "blocked_on": "the backend architecture decision recorded in the operator task sheet"
    }
  ],
  "outcome_verification_grades": {
    "A": "automatically resolved from an authoritative source by a connector — impossible in this architecture (no connectors exist), so no outcome can carry it yet",
    "B": "manually resolved against an authoritative published figure: the exact first-published sentence, its URL on the frozen source host, and its publication time are all sealed in the ledger",
    "C": "corroborated user report — not applicable to the public register",
    "D": "unverified user report — private workspace outcomes; never enter the public record",
    "E": "unresolved, ambiguous, or missing evidence"
  },
  "graded_outcomes": [
    {
      "forecast_id": "lxf_external_002",
      "grade": "B",
      "forecaster": "operator judgement"
    },
    {
      "forecast_id": "lxf_external_003",
      "grade": "B",
      "forecaster": "operator judgement"
    },
    {
      "forecast_id": "lxf_external_004",
      "grade": "B",
      "forecaster": "operator judgement"
    },
    {
      "forecast_id": "lxf_external_009",
      "grade": "B",
      "forecaster": "operator judgement"
    },
    {
      "forecast_id": "lxf_external_011",
      "grade": "B",
      "forecaster": "operator judgement"
    },
    {
      "forecast_id": "lxf_external_012",
      "grade": "B",
      "forecaster": "operator judgement"
    }
  ],
  "ledger_validation": "Enforced on every run of this tool, release-blocking: open forecasts carry criterion, due date and frozen resolution source, and are never due before their own data cutoff; resolved outcomes carry grade-B evidence and never precede source publication; withdrawn forecasts are never scored and always carry a permanent reason; every forecast declares its origin so scoreboards stay separate."
}
