The judging ladder
PULSE’s agents propose. Before some proposals are saved or shown, a judge
checks each one against the evidence the run actually gathered. This is the
judging ladder, from the shared inference/judgement library, with the wire
format from ui/judgement. It runs inside the PULSE process.
What is judged
| Proposal | Where it appears |
|---|---|
| Channel prescriptions | Diagnostic.channel_prescriptions |
| Brand-visibility insights | Diagnostic.brand_visibility |
| Content gaps | ContentGapsResponse.gaps |
| Content pillars | ContentStrategyResponse.pillars |
| Roadmap phases | StrategyRoadmapResponse.phases |
The evidence is what that run collected: your intake answers, the scraped website, web research, Google Analytics and Google Ads signals, and the latest diagnosis findings.
What the verdict does
| Verdict | Effect |
|---|---|
| Concur | The proposal is kept, with its verdict attached. |
| Unable to judge | The proposal is kept and marked. |
| Dissent | The proposal is withheld. It appears only in the response’s judgements set, with accepted=false. |
A withheld prescription never becomes a draft or a scheduled post, because the diagnosis fans out only what was kept.
Each judged message carries a judgement field, and each response carries a
judgements set that lists every verdict (accepted and rejected) with the
judge’s counts. Any verdict fields the model wrote itself are stripped from its
output first. The judge is the only source of a verdict.
Turning it off
Set PULSE_JUDGEMENT=off. Every proposal then passes unjudged, and the
judgement fields are unset.