{"checks":[{"applies_to":"ear-witness.json, ear-witness-schema.json, witness.py","criterion":"Witness-Schema Conformance","description":"Every witness record validates against ear-witness-schema.json (cwi-earwitness/v1): required keys present (witness_id, scout_card_ref, original_agent, witness_agent, independent_scores, agreement_pct, divergences, verdict, timestamp), score vocab is exactly green/amber/red, verdict enum is exactly concur/concur-with-notes/dissent. The five criteria are the scanner's five protocol steps, in order. Brand rule: the official CWI logo is present on every shipped visual asset (index.html, announce.html) — no page renders without the badge.","id":"witness-schema-conformance","max":40},{"applies_to":"ear-witness.json, index.html, give-block.md","criterion":"Verified-Facts Integrity","description":"Only verified CWI facts ship: That Boy Hi Hat (alternative rap, Frederick MD, 24-track catalog); Zooted Zone ~307K lifetime Spotify plays (observed 2026-09-14), produced by Kokurcho, mixed/mastered by Hybrid (Hagerstown MD), recorded Hagerstown Feb 2023; New Rap Hits #21/#30/#31 (verified 2026-09-15); Diabolique single 2026-07-03 at Cue Recording Studio, Arlington VA, produced by Hybrid; contact hp@cumulativeweb.com. Unverified claims (Flow / DJ 6Rings) never appear as wins — the witness note files them as CLAIM-UNVERIFIED. No fabrication of evaluations of real outside artists. No deny-list language anywhere.","id":"verified-facts-integrity","max":30},{"applies_to":"witness.py, test.py","criterion":"Divergence Detection Correctness","description":"witness.py computes agreement_pct as agreements/5*100 (1-decimal); every mismatching criterion lands in divergences[] with criterion, original, witness, and a note; verdict rule holds: no divergences -> concur, divergences with matching overall verdict -> concur-with-notes, witness overall verdict differing from the scout card's -> dissent. test.py feeds deliberately disagreeing scores and asserts the divergences are flagged with correct original/witness values.","id":"divergence-detection","max":20},{"applies_to":"build.py, template.html, index.html","criterion":"White-Label Config","description":"DEFAULT_CONFIG + optional config.json override flow works: a config.json with orgName/productName/colors overrides the CWI defaults and produces a branded build with no unreplaced tokens. The data contract (schema + witness.py + give block) is org-agnostic: original_agent/witness_agent carry any identities.","id":"white-label-config","max":10}],"name":"EAR WITNESS — Evaluation Rubric","pass_threshold":85,"product":"EAR WITNESS","rubric_version":"1.0.0","self_evaluation":{"evidence":{"divergence-detection":"test.py gate 3 feeds a deliberately disagreeing score set and asserts all four divergences flagged with correct values, and the dissent path via a differing overall verdict","verified-facts-integrity":"test.py gate 1 asserts the worked record's verified-fact strings (307K, Kokurcho, Hybrid, Hagerstown, New Rap Hits, Cue Recording Studio, hp@cumulativeweb.com) and scans the bundle for deny-list language","white-label-config":"test.py builds a temp config.json override (orgName/productName/colors) through build.py and confirms the overrides land in index.html with no leftover tokens","witness-schema-conformance":"test.py gate 2 mirrors the schema rules: the worked record from ear-witness.json validates every required key, enum, and the criteria order"},"run":"automated: ear-witness/test.py gates 1-4 evaluate the product against this rubric","score":100,"total":100}}