feat(catalog): activate construction_bim_three_usage (IMP-04 Track A 3/16)
Reason : V4 UAI=1 (01-1) + RS=1 — UAI tier strongest after F12. Track A
frame 3 per Codex round 39 V4-priority acceptance.
3-layer architecture context (matrix §0) :
- V4 = matching authority — V4 ranked this frame as use_as_is for 01-1
("용어 정의") and restructure=1 for other sections.
- figma_to_html (1171281182) = rich source/evidence — 401-line index.html
+ 4 PNG assets, full A+T+I+F+S resource available.
- Phase Z = runtime orchestration — this commit adds catalog + partial +
smoke fixture for the runtime projection.
Builder reuse (Codex round 39 secondary criterion) :
- Reuses existing `quadrant_flat_slots` (F16) with pad_to=3 +
label_key_pattern="category_{n}_label" + body_key_pattern="category_{n}_body".
- Same parser `quadrant_item` reused — no new builder or parser added.
- F16 / F11 share flat-keyed label+body grammar; only N differs (4 vs 3).
3 file changes :
1. templates/phase_z2/families/construction_bim_three_usage.html
- Adapted from figma_to_html_agent/blocks/1171281182/index.html.
- 3 horizontal stacked rows (brown label box + white card with green
border, per Figma L82-103). Compact Phase Z zone fit.
- PROMOTED CSS : brown label box (rgba(50,31,9,0.8) + 둥글기 + drop-
shadow), white card with green border (#A5BBB4), title gradient
(#000 → #883700 F13/F14/F12 family), bullet markers in brown family.
- NOT PROMOTED (P1 case-by-case + preservation guardrail per Codex
round 37 / matrix §4.1 Fix 7) : title-icon (50×50 small), card_decor
× 3 (decorative side images), bottom BIM 모델/공사 Process 다이어그램.
Figma source evidence preserved in figma_to_html_agent/; not promoted
to Phase Z compact projection.
- ADAPTED : Figma 50/45/38/30 px → token-fixed, 1248×1066 absolute +
zoom 0.67542 → Phase Z flex column 3-row stack, 335×124 label box
→ 110×~50 compact (zone fit).
2. templates/phase_z2/catalog/frame_contracts.yaml
- F11 contract appended after F12.
- frame_id=1171281182, family=cards, source_shape=top_bullets, strict
cardinality 3, role_order=[category_1, category_2, category_3].
- visual_hints.min_height_px = 320 (title 30 + 3×70 row + gaps 12 +
padding 30 = 282 + 38 safety buffer).
- accepted_content_types = [text_block] only.
- 3 sub_zones (category_1/2/3 main_text).
- payload.builder = quadrant_flat_slots (reuse) with category_{n}_*
key patterns.
3. scripts/smoke_frame_render.py
- Bundled fixture for F11 self-check.
Verification :
- python -m py_compile scripts/smoke_frame_render.py : PASS
- python scripts/smoke_frame_render.py --self-check : PASS 6/6 (F11
added at 3014 chars, compact CSS-only)
- python scripts/smoke_frame_render.py construction_bim_three_usage
--render-to data/runs/imp04_f11_visual : PASS, R3 artifact written,
0 raster refs (CSS-only), copy_assets ran (4 PNGs in assets/ dir
for future fidelity-review if needed)
- python run_mdx03_pipeline.py --phase-z2 --run-id imp04_f11_regression
: PASS (MDX 03 V4 rank-1 still F13/F29, F11 not triggered for MDX 03 —
F11 only routes 01-1 per V4 evidence)
scope-lock honored (3-layer + 4-class) :
- V4 logic / V4 evidence yaml : unchanged
- Existing PAYLOAD_BUILDERS 4 builders (incl. F12's cycle_intersect_3) :
unchanged. F11 reuses quadrant_flat_slots (secondary criterion).
- Existing ITEM_PARSERS : unchanged. F11 reuses quadrant_item.
- Existing partials (F13/F29/F16/F14/F12) : unchanged.
- Composition planner / production render path / Phase R' / AI/Kei :
unchanged.
4-class status :
- class 1 adapter/runtime readiness : ✅ contract + builder + partial +
smoke fixture + R3 artifact aligned.
- class 2 content-fit : watch — 3 rows × ~70 px height. If MDX body has
4+ bullets per category, may overflow. realistic use case (01-1) shows
1-2 bullets per category per analysis.md, so within budget.
- class 3 / 4 : N/A.
Refs Gitea #4 (IMP-04 Track A frame 3 — V4 UAI tier, builder reuse)
This commit is contained in:
@@ -318,3 +318,71 @@ construction_goals_three_circle_intersection:
|
||||
label_key_pattern: "circle_{n}_label"
|
||||
empty_label: ""
|
||||
intersection_default: "" # MDX 안 intersection 명시 안 되면 빈 문자
|
||||
|
||||
|
||||
construction_bim_three_usage:
|
||||
# Reason : V4 UAI=1 (01-1) + RS=1 — UAI tier strongest after F12.
|
||||
# Pattern : cards / cards-3-category — 3 horizontal stacked rows.
|
||||
# Track A frame 3 (Codex round 39 accepted, V4 priority strict).
|
||||
template_id: construction_bim_three_usage
|
||||
frame_id: 1171281182
|
||||
family: cards
|
||||
|
||||
source_shape: top_bullets
|
||||
cardinality:
|
||||
strict: 3
|
||||
overflow_policy: abort_or_review
|
||||
|
||||
# 순서 기반 visual role — 3 카테고리 (model / object / position) 각자
|
||||
# Figma 의 동일 brown label box + white content card 패턴. role 은
|
||||
# MDX label 내용 따라 결정되므로 generic ordering name 만.
|
||||
role_order:
|
||||
- category_1
|
||||
- category_2
|
||||
- category_3
|
||||
|
||||
# min_height_px derivation (round 13 §2.2 — derive + confirm) :
|
||||
# Figma frame 1066 px @ scale 0.67542 → 720 px adapted (full frame).
|
||||
# Phase Z compact (title + 3 rows + padding) :
|
||||
# title 30 + 3 row × 70 (label + body) + gap 6×2 + padding 30 = 282 px.
|
||||
# + safety buffer (body bullets 2-3 lines/row 보호) 38 = **320**.
|
||||
# Confirm via smoke `--render-to` artifact + MDX 03 regression.
|
||||
visual_hints:
|
||||
min_height_px: 320
|
||||
|
||||
accepted_content_types:
|
||||
- text_block
|
||||
|
||||
# Frame Slot 선언 (SPEC v1 §3 layer B). 3 category × {label + body}.
|
||||
sub_zones:
|
||||
- id: category_1
|
||||
role: main_text
|
||||
accepts: [text_block]
|
||||
cardinality: { strict: 1 }
|
||||
partial_target_path: ".f11b__rows > .f11b__row:nth-child(1)"
|
||||
- id: category_2
|
||||
role: main_text
|
||||
accepts: [text_block]
|
||||
cardinality: { strict: 1 }
|
||||
partial_target_path: ".f11b__rows > .f11b__row:nth-child(2)"
|
||||
- id: category_3
|
||||
role: main_text
|
||||
accepts: [text_block]
|
||||
cardinality: { strict: 1 }
|
||||
partial_target_path: ".f11b__rows > .f11b__row:nth-child(3)"
|
||||
|
||||
payload:
|
||||
title:
|
||||
source: section.title
|
||||
# Builder 재사용 = `quadrant_flat_slots` (F16) — pad_to / label_key / body_key
|
||||
# 만 configure. F16 / 본 frame 모두 *flat keyed slot + label + body* grammar.
|
||||
# Codex round 39 secondary builder reuse 허용 (V4 primary 보존).
|
||||
builder: quadrant_flat_slots
|
||||
builder_options:
|
||||
item_parser: quadrant_item # F16 의 parser 재사용
|
||||
pad_to: 3 # 3 categories
|
||||
truncate_at: 3
|
||||
label_key_pattern: "category_{n}_label"
|
||||
body_key_pattern: "category_{n}_body"
|
||||
empty_label: ""
|
||||
empty_body: []
|
||||
|
||||
Reference in New Issue
Block a user