{
  "iter_id": "form-a.1",
  "date": "2026-05-13",
  "mode": "standard",
  "outcome": "DONE",
  "tasks_total": 12,
  "tasks_completed": 12,
  "dispatches": [
    {
      "task_range": [1, 5],
      "outcome": "DONE",
      "reloops_per_task": {
        "1": 0,
        "2": 1,
        "3": 0,
        "4": 0,
        "5": 0
      },
      "review_loops_spec": 0,
      "review_loops_quality": 0,
      "notes": "Plan recon defect: load_workspace prefers .ail siblings since ext-cli.1, so bulk-render of .ail siblings broke 7 Group-A tests whose entry was .ail.json. Inline forward-pull of Task-3 migrations + 4 transient #[ignore]'s on workspace.rs mod tests (relocated cleanly in Task 5).",
      "test_count_pre_dispatch": 558,
      "test_count_post_dispatch": 560,
      "test_count_ignored_post_dispatch": 4
    },
    {
      "task_range": [6, 12],
      "outcome": "DONE",
      "reloops_per_task": {
        "6": 0,
        "7": 1,
        "8": 1,
        "9": 0,
        "10": 0,
        "11": 0,
        "12": 0
      },
      "review_loops_spec": 0,
      "review_loops_quality": 0,
      "notes": {
        "task7_reloop": "ail_run_accepts_ail_source_with_same_stdout_as_ail_json initial re-author used tempfile-with-PID-suffix path; loader name-checks module-name-vs-file-stem and rejected. Repaired to use per-process tempdir with hello.ail.json as basename.",
        "task8_reloop": "Pre-T8 cargo-test green pre-deletion required pulling forward 20 stale-.ail.json-reference repairs that T1-5 missed: 12 `let example = X.ail.json` Group-B sites in e2e.rs + 5 ailang_core::load_workspace Group-A sites in e2e.rs + 3 ail_run Group-B sites in typeclass_22b3.rs. Post-deletion failure in schema_coverage required pulling T9 Step 5 (corpus flip + ailang_surface::load_module switch) forward into T8."
      },
      "test_count_pre_dispatch": 560,
      "test_count_post_dispatch": 557,
      "test_count_ignored_post_dispatch": 3,
      "test_count_retired": "1 (T7: render_parse_round_trip_canonical) + 3 (T9: print_then_parse_round_trips_every_fixture, every_ail_fixture_matches_its_json_counterpart, cli_render_then_parse_preserves_canonical_bytes_on_every_fixture) = 4 total. Net: 560 + 1 (un-ignore carve_out_inventory) - 4 retired = 557."
    }
  ],
  "blocked_reason": null,
  "iter_totals": {
    "test_count_pre_iter": 558,
    "test_count_post_iter": 557,
    "test_count_ignored_post_iter": 3,
    "corpus_ail_pre_iter": 58,
    "corpus_ail_post_iter": 157,
    "corpus_ail_json_pre_iter": 164,
    "corpus_ail_json_post_iter": 8,
    "carve_outs": [
      "broken_unbound.ail.json",
      "prelude.ail.json",
      "test_22b2_invalid_superclass_param.ail.json",
      "test_22b2_kind_mismatch.ail.json",
      "test_22b2_unbound_constraint_var.ail.json",
      "test_ct1_bad_qualifier.ail.json",
      "test_ct1_bare_xmod_rejected.ail.json",
      "test_ct1_qualified_class_rejected.ail.json"
    ],
    "milestone_closed": "Form-A as the default authoring surface",
    "bench_compile_check_exit": 0,
    "bench_cross_lang_exit": 0
  }
}
