kyeongmin
c53722ad0b
feat(#86): IMP-86 u1~u5 placeholder zones_data + invariant guard
Mapper FitError handler now appends a __empty__ placeholder to zones_data
and a matching debug_zone so the surviving cardinality stays in sync with
the active layout preset's grid rows. A pre-build_layout_css invariant
guard fails fast with preset/positions/count diagnostics if drift recurs.
Per-record telemetry (adapter_needed, mapper_fit_error, provisional) is
exposed on both placeholder records; authoritative slide_status.adapter_
needed_units schema is unchanged.
Closes mdx03 reject override regression: Step 12 AI router now reachable
without heights_px ValueError; default-path behavior unaffected.
u1 — FitError placeholder zones_data + debug_zone (src/phase_z2_pipeline.py)
u2 — pre-build_layout_css invariant guard (src/phase_z2_pipeline.py)
u3 — horizontal-2 normal+placeholder helper unit (test_compute_per_zone_geometry.py)
u4 — mdx03 reject override → Step 12 integration + default regression
u5 — placeholder telemetry surface (adapter_needed/mapper_fit_error/provisional)
Tests:
- u3 helper: 7 passed (0.06s)
- u4+u5 integration: 2 passed (7.87s)
- Phase Z2 + AI fallback regression: 544 passed (66.28s)
- Broader sweep (excl. matching/pipeline heavy): 1066 passed (96.12s)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 18:25:14 +09:00
..
2026-05-21 14:56:56 +09:00
2026-05-08 09:47:58 +09:00
2026-05-23 07:36:57 +09:00
2026-05-23 18:25:14 +09:00
2026-05-23 18:25:14 +09:00
2026-03-24 17:25:47 +09:00
2026-05-19 20:23:36 +09:00
2026-05-23 16:56:38 +09:00
2026-05-23 16:56:38 +09:00
2026-05-23 16:56:38 +09:00
2026-05-23 16:56:38 +09:00
2026-05-20 19:31:26 +09:00
2026-05-21 22:14:05 +09:00
2026-05-21 19:39:16 +09:00
2026-05-18 06:25:05 +09:00
2026-05-22 21:54:38 +09:00
2026-05-22 00:19:10 +09:00
2026-05-22 00:19:10 +09:00
2026-05-22 00:19:10 +09:00
2026-05-22 00:19:10 +09:00
2026-05-22 00:19:10 +09:00
2026-05-22 00:19:10 +09:00
2026-05-22 00:19:10 +09:00
2026-05-22 00:19:10 +09:00
2026-05-22 02:49:43 +09:00
2026-05-20 20:44:19 +09:00
2026-05-23 16:56:38 +09:00
2026-05-23 16:56:38 +09:00
2026-05-22 00:19:10 +09:00
2026-05-22 21:54:38 +09:00
2026-05-22 05:00:07 +09:00
2026-05-21 00:40:58 +09:00
2026-05-23 16:56:38 +09:00
2026-05-23 16:56:38 +09:00
2026-05-21 22:14:05 +09:00
2026-05-22 05:00:07 +09:00
2026-05-14 07:41:12 +09:00
2026-05-17 22:29:17 +09:00
2026-05-16 02:28:46 +09:00
2026-05-22 00:19:10 +09:00
2026-05-23 16:56:38 +09:00
2026-05-22 21:54:38 +09:00
2026-05-22 21:54:38 +09:00
2026-05-21 22:14:05 +09:00