전체 26 files (20 추가 + 6 수정), 10507 insertions. Phase Z 문서 : - docs/architecture/PHASE-Z-CHANGE-LOG.md (신설) — axis-by-axis 의사결정 history (newest-on-top). Step 7-A 부터 6 entry 박힘 + 2026-05-08 / 2026-05-08 #2 (compat 매트릭스 폐기 / 6-B 폐기 / F14 표현 정정 / label gate policy 분리). - docs/architecture/PHASE-Z-PIPELINE-OVERVIEW.md (수정) — Step 5/6/9 Gap note append (구조 무변, append-only). 6-B 폐기 사실 + Refinement F. - docs/architecture/PHASE-Z-PIPELINE-STATUS-BOARD.md (수정) — snapshot date 2026-05-08 갱신. §3 핵심 missing item 5 (Step 5/6/9 boundary axis breakdown + 폐기 기록). §6 한 줄 갱신 — 다음 axis 후보 A~F. Project root docs : - PLAN.md / PROGRESS.md / README.md (수정) — 토큰 체계 / 폴더 구조 / 설계 문서 / 역할 분리 반영. - IMPROVEMENT-REDESIGN.md (신설) — Phase Z 설계 핵심 문서. - PROCESS_OVERVIEW.html (신설) — 파이프라인 개요 시각. - docs/tasks/* (신설) — Phase Z task 문서. V4 catalog (Phase Z runtime 필수 의존성) : - tests/matching/v4_full32_result.yaml (신설, 4888 줄) — V4 매칭 결과 32 frame × 10 MDX section. lookup_v4_match() / lookup_v4_candidates() 가 본 파일 read. Phase Z runtime 이 *없으면 즉시 abort* — clone 후 즉시 동작 가능 보장. Samples : - samples/mdx_batch/04.mdx (신설) — MDX04 기본 sample. - samples/mdx/04. DX 지연 요인.mdx (신설) — MDX04 원본. Phase Q legacy 보존 (별 axis "Phase Q audit & salvage" 영역) : - src/block_matcher_tfidf.py / catalog_blocks.py / frame_extractor.py / pipeline_v2.py — Phase Q (옛 파이프라인) src 신규 untracked 파일들. Phase Z runtime 와 의존성 0. Phase Q audit axis 에서 검토 예정. - scripts/eval_block_matcher.py / fetch_all_frame_screenshots.py / match_17_units_my_matcher.py / match_mdx_strict.py / match_mdx_to_frames_tfidf.py / ocr_augment_texts.py / run_pipeline_v2.py / previews/ — Phase Q 작업 시 사용한 옛 script. 같이 보존. - run_mdx03_pipeline.py (수정) — Phase Q 진입점 (no flag) + Phase Z 진입점 (--phase-z2 flag) 동시 wrapper. Phase Z 만 사용 시 `python -m src.phase_z2_pipeline samples/mdx_batch/03.mdx <run_id>` 직접 호출. 비-scope : - tests/matching/ (v4_full32_result.yaml 외 ~63MB) — V4 진화 history / reports / DECK / ATTACH. Phase Q audit axis 에서 검토. - tests/pipeline/ (~15MB) — pipeline data. Phase Q audit 영역. - templates/catalog/blocks.yaml — 옛 block catalog. Phase Q audit. - templates/phase_z2/frames/ — 옛 frame partial 위치. Phase Q audit. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
10 KiB
Phase Z — pipeline status board
Snapshot date : 2026-05-08 (Step 7-A/B + 8-A/B-1/B-2 catalog/candidate fn axis closure / Step 5-6-9 boundary reframe lock)
역할 : 현재 위치표 / grading snapshot. 지도 본문 은 PHASE-Z-PIPELINE-OVERVIEW.md.
| 문서 | 역할 | 변동 |
|---|---|---|
PHASE-Z-PIPELINE-OVERVIEW.md |
고정 지도 (22-step 도면) | 거의 안 바뀜 |
PHASE-Z-PIPELINE-STATUS-BOARD.md |
현재 진행 snapshot | 자주 갱신 |
본 문서가 하지 않는 것 :
- 새 구현 제안 X
- next step 추천 X
- 우선순위 결정 X
- A/B/C 선택지 X
- MDX03 / MDX04 추가 분석 X
- 코드 변경 X
- OVERVIEW 구조 수정 X
1. Counting rule
Step 0 = precondition (파이프라인 가동 전 사전 준비)
Step 1~22 = runtime pipeline ("22-step pipeline" = 이 범위)
총 항목 수 = 23 (Step 0 + Step 1~22)
명명 = "22-step" (runtime 기준)
Step 0 은 본체가 아닌 준비 조건. Step 1 (MDX 업로드) 부터가 runtime entry.
2. 22-step status board
| Block | Step | 이름 | Status |
|---|---|---|---|
| — | 0 | 사전 준비 (catalog / contract / V4 / template / asset) | ⚠ partial |
| A | 1 | MDX 업로드 | ✅ |
| A | 2 | MDX 정규화 | ⚠ partial |
| A | 3 | Content Object 추출 | ⚠ partial (B1 v0 dormant module + trace-only runtime 호출, render path 미연결) |
| A | 4 | Section Internal Composition Planning | ⚠ partial (B2 v0 dormant module + trace-only runtime 호출, render path 미연결) |
| A | 5 | Matching Evidence 생성 | ⚠ partial (rank-1 only) |
| A | 6 | Composition Planning | ⚠ partial |
| A | 7 | Slide-Level Layout Planning | ⚠ partial (count-based / 7-A catalog + 7-B candidate fn 추가, runtime 호출처 X) |
| A | 8 | Zone + Internal Region Ratio Planning | ⚠ partial (zone-level horizontal-2 만 dynamic / 8-A region+display catalog + 8-B-1/2 candidate fn 추가, runtime 호출처 X / region-level 은 B2 안 partial) |
| A | 9 | Region-Level Frame / Display Selection | ⚠ partial (B4 가 catalog cover + declaration order 로 frame 선택 분담 / V4 evidence 미통합 / Step 5 와 conflate 잔존) |
| A | 10 | Frame Contract 확인 | ⚠ partial (B3 의 accepted_content_types + sub_zones 선언 추가 — B4 만 읽음, mapper 미읽음 / density envelope 별 axis) |
| A | 11 | Content Unit / Child Group → Internal Region → Frame Slot Mapping | ⚠ partial (B4 v0 dormant 2-stage + region 1:1 sub_zone + narrowest first + trace-only runtime 호출, render path 미연결) |
| A | 12 | Slot Payload 생성 | ✅ (deterministic) |
| B | 13 | Render | ✅ |
| C | 14 | Selenium Visual Runtime Check | ⚠ partial (text/structural overflow + B5 frame_slot_metrics F29 만 / image / table 검사 부재) |
| C | 15 | Fit Classification (A1) | ✅ |
| C | 16 | Overflow Router (A2) | ✅ |
| C | 17 | Implemented Action 실행 (A3) | ⚠ partial (zone_ratio_retry only) |
| C | 18 | Failure Classification (A4-1) | ✅ |
| C | 19 | Next Action Proposal (A4-2) | ⚠ partial (1-D mapping) |
| C | 20 | Slide Status 결정 | ✅ |
| C | 21 | Debug / Trace 기록 | ⚠ partial (placement_trace per-zone 기록 + frame_slot_metrics F29 기록 — render path 활성화 X / region marker partial 미주입) |
| C | 22 | 사용자 확인 / Export | ⚠ future (UI 영역 — 현재 범위 외) |
범례 :
- ✅ implemented
- ⚠ partial
- ❌ missing
- ⚠ future (현 범위 외 — 후속)
3. 핵심 missing (전이 후)
이전 Step 3 / 4 / 11 = ❌ missing → 본 session 작업으로 ⚠ partial 로 전이.
현재 남은 gap :
1. render path 의 placement_trace 활용 X
- B4 PlacementPlan 이 trace-only — render_slide() / mapper 가 미사용
- region-id / content_unit-id marker 가 partial template 에 미주입 (B5 후속 axis)
2. B4 frame_selection 의 V4 evidence 미통합
- B4 v0 = catalog declaration order 만 (cover + first-match)
- composition_planner 의 V4 rank-1 와 *cross-axis 비교 자료* 만 — 통합 미완
3. region-level / Frame Slot-level partial 측정
- B5 v0 frame_slot_metrics = F29 1 partial 만
- F13 / F16 marker 미적용
4. 그 외 잔존
- rules 2~5 (region-preview-details / region-grid-2x2 / region-main-support /
region-horizontal-split) 의 algorithm 미구현 (SPEC v1 §2.5 deferred)
- frame contract 의 density envelope 미선언
- tabular_overflow / image_aspect_mismatch 검사 부재 (Step 14)
- layout_adjust / frame_reselect / details_popup_escalation / image_fit /
frame_internal_fit_candidate (Step 17 missing actions) 미구현
5. Step 5 / 6 / 9 boundary axis breakdown (2026-05-08 lock + 2026-05-08 #2 정정)
- Step 5 = rank-1 only → non-reject max-6 후보 list 로 보완 (✓ 박힘)
- Step 6-A = CompositionUnit v4_candidates 필드 additive (✓ 박힘)
- Step 7-conn / Step 8-conn = layout / region / display candidates artifact 연결 (✓ 박힘, Step 8 placeholder signals)
- Step 9 v0 = passive application_plan artifact (✓ 박힘 — V4 후보 + layout/region/display
통합 적용 계획, V4 axis 재계산 X)
- 폐기된 안 (2 가지) :
· "compat 매트릭스" (region × frame slot count) — V4 cardinality 재계산 위험
(CHANGE-LOG.md 2026-05-08 entry 참조)
· "6-B (frame ownership transfer)" — misframed axis. V4 가 frame 선택, Step 6 은
전사, Step 9 는 번역. Step 6 의 frame 채택 책임 = 허구 (CHANGE-LOG.md
2026-05-08 #2 entry 참조). 6-B 의 진짜 content (label gate policy) 는 별 axis.
- 닫힌 axis = 5 / 6-A / 7-conn / 8-conn / Step 9 v0
Cross-cutting Layer A — 진전 단계 정리 :
| 단계 | 상태 |
|---|---|
| (a) OVERVIEW reframe (Layer A first-class lock + Universal Region Model) | ✓ |
| (b) SPEC v1 schema (Internal Region §2 + topology vocabulary §2.5 + 2-stage placement §4) | ✓ |
| (c) PLAN v1 (cross-ref sync) | ✓ |
| (d) B1 v0 ContentObject extractor (dormant) | ✓ |
| (e) B2 v0 InternalRegion planner (dormant) | ✓ |
| (f) B3 frame_contracts.yaml extension (dormant catalog 면) | ✓ |
| (g) B4 v0 placement planner (dormant) | ✓ |
| (h) B5 v0 Frame Slot telemetry markers (F29 만) | ✓ |
| (i) trace-only runtime 연결 (B1→B2→B4 real data 첫 호출 / debug.json placement_trace) | ✓ |
| (j) render path 활성화 (region marker partial 주입 / B4 → mapper 통합 / V4 evidence 통합) | ❌ pending |
= (a)~(i) 완료 + (j) 가 남은 핵심 axis (B5 후속 / runtime 통합).
Step 22 는 별도 범주 (UI 영역 — 현재 자동 파이프라인 범위 외).
4. 구조 적절성 검토 (brief)
snapshot — 22-step 재구성 / 합치기 / 쪼개기 제안 X. OVERVIEW 영역.
- 3-block 구조 (A 계획 / B 렌더 / C 사후 telemetry) 적절. 위계 추가 (Zone Internal Region) 후에도 block 경계는 변동 없음
- Step 3~4 가 Step 5 보다 앞 인 순서 적절. content_object 와 internal composition decision (3-way) 이 frame matching 의 입력이어야 함
- Step 5 (evidence 생성) 와 Step 9 (final frame / display 선택) 가 분리 된 구조 적절. 현재 conflate 된 건 구현 결손이지 도면 결손 아님. Step 9 의 unit of analysis = region 으로 reframe (OVERVIEW)
- A1~A4 는 post-render telemetry layer. 진짜 fit policy 의 자리는 Block A (composition planning, region 분할 포함). C block 은 exception 처리 + 진단 안내
- Universal Region Model 적용 후에도 step numbering 보존 : Layer A 도입은 step 추가가 아니라 Step 4 / 8 / 9 / 11 의 granularity unit shift 로 흡수됨. step 0 ~ 22 그대로
- Layer A trace-only runtime 활성화 = boolean 차원 X : B1~B4 가 real MDX runtime 위에서 호출 되나 render path 미대체. debug.json 의 placement_trace = 진단 telemetry only — final.html / canonical SHA 미영향. render 활성화 는 별 axis (B5 후속)
5. AI 사용 위치 (runtime 기준)
runtime AI = Step 12 의 light_edit / restructure 1 곳만
├ 입력 : content_object + frame contract + Internal Region 배치 + Frame Slot 명세
├ 출력 : content → Internal Region / Frame Slot proposal
└ 금지 : MDX 원문 요약·삭제 / HTML·CSS 직접 생성 / layout·zone·region·frame 임의 선택
Step 0 (사전 준비) 의 Figma → HTML 변환은 precondition phase 의 작업 — runtime AI 아님.
다른 step 에서의 AI 호출은 본 도면 안에 없음.
6. 현재 병목 (한 줄)
현재 Phase Z 의 Layer A pre-render planning (Step 3 / 4 / 11) 은 본 session 작업으로 ❌ → ⚠ partial 전이 (B1/B2/B4 dormant module + trace-only runtime 호출). Layer A telemetry 의 first activation — debug.json 의 placement_trace per-zone + frame_slot_metrics F29 partial 기록. 단 render path 활성화는 미완 : B4 PlacementPlan 이 mapper output 을 대체하지 않고 trace-only / region-id / content_unit_id marker 가 partial template 에 미주입 / B4 frame_selection 이 V4 evidence 미통합. Step 5/6/9 boundary axis breakdown 닫힘 (Step 5 / 6-A / 7-conn / 8-conn / Step 9 v0 박힘 — passive application_plan artifact). 6-B (frame ownership transfer) = misframed axis 폐기 (CHANGE-LOG.md 2026-05-08 #2). 핵심 다음 axis 후보 (별 axis lock) = (A) V4 frame 후보 → Phase Z render path 연결 확장 (F14/F11/F18 등 미연결 frame adapter — contract + partial + builder, figma 새 디자인 X / V4 새 매칭 X), (B) Step 17 details_popup_escalation, (C) Step 4 unit_count 산출, (D) Step 3/4 render path 활성화 (Layer A activation), (E) label gate policy 재검토 (= 6-B 의 진짜 content 였던 것), (F) Step 9 v1 scoring + auto decision. runtime contract-registered / verified frame set 이 text-frame 중심 한계는 (A) 가 직접 푸는 axis.
사용 방법
- 새 작업 들어오면 → 본 board 의 어느 step 의 status 를 바꾸는 작업인지 식별
- 작업이 Step 매핑이 안 되면 → over-scoped 또는 새 step 정의 필요 (OVERVIEW 영역)
- ✅ → ⚠ → ❌ status 전이 / 갱신 시 → 본 board 만 수정. OVERVIEW 는 step 추가/제거/순서 변경 시에만