Nodes/DOGMA Nodes/DOGMA v44 Source-Grounded Scene Plan
ComfyUI Node

DOGMA v44 Source-Grounded Scene Plan

If the model didn't see it, it doesn't get planned

By axior·Created 4 months ago·Updated 3 days ago· 1
DOGMA v44 Source-Grounded Scene Plan
    • preview
    • category_1
    • sam_prompt_1
    • kind_1
    • threshold_1
    • category_2
    • sam_prompt_2
    • kind_2
    • threshold_2
    • category_3
    • sam_prompt_3
    • kind_3
    • threshold_3
    • category_4
    • sam_prompt_4
    • kind_4
    • threshold_4
    • category_5
    • sam_prompt_5
    • kind_5
    • threshold_5
    • category_6
    • sam_prompt_6
    • kind_6
    • threshold_6
    inventory_text
    project_context

    The v42 and v43 planners shared a design assumption: a plan with too few groups is a catastrophe, so when the VLM under-reports, fill the gaps from the project context. v44 deletes that. Its name is the thesis - a slot exists only if the source text supports it.

    This is the version to reach for when you've been burned by a fallback. Invented rows don't fail loudly. They produce a mask with nothing in it most of the time, and occasionally they find something the VLM missed and schedule a generative edit in a region nobody asked about. For archival or commercial work where an unrequested edit is worse than a missed detail, that's the wrong default.

    How it works

    Two passes over the VLM text:

    Explicit lines first. Anything with a pipe whose first field is GROUP or CATEGORY: field two is canonicalised through a matcher that folds synonyms into a fixed vocabulary - person/people/pedestrian/human/crowd become people, automobile/sedan/hatchback/passenger vehicle become cars, lorry/van become trucks, foliage/bush/shrub become trees.

    Then a keyword scan of the whole response, so malformed prose still yields categories - but only categories. Nothing is added from project_context; the parameter exists for the downstream edit instructions, not for guessing.

    Selection is then ordered deliberately: up to four objects first (people, cars, bus, trucks, animals, furniture, machinery, products, clothing, food), then one structure (buildings), then one surface (grass, trees, sky, road, water) to fill the six. Objects win because they're the things that break - a melted car is a defect, a slightly soft sky is not.

    Each category carries its own spec: canonical segmentation phrase, kind, and threshold. The thresholds are the headline change: 0.020 for people and cars, 0.025 for bus and trucks, 0.035 for animals, 0.040 for grass/trees/road, 0.045 for furniture/machinery/products/clothing/food, 0.050 for buildings, 0.060 for sky. An order of magnitude looser than v42's 0.16–0.22, which is the "high recall" half of the pack's ongoing argument with itself.

    Inputs and outputs

    inventory_text and project_context, both multiline STRING. Outputs: preview plus six rows of category_N, sam_prompt_N, kind_N, threshold_N. The preview tags each row SOURCE-EVIDENCE or INACTIVE - there's no FALLBACK tag because there are no fallbacks.

    Install

    Manager → search DOGMA Nodes → install → restart ComfyUI. Manual:

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

    No Python dependencies, no model files, nothing to configure beyond the pack itself - it's pure text handling. Registered in DOGMA/v44. The path to a working pipeline is: VLM writes inventory → this node plans → segmenter produces masks → crop nodes cut regions → an edit model repairs → a stitch node composites. Every one of those is a separate install; this node is the one with no moving parts.

    DOGMA Nodes is axior's, from the studio arm of a Milan production team doing commercial AI work with heavy masked-inpaint chains. The version history reads like a studio arguing with itself about false positives, which is what you'd expect from people shipping to clients.

    What to expect

    Fewer slots filled. On a clean landscape you may get two or three active groups and the rest INACTIVE. That's correct behaviour, not a parse failure.

    Empty first run. Because nothing is invented, a lazy VLM prompt means an almost-empty plan. The fix is upstream: use the pack's instruction text (DOGMAV52SceneInstruction) which demands families be included "even when tiny, partially occluded, touching, overlapping, distorted or only partly visible", and which tells the model not to use sky, haze, fog, text, logos, signs or defects as editable groups.

    Low thresholds are a commitment. At 0.020 your segmenter will accept a lot of confident-but-wrong picks - reflections, windows, costume jewellery. If you see masks on things that aren't cars, you're seeing the recall setting work as designed; the protection is downstream, in the mask-normalising and kind-aware nodes, not here.

    CategoryDOGMA/v44

    Inputs (2)

    NameTypeDefaultDescription
    inventory_textSTRING
    project_contextSTRING

    Outputs (25)

    NameTypeDescription
    previewSTRING
    category_1STRING
    sam_prompt_1STRING
    kind_1STRING
    threshold_1FLOAT
    category_2STRING
    sam_prompt_2STRING
    kind_2STRING
    threshold_2FLOAT
    category_3STRING
    sam_prompt_3STRING
    kind_3STRING
    threshold_3FLOAT
    category_4STRING
    sam_prompt_4STRING
    kind_4STRING
    threshold_4FLOAT
    category_5STRING
    sam_prompt_5STRING
    kind_5STRING
    threshold_5FLOAT
    category_6STRING
    sam_prompt_6STRING
    kind_6STRING
    threshold_6FLOAT