{
  "schema_version": 1,
  "description": "Data behind docs/progress.md (the development-progress dashboard). Update this file and run `python scripts/build_progress_page.py`; never edit docs/progress.md by hand.",
  "as_of": "2026-09-03T09:45:00Z",
  "framework": {
    "amendment": "Amendment 20 (two-arm evidence charter for the covered-earnings correction design)",
    "pr": 405,
    "pr_state": "open; draft ratified through round 6.2",
    "next_ceremony": "A4 evidence freeze, then the C20 ratification chain toward revision 22"
  },
  "foundations": [
    {
      "text": "The Dynamics paper: the full design, the benchmark comparison against DYNASIM, MINT, and CBOLT, and the evaluation plan.",
      "href": "https://microcosm.institute/dynamics/paper"
    },
    {
      "text": "The population-view scoring harness: geometry blocks, trajectory windows, and the moment battery that scores candidate models.",
      "href": "https://github.com/PolicyEngine/microcosm-dynamics/tree/master/src/populace_dynamics/harness"
    },
    {
      "text": "Label-verified PSID readers building the 1968–2022 head/spouse earnings panel, plus the demographic and earnings data modules around it.",
      "href": "https://github.com/PolicyEngine/microcosm-dynamics/tree/master/src/populace_dynamics/data"
    },
    {
      "text": "A statutory Social Security benefit oracle (AIME/PIA) whose parameters load from PolicyEngine-US.",
      "href": "https://github.com/PolicyEngine/microcosm-dynamics/tree/master/src/populace_dynamics/ss"
    },
    {
      "text": "A locked, pre-registered evaluation contract: gate-1 thresholds are ratified and change only through public amendment plus a fresh referee round.",
      "href": "https://github.com/PolicyEngine/microcosm-dynamics/blob/master/gates.yaml"
    },
    {
      "text": "145 committed evidence artifacts — noise floors, gate runs, sensitivities — each pinned by reproduction tests.",
      "href": "https://github.com/PolicyEngine/microcosm-dynamics/tree/master/runs"
    },
    {
      "text": "The covered-earnings correction design itself, advanced through adversarial referee review to registry revision 21, with Amendment 20 in the ceremony pipeline.",
      "href": "https://github.com/PolicyEngine/microcosm-dynamics/pull/405"
    },
    {
      "text": "A public timeline-forecast ledger: 21 registered entries, every revision with its reasons on the record.",
      "href": "https://github.com/PolicyEngine/microcosm-dynamics/blob/master/docs/forecasts/timeline_ledger.json"
    }
  ],
  "arms": [
    {
      "key": "purpose",
      "label": "Prompt-purpose census",
      "description": "Establishing what each of the ~21,000 remaining items in the PSID's 1968–2023 questionnaires and codebooks is actually asking, so the model only uses variables whose meaning has been adjudicated rather than assumed. Each block runs a full pass, an independent dense audit, and a correction sweep before its entries are adopted into the governing ledger.",
      "done": 17585,
      "total": 20815,
      "unit": "prompts adopted (contiguous R1–R17585)"
    },
    {
      "key": "a3",
      "label": "A3 classification arm",
      "description": "Deciding how zeros and missing readings in the source data should be interpreted — a true zero, a question that was never asked, or an inapplicable route — across a 41,103-row queue of PSID variable readings, in 800-row blocks with 20% independent audits and correction sweeps.",
      "done": 41103,
      "total": 41103,
      "unit": "queue rows final-adopted — ARM COMPLETE"
    },
    {
      "key": "q5",
      "label": "Q5 semantic annotation",
      "description": "Verifying which survey questions connect to which data fields, document by document across the PSID questionnaire corpus: two independent annotators per document, then a reconciliation that seals its table of record.",
      "done": 45,
      "total": 257,
      "unit": "documents sealed"
    }
  ],
  "forecast": {
    "ledger_entry": 22,
    "registered_at": "2026-09-03",
    "milestones": [
      {
        "name": "Milestone A — revision-22 ratification (A20 framework operative)",
        "p50": "2026-09-10",
        "p80": "2026-09-17",
        "note": "Not gated by the Q5 program; requires the purpose census (3,230 ranks remaining at registration), the A4 evidence freeze and the C20 ceremony chain."
      },
      {
        "name": "Milestone B — corrected-earnings successor authority and publication (the resolution event)",
        "p50": "2026-10-21",
        "p80": "2026-12-04",
        "note": "Gated by the Q5 program (45/257 documents, 20.2% of required atoms at registration; two document classes unstarted) and completion of the purpose census."
      }
    ]
  },
  "milestones": [
    {
      "date": "2026-09-03",
      "text": "E5 blocks 6–7 close (ledger v1.83; purpose reaches 84.48%) and the tranche's last block, block 8 to R17888, is in flight. Q5 seals 1999f and 1999q — the latter the campaign's largest table of record at 8,498 rows — reaching 45/257. An output-order mandate (full serialization first, no placeholders) is adopted as standing process law for large deliverables after a truncated sweep had to be re-run."
    },
    {
      "date": "2026-09-02",
      "text": "E5 blocks 3–5 close (block 3 CALIBRATED at 100% — the third perfect purpose block); purpose reaches 81.78%. Q5 seals 1997q after a dual-serialization cross-recovery repaired a damaged lane print without a re-run (43/257)."
    },
    {
      "date": "2026-09-02",
      "text": "Purpose census enters the E5 era (2003–2011 questionnaires; tranche R15625–R17888 pinned) and reaches 77.53% overnight; Q5 seals 1996q and 1997f (42/257)."
    },
    {
      "date": "2026-09-01",
      "text": "The A3 classification arm COMPLETES: all 41,103 queue rows final-adopted (49,722 adjudicated ranks across the A1/A2/A3 programs, zero predicate defects campaign-wide). Purpose census reaches 71.00% with its last in-scope document (q2001) in the verification cycle; Q5 reaches 38/257."
    },
    {
      "date": "2026-08-30",
      "text": "Evening sprint: purpose reaches 60.97% (blocks 5–7 closed; q94–q95 complete; the q96 opener — E4’s final document — enters audit); A3 reaches 93.4% with its first two audit-clean blocks ever; Q5 seals 1992q (34/257) under a new occurrence-local binding-law ruling."
    },
    {
      "date": "2026-08-30",
      "text": "Purpose census reaches 55.61% (q94 B+C closed under ledger v1.44 after the audit reversed the opener’s imported simultaneity frame — the cross-document transfer prohibition holding under pressure); A3 frontier reaches 35,200/41,103 (85.6%)."
    },
    {
      "date": "2026-08-30",
      "text": "E3 questionnaire era completed and the E4 era opened overnight; f94 complete; purpose census reaches 54.10% contiguous. A3 reaches the 1968-era queue boundary (83.7%). Q5 seals documents 048–049 (33/257)."
    },
    {
      "date": "2026-08-29",
      "text": "Purpose census crosses 50% of the residual domain (contiguous R1–R10457 = 50.24%); q93 B+C complete."
    },
    {
      "date": "2026-08-28",
      "text": "f91 complete; purpose census at 43.11% contiguous; governing ledger reaches v1.26."
    },
    {
      "date": "2026-08-26",
      "text": "f89-era tranche closed: contiguous R1–R8552 = 41.09%; every rank of the 1,920-rank tranche went through pass, dense audit, adjudication where audits split, and correction sweep."
    },
    {
      "date": "2026-08-20",
      "text": "Timeline-forecast entry 21 registered: scope bifurcation into milestones A and B."
    }
  ],
  "links": [
    {
      "text": "Amendment 20 draft (PR #405)",
      "href": "https://github.com/PolicyEngine/microcosm-dynamics/pull/405"
    },
    {
      "text": "Pre-registered gate contract (gates.yaml)",
      "href": "https://github.com/PolicyEngine/microcosm-dynamics/blob/master/gates.yaml"
    },
    {
      "text": "Timeline forecast ledger (machine-readable)",
      "href": "https://github.com/PolicyEngine/microcosm-dynamics/blob/master/docs/forecasts/timeline_ledger.json"
    },
    {
      "text": "The Populace dynamics paper",
      "href": "https://populace.dev/papers/dynamics"
    }
  ]
}
