test(#13): 기존 실패 11건 수복 — #98 스퍼트의 의도된 변경에 테스트 계약 동기화

11건 전수 분류 결과 프로덕션 결함 0, 전부 '의도된 #98 변경 대비 낡은 테스트':
- A. compute_zone_layout_cols (1건): Task 11d min-width floor(≤260px) 계약으로 갱신
- B. build_layout_css fixtures (3건): floor 반영값으로 재생성 (fixture refresh = 설계된 lock surface)
- C. imp36 self-fire (1건): auto-fit collapsed 0px track 을 점유 트랙 카운트에서 제외
- D. imp88 salvage (5건): T19d(silent layout mutation 금지) 차단 계약으로 재작성
  — 차단 터미널/feasibility 선행 차단/전진 금지/trace 필드 4개 측면 + 정책 차단 체인
- E. step17 case_c (1건): 실행 2단 + T28.5 no_font_shrink 정책 차단 터미널로 갱신
- 89a_pre_baseline_sha.json 재캡처 (capture 스크립트 docstring 이 명시한 선행 drift
  — #98 스퍼트 기간 누적, 정규 절차)

검증 게이트: pytest tests/phase_z2 + phase_z2_ai_fallback + regression = 990 passed 0 failed
참고: T19d 차단으로 _attempt_salvage_chain 의 layout_adjust 실행 코드는 도달 불가
dead code 상태 — 제거는 #16 (height-fit 재설계) 에서 판단

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-03 12:48:57 +09:00
co-authored by Claude Opus 4.8
parent 299b1f311f
commit 2c7881c5cc
8 changed files with 146 additions and 175 deletions
@@ -2,7 +2,7 @@
"schema_version": 2,
"axis": "IMP-89 89-a u4 — final.html SHA baseline captured via FULL run_phase_z2_mvp1 pipeline (flag OFF / default)",
"description": "Frozen SHA-256 of `final.html` bytes (the artifact written to disk at src/phase_z2_pipeline.py:5994-5996) captured by running the full Phase Z pipeline end-to-end for each mdx 01-05 under PHASE_Z_B4_MAPPER_SOURCE=OFF. Under flag OFF the 89-a selector `_select_mapper_template_id(plan, T)` returns `T` verbatim, so the mapper input is byte-identical to the pre-89-a legacy call shape `map_mdx_to_slots(section, unit.frame_template_id)` — the rendered HTML and therefore the final.html SHA match the pre-89-a baseline. The u4 regression test runs the same pipeline shape under flag OFF and asserts SHA equality. Regenerate only when an upstream mapper/render/template delta is deliberately reviewed and accepted.",
"captured_at_utc": "2026-05-27T04:19:30Z",
"captured_at_utc": "2026-07-03T03:39:01Z",
"renderer": {
"entrypoint": "src.phase_z2_pipeline.run_phase_z2_mvp1",
"write_site": "src/phase_z2_pipeline.py:5994-5996",
@@ -19,37 +19,37 @@
"01.mdx": {
"mdx_file": "01.mdx",
"run_id": "89a_baseline_01",
"final_html_size_bytes": 29959,
"sha256": "62d793166ca4cdd8d8d1d134d8659b43dce95bb958e7efd6ce0e72619b3c335d",
"final_html_size_bytes": 38731,
"sha256": "749ebb626e284a62d37b5be32af97c61ae2a5b8d4226d1c3fa90f04c843d9fef",
"pipeline_exit_code": null
},
"02.mdx": {
"mdx_file": "02.mdx",
"run_id": "89a_baseline_02",
"final_html_size_bytes": 25789,
"sha256": "333defb22f5da940b0bb3b3563730d12bd901d7b5d870a2aaef3f0c929d2dad1",
"final_html_size_bytes": 42127,
"sha256": "835d67eb7003bbcc55f3ea9ea73e6c781bb3b51d021a860200876c1d93cecfd2",
"pipeline_exit_code": null
},
"03.mdx": {
"mdx_file": "03.mdx",
"run_id": "89a_baseline_03",
"final_html_size_bytes": 40550,
"sha256": "d84e32b402cfbdcab6025b584b5e2657766f11b3fc110c217be0551e39f3f516",
"final_html_size_bytes": 40217,
"sha256": "44abaaf8fd0737002188c7af0ae3bd0dd281b313f74b8a50ddfd4aa0ddef3eb7",
"pipeline_exit_code": null
},
"04.mdx": {
"mdx_file": "04.mdx",
"run_id": "89a_baseline_04",
"final_html_size_bytes": 28725,
"sha256": "da3668d76fc582a1a26ad930b54a8abb7079969ebf91e79cfe7dd273ec4a0e95",
"pipeline_exit_code": null
"final_html_size_bytes": 40206,
"sha256": "8ba35bc6642b0e651cd46b9216070bd49052b016807611d9771fd630ca7a2613",
"pipeline_exit_code": 1
},
"05.mdx": {
"mdx_file": "05.mdx",
"run_id": "89a_baseline_05",
"final_html_size_bytes": 21739,
"sha256": "5baa8478a1316403dd3e7b7bccaaaee20fe6ac7738ea7ddd2af2f19b4b294f2c",
"pipeline_exit_code": 1
"final_html_size_bytes": 36844,
"sha256": "397f238df2d23c7f3371d9032de5fbae4fd37aca116bb8b62e8fd36c4255c26d",
"pipeline_exit_code": null
}
},
"total_files": 5