Nodes/DOGMA Nodes/DOGMA v44 Source-Grounded Tile Prompt
ComfyUI Node

DOGMA v44 Source-Grounded Tile Prompt

Only mention the period if the tile actually contains the thing

By axior·Created 4 months ago·Updated 3 days ago· 1
DOGMA v44 Source-Grounded Tile Prompt
    • prompt
    • clean_report
    tile_report
    project_context

    There's a subtle way a good tile prompt sabotages itself: you tell the model "1970s Milan, period-correct vehicles and architecture" on a tile that contains sky, half a wall and a rooftop. Congratulations, you've just described a street scene to a model that was supposed to be sharpening a chimney.

    v44's fix is conditional context injection, and it's the most interesting idea in this whole family of prompt writers.

    The allowlist, and the conditional clause

    The report is expected to carry SUPPORTED: and AMBIGUOUS_OR_EMPTY: sections. Supported items become an explicit visible-content allowlist - "RESTORE ONLY THESE EXISTING THINGS" - and the allowlist is the first thing in the prompt. Then:

    SOURCE GEOMETRY IS ABSOLUTE GROUND TRUTH. Do not introduce any semantic subject absent from the visible-content allowlist.

    And where the earlier composers appended a blanket period lock to every tile, v44 checks the supported terms against four families and injects only the clauses that apply:

    • vehicles present → "Existing visible vehicles must keep period-correct design."
    • architecture present → "Existing visible architecture must keep period-correct materials and design."
    • people present → "Existing visible people and clothing must remain period-correct."
    • street furniture present → "Existing visible street furniture must remain period-correct."

    Everything else gets the project context's first sentence only - split on sentence boundaries, capped at 220 characters - labelled PERIOD/LOOK LOCK. So the tile with a chimney and sky gets one short lock clause and no invitation to populate a street.

    The ambiguous list gets its own section: preserve as ambiguous, with the wording "Indistinct shapes must stay indistinct unless the source pixels themselves clearly define them." Which is the correct hedge, because the failure isn't inventing a car - it's resolving a smudge into a car.

    Inputs and outputs

    tile_report (cleaned, fences stripped, capped at 1400 characters - the loosest cap in the family, because v44 splits on your section headers rather than truncating meaning) and project_context. Both required strings.

    Outputs prompt and clean_report; the report is the cleaned raw text, so you can see whether your VLM actually emitted the two sections the parser is looking for.

    Install

    ComfyUI Manager → search DOGMA Nodes, or:

    cd ComfyUI/custom_nodes && git clone https://github.com/axior/ComfyUI-DOGMA-Nodes
    

    Restart ComfyUI. No dependencies - requirements.txt is one comment, # No external dependencies. - no weights, no API. The pack README documents only the WAN VACE nodes and the DOGMA samplers, so this one has no upstream docs at all.

    Where it bites

    The family keywords are a fixed regex list. Vehicles, buildings, people, street furniture - that's it. A tile of product photography or machinery gets no tailored clause and relies on the generic period lock. Not a bug, just the shape of the tool: it was written for archive city footage.

    No SUPPORTED: section means you're on generic ground. The fallback text is "no reliable semantic subject; only source geometry and low-information fields" - accurate, and it will produce a conservative prompt on every tile. If your VLM ignores the section format, this node behaves like a blunt instrument.

    Ambiguity preservation is a request, not a guarantee. Models resolve smudges anyway. The real defences in this pipeline are mask-side: if a region should not be touched, exclude it from the generation mask rather than asking nicely in the prompt.

    One project context is shared across tiles. Nothing here checks that a tile's content matches your context - a tile of pure modern sky still gets your 1970s clause. That's the price of a global period lock, and it's why the conditional clauses only fire on visible families.

    CategoryDOGMA/v44

    Inputs (2)

    NameTypeDefaultDescription
    tile_reportSTRING
    project_contextSTRING

    Outputs (2)

    NameTypeDescription
    promptSTRING
    clean_reportSTRING