Skip to content

CDO: add creative render tools that need route-level persistence (comic cover, etc.) #2220

Description

@atomantic

Discovered while working #2183 (CDO Phase 1 creative tool registry).

The creative tool registry deliberately omits pipeline_enqueueComicCover. The bare enqueueComicCover() service only queues the render job — the completed cover is attached by the filename hook only if the issue's active cover slot already carries the returned jobId, and that slot write lives in the route factory (routes/pipeline/covers.js#makeCoverRenderHandler: buildRenderSlot + slotKeyForVariant + issuesSvc.updateStageWithLatest + the script-gate patch), not in the service. Wrapping the bare service in a creative tool would silently drop orchestrated covers.

Task: extract the enqueue+persist cover-render flow from makeCoverRenderHandler into a shared service entry point (e.g. renderComicCover(issueId, opts) returning { jobId, slot, ... } and persisting the slot), have the four cover-render routes call it, then add pipeline_enqueueComicCover (and any sibling volume/back-cover render tools) to server/services/creative/tools/pipeline.js as a conductor over that service — so both the route and the orchestrator share one code path.

Do the same audit for any other creative-suite render/generate action whose route handler performs slot/id persistence the bare service omits (the universe render preflight was already inlined into universe_renderUniverseJobs in #2183).

Context: docs/plans/2026-07-04-creative-director-orchestrator.md, part of epic #2182.

Metadata

Metadata

Assignees

No one assigned

    Labels

    planTracked by /do:replan

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions