kyeongmin
fc3f7d8826
feat(step2+step3): slide-level rich ContentObject trace (IMP-03 #3)
- Add extract_rich_content_objects(normalized_assets, mdx_id) in
phase_z2_content_extractor.py emitting slide-level rich ContentObjects
for SPEC v1 §1.2 types: details (popups), image, table
- Extend ContentObject dataclass with optional scope/mdx_id/section_id
metadata fields (additive, default None — v0 unchanged)
- _stage0_chained_adapter() returns 5-tuple adding normalized_assets
({popups, images, tables}); empty on env=OFF / hard fallback
- Step 2 artifact gains additive stage0_normalized_assets nested field
(env=OFF / fallback → empty lists). Existing 7 fields preserved.
- Step 3 emits root-level rich_content_objects once at slide scope
with rich_content_objects_enabled / scope / source / disabled_reason /
skips / invariant_warnings. per_zone list still references v0 only.
- PHASE_Z_STEP3_RICH_OBJECTS_ENABLED env flag, default OFF (canary,
matches PHASE_Z_STAGE0_ADAPTER_ENABLED / PHASE_Z_B4_*). Enable
requires flag=1 AND non-empty normalized_assets; otherwise records
disabled_reason = FLAG_OFF or NO_NORMALIZED_ASSETS.
- transform_table dedup: arrow glyph detection in normalized table
rows/headers → skip with reason=skipped_transform_table_duplicate.
v0 _capture_3col_transform_table remains the sole transform_table
source; generic table only for non-transform tables.
- ID pattern {mdx_id}.{details,image,table}-N (slide-level namespace).
- plan_placement() input unchanged (v0 content_objects only) — rich
list never feeds placement/region planning in this issue.
- self-test extended with 5 rich extractor cases (popup/image/table
/arrow-skip/empty); v0 self-test unchanged and still PASS.
- mapper / V4 / composition / Step 6+ / AI/Kei / pipeline_path_connected
unchanged. trace fidelity only.
env OFF + rich OFF: legacy PASS, no regression
env OFF + rich=1 : disabled_reason=NO_NORMALIZED_ASSETS, rich list empty
env=1 + rich=1 : Step 2 stage0_normalized_assets populated (1 table on
MDX 03, invariant match adapter_counts). Step 3 write
blocked by inherited IMP-02 composition_planner abort
(downstream gap, not IMP-03 scope).
Refs Gitea #3 (IMP-03 A-1 popup/image/table trace)
2026-05-13 01:18:25 +09:00
..
2026-03-24 17:25:47 +09:00
2026-04-15 16:39:50 +09:00
2026-04-17 13:56:03 +09:00
2026-05-08 09:47:58 +09:00
2026-04-15 16:39:50 +09:00
2026-03-31 08:38:06 +09:00
2026-03-31 08:37:05 +09:00
2026-05-08 09:47:58 +09:00
2026-03-24 17:25:47 +09:00
2026-04-06 05:00:52 +09:00
2026-04-06 05:00:52 +09:00
2026-04-06 05:00:52 +09:00
2026-03-31 08:37:05 +09:00
2026-04-07 04:39:02 +09:00
2026-05-08 09:47:58 +09:00
2026-04-06 05:00:52 +09:00
2026-03-31 08:37:05 +09:00
2026-04-15 16:39:50 +09:00
2026-04-15 16:39:50 +09:00
2026-03-25 19:15:28 +09:00
2026-04-07 06:00:18 +09:00
2026-05-04 17:40:21 +09:00
2026-05-08 09:47:11 +09:00
2026-05-13 01:18:25 +09:00
2026-05-04 08:21:28 +09:00
2026-05-07 05:26:57 +09:00
2026-05-04 08:21:28 +09:00
2026-05-13 01:18:25 +09:00
2026-05-07 05:26:57 +09:00
2026-05-04 08:21:28 +09:00
2026-05-04 08:21:28 +09:00
2026-04-15 16:39:50 +09:00
2026-05-08 09:47:58 +09:00
2026-04-15 16:39:50 +09:00
2026-04-15 16:39:50 +09:00
2026-04-15 16:39:50 +09:00
2026-04-15 16:39:50 +09:00
2026-04-15 16:39:50 +09:00
2026-03-26 13:06:21 +09:00
2026-04-15 16:39:50 +09:00
2026-03-25 18:40:20 +09:00
2026-04-15 16:39:50 +09:00