Files
C.E.L_Slide_test2/.orchestrator/tmp/65_r3_post.json
T

1 line
7.9 KiB
JSON

{"body": "[Claude #8] Stage 2 simulation-plan Round 3 \u2014 IMP-36 fit/rotation generalization\n\n=== IMPLEMENTATION_UNITS ===\n- {id: u1, summary: \"rotation_eligible:bool on 13 canonical contracts (F13/F14/F20/F8/F28=true; F23/F11/F18/F16/F29/F17/F12/F9=false). 19 builder-only untouched.\", files: [templates/phase_z2/catalog/frame_contracts.yaml], tests: [tests/test_family_contract_baseline.py], estimate_lines: 26}\n- {id: u2, summary: \"Contract test: rotation_eligible present+bool on 13 canonical; absent on 19 builder-only; F23=false (2026-05-15 lock).\", files: [tests/phase_z2/test_rotation_eligible_field.py], tests: [tests/phase_z2/test_rotation_eligible_field.py], estimate_lines: 40}\n- {id: u3, summary: \"Partial primitive test: container-type:size + container-name + cqh clamp using --max-body-lines on each canonical; rotation_eligible=true partials additionally declare @container aspect-ratio rule.\", files: [tests/phase_z2/test_partial_responsive_fit_primitives.py], tests: [tests/phase_z2/test_partial_responsive_fit_primitives.py], estimate_lines: 48}\n- {id: u4, summary: \"F13 P1+P2 on .f13b-root/.f13b__cols.\", files: [templates/phase_z2/families/three_parallel_requirements.html], tests: [], estimate_lines: 45}\n- {id: u5, summary: \"F14 P1+P2; preserve circle SVG aspect-ratio:1/1 L127.\", files: [templates/phase_z2/families/three_persona_benefits.html], tests: [], estimate_lines: 45}\n- {id: u6, summary: \"F20 P1+P2 on .f20b__cols.\", files: [templates/phase_z2/families/dx_sw_necessity_three_perspectives.html], tests: [], estimate_lines: 42}\n- {id: u7, summary: \"F8 P1+P2 on .f8b__cols.\", files: [templates/phase_z2/families/info_management_what_how_when.html], tests: [], estimate_lines: 42}\n- {id: u8, summary: \"F28 P1+P2 on .f28b__cols.\", files: [templates/phase_z2/families/sw_reality_three_emphasis.html], tests: [], estimate_lines: 40}\n- {id: u9, summary: \"F11 P2 only.\", files: [templates/phase_z2/families/construction_bim_three_usage.html], tests: [], estimate_lines: 36}\n- {id: u10, summary: \"F18 P2 only (1fr 2fr 2fr).\", files: [templates/phase_z2/families/bim_dx_comparison_table.html], tests: [], estimate_lines: 38}\n- {id: u11, summary: \"F16 P2 only (quadrant).\", files: [templates/phase_z2/families/bim_issues_quadrant_four.html], tests: [], estimate_lines: 40}\n- {id: u12, summary: \"F29 P2 only (2-col AS-IS/TO-BE).\", files: [templates/phase_z2/families/process_product_two_way.html], tests: [], estimate_lines: 44}\n- {id: u13, summary: \"F17 P2 only (alt-pill).\", files: [templates/phase_z2/families/bim_current_problems_paired.html], tests: [], estimate_lines: 38}\n- {id: u14, summary: \"F12 P2 only (circle SVG intersection).\", files: [templates/phase_z2/families/construction_goals_three_circle_intersection.html], tests: [], estimate_lines: 34}\n- {id: u15, summary: \"F9 P2 only (stacked).\", files: [templates/phase_z2/families/pre_construction_model_info_stacked.html], tests: [], estimate_lines: 34}\n- {id: u16, summary: \"P3: align F23 col_a/col_b body_parser to column_with_transform (F29 mirror); shared builder=process_product_pair.\", files: [templates/phase_z2/catalog/frame_contracts.yaml, tests/phase_z2/test_pattern3_builder_unification.py], tests: [tests/phase_z2/test_pattern3_builder_unification.py], estimate_lines: 34}\n- {id: u17, summary: \"Overflow chain step [2] = CSS-only attribution. Append IMP-36 line to step17.OverflowCascadeStage.DETERMINISTIC docstring stating partial-side cqh/clamp fit auto-handles step [2] (no Python call). New test asserts attribution present + no new shrink helper symbol added in step17.py (OVERFLOW_CASCADE_ORDER tuple unchanged; module-level callables limited to gather_step17_ai_repair_proposals).\", files: [src/phase_z2_ai_fallback/step17.py, tests/phase_z2/test_overflow_chain_step2_css_handled.py], tests: [tests/phase_z2/test_overflow_chain_step2_css_handled.py], estimate_lines: 40}\n- {id: u18, summary: \"Salvage-chain side-effect regression: extend test_phase_z2_step17_salvage_chain.py with router-invariance assertions pinning the 3 cases (zone_ratio_fail+cross_zone_pass / cross_zone_fail+glue_pass / all_fail) \u2192 identical cascade decisions after P2 CSS lands on 13 canonical partials. SALVAGE_FAIL_BY_ACTION mapping + cascade order tuple invariant.\", files: [tests/phase_z2/test_phase_z2_step17_salvage_chain.py], tests: [tests/phase_z2/test_phase_z2_step17_salvage_chain.py], estimate_lines: 45}\n\nRationale:\n- P1 = `@container <root> (aspect-ratio<1.5)` flips equal-share grid cols\u2194rows. P2 = `container-type:size` + `container-name` + `clamp(min, calc(N*cqh/var(--max-body-lines,default)), max)`; line-height/padding/gap/border-radius only, body font-size untouched. P3 = F23/F29 body_parser unification under shared builder=process_product_pair.\n- u1: opt-out where flip changes meaning; F23=false locked 2026-05-15. u2/u3: executable contract prevents catalog\u2194CSS drift.\n- u4\u2013u8 (P1+P2): 5 verified equal-share three-col grids; single CSS rule, no JS, font-size untouched (PZ-4 / feedback_phase_z_spacing_direction).\n- u9\u2013u15 (P2 only): positional/asymmetric/SVG/quadrant/stacked; figma color/gradient/semantics preserved.\n- u16: shared builder; resolves Stage 1 P3 question (RULE 7/9).\n- u17: closes Codex #7 missing axis (overflow_chain_step_2_automatic_handling). Issue body \"\ubcc4\ub3c4 \ud638\ucd9c \ud568\uc218 \ubd88\ud544\uc694, CSS \uc790\uccb4\uac00 \ud638\ucd9c\" \u2192 no new Python helper; only docstring attribution + module-symbol invariant test on src/phase_z2_ai_fallback/step17.py (anchor: L40-68 OverflowCascadeStage + L63-68 OVERFLOW_CASCADE_ORDER).\n- u18: side-effect / regression assigned explicitly to existing salvage chain surface tests/phase_z2/test_phase_z2_step17_salvage_chain.py (L3-7 already exercises the 3 cascade cases) \u2014 confirms router decisions unchanged after partial CSS lands (no silent shrink, no router drift, PZ-4 compliance).\n\nOut of scope: 19 builder-only contracts; orchestrator/generated; Stage 0 normalizer; F14 L127 SVG circle aspect-ratio:1/1; --max-body-lines numeric tuning (Stage 4 visual loop); IMP-34 / IMP-35 / IMP-33 / IMP-45.\n\nRollback: each unit = single partial / yaml block / single test file. `git checkout HEAD -- <file>`; u1/u2/u3/u16/u17 additive (delete new test files + revert yaml/docstring blocks); u18 = revert single test diff hunk.\n\n=== EVIDENCE ===\n- `Get-ChildItem templates/phase_z2/families/*.html` \u2192 13 files.\n- `grep \"^[a-z]\" frame_contracts.yaml` \u2192 32 contracts; 13 canonical; 19 builder-only from `engn_sw_three_types:` L819.\n- `grep \"f23b__|container-type|--max-body-lines|cqh\" app_sw_package_vs_solution.html` \u2192 P2 primitives L37\u201338, L61, L68, L85, L90 \u2192 F23 sole P2 source.\n- `grep \"body_parser|process_product_pair\" frame_contracts.yaml` \u2192 F23 L768/L774/L777 (column_plain); F29 L116/L122 (column_with_transform)/L125 \u2192 P3 mismatch.\n- `ls src/phase_z2_ai_fallback/step17.py src/phase_z2_pipeline.py tests/phase_z2/test_phase_z2_step17_salvage_chain.py` \u2192 all present (111 / \u2013 / 248 lines).\n- src/phase_z2_ai_fallback/step17.py L40-68: OverflowCascadeStage enum + OVERFLOW_CASCADE_ORDER tuple; DETERMINISTIC docstring L46-49 lists cross_zone_redistribute / glue_compression / font_step_compression as ordered sub-steps \u2192 step [2] = glue_compression role; IMP-36 CSS attribution attaches here (u17).\n- tests/phase_z2/test_phase_z2_step17_salvage_chain.py L3-7 already exercises (a) zone_ratio\u2192cross_zone, (b) cross_zone\u2192glue, (c) all-fail cases \u2192 u18 extension pins router invariance on identical fixtures.\n- Stage 1 exit report (commit a06dd3d): scope-lock 13 canonical; P1 NEW; P2 sole source = F23.\n- Codex #7 review missing axes (overflow_chain_step_2_automatic_handling + side-effect check + file targets `src/phase_z2_pipeline.py | src/phase_z2_ai_fallback/step17.py | existing step17/router tests`) \u2192 all closed by u17 (src/phase_z2_ai_fallback/step17.py + new test) and u18 (tests/phase_z2/test_phase_z2_step17_salvage_chain.py).\n\nFINAL_CONSENSUS: YES\n"}