From 46ff611a5434ea685f850a2b69aa785f02c5a994 Mon Sep 17 00:00:00 2001 From: kyeongmin Date: Wed, 13 May 2026 13:19:03 +0900 Subject: [PATCH] feat(catalog): activate info_management_what_how_when (IMP-04 Track A 6/16) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Catalog-completeness activation — NOT V4 endorsement (Codex round 47 §7 guardrail). V4 signal = 0 across the current 4 MDX evidence sample, but the 32-frame all-in scope means runtime backend must accept this frame when V4 ranks it for any future MDX outside the current sample. V4 remains the matching authority. Phase Z adds runtime availability only. 3-layer architecture (matrix §0) : - V4 = matching authority — current evidence does not rank this frame for the sampled 4 MDX, so this activation must not be read as a V4-driven promotion. It is purely catalog completeness so V4 can route to this frame when warranted in future MDX content. - figma_to_html (1171281179) = source/evidence — analysis/texts/index/flat/ assets all present, source intent is the What/How/When 3-section framework. - Phase Z = runtime — this commit adds catalog contract + partial + smoke fixture. Builder reuse, no new builder/parser. Builder reuse (Codex round 47 secondary criterion under exhausted V4 tier) : - `quadrant_flat_slots` reused (F16/F11/F20 pattern) with pad_to=3 + `section_{n}_label/body` key patterns. - `quadrant_item` parser reused. - mapper.py unchanged. 3 file changes : 1. templates/phase_z2/families/info_management_what_how_when.html - 3-column grid (What / How / When), each with header + body bullets. - PROMOTED CSS : per-section accent color (blue #2563eb What / orange #ea580c How / green #16a34a When), title gradient (#000 → #883700 zone-title family), bullet markers in per-section accent color. - NOT PROMOTED (P1 case-by-case + preservation guardrail) : Figma 상단 banner / icon / 배경 텍스처 / 장식. figma_to_html source evidence preserved for future fidelity review. - ADAPTED : Figma 50px+ → token-fixed, absolute positioning → flex grid. 2. templates/phase_z2/catalog/frame_contracts.yaml — F8 contract appended - frame_id=1171281179, family=cards, source_shape=top_bullets, strict 3, role_order=[section_1 (What), section_2 (How), section_3 (When)]. - visual_hints.min_height_px = 320 (F11/F20 class — 3-column header+body). - accepted_content_types = [text_block]. - 3 sub_zones (section_1/2/3 main_text). - payload.builder = quadrant_flat_slots (reuse) with section_{n}_* keys. 3. scripts/smoke_frame_render.py — bundled fixture for F8 self-check. Verification : - python scripts/smoke_frame_render.py --self-check : PASS 9/9 (F8 added at 3577 chars CSS-only) - python scripts/smoke_frame_render.py info_management_what_how_when --render-to data/runs/imp04_f8_visual : PASS, R3 artifact, 0 raster refs - python run_mdx03_pipeline.py --phase-z2 --run-id imp04_f8_regression : PASS (MDX 03 V4 rank-1 unchanged; F8 V4 signal = 0 across 4 MDX sample, so not selected for MDX 03 either — purely catalog completeness) scope-lock honored (3-layer + 4-class) : - V4 logic / V4 evidence yaml : unchanged - Existing PAYLOAD_BUILDERS / ITEM_PARSERS : unchanged (reuse only) - Existing 8 partials : unchanged - Composition planner / production render / Phase R' / AI/Kei : unchanged 4-class status : - class 1 readiness : ✅ contract + builder reuse + partial + smoke + R3 - class 2 content-fit : watch — header single-line, body 3-5 bullets per column. 6+ bullets per column may overflow. - class 3 / 4 : N/A Refs Gitea #4 (IMP-04 Track A frame 6 — V4-zero catalog completeness) --- scripts/smoke_frame_render.py | 23 +++ .../phase_z2/catalog/frame_contracts.yaml | 60 +++++++ .../info_management_what_how_when.html | 152 ++++++++++++++++++ 3 files changed, 235 insertions(+) create mode 100644 templates/phase_z2/families/info_management_what_how_when.html diff --git a/scripts/smoke_frame_render.py b/scripts/smoke_frame_render.py index 6ae5ecb..8655d4f 100644 --- a/scripts/smoke_frame_render.py +++ b/scripts/smoke_frame_render.py @@ -239,6 +239,28 @@ _MOCK_DX_SW_NECESSITY = { ], } +# Track A frame 6 — info_management_what_how_when (frame 8). +# V4-zero catalog-completeness activation (Codex round 47 guardrail). +# Builder reuse = quadrant_flat_slots (F11/F20 pattern) — section_N keys. +_MOCK_INFO_MGMT = { + "title": "효율적인 정보의 관리와 활용 (What/How/When)", + "section_1_label": "무슨 정보 (What)", + "section_1_body": [ + {"text": "수량 / 단가 / 공사일정 등 계획 정보", "indent": 0}, + {"text": "일일 작업 / 자원 등 공사 실행 정보", "indent": 0}, + ], + "section_2_label": "어떻게 연계 (How)", + "section_2_body": [ + {"text": "3D 형상 산출속성 연계", "indent": 0}, + {"text": "시방규정 + S/W 통합", "indent": 0}, + ], + "section_3_label": "언제 사용 (When)", + "section_3_body": [ + {"text": "착수 전 공정/시공계획 수립", "indent": 0}, + {"text": "공사 후 실적 관리 + 문서 작성", "indent": 0}, + ], +} + SELF_CHECK_FIXTURES: dict[str, dict] = { "three_parallel_requirements": _MOCK_THREE_PARALLEL, "process_product_two_way": _MOCK_PROCESS_PRODUCT, @@ -248,6 +270,7 @@ SELF_CHECK_FIXTURES: dict[str, dict] = { "construction_bim_three_usage": _MOCK_CONSTRUCTION_BIM_USAGE, "bim_dx_comparison_table": _MOCK_BIM_DX_COMPARISON, "dx_sw_necessity_three_perspectives": _MOCK_DX_SW_NECESSITY, + "info_management_what_how_when": _MOCK_INFO_MGMT, } diff --git a/templates/phase_z2/catalog/frame_contracts.yaml b/templates/phase_z2/catalog/frame_contracts.yaml index 2bc2720..d04aad8 100644 --- a/templates/phase_z2/catalog/frame_contracts.yaml +++ b/templates/phase_z2/catalog/frame_contracts.yaml @@ -515,3 +515,63 @@ dx_sw_necessity_three_perspectives: body_key_pattern: "perspective_{n}_body" empty_label: "" empty_body: [] + + +info_management_what_how_when: + # Reason : V4 신호 0 (4 MDX sample 안). 32-frame all-in scope 채우는 + # **catalog-completeness activation** (NOT V4 endorsement, Codex round 47 guardrail). + # V4 는 matching authority. 향후 다른 MDX section 에서 V4 가 이 frame 을 추천 시 + # backend 가 받을 수 있도록 등록. + # Pattern : cards/3-section-framework (What/How/When 3 관점 framework). + # Track A frame 6. Builder 재사용 = `quadrant_flat_slots` (F11/F20 pattern). + template_id: info_management_what_how_when + frame_id: 1171281179 + family: cards + + source_shape: top_bullets + cardinality: + strict: 3 # 3 sections (What / How / When) + overflow_policy: abort_or_review + + role_order: + - section_1 # What (무슨 정보) + - section_2 # How (어떻게 연계) + - section_3 # When (언제 사용) + + # min_height_px : F20 와 동등 (3-column body + header). 320 = 3×(header 30 + + # body bullets 75) + title 30 + padding 30 + buffer 125 / 195 base. + visual_hints: + min_height_px: 320 + + accepted_content_types: + - text_block + + sub_zones: + - id: section_1 + role: main_text + accepts: [text_block] + cardinality: { strict: 1 } + partial_target_path: ".f8b__cols > .f8b__col:nth-child(1)" + - id: section_2 + role: main_text + accepts: [text_block] + cardinality: { strict: 1 } + partial_target_path: ".f8b__cols > .f8b__col:nth-child(2)" + - id: section_3 + role: main_text + accepts: [text_block] + cardinality: { strict: 1 } + partial_target_path: ".f8b__cols > .f8b__col:nth-child(3)" + + payload: + title: + source: section.title + builder: quadrant_flat_slots # 재사용 (F16/F11/F20 pattern) + builder_options: + item_parser: quadrant_item # 재사용 + pad_to: 3 + truncate_at: 3 + label_key_pattern: "section_{n}_label" + body_key_pattern: "section_{n}_body" + empty_label: "" + empty_body: [] diff --git a/templates/phase_z2/families/info_management_what_how_when.html b/templates/phase_z2/families/info_management_what_how_when.html new file mode 100644 index 0000000..3960089 --- /dev/null +++ b/templates/phase_z2/families/info_management_what_how_when.html @@ -0,0 +1,152 @@ + +{# +───────────────────────────────────────────────────────────────────────────── +Visual Provenance — figma_to_html_agent/blocks/1171281179/ (frame 8) +───────────────────────────────────────────────────────────────────────────── +Frame 8 = "효율적인 정보의 관리와 활용 (What/How/When)" (cards/3-section-framework). +3 sections framework — What (무슨 정보) / How (어떻게 연계) / When (언제 사용). +정보 관리·활용 3관점 병렬 제시 디자인. + +본 partial = Track A frame 6 (Codex round 47 V4-zero catalog-completeness +activation guardrail). **V4 신호 0** (4 MDX sample 기준). 32-frame all-in +scope 채우는 등록 — V4 가 다른 MDX 에서 본 frame 을 추천 시 backend 받음. +*V4 endorsement 아님* — V4 = matching authority 보존, Phase Z 는 runtime +availability 추가만. + +3-layer architecture (matrix §0) : +- V4 = matching authority — 본 frame 은 4 MDX 에서 미선택 (UAI/LE/RS = 0). + 단 V4 evidence 미 cover 의 MDX 가 추천 시 backend 가 받을 수 있게 등록. +- figma_to_html (1171281179) = source/evidence — analysis + texts + index + + flat + assets 모두 보유. 본 partial 의 visual base. +- Phase Z = runtime — catalog + partial + smoke fixture 추가. + +PROMOTED — CSS : + - 3 section header color (W/H/W = What/How/When framework) + - title gradient (zone-title family — F13/F14/F12/F11/F18/F20/F8 등 동일) + - card border + bullet markers + +NOT PROMOTED (P1 case-by-case + preservation guardrail) : + - Figma 의 상단 banner / icon / 배경 텍스처 / 장식 image 등 — figma_to_html + source evidence 보존, compact zone fit 위해 미 promote + +ADAPTED : + - Figma 50px+ → token-fixed + - absolute positioning → Phase Z 3-column grid +───────────────────────────────────────────────────────────────────────────── +min_height_px = 320 (F11/F20 와 동등 — 3-column header + body) +slots : title, section_1/2/3_label, section_1/2/3_body +4-class status : + - class 1 ready (builder reuse + partial + smoke) + - class 2 watch (body 5+ bullets per column) +#} + + + +
+
{{ slot_payload.title }}
+
+
+
{{ slot_payload.section_1_label | safe }}
+
+ {% if slot_payload.section_1_body %} + {% for line in slot_payload.section_1_body %}
{{ line.text | safe }}
{% endfor %} + {% endif %} +
+
+
+
{{ slot_payload.section_2_label | safe }}
+
+ {% if slot_payload.section_2_body %} + {% for line in slot_payload.section_2_body %}
{{ line.text | safe }}
{% endfor %} + {% endif %} +
+
+
+
{{ slot_payload.section_3_label | safe }}
+
+ {% if slot_payload.section_3_body %} + {% for line in slot_payload.section_3_body %}
{{ line.text | safe }}
{% endfor %} + {% endif %} +
+
+
+