From 766fa4639dac43a743dd12596a0ca37257ad5347 Mon Sep 17 00:00:00 2001 From: kyeongmin Date: Wed, 13 May 2026 11:57:45 +0900 Subject: [PATCH] =?UTF-8?q?fix(IMP-04):=20F12=20F1=20follow-ups=20?= =?UTF-8?q?=E2=80=94=20intersection=20optional=20+=20smoke=20title=20gener?= =?UTF-8?q?ic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same-frame F1 follow-up commit per Codex round 37 (#15503). Matrix §4.1 Fix 7 4-class: F1 = small same-frame fix + Codex re-review (not F2/F3, no Track A pause needed). Two fixes (both Codex-caught) : 1. F1-a — `intersection` sub_zone contract semantics - Previous (c67609c) declared `cardinality: { strict: 1 }` on the intersection sub_zone, while the builder used `intersection_default: ""` and the partial hides empty intersection. That mismatch meant production payloads could silently omit the center concept while the contract still demanded strict 1. - Fix : `cardinality: { min: 0, max: 1 }` — intersection is now explicitly optional, matching analysis.md "slots 5개, required 4개" (intersection was originally the optional 5th slot). - Builder behavior unchanged (intersection_default = "" still produces empty when MDX has no center text; partial's :empty hide remains semantically correct). 2. F1-b — smoke harness viewer title leakage - Previous harness output had `F14 render artifact — {template_id}` hardcoded from the original F14-specific implementation. - Fix : generic `Phase Z render artifact — {template_id}`. - Affects all `--render-to` dev artifacts going forward. Verification : - python scripts/smoke_frame_render.py --self-check : PASS 5/5 - python scripts/smoke_frame_render.py construction_goals_three_circle_intersection --render-to data/runs/imp04_f12_visual_r2 : PASS, generated title now reads "Phase Z render artifact — construction_goals_three_circle_intersection" - Catalog yaml parse : intersection cardinality = {min: 0, max: 1} scope-lock honored : no V4 logic, no builder/parser logic, no other partial, no Phase Z production render, no Phase R'/AI/Kei changes. F1 fix scope only. Refs Gitea #4 (IMP-04 Track A frame 2 — F1 follow-up per Codex round 37) --- scripts/smoke_frame_render.py | 2 +- templates/phase_z2/catalog/frame_contracts.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/smoke_frame_render.py b/scripts/smoke_frame_render.py index 18dabb1..49de708 100644 --- a/scripts/smoke_frame_render.py +++ b/scripts/smoke_frame_render.py @@ -284,7 +284,7 @@ def render_to_dir(template_id: str, slot_payload: dict, out_dir: Path) -> tuple[ viewer = f""" -F14 render artifact — {template_id} +Phase Z render artifact — {template_id}