{
  "iter_id": "23.5",
  "date": "2026-05-12",
  "mode": "standard",
  "outcome": "DONE",
  "tasks_total": 8,
  "tasks_completed": 8,
  "reloops_per_task": {
    "1": 0,
    "2": 0,
    "3": 0,
    "4": 0,
    "5": 0,
    "6": 0,
    "7": 0,
    "8": 0
  },
  "review_loops_spec": 0,
  "review_loops_quality": 0,
  "blocked_reason": null,
  "bench_results": {
    "check_py_exit": 0,
    "compile_check_py_exit": 1,
    "compile_check_py_note": "one sub-ms check_ms regression (check_ms.local_rec_capture +26.36% over 25% tolerance) — ratifiable per audit tolerance, prelude grew by 5 polymorphic Def::Fns this iter",
    "cross_lang_py_exit": 0
  },
  "inline_implementer_fixes": [
    {
      "file": "crates/ailang-check/src/linearity.rs",
      "summary": "Workspace-aware visibility for imported poly free fns + class methods; symmetric extension of iter 23.4-prep",
      "surfaced_by": "Task 3 user-defined at_most calling prelude gt"
    },
    {
      "file": "crates/ailang-check/src/mono.rs",
      "summary": "Distinguish rigid Type::Var (skip) from $m-prefixed metavars (Unit-default) in free-fn target collection",
      "surfaced_by": "Task 3 — at_most's polymorphic body emitted spurious gt__Unit target"
    },
    {
      "file": "examples/test_22b1_missing_method.ail.json",
      "summary": "Rename class method ne→tne to avoid collision with new prelude free fn ne",
      "surfaced_by": "Task 1 — workspace registry method-name uniqueness check"
    }
  ]
}
