DOGMA Tile Prompt v34 B — Shifted QC Repair
The repair-pass prompt writer that can say 'do nothing'
- prompt
- clean_report
The second pass over a restored master is not the same job as the first. Pass A asked a model to build detail that was soft. Pass B asks it to fix what pass A broke - and the most valuable output pass B can produce is often the phrase "nothing to fix here." This composer is built around that being a first-class result.
Two templates, one switch
It reads the tile's VLM report for two labelled fields:
FIX: doubled roofline on the left building
KEEP: correct cars, kerb wetness, shop lettering
FIXis present and meaningful → it emitsFIX <THAT>. Correct only these existing defects; restore coherent geometry and consistent local focus/detail.plus the standard preservation block: exact object count, position, scale, direction, pose and occlusion;KEEPunchanged; no new or missing objects; do not rewrite text.FIXis empty or saysnone/nothing/no visible defect/n/a→ it emits a completely different prompt that opens with the literal wordsPRESERVE THIS TILE.and tells the model to change nothing except obvious tile-edge continuity.
That uppercase sentinel isn't decoration. DOGMATileSecondPassGateV34, the pack's pass-B gate, screens for exactly that string prefix and returns the source tile pixel-for-pixel when it matches. So "the VLM says there's nothing to fix" becomes "this tile provably cannot be degraded by the second pass" - no sampler, no blend, no partial-strength derangement. The two nodes are a matched pair, and the coupling is a magic string rather than a boolean because a prompt is all that can cross that boundary in a graph.
Field parsing
Same contract as the A variant: case-insensitive prefix match on lines, cleaned to one line each, FIX capped at 190 characters, KEEP at 160, the whole report at 420. Missing KEEP falls back to "correct objects, true optical blur, smooth sky/haze and all text/logos". The report itself comes back on clean_report so you can see what the VLM actually emitted.
Install
ComfyUI Manager → search DOGMA Nodes, or:
cd ComfyUI/custom_nodes && git clone https://github.com/axior/ComfyUI-DOGMA-Nodes
Restart ComfyUI. Zero dependencies (requirements.txt is # No external dependencies.) and no models. The pack's README doesn't mention this node - the semantic detailer suite registers itself from dogma_semantic_v5641.py - so expect to read source if you want more detail than the docstring.
Where it bites
VLM enthusiasm is the failure mode. A model that "finds" a defect in every tile turns pass B into a global re-render at 4 steps, and re-rendering is how tiles drift. Before trusting a batch, read the info string from the gate node or the clean_report here and check how many tiles actually got a FIX. If it's all of them, your VLM instruction is too eager, not the tiles.
The sentinel is brittle if you edit the prompt. Insert anything upstream that prefixes text and the gate stops recognising it - you'll get the generated tile back and no error.
It only writes text. There's no mask here: if you want pass B restricted to a region, that's the composer/crop side of the pipeline, not this node.
Keep A and B straight. Pass A (DOGMATilePromptComposerV34A) uses a FOCUS/PROTECT report and reconstructs; this one uses FIX/KEEP and repairs. Feed a pass-A report into B and every tile reads as "no FIX" - you'll get a whole run of PRESERVE prompts and wonder why nothing changed.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| tile_report | STRING | — | |
| project_context | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| clean_report | STRING | — |