PHASE_Z_B4_MAPPER_SOURCE env flag (default OFF) switches slot_payload source-of-truth from legacy mapper-only / V4 rank-1 to B4 PlacementPlan .selected_template_id at the single switch site in the runtime loop. OFF preserves final.html SHA byte-equivalence (u4 parity guard, mdx 01-05). ON requires Layer A render-active path; BLOCKED exits on B4 no-cover and on B4-selected FitError (IMP-87 honesty gate pattern — NO silent fallback). Distinct from PHASE_Z_B4_GATEKEEPER (mismatch render-skip). Units (1 commit = 1 axis per Stage 1 scope_lock): u1 — _b4_mapper_source_enabled() flag reader (default OFF) u2 — _select_mapper_template_id() selector wired at the switch site u3 — _b4_mapper_source_blocked_exit() for b4_no_cover / b4_selected_fit_error u4 — render SHA parity regression (tests/regression/ baseline mdx 01-05) u5 — slot_payload byte-equivalence (matches_mapper=True axis, mdx 01-05) Targeted 89-a suite 63 PASS; Phase Z regression 323 PASS; IMP-87 mirror 20 PASS. Demo activation via .env only (no vite.config hardcoding). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
57 lines
2.4 KiB
JSON
57 lines
2.4 KiB
JSON
{
|
|
"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-23T15:03:40Z",
|
|
"renderer": {
|
|
"entrypoint": "src.phase_z2_pipeline.run_phase_z2_mvp1",
|
|
"write_site": "src/phase_z2_pipeline.py:5994-5996",
|
|
"artifact_relpath": "<RUNS_DIR>/<run_id>/phase_z2/final.html"
|
|
},
|
|
"mdx_batch": [
|
|
"01.mdx",
|
|
"02.mdx",
|
|
"03.mdx",
|
|
"04.mdx",
|
|
"05.mdx"
|
|
],
|
|
"mdx_files": {
|
|
"01.mdx": {
|
|
"mdx_file": "01.mdx",
|
|
"run_id": "89a_baseline_01",
|
|
"final_html_size_bytes": 29089,
|
|
"sha256": "ad6f16a3068b5a55bd900122688f691ffef0716b91de52151551242773595487",
|
|
"pipeline_exit_code": null
|
|
},
|
|
"02.mdx": {
|
|
"mdx_file": "02.mdx",
|
|
"run_id": "89a_baseline_02",
|
|
"final_html_size_bytes": 25249,
|
|
"sha256": "4832e3e45660eb95201425e975a4c285fb78493cf8d09d6395897f7897b1794b",
|
|
"pipeline_exit_code": null
|
|
},
|
|
"03.mdx": {
|
|
"mdx_file": "03.mdx",
|
|
"run_id": "89a_baseline_03",
|
|
"final_html_size_bytes": 39804,
|
|
"sha256": "7dae47b3d51aa15a6752e4543a746abb4c4da71e7e95895eee8ef08c2eabc948",
|
|
"pipeline_exit_code": null
|
|
},
|
|
"04.mdx": {
|
|
"mdx_file": "04.mdx",
|
|
"run_id": "89a_baseline_04",
|
|
"final_html_size_bytes": 27707,
|
|
"sha256": "2bce45041cdcca6518cd92586c1be9e051a5c98f5a0ad61fdde02604618a1d80",
|
|
"pipeline_exit_code": null
|
|
},
|
|
"05.mdx": {
|
|
"mdx_file": "05.mdx",
|
|
"run_id": "89a_baseline_05",
|
|
"final_html_size_bytes": 21187,
|
|
"sha256": "3ded2fff8cc45301675d2a8917af945b4003631688cad6f088976fd57ab9b12c",
|
|
"pipeline_exit_code": 1
|
|
}
|
|
},
|
|
"total_files": 5
|
|
}
|