| 1 | > Default Generate also loads [`executor-base.md`](./executor-base.md). Quick |
| 2 | > Generate deliberately does not; this branch supplies its conditional image |
| 3 | > realization rules directly. |
| 4 | |
| 5 | # Executor Image Branch |
| 6 | |
| 7 | Conditional Executor authority for image status handling, placement, crop behavior, formula images, and template-bundled images. |
| 8 | |
| 9 | **Trigger**: load for any image/formula in §VIII, the lock, Quick Generate's active-context resource decisions, or a selected template. |
| 10 | |
| 11 | ## 1. Image Handling |
| 12 | |
| 13 | Handle images by status; enum and lifecycle: [`svg-image-embedding.md`](svg-image-embedding.md). |
| 14 | |
| 15 | **Mode boundary**: Default keeps Strategist → Executor with no downstream acquisition/reselection. Quick substitutes the main agent's prepared active-context resources for §VIII/lock below; the same boundary starts at SVG authoring. |
| 16 | |
| 17 | | Status | Source | Handling | |
| 18 | |--------|--------|----------| |
| 19 | | **Existing** | User-provided | Reference images directly from `../images/` directory | |
| 20 | | **Generated** | Generated by Image_Generator | Reference images directly from `../images/` directory | |
| 21 | | **Sourced** | Web-acquired by Image_Searcher | Reference from `../images/`. **Read [`image_sources.json`](image-searcher.md) to decide attribution** — load [`executor-web-image.md`](./executor-web-image.md). | |
| 22 | | **Rendered** | Deterministic formula PNG | Reference from `../images/`; use a legal anchor with `meet` (centered default: `xMidYMid meet`) | |
| 23 | | **Needs-Manual** | Acquisition or suitability remains unresolved | Default uses a placeholder until Step 7. Quick blocks every required row in this status; file presence alone does not bypass it. | |
| 24 | | **Placeholder** | Not yet prepared | Use dashed border placeholder | |
| 25 | |
| 26 | **Reference syntax**: see [`svg-image-embedding.md`](svg-image-embedding.md). |
| 27 | |
| 28 | **Template-bundled images**: [`apply-template-workspace.md`](../workflows/stages/apply-template-workspace.md) copies them into project `images/`. Outside `mirror`, reference `../images/<name>` and never copy a template SVG's bare sibling href: the rendered page lives in `svg_output/`. `mirror` ([`executor-structured.md`](./executor-structured.md) §1.1) keeps hrefs verbatim; export resolves them against `images/`. |
| 29 | |
| 30 | **Default — active image integration (may override when plain placement is |
| 31 | stronger)**: Treat loaded [`image-layout-patterns.md`](./image-layout-patterns.md) |
| 32 | as vocabulary and [`image-layout-spec.md`](./image-layout-spec.md) as math, not |
| 33 | a quota or lock. Run the catalog's §7 playbook before drawing; its combinations |
| 34 | are recall aids, not coverage targets. A `#P...` suggestion completes only the |
| 35 | page skeleton; omitted `M`, effect, Boolean, or native overlay leaves |
| 36 | realization open and never means “keep plain.” For every image-bearing page, |
| 37 | derive the image/content or image/shape relationship from its communication job, |
| 38 | hierarchy, copy, asset ratio/focus, and deck rhythm. Before drawing, form one |
| 39 | relevant treatment candidate, compare it with `P`-only, implement the stronger |
| 40 | legal composition, and realize any adopted treatment through the already-loaded |
| 41 | [`svg-effects.md`](./svg-effects.md) and |
| 42 | [`native-shape-authoring.md`](./native-shape-authoring.md). This is an opportunity |
| 43 | pass, not an effect quota. Deepen, simplify, replace, or combine suggestions; |
| 44 | plain placement remains valid when it communicates better. Preserve role/source, |
| 45 | must-use, crop/content, and explicit user/template constraints; expression-only |
| 46 | changes need no upstream rewrite. |
| 47 | |
| 48 | **Reference — motion-ready image layering, not a constraint**: For adopted §IX or an explicit focus, comparison, evidence, reveal-order, or cross-page requirement, decide during SVG authoring whether the final composition needs separate visible units. Keep ordinary stable framing/background static and wrap each independently revealed or continuing Slide-local unit in a descriptive direct-root `<g id>`; structured atoms/slots retain their boundaries. Existing units or a page transition may suffice. The motion stage owns effects, pairing, order, and timing. |
| 49 | |
| 50 | **Hard rule — visible-layer timing**: Any crop, lens, scrim, comparison, evidence, or annotation layer required by an adopted motion plan MUST already exist in the final SVG without violating structural contracts. The later stage may regroup ordinary Slide-local content visual-equivalently, but cannot invent or modify missing visible content. If no legal existing unit can serve a non-binding suggestion, simplify it to available units, a page transition, or `none`; an explicit requirement that cannot be represented follows failure recovery. |
| 51 | |
| 52 | **Hard rule — narrow visual-inspection scope**: Start with §VIII `Reference` plus dimensions. If one `Existing`/`Sourced` asset still leaves focal-safe crop, overlay contrast, or a quiet region ambiguous, inspect only that asset/review copy for placement. This cannot reopen selection, change identity/must-use, infer provenance, substitute the asset, or invent focus; never routinely read back `Generated` images. If `adaptive` focus stays uncertain, use `meet`; conflicting binding constraints return upstream. |
| 53 | |
| 54 | **Placeholder**: Dashed border `<rect stroke-dasharray="8,4" .../>` + description text |
| 55 | |
| 56 | **Crop policy**: read the §VIII row and matching lock projection. On every slide that uses a `crop=no-crop` source (or a legacy trailing `| no-crop`), retain one visible complete instance using one of the nine legal anchors with `meet`, never `none`, and no `clip-path`, `mask`, clipping overflow, or nested `<svg>` crop viewport. An auxiliary same-slide detail or lens may crop the same source only while that complete instance remains visible. `crop=adaptive` permits but never requires cropping; choose `meet` or focal-safe `slice` from purpose, ratio, focus, and container. A missing or conflicting `source` / `pattern` / `crop` projection returns upstream instead of being inferred during execution; the accurately projected `pattern` remains a preferred expression that may be adapted without rewriting the lock. |
| 57 | |
| 58 | **Hard rule — same-source addressable crops, only when adopted**: A layout |
| 59 | suggestion, including pattern `#M1-11`, never activates this transport. Pattern |
| 60 | `#M1-09` is a separate deliberate-offset treatment and never claims registered |
| 61 | or Morph continuity. Apply this transport only when independent crops must |
| 62 | preserve one exact scene map or an explicit editable/Morph requirement needs |
| 63 | them. Once active, reuse one exact |
| 64 | `href` without slice assets. Give every independent/Morph object a stable |
| 65 | page-unique id and a distinct nested crop wrapper under |
| 66 | [`svg-effects.md`](./svg-effects.md) §6.5. Plain rectangles need no crop marker; |
| 67 | shaped frames put `data-pptx-crop="1"` on the wrapper and a matching |
| 68 | `userSpaceOnUse` clip on its inner `<image>`, never the wrapper. Repeated crops |
| 69 | or SVG/PPT visual drift fail. Derive every wrapper `viewBox` from one shared |
| 70 | source-to-page transform over the union of the visible containers. Never run |
| 71 | `cover` / focal cropping independently per container: different container |
| 72 | positions and heights must change the source-unit `x`, `y`, `width`, and |
| 73 | `height` by the same union-relative mapping, so the gaps remove pixels without |
| 74 | rescaling the scene. A compound clip on one `<image>` is pattern `#M1-10`, not a |
| 75 | substitute when the objects must remain independently editable or Morphable. |
| 76 | |
| 77 | **Formula images — declared-inference fallback for a missing `no-crop` flag**: rows with `Acquire Via: formula` or `Type: Latex Formula` MUST be treated as no-crop. For a rendered file, use dimensions in this order: current `analysis/image_analysis.csv`, `design_spec.md §VIII`, then `images/formula_manifest.json`. For a `Needs-Manual` row, size the dashed placeholder from the planned dimensions in §VIII, then the manifest; the readiness gate re-analyzes the supplied file and reconciles the container before export. Do not normalize all formulas to one height unless the spec explicitly states that layout choice. |
| 78 |