{"checks":[{"applies_to":"needle-drop.json, needle-drop-schema.json, ledger.py","criterion":"Placement-Schema Conformance","description":"Every sealed entry validates against needle-drop-schema.json (cwi-needledrop/v1): required keys present, placement_id matches ND-YYYY-NNN, status in {pending, claimed, verified}, terms has fee_tier/territory/term_length (undisclosed where private, never invented numbers), verified entries carry proof_url. Drafts validate against $defs.draft and can never be added as verified. Brand rule: the official CWI logo is present on every shipped visual asset (index.html, announce.html) — no page renders without the badge.","id":"placement-schema-conformance","max":40},{"applies_to":"needle-drop.json, index.html, announce.html","criterion":"Verified-Facts Integrity","description":"Only verified CWI facts ship: the ledger ships with placements: [] and states plainly that as of 2026-09-15 CWI has no verified sync placements; Zooted Zone ~307,000 lifetime plays (observed 2026-09-14), Kokurcho (producer), Hybrid (mix/master), Diabolique 2026-07-03 at Cue Recording Studio, Arlington VA, Frederick MD, hp@cumulativeweb.com. No fabricated productions, no invented terms/fees, no playlist adds presented as sync, no deny-list language.","id":"verified-facts-integrity","max":30},{"applies_to":"build.py, template.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.","id":"white-label-config","max":20},{"applies_to":"give-block.md","criterion":"Give-Block Operability","description":"EQUIP / CONFIGURE / APPLY steps are copy-paste operable: every URL referenced (ledger, schema, card, page, syncdeck hub, contact) is live, and the APPLY block is a valid ledger add/verify snippet.","id":"give-block-operability","max":10}],"name":"NEEDLE DROP — Evaluation Rubric","pass_threshold":85,"product":"NEEDLE DROP","rubric_version":"1.0.0","self_evaluation":{"evidence":{"give-block-operability":"give-block.md EQUIP/CONFIGURE/APPLY reference needle-drop.json, needle-drop-schema.json, item-card, page, syncdeck hub, hp@cumulativeweb.com — all live per gate 2","placement-schema-conformance":"sealed fixtures + lifecycle entries pass validate_entry() (jsonschema + mirror) in automated gate 4; logo.jpg referenced in index.html and announce.html","verified-facts-integrity":"gate 1 asserts placements == [], the honesty statement, the verified-fact strings, and the add-time verified refusal; deny-list scan clean","white-label-config":"gate 5 builds a temp config.json override (orgName/productName/colors) through build.py and confirms the overrides land in index.html with no leftover tokens"},"run":"automated: needle-drop/test.py gate 5 evaluates the product against this rubric","score":100,"total":100}}