IMP-04 F17 schema correction — paired_rows_4x2 + pill alternation + source-faithful theme
source = 8 atomic issues (4 paired rows × 2 cells per texts.md), 이전 strict-4
가 source 의 절반 누락. round 55~73 review-loop 의 calibration frame.
- contract : source_shape=top_bullets / layout_variant=paired_rows_4x2_alternating_pills
/ strict 8 (no pad/truncate) / role_order row_{1..4}_{left,right} / visual_hints
pill_positions + row_gap_after / builder paired_rows_4x2_slots
- builder : new _build_paired_rows_4x2_slots — 2-axis (row × side) deterministic
index mapping, strict 8 raises before render, quadrant_item parser 재사용
- partial : 4-row × 2-cell flex, pill alternation (row 1/3 top, row 2/4 bottom
via column-reverse), row 2-3 visual gap, source-faithful color (rgb(204,82,0)
→rgb(136,55,0) title + #60A451 row border + rgba(250,237,203,0.15) bg + #0c271e
body + 2px dashed #60A451 cell 분할선), pill = CSS approximation (asset crop
variant single-pass 비용 高 → fallback per Codex round 62/68 scope cap, pill
shape + alternation + green/cream/brown theme 보존), no row headers (source
부재, inference 금지)
- fixture : flat 8 top-bullet (texts.md 8 issues 그대로)
- smoke + R3 : PASS (11/11 self-check, 5535 chars partial, 8 units rendered,
pill alternation 정합, row 2-3 gap, no invented row headers)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -635,68 +635,95 @@ sw_reality_three_emphasis:
|
||||
|
||||
|
||||
bim_current_problems_paired:
|
||||
# Reason : V4 RS=1 (4 MDX sample 안 restructure 1). 32-frame all-in scope —
|
||||
# **catalog-completeness activation** (NOT V4 endorsement — V4 신호 유효 단 restructure
|
||||
# tier 이며 직접 use_as_is/light_edit 추천 없음).
|
||||
# Pattern : cards/paired-rows-2x2 — 4 problem cards in 2x2 grid (BIM 수행 4 문제).
|
||||
# Track A frame 8. Builder 재사용 = `quadrant_flat_slots` (F16 pattern, pad_to=4).
|
||||
# Reason : V4 RS=1 (4 MDX sample 안 restructure 1). source 가 8 atomic issues 임을 confirm.
|
||||
# **schema-correction** — round 55~73 의 review-loop 의 calibration frame.
|
||||
# 자체 round 71 §4 F17 done-definition lock per Codex round 70/72 + Claude round 63 §5.
|
||||
# Pattern : cards/paired-rows-4x2 — 4 paired rows × 2 issue cells (top/bottom pill alternation).
|
||||
# Track A frame 8. 신규 builder = `paired_rows_4x2_slots` (quadrant_flat_slots → 2-axis).
|
||||
template_id: bim_current_problems_paired
|
||||
frame_id: 1171281194
|
||||
family: cards
|
||||
|
||||
source_shape: top_bullets
|
||||
source_shape: top_bullets # mapper split_source allow-list 정합 (Codex round 60)
|
||||
layout_variant: paired_rows_4x2_alternating_pills # runtime projection model
|
||||
cardinality:
|
||||
strict: 4 # 4 issues (2x2 grid)
|
||||
strict: 8 # 8 atomic issues (4 rows × 2 cells per source texts.md)
|
||||
overflow_policy: abort_or_review
|
||||
|
||||
# row × side deterministic mapping per Codex round 70 §1.
|
||||
role_order:
|
||||
- issue_1
|
||||
- issue_2
|
||||
- issue_3
|
||||
- issue_4
|
||||
- row_1_left
|
||||
- row_1_right
|
||||
- row_2_left
|
||||
- row_2_right
|
||||
- row_3_left
|
||||
- row_3_right
|
||||
- row_4_left
|
||||
- row_4_right
|
||||
|
||||
# min_height_px : F16 (quadrant 4) 와 동등 class.
|
||||
# 2 row × 2 col × (label 24 + body 60) + title 30 + gaps + padding = ~280 + buffer 70 = **350**.
|
||||
# min_height_px : provisional 380 (8 cells + title + gaps), smoke 후 1 회 조정 가능.
|
||||
# pill_positions : source index.html line 161~225 의 row-별 pill 상/하 alternation (top/bottom/top/bottom).
|
||||
# row_gap_after : source line 199-200 의 `<div class="row-gap">` (행 2-3 사이 시각 단락) per Codex round 58 §3.
|
||||
visual_hints:
|
||||
min_height_px: 350
|
||||
min_height_px: 380
|
||||
pill_positions: [top, bottom, top, bottom]
|
||||
row_gap_after: [2]
|
||||
|
||||
accepted_content_types:
|
||||
- text_block
|
||||
|
||||
sub_zones:
|
||||
- id: issue_1
|
||||
- id: row_1_left
|
||||
role: main_text
|
||||
accepts: [text_block]
|
||||
cardinality: { strict: 1 }
|
||||
partial_target_path: ".f17b__grid > .f17b__cell:nth-child(1)"
|
||||
- id: issue_2
|
||||
partial_target_path: ".f17b__row:nth-child(1) > .f17b__cell--left"
|
||||
- id: row_1_right
|
||||
role: main_text
|
||||
accepts: [text_block]
|
||||
cardinality: { strict: 1 }
|
||||
partial_target_path: ".f17b__grid > .f17b__cell:nth-child(2)"
|
||||
- id: issue_3
|
||||
partial_target_path: ".f17b__row:nth-child(1) > .f17b__cell--right"
|
||||
- id: row_2_left
|
||||
role: main_text
|
||||
accepts: [text_block]
|
||||
cardinality: { strict: 1 }
|
||||
partial_target_path: ".f17b__grid > .f17b__cell:nth-child(3)"
|
||||
- id: issue_4
|
||||
partial_target_path: ".f17b__row:nth-child(2) > .f17b__cell--left"
|
||||
- id: row_2_right
|
||||
role: main_text
|
||||
accepts: [text_block]
|
||||
cardinality: { strict: 1 }
|
||||
partial_target_path: ".f17b__grid > .f17b__cell:nth-child(4)"
|
||||
partial_target_path: ".f17b__row:nth-child(2) > .f17b__cell--right"
|
||||
- id: row_3_left
|
||||
role: main_text
|
||||
accepts: [text_block]
|
||||
cardinality: { strict: 1 }
|
||||
partial_target_path: ".f17b__row:nth-child(3) > .f17b__cell--left"
|
||||
- id: row_3_right
|
||||
role: main_text
|
||||
accepts: [text_block]
|
||||
cardinality: { strict: 1 }
|
||||
partial_target_path: ".f17b__row:nth-child(3) > .f17b__cell--right"
|
||||
- id: row_4_left
|
||||
role: main_text
|
||||
accepts: [text_block]
|
||||
cardinality: { strict: 1 }
|
||||
partial_target_path: ".f17b__row:nth-child(4) > .f17b__cell--left"
|
||||
- id: row_4_right
|
||||
role: main_text
|
||||
accepts: [text_block]
|
||||
cardinality: { strict: 1 }
|
||||
partial_target_path: ".f17b__row:nth-child(4) > .f17b__cell--right"
|
||||
|
||||
payload:
|
||||
title:
|
||||
source: section.title
|
||||
# Builder 재사용 = `quadrant_flat_slots` (F16 pattern, pad_to=4).
|
||||
# F16 = TL/TR/BL/BR quadrant. F17 = paired-rows-2x2 (top-left/top-right/bottom-left/bottom-right).
|
||||
# 차이 = key prefix only ("quadrant_N" vs "issue_N"). partial layout 동일 2x2 grid.
|
||||
builder: quadrant_flat_slots
|
||||
# 신규 builder — quadrant_flat_slots 와 차이 : 1-axis (TL/TR/BL/BR) → 2-axis (row × side).
|
||||
# strict 8 + no pad/truncate (silent loss 차단, Codex round 60 §3).
|
||||
# parser = quadrant_item 재사용 (label + body heading-less, Codex round 60).
|
||||
builder: paired_rows_4x2_slots
|
||||
builder_options:
|
||||
item_parser: quadrant_item # 재사용
|
||||
pad_to: 4
|
||||
truncate_at: 4
|
||||
label_key_pattern: "issue_{n}_label"
|
||||
body_key_pattern: "issue_{n}_body"
|
||||
empty_label: ""
|
||||
empty_body: []
|
||||
item_parser: quadrant_item
|
||||
label_key_pattern: "row_{r}_{side}_label"
|
||||
body_key_pattern: "row_{r}_{side}_body"
|
||||
rows: 4
|
||||
sides: [left, right]
|
||||
|
||||
Reference in New Issue
Block a user