Nodes/DiffusionGemma Prompt Builder/DiffusionGemma Advertisement Media QA Gate
ComfyUI Node

DiffusionGemma Advertisement Media QA Gate

The Gate That Says 'not_measured' When You Have No Proof

By exportAnything·Created 2 months ago·Updated a day ago· 44
DiffusionGemma Advertisement Media QA Gate
    • media_qa_report_json
    • qa_status
    • status
    • ready
    advertisement_contract_json
    delivery_manifest_json
    checks_json{}
    required_checks_json["product_identity","performer_identity","copy_legibility","audio_sync","technical_integrity"]

    DiffusionGemmaAdvertisementMediaQAGate is the last node in the advertisement stack and arguably its most important opinion. It aggregates quality checks on the finished deliverables and emits one of exactly three states - pass, fail, or not_measured - with a hard rule: absent evidence can never silently pass delivery QA. A bare pass without evidence is downgraded to not_measured. This node exists because the pack's author decided that "the queue completed" is not the same as "the ad is approved," and that a workflow should never be able to claim an ad is good just because it rendered.

    The mechanism is a strict aggregation. Required inputs: advertisement_contract_json and delivery_manifest_json (both must belong to the same campaign revision - mismatched campaign ids or hashes raise), checks_json where you record measured results per check, and required_checks_json, which defaults to the host-owned baseline: ["product_identity","performer_identity","copy_legibility","audio_sync","technical_integrity"]. The crucial property is that this baseline cannot be removed - the list may only add requirements. So you can demand extra checks for your campaign, but you can never edit away performer identity or copy legibility to force a pass. Any required check with no evidence attached comes out not_measured, which keeps delivery unapproved. Outputs: media_qa_report_json, qa_status, and the universal status/ready pair.

    Why is this the right design for an ad pipeline rather than a nuisance? Because every earlier claim in the stack - the image hashes, the hash-locked soundtrack, the exact end card - is a technical guarantee, and none of them prove the human questions: does the performer still look like the contracted performer, is the product recognizable, is the copy legible, does the audio sync? Those need measured or human evidence. The pack is explicit that automatic saves are review drafts and that a completed queue is not delivery approval. If you're going to put this on a client's desk, this gate is the difference between "we ran it" and "we verified it."

    The output states map cleanly onto workflow logic: wire qa_status to a gate or preview so a not_measured or fail stops the hand-off to "deliver" and routes you back to review. There are only three outcomes and none of them is an accidental green light.

    The beginner trap is the opposite of most QA systems: people try to force a pass by dumping junk into checks_json. If your evidence is empty or doesn't line up with what the check actually measures, the gate reads it as absent and reports not_measured. The honest workflow is: render the review drafts, actually look at them (or wire a real measurement), then record evidence per check. Trying to game the gate only produces a report that will embarrass you later.

    Install is pack-wide: ComfyUI Manager search "DiffusionGemma Prompt Builder", or git clone https://github.com/exportAnything/ComfyUI-DiffusionGemmaPromptBuilder into custom_nodes and restart. The node itself is pure JSON aggregation - zero GPU. It's the paper trail at the end of a long, expensive, and (thanks to the rest of the stack) unusually well-documented render, and it's the node that decides whether that trail says "ship it."

    Categoryprompt/diffusiongemma/advertising

    Inputs (4)

    NameTypeDefaultDescription
    advertisement_contract_jsonSTRING
    delivery_manifest_jsonSTRING
    checks_jsonSTRING{}
    required_checks_jsonSTRING["product_identity","performer_identity","copy_legibility","audio_sync","technical_integrity"]Host-required identity, product, copy, sync, and integrity checks cannot be removed; this list may only add requirements.

    Outputs (4)

    NameTypeDescription
    media_qa_report_jsonSTRING
    qa_statuspass,fail,not_measured
    statusSTRING
    readyBOOLEAN