Nodes/DOGMA Nodes/DOGMA v36 Compact Tile Prompt
ComfyUI Node

DOGMA v36 Compact Tile Prompt

Strip the VLM report down to nouns, then protect the rest

By axior·Created 4 months ago·Updated 3 days ago· 1
DOGMA v36 Compact Tile Prompt
    • prompt
    • clean_report
    tile_report
    project_context

    By v36 the author had stopped pasting VLM prose into prompts altogether. This composer parses the report into terms, sorts them into "things that exist" and "things to leave alone", and writes a two-clause prompt from those lists. Nothing else from the report survives.

    The parsing rules

    The report is expected to have SUPPORTED: and PROTECT: / AMBIGUOUS_OR_EMPTY: sections. Each is split on commas and semicolons into individual terms, lowercased, deduped, and capped - 12 supported terms, 10 protected. Three filters do the interesting work:

    1. Text-bearing terms are deleted outright. Anything containing letter, text, logo, license plate, advert, billboard, signage never reaches the prompt. With a comment that says it plainly: never condition Klein with text-bearing identity classes. Naming a sign in your prompt is how you get the model rewriting the sign.
    2. Soft-by-nature terms are moved from SUPPORTED to PROTECT. Reflection, blur, haze, sky, shadow, fog, glare. These are the terms a VLM is most likely to list as content and a model is most likely to convert into structure - haze becomes smoke, reflection becomes a puddle, sky becomes clouds with edges.
    3. Empty lists get defaults. No protected terms at all → "true blur, reflections, haze, sky, shadows, unreadable text, distant indistinct forms".

    Then the prompt is assembled as a lead plus a fixed body, and if SUPPORTED is empty it switches the lead to PRESERVE THIS TILE. with "no high-confidence restoration target is required" - the same nothing-to-do branch the rest of the family has.

    Outputs are prompt and clean_report, and the clean report is deliberately machine-shaped:

    SUPPORTED: cars; trees; grass lawn
    PROTECT: haze; unreadable text
    

    Inputs

    tile_report and project_context (both STRING, both forced multiline inputs). Note that unlike the later versions, v36 doesn't inject the project context into the prompt as a period lock - it's the writer for callers who want the tile prompt to be about the tile and nothing else.

    Install

    ComfyUI Manager → search DOGMA Nodes, or:

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

    Restart ComfyUI. No pip installs, no downloads - requirements.txt is # No external dependencies. and this is string handling. The pack's README documents only the WAN VACE prep nodes and the DOGMA samplers, so there's no upstream writeup of this node; the class body is about sixty lines if you want to read the filters yourself.

    Why term lists beat sentences here

    Because they're auditable. A VLM that says "the scene shows evidence of a hazy sky with indistinct distant forms, likely vehicles" turns into PROTECT: haze; indistinct distant forms - and you can see that the vague stuff went into protection rather than into the generation list. The KB's LLM doc is direct about the underlying weakness this is compensating for: every VLM in the ecosystem muddles attribution and confidently over-names, so an extraction policy that discards anything uncertain is doing more than any instruction sentence can.

    Where it bites

    Terms are matched as text, not understood. "Vehicle reflections" contains "reflection" → moved to PROTECT. Good. "Metallic sheen" doesn't match anything → stays in SUPPORTED and becomes a target. You are the parser's quality control.

    The caps bite in busy tiles. Twelve supported terms on a tile with a whole street in it means something got dropped, silently, from the end of the list. If a tile's restoration is oddly patchy, clean_report tells you what actually made it through.

    Same caveat as every composer here: it's the text half. Whether the model can change anything at all is decided upstream by your mask and noise mask, not by this node.

    v381 exists for a reason. If your reports come back with synonyms splitting one concept - "car", "cars", "vehicle", "automobile" as four separate entries - the v381 variant of this node canonicalises them into one term before writing. Reach for it when your VLM's vocabulary wanders.

    CategoryDOGMA/Semantic Detailer

    Inputs (2)

    NameTypeDefaultDescription
    tile_reportSTRING
    project_contextSTRING

    Outputs (2)

    NameTypeDescription
    promptSTRING
    clean_reportSTRING