Re-apply the W1 wording clarifications previously agreed in the comment
thread. The originally executed wording commit `6d33884` was reverted by
Codex via `c807b2c` after Codex acknowledged that `ㄱ` for both Claude and
Codex is comment-only review (no source/doc edit). Both sides 100%
agreement is restored via Claude rounds 16/17/19 and Codex rounds 15/18.
This Claude-applied commit is the agreed re-application path (option A).
Six fixes applied to docs/architecture/IMP-04-FRAME-SUITABILITY-MATRIX.md :
1. §2 ACTIVE 4 frames table : add resource status (A/T/I/F/S) column.
F13 has no `assets/` directory (marked `-`). State that ACTIVE means
catalog-registered / runtime-active, not necessarily A+T+I+F+S
resource-complete.
2. §4 Track B : strengthen wording. Track B = visual-resource-pending
inside the 32-frame scope, **NOT exclusion / discard / scope
reduction**. Visual-resource acquisition timing is the only difference.
3. §4 Track B option (b) : minimal CSS partial from analysis/texts only
is **main path X, explicit temporary placeholder only**. Avoids the
frame 1 (`three_persona_benefits` 556b448) quality failure pattern.
4. §4.1 Track A priority : **execution ordering only, NOT scope filter**.
All 16 reusable-now frames remain activation targets. V4-weak 11
frames stay in scope. Builder family grouping = secondary ordering
allowed after first refinement calibration.
5. §4.1 Codex review granularity explicit : first refinement, new builder
pattern, ambiguous mapping, shared catalog/builder logic = Codex
review mandatory. Low-risk repeated frames may be grouped only after
pattern is proven.
6. §4.1 calibration failure modes F1/F2/F3 (Claude round 14 catch + Codex
round 15 (a) accepted) :
- F1 small styling/wording issue -> same-frame follow-up commit +
Codex re-review.
- F2 approach-level problem -> pause Track A, approach re-lock round,
retry refinement.
- F3 scope/resource problem -> reopen scope/resource axis, possibly
IMP-04b, block bulk activation until resolved.
History trace : `fe766f1` (matrix base) -> `6d33884` (Codex W1 execute,
wrong workflow) -> `c807b2c` (Codex revert + workflow lock symmetric)
-> this commit (Claude re-apply under user execution signal, option A).
History noise retained as honest trace of the corrected ㄱ definition.
No source code changes. Documentation clarification only.
Refs Gitea #4 (IMP-04 — matrix wording re-application post-revert)
261 lines
16 KiB
Markdown
261 lines
16 KiB
Markdown
# IMP-04 Frame Suitability Matrix (32 frames)
|
||
|
||
> Phase Z runtime catalog 확장 (IMP-04) 의 per-frame 진단 + Phase Z mapping
|
||
> proposal. Codex #15337 + #15340 의 추천 *32-frame schema suitability matrix*
|
||
> 답. impl 전 prerequisite 자료.
|
||
>
|
||
> **본 matrix scope** : Phase Z runtime catalog (executable projection) 으로의
|
||
> mapping. *matching schema canonical decision* (Codex #15340 의 architectural
|
||
> question) 은 별 axis (IMP-05+) 이양 — 본 doc 에 포함 X.
|
||
>
|
||
> Source-of-truth :
|
||
> - V4 evidence : `tests/matching/v4_full32_result.yaml` (32 unique template_ids,
|
||
> 320 judgments)
|
||
> - per-frame analysis : `figma_to_html_agent/blocks/{frame_id}/analysis.md`
|
||
> - per-frame visual : `figma_to_html_agent/blocks/{frame_id}/{index.html,flat.md,assets/}`
|
||
>
|
||
> Generated : 2026-05-13 / scope-lock = Gitea #4 round 6 (32 frame all-in,
|
||
> remaining 28).
|
||
|
||
---
|
||
|
||
## §1. 요약 통계
|
||
|
||
| axis | count |
|
||
|---|---|
|
||
| V4 32 unique templates | 32 |
|
||
| Active (이미 Phase Z 등록) | 4 |
|
||
| Remaining (본 issue 작업 대상) | 28 |
|
||
| `analysis.md` 보유 | 32/32 |
|
||
| `texts.md` 보유 | 32/32 |
|
||
| `index.html` 보유 (visual base) | 20/32 — **12 missing** |
|
||
| `flat.md` 보유 | 21/32 — 11 missing |
|
||
| `assets/` 디렉토리 보유 | 20/32 |
|
||
|
||
**Decision 분류** (본 matrix 결과) :
|
||
|
||
- **ACTIVE** (4) — 이미 Phase Z catalog 활성
|
||
- **reusable-now** (16) — `index.html` 보유 → Track A visual activation 가능
|
||
- **visual-pending** (12) — `index.html` 부재 → Track B (별도 처리 필요)
|
||
|
||
**Family 분포** :
|
||
|
||
| family | count | examples |
|
||
|---|---|---|
|
||
| cards | 12 | persona-3col, cards-3-category, paired-rows-2x2, quadrant-4, ... |
|
||
| table | 5 | table-2col, table-3col, compare-rows, ... |
|
||
| compare | 4 | 2col-paired-list, central-split-synthesis, banner-top-2col-bottom, cards-3-compare |
|
||
| diagram | 5 | cycle-3way-intersection, quadrilateral-relations, radial-diagram-5, ... |
|
||
| list | 3 | list-numbered-4, list-stacked-vertical, 3-column |
|
||
| map | 1 | full-page-map-banner |
|
||
| composite | 1 | central-5-goals |
|
||
| compare (별 grouping) | rest |
|
||
|
||
**Cardinality 분포** (ideal) :
|
||
|
||
| ideal | count | comment |
|
||
|---|---|---|
|
||
| 2 | 5 | compare-2-way (table-2col, banner-top-2col-bottom, etc.) |
|
||
| 3 | 11 | cards-3col, cards-3-category, list-3-column, persona-3col, ... |
|
||
| 4 | 8 | quadrant-4, paired-rows-2x2, cards-4-grid, ... |
|
||
| 5 | 3 | radial-5, central-5-goals, list-stacked-5 |
|
||
| 6 | 1 | circular-nodes-6 |
|
||
| 1 | 1 | full-page-map-banner |
|
||
|
||
---
|
||
|
||
## §2. ACTIVE 4 frames (이미 Phase Z 등록)
|
||
|
||
> **Fix 1** (Codex #15345 — wording precision) : "ACTIVE" = catalog-registered /
|
||
> runtime-active. *resource completeness (A+T+I+F+S 5 자원 보유) 와 별 axis*.
|
||
> F13 (`three_parallel_requirements`) 는 ACTIVE 이지만 `assets/` 부재.
|
||
|
||
| template_id | frame_id | fn | family / layout | builder | partial | resource status (A/T/I/F/S) |
|
||
|---|---|---|---|---|---|---|
|
||
| `three_parallel_requirements` | 1171281190 | 13 | list / 3-column | `items_with_role` + `pillar_item` | `f13b` (157 lines) | A T I F **−** (assets 부재) |
|
||
| `process_product_two_way` | 1171281210 | 29 | compare / banner-top-2col-bottom | `process_product_pair` | `f29b` (294 lines) | A T I F S |
|
||
| `bim_issues_quadrant_four` | 1171281193 | 16 | cards / quadrant-4 | `quadrant_flat_slots` + `quadrant_item` | `f16b` (223 lines) | A T I F S |
|
||
| `three_persona_benefits` | 1171281191 | 14 | cards / persona-3col | `items_with_role` + `quadrant_item` | `f14b` (110 lines, **refinement 필요** — index.html base 안 씀) | A T I F S |
|
||
|
||
---
|
||
|
||
## §3. Remaining 28 frames — Phase Z mapping matrix
|
||
|
||
각 frame 의 :
|
||
- **figma_to_html 자원 status** (`A`=analysis.md, `T`=texts.md, `I`=index.html, `F`=flat.md, `S`=assets/) — `-` = 부재
|
||
- **V4 신호** (use_as_is/light_edit/restructure/reject)
|
||
- **Phase Z mapping proposal** (source_shape, builder)
|
||
- **decision** (reusable-now / visual-pending)
|
||
|
||
### §3.1 reusable-now (16 frames — `index.html` 보유)
|
||
|
||
| template_id | fid | fn | family / layout | card (ideal) | slots | V4 (UAI/LE/RS/RJ) | proposed source_shape | proposed builder | decision |
|
||
|---|---|---|---|---|---|---|---|---|---|
|
||
| `app_sw_package_vs_solution` | 1171281203 | 23 | table / table-2col | 2 | 4 | 0/0/1/9 | top_bullets | new (compare_table_2col) | reusable-now |
|
||
| `bigroom_system_components` | 1171281178 | 7 | compare / 2col-paired-list | 2 | 5 | 0/0/0/10 | top_bullets | `process_product_pair` (재사용?) or new | reusable-now |
|
||
| `bim_adoption_central_split` | 1171281208 | 27 | compare / central-split-synthesis | 2 | 5 | 0/0/2/8 | top_bullets | new (split-synthesis) | reusable-now |
|
||
| `bim_current_problems_paired` | 1171281194 | 17 | cards / paired-rows-2x2 | 4 | 9 | 0/0/1/9 | top_bullets | `quadrant_flat_slots` 변형 or new | reusable-now |
|
||
| `bim_dx_comparison_table` | 1171281195 | 18 | table / compare-rows | 2 | 4 | **1**/0/0/9 | top_bullets | new (compare_table_2col) | reusable-now |
|
||
| `construction_bim_three_usage` | 1171281182 | 11 | cards / cards-3-category | 3 | 7 | **1**/0/1/8 | top_bullets | `items_with_role` + `quadrant_item` (재사용) | reusable-now |
|
||
| `construction_goals_three_circle_intersection` | 1171281189 | 12 | diagram / cycle-3way-intersection | 3 | 5 | **1**/**1**/1/7 | top_bullets | new (cycle-intersect-3) | reusable-now |
|
||
| `dx_sw_necessity_three_perspectives` | 1171281198 | 20 | cards / cards-3-header | 3 | 7 | 0/**2**/1/7 | top_bullets | `items_with_role` + `quadrant_item` (재사용) | reusable-now |
|
||
| `engn_sw_three_types` | 1171281204 | 24 | table / table-3col | 3 | 5 | 0/**1**/0/9 | h3_subsections | new (compare_table_3col) | reusable-now |
|
||
| `info_management_what_how_when` | 1171281179 | 8 | cards / 3-section-framework | 3 | 7 | 0/0/0/10 | top_bullets | `items_with_role` + `quadrant_item` (재사용) | reusable-now |
|
||
| `model_specialized_engn_sw` | 1171281202 | 22 | diagram / split-panel-numbered | 3-4 | 5 | 0/0/1/9 | top_bullets | new (split-panel) | reusable-now |
|
||
| `overseas_bim_numbered_list` | 1171281174 | 3 | list / list-numbered-4 | 4 | 5 | 0/0/0/10 | top_bullets | `items_with_role` 변형 (numbered) | reusable-now |
|
||
| `pre_construction_model_info_stacked` | 1171281180 | 9 | list / list-stacked-vertical | 5 (min 4 max 6) | 3 | 0/0/0/10 | top_bullets | `items_with_role` (재사용, flexible card) | reusable-now |
|
||
| `solution_engn_split_diagram` | 1171281201 | 21 | diagram / split-panel-diagram | 4 (min 3 max 5) | 4 | 0/0/3/7 | top_bullets | new (split-panel) | reusable-now |
|
||
| `sw_development_cycle_six_nodes` | 1171281172 | 1 | diagram / circular-nodes-6 | 6 | 7 | 0/0/0/10 | top_bullets | new (circular-6) | reusable-now |
|
||
| `sw_reality_three_emphasis` | 1171281209 | 28 | cards / title-plus-3-emphasis | 3 | 7 | 0/0/0/10 | top_bullets | `items_with_role` + `quadrant_item` (재사용) | reusable-now |
|
||
|
||
### §3.2 visual-pending (12 frames — `index.html` 부재)
|
||
|
||
| template_id | fid | fn | family / layout | card (ideal) | slots | V4 (UAI/LE/RS/RJ) | resource status | decision |
|
||
|---|---|---|---|---|---|---|---|---|
|
||
| `commercial_sw_four_categories` | 1171281205 | 25 | cards / left-categories-right-logos | 4 | 6 | 0/0/0/10 | A T - - - | visual-pending |
|
||
| `compensation_complaint_map` | 1171281177 | 6 | map / full-page-map-banner | 1 | 2 | 0/0/0/10 | A T - - - | visual-pending |
|
||
| `compensation_complaint_side_card` | 1171281176 | 5 | cards / side-card-with-list | 3 (min 3 max 5) | 4 | 0/0/0/10 | A T - - - | visual-pending |
|
||
| `design_method_distortion_three_col` | 1171281197 | 19 | compare / cards-3-compare | 3 | 7 | 0/0/0/10 | A T - - - | visual-pending |
|
||
| `domestic_bim_actor_relations` | 1171281175 | 4 | diagram / quadrilateral-relations | 4 | 6 | 0/0/1/9 | A T - - - | visual-pending |
|
||
| `engn_sw_development_domain_knowledge` | 1171281173 | 2 | cards / bullet-cards-4-plus-center | 4 | 7 | 0/0/0/10 | A T - - - | visual-pending |
|
||
| `field_effectiveness_five_elements` | 1171281181 | 10 | diagram / radial-diagram-5 | 5 | 6 | 0/0/0/10 | A T - - - | visual-pending |
|
||
| `industry_characteristics_three_col` | 1171281212 | 31 | table / table-3col | 3 | 5 | 0/0/0/10 | A T - - - | visual-pending |
|
||
| `industry_current_status_three_col` | 1171281211 | 30 | table / table-3col | 3 | 5 | 0/0/0/10 | A T - - - | visual-pending |
|
||
| `policy_achievement_five_goals` | 1171281213 | 32 | composite / central-5-goals | 5 | 9 | 0/0/0/10 | A T - - - | visual-pending |
|
||
| `policy_goals_plus_execution_requirements` | 1171281192 | 15 | cards / policy-4card-plus-list | 4 | 10 | 0/0/0/10 | A T - - - | visual-pending |
|
||
| `sw_dependency_four_problems` | 1171281206 | 26 | cards / cards-4-grid | 4 | 9 | 0/**1**/1/8 | A T - F - | visual-pending (index 부재, flat 있음) |
|
||
|
||
---
|
||
|
||
## §4. Track 분리 (matrix 기반)
|
||
|
||
### Track A — Visual activation (16 reusable-now + 1 active refinement)
|
||
|
||
> **Fix 4** (Codex #15345 — Track A priority wording) : 본 priority 순서 =
|
||
> **execution ordering only. scope filter X**. *all 16 reusable-now frames 활성
|
||
> 대상*. V4 신호 약한 11 frame 도 모두 포함. builder family grouping 도 *secondary
|
||
> ordering* (Codex 허용 — 단 first refinement 의 calibration 결과 이후, 새 hidden
|
||
> filter 화 절대 X).
|
||
|
||
priority 진행 순서 (자체 추천 — V4 신호 ↑ 우선, builder 재사용 grouping 보조) :
|
||
|
||
1. **`three_persona_benefits` refinement** (active 1, V4 use_as_is=1) — index.html base 재작성. **first refinement = calibration point**
|
||
2. `dx_sw_necessity_three_perspectives` (LE=2 가장 높음, persona builder 재사용 가능)
|
||
3. `construction_goals_three_circle_intersection` (UAI=1+LE=1+RS=1, *새 builder cycle-intersect-3*)
|
||
4. `construction_bim_three_usage` (UAI=1, persona builder 재사용)
|
||
5. `bim_dx_comparison_table` (UAI=1, *새 builder compare_table_2col*)
|
||
6. 잔여 11 reusable-now (V4 신호 0 — catalog 확보 목적, builder 재사용 grouping 으로 ordering 가능)
|
||
|
||
> **Fix 5** (Codex #15345 — review granularity 명시) :
|
||
> - **첫 refinement** = Codex review 필수
|
||
> - **새 builder pattern** 도입 frame = Codex review 필수
|
||
> - **ambiguous mapping** frame = Codex review 필수
|
||
> - **shared catalog/builder logic** 영향 frame = Codex review 필수
|
||
> - **low-risk repeated** (proven builder, 단순 catalog entry) = small grouped commit 허용 (단 pattern proven 후)
|
||
>
|
||
> **Fix 6** (자체 catch 1, Codex #15371 — Calibration failure modes) : first
|
||
> refinement 의 Codex review 에서 issue 발견 시 escalation path :
|
||
> - **F1 — small styling/wording issue** : `index.html`-base approach valid, detail correction 만 필요 → *same-frame follow-up commit* + Codex re-review.
|
||
> - **F2 — approach-level problem** : Phase Z geometry/runtime 와 fit 안 됨, raster/CSS/min-height rule 재정의 필요 → *Track A pause* → *approach re-lock round* → retry refinement.
|
||
> - **F3 — scope/resource problem** : figma_to_html output 부재 / visual-resource assumption 잘못 → *scope/resource axis reopen* → IMP-04b route 가능, *bulk activation 차단*.
|
||
>
|
||
> F1/F2/F3 = review escalation guide. *first refinement 차단 gate 아님*. trigger source = 보통 Codex review (Claude self-trigger 도 가능).
|
||
|
||
### Track B — visual-pending 12 frames
|
||
|
||
> **Fix 2** (Codex #15345 — Track B wording 강화) : Track B 는 **exclusion / discard /
|
||
> scope reduction 아님**. visual-resource-pending 안 *32-frame scope 보존*. visual-
|
||
> resource 확보 *시점* 만 다른 별 axis.
|
||
>
|
||
> **Fix 3** (Codex #15345 — option (b) guard) : option (b) (minimal CSS) 는 **main
|
||
> path X, explicit temporary placeholder 만**. frame 1 사례와 같은 quality failure
|
||
> 위험.
|
||
|
||
option (a/b/c) 결정 필요 (user 확인) :
|
||
|
||
- **(a)** figma_to_html agent 재실행 → 별 issue (IMP-04b "visual extraction"). 32-frame scope 안.
|
||
- **(b)** analysis.md + texts.md 만으로 minimal CSS partial 작성 — **main path X. explicit temporary placeholder 만 허용**. 시각 디테일 손실 인정.
|
||
- **(c)** 본 issue 의 *즉시 활성* = 16 frame. 12 frame 은 IMP-04b 별 axis 에서 *visual base 확보 후* 활성. **32-frame scope 보존**.
|
||
|
||
자체 추천 = **(c)** — 32-frame scope 보존 + Track A 진행 속도 ↑ + Track B 의 visual extraction 작업과 분리.
|
||
|
||
### Track C — Matching schema canonical decision (Codex #15340)
|
||
|
||
본 matrix scope 외. IMP-05 또는 별 architectural axis 로 이양. 본 doc 에 권장 사항 surface 만 :
|
||
|
||
- figma_to_html / matching metadata = canonical matching knowledge source
|
||
- Phase Z frame_contracts + partial builders = runtime executable projection
|
||
- bridge/mapping layer = explicit conversion
|
||
|
||
---
|
||
|
||
## §5. Builder 재사용 vs 새 builder 분석
|
||
|
||
### §5.1 기존 4 builder
|
||
|
||
- `items_with_role` (F13) — array of items with `role_order` mapping. `pillar_item` parser uses sub-sections.
|
||
- `process_product_pair` (F29) — 2 named columns with sections, `column_with_transform` + `column_plain` parsers.
|
||
- `quadrant_flat_slots` (F16) — flat keyed positional slots (`quadrant_N_label` / `quadrant_N_body`).
|
||
- `quadrant_item` parser — `{label, body:[{text,indent}]}` flat list.
|
||
|
||
### §5.2 재사용 가능 (Track A 안 builder 재사용 candidates)
|
||
|
||
| pattern | example frames | builder | parser |
|
||
|---|---|---|---|
|
||
| 3 cards parallel (단순 label + body) | persona, dx_sw_necessity, construction_bim_usage, info_mgmt, sw_reality | `items_with_role` | `quadrant_item` (재사용) |
|
||
| 4 quadrant flat | bim_current_problems (4 grid), sw_dependency (4 grid — visual-pending) | `quadrant_flat_slots` 변형 (4-card grid) | `quadrant_item` (재사용) |
|
||
| numbered list (1..N) | overseas_bim, pre_construction_model_info | `items_with_role` (no role) | `pillar_item` 또는 new |
|
||
|
||
### §5.3 새 builder 필요
|
||
|
||
| pattern | example frames | proposed builder |
|
||
|---|---|---|
|
||
| 2-col compare table | app_sw_package_vs_solution, bim_dx_comparison_table | `compare_table_2col` |
|
||
| 3-col compare table | engn_sw_three_types (+ visual-pending: industry_*) | `compare_table_3col` |
|
||
| cycle/circle diagram | construction_goals_three_circle_intersection | `cycle_intersect_3` |
|
||
| split-panel diagram | model_specialized_engn_sw, solution_engn_split | `split_panel` |
|
||
| circular nodes | sw_development_cycle_six_nodes | `circular_nodes_n` |
|
||
| paired 2x2 | bim_current_problems_paired | `paired_rows_2x2` |
|
||
| central split synthesis | bim_adoption_central_split | `central_split_synthesis` |
|
||
|
||
→ **새 builder 7+ 필요** (Track A 안). 일부 generic 화 가능성 — *implementation 시 구체화*.
|
||
|
||
---
|
||
|
||
## §6. min_height_px derivation method
|
||
|
||
기존 catalog : F13=230, F29=345, F16 = (no visual_hints — default zone size 사용?)
|
||
|
||
본 matrix 의 frame 별 `min_height_px` 추정 method :
|
||
|
||
- `figma_to_html_agent/blocks/{frame_id}/flat.md` 의 *frame 원본 height* × Phase Z slide-body scale = derived min height
|
||
- 예 : persona frame_id 1171281191 = 1927 px × (1280/2601) = 1927 × 0.49213 = 949 px (그러나 Phase Z slide-body 는 585 px 한계 — zoom 또는 scale 추가 적용 필요)
|
||
- 실제 measurement = impl 시 partial render 후 검증 (smoke harness 가 char count 측정)
|
||
|
||
→ 각 frame impl 시 *index.html 의 R19 zoom 값* 또는 *flat.md 의 frame 원본 height* 에서 derive. handoff #15321 §4 의 8-step 의 1 단계로 추가.
|
||
|
||
---
|
||
|
||
## §7. Resource completeness summary
|
||
|
||
| status | count | template_ids |
|
||
|---|---|---|
|
||
| Full (A+T+I+F+S) | 19 | (16 reusable-now 중 15 + active 4 중 4) |
|
||
| index 있음, assets 없음 | 1 | `three_parallel_requirements` (F13 active) |
|
||
| A+T+F (index 부재) | 1 | `sw_dependency_four_problems` (visual-pending, flat 만 있음) |
|
||
| A+T (visual 모두 부재) | 11 | 위 §3.2 의 나머지 11 visual-pending |
|
||
|
||
→ visual-pending 12 frame 중 1 (`sw_dependency_four_problems`) 은 *flat.md 보유* — 약간 head-start. 나머지 11 은 figma_to_html agent 재실행 필요.
|
||
|
||
---
|
||
|
||
## §8. 다음 단계 — user 확인 후 ㄱ
|
||
|
||
1. 본 matrix 가 *prerequisite 자료* 로 충분한가? 추가 추출 필요 정보?
|
||
2. Track B option (a/b/c) 합의 — 자체 추천 = (c) 본 issue 외 분리
|
||
3. Track A 진행 순서 — §4.1 의 priority list 합의?
|
||
4. Track C (matching schema canonical) IMP-05+ 분리 합의?
|
||
5. impl 시 build 순서 — frame 별 sequential commits + Codex per-frame review 또는 batch review?
|
||
|
||
100% 합의 후 step 6 (Track A 진입 — `three_persona_benefits` refinement 부터) 시작.
|