Output schema
Every field a run returns.
The shape below is what the interactive report renders. Nothing in the UI is computed from a summary. The report is a view over this record.
// A run record, abbreviated. Every finding traces to a compiled trait
// and a verbatim line, and every fix traces to the findings it closes.
{
"experiment_id": "AN-90670518",
"asset": { "type": "landing_page", "url": "https://example.com/lp" },
"committee": {
"fingerprint": "6f744b870006001f",
"compiled_at": "2026-08-12",
"roles": ["CH", "TD", "EB", "EU", "GR"],
"seeds_per_role": 10,
"behavioural_profiles": ["distracted", "skeptic", "ideal"]
},
"verdict": {
"driver": "goal_approached",
"converted": 45, "abandoned": 5, "submitted": 0
},
"findings": [{
"id": "B3",
"state": "broken",
"zone": "nav",
"severity": "high",
"confidence": 0.20,
"sample": 50,
"roles_reacted": ["GR", "TD"],
"summary": "Technical validation path unclear",
"verbatim": "I can't find a 'Developers' or 'Docs' link...",
"compiled_trait": {
"kind": "evidence_need",
"fingerprint": "6f744b870006001f",
"predates_asset": true
},
"repaired_by": [2]
}],
"conflict_graph": {
"edges": [
{ "from": "EU", "to": "TD", "weight": 0.9,
"state": "snaps", "reason": "no docs evidence" },
{ "from": "CH", "to": "EB", "weight": 0.9,
"state": "snaps", "reason": "no proof evidence" }
],
"snapped": 2, "total": 7
},
"fixes": [{
"rank": 2,
"kind": "signposting",
"zone": "nav",
"closes": ["B3", "B2"],
"unblocks": ["CH", "EB", "EU", "GR", "TD"],
"spec": { "component_type": "nav_item_with_dropdown" }
}]
}
No orphan claims
Every finding carries confidence and sample. Low confidence findings come back marked low confidence, not quietly dropped.
Traits predate the asset
predates_asset shows the trait was built before the page was opened. That is what stops a finding being reverse engineered from the page.
Fixes map to edges
A fix is ranked by which snapped handoff it reconnects, not by page order. That is why the queue can be ordered at all.