Nodes/DOGMA Nodes/DOGMA Semantic Plan v16 — Concrete Categories
ComfyUI Node

DOGMA Semantic Plan v16 — Concrete Categories

The original five-slot planner, and its forbidden-word list

By axior·Created 4 months ago·Updated 3 days ago· 1
DOGMA Semantic Plan v16 — Concrete Categories
    • plan_preview
    • category_1
    • sam_prompt_1
    • sam_threshold_1
    • category_2
    • sam_prompt_2
    • sam_threshold_2
    • category_3
    • sam_prompt_3
    • sam_threshold_3
    • category_4
    • sam_prompt_4
    • sam_threshold_4
    • category_5
    • sam_prompt_5
    • sam_threshold_5
    planner_text

    What it is

    The first planner in the DOGMA semantic detailer line: free text in, five slots of category / sam_prompt / sam_threshold out. If you're writing a workflow from scratch today you'd probably start at v21 or v27, but v16 is worth understanding because its rules are the foundation every later version inherits, and because its per-category SAM prompts are the most specific ones in the pack.

    How the parsing works

    Two things happen to your planner_text, in this order.

    Cleaning. Lines are split on newlines and commas, so cars, people, windows and three separate lines parse the same way. Bullets, numbering (1., 1), 1 -) and backticks are stripped. If a line contains -, ->, => or : , everything after the separator is discarded - which is how you can paste a VLM's answer like vehicles: three cars and a van and have it survive as vehicles. Each category is truncated to 64 characters.

    Filtering. Then the forbidden list runs, and it's the interesting part. These words get a line thrown out entirely:

    deformed object, malformed object, artifact(s), detail(s), scene,
    background, foreground, image quality, blur, noise, restoration,
    signage, text, letter, billboard, logo
    

    Read that list and you can see the argument the author was having with their own VLM. Ask a vision model "what should be repaired?" and it says "details, artifacts, background, blur." None of those are objects. A SAM prompt of detail:30 detects nothing useful, and a mask labelled "background" is a licence to regenerate the whole frame. So the planner refuses them. The last five entries are the text protection that later versions formalized: text is a non-target, always.

    The rest of the list is deduplication (case-insensitive) and a cap of five categories, padded with none.

    The SAM prompts

    Each surviving category goes through a family classifier and comes back with a prompt and threshold tuned per family - and v16 is where the per-keyword specificity lives. architecture doesn't get one generic prompt; it checks the category string and hands back cathedral:30, church:30, bridge:30, skyscraper:30, door:35, window:60, wall:25, room:20, interior:20, or the broad fallback building:24,facade:12 at 0.29. Street furniture checks for lamp, traffic light, bench, bollard, bus shelter. Animals check dog, cat, horse, bird, fish, insect. Roads check floor, pavement, sidewalk, curb, crosswalk, track, terrain, ground. Sky has a special case: cloud:24 if you mentioned clouds, otherwise sky:12,cloud:18 at the loosest threshold in the table (0.32).

    Anything the classifier can't place keeps its own words: camper van becomes camper van:30 at 0.24. The comment says why - "Unknown categories stay useful: use the exact simple noun phrase, not an 'other' super-category."

    An empty slot emits nonexistent_placeholder_object_xyz:1 at threshold 0.50, so a detector returns nothing rather than everything.

    Inputs and outputs

    planner_text - STRING, multiline, forceInput. No widget; it has to be wired.

    Outputs: plan_preview first (a formatted per-slot dump: category, prompt, threshold) and then five groups of category_N, sam_prompt_N, sam_threshold_N. Wire the prompt and threshold into your detector, and the category into the settings node that decides region sizes for that sector. There are exactly five real slots here - no legacy padding, unlike the six-slot v21+ layout.

    Install

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

    Or ComfyUI Manager → DOGMA Nodes. Restart, then search for it under DOGMA/Semantic Detailer. No dependencies, no weights, no accounts.

    Gotchas

    • The comma splitting will surprise you if one of your categories contains a comma. shoes, hats is two categories; a comma inside a real category name is not something the parser distinguishes.
    • Broad words are not in the forbidden list here - road, grass, sky all pass and get real prompts. Those get filtered in the v26/v27 planners. If you feed v16 a VLM's full scene inventory, you'll get five slots of landscape instead of the objects you wanted.
    • No community tutorials exist for the pack at all (zero reddit threads name it), and the README covers only the WAN VACE prep nodes and DOGMA samplers. The docstrings are the documentation, and they're terse.
    CategoryDOGMA/Semantic Detailer

    Inputs (1)

    NameTypeDefaultDescription
    planner_textSTRING

    Outputs (16)

    NameTypeDescription
    plan_previewSTRING
    category_1STRING
    sam_prompt_1STRING
    sam_threshold_1FLOAT
    category_2STRING
    sam_prompt_2STRING
    sam_threshold_2FLOAT
    category_3STRING
    sam_prompt_3STRING
    sam_threshold_3FLOAT
    category_4STRING
    sam_prompt_4STRING
    sam_threshold_4FLOAT
    category_5STRING
    sam_prompt_5STRING
    sam_threshold_5FLOAT