DOGMA FinalCoverage v1.0.10
The node that actually tells you how much of your image got masked
- review
- approved_instances
- report
What it is
One input, two outputs, and the least glamorous job in the pack: turn a DOGMA_REVIEW into a mask batch you can actually render, and then be honest about how complete that batch is.
Every semantic masking pipeline has this moment. You searched for objects, you audited the candidates, you threw some out - now what's left? DOGMAFinalCoverageV110 stacks the approved instances into a MASK batch and prints a report that includes the union's coverage as a percentage of the image, plus the retained count and every audit decision that led there.
That report is the point. Prompt-based detection with a hard cap can't promise full coverage, and this node says so in the output string rather than letting you assume otherwise: Coverage is measured, not guaranteed complete.
How it filters
The interesting work happens in the v2 helper it calls (bounded_instances), which does three things in one pass:
- Ranks candidates by
score * sqrt(area)- big-and-confident first, so a huge low-confidence blob doesn't outrank a small crisp detection. - Drops duplicates by containment, not IoU. A candidate is discarded if 90% or more of its own area is already covered by an already-kept mask. That's a different test from a box IoU, and it's the right one for masks: a mask that is almost entirely inside one you already have is a duplicate even if the outside one is small.
- Caps the batch at 64 instances, silently and without an exception, so a runaway detector that ignores
max_detectionscan't blow up your graph later in the VAE encode.
An empty result is handled as a result, not an error: you get a (0, H, W) mask tensor and a report saying the category produced no masks and no semantic render will happen for it. Downstream nodes in this pack check for that. Plenty of third-party mask nodes error here instead - and if your graph has a legitimately empty category (you culled everything in the chooser, or the scene just doesn't have that object), a hard error means you can't run the graph at all.
Inputs and outputs
review(DOGMA_REVIEW) - fromDOGMAReviewBatchV110in the matching v1.0.10 chain, or any review bundle of the same shape.approved_instances(MASK) - one mask per approved instance. This is what you hand to a crop node, an inpaint encode, or a SEGS bridge, and it's the only output you render from.report(STRING) - retained count, coverage percentage, plus the accumulated audit and search notes. Internal state lines (theDOGMA110_STATE=markers the search nodes use to pass recovery budgets between passes) are filtered out so what you see on screen is readable.
Where to put it in the graph
The 1.0.10 chain is: a SAM search node → DOGMAAuditBatchV110 → your VLM → DOGMAReviewBatchV110 → this. In the 1.0.11+ family, DOGMAFinalCleanMasksV111 calls this node internally and adds an optional micro-hole repair pass, so if you're on that workflow you'll see the same report with an extra line appended.
Practical note on coverage numbers: a 12% union on a busy street scene is not automatically a failure, and 60% on a portrait isn't automatically a success. What the number is genuinely good for is comparing two runs on the same image - swap the query wording, the threshold or the refinement count, note the coverage and retained count, and you can see the search get better or worse without eyeballing 30 masks. That's the diagnostic loop this node exists to close.
Install
Manager → search DOGMA Nodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/axior/ComfyUI-DOGMA-Nodes
# restart ComfyUI
Only Python dependency: scipy>=1.10 per the shipped requirements.txt. No model files, nothing into models/, no ComfyUI core edits. The models this sits between - SAM 3 for the masks, a VLM for the audit - you install and wire separately; note the KB's standing caveat that ComfyUI's SAM 3 path is Triton-dependent and messier on Windows.
One last expectation-setting: this pack is one author's DOGMA workflow published as nodes, with CPU-only validation and mocked model calls in its own test notes, and no measurable community footprint. For a node whose entire job is "stack the masks and report honestly", that's an acceptable risk - the behaviour is deterministic and the report is explicit. Just don't read its output as "the masks are correct". That verdict came from the VLM one node upstream, and VLM verdicts are probabilistic.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| review | DOGMA_REVIEW | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| approved_instances | MASK | — |
| report | STRING | — |