{"at":"2026-10-26T00:19:30.276Z","cases":13,"positives":7,"negatives":6,"tp":10,"fp":0,"fn":0,"precision":1,"recall":1,"f1":1,"clean_false_positive_rate":0,"method":"Each case lists the finding kinds it should produce; a kind reported but not expected is a false positive, an expected kind not reported a false negative. The clean-code false-positive rate counts clean files that received any medium or high finding (info/low advice does not count).","rows":[{"name":"py-openai-classifier-uncached","clean":false,"path":"app/triage.py","expected":["static-prompt","cascade","repeat-cache"],"found":["cascade","static-prompt","repeat-cache"],"waste_pct":70,"findings":[{"severity":"high","line":6,"title":"gpt-6-astra used for a task whose prompt reads like extraction/classification"},{"severity":"medium","line":3,"title":"~1,500 static prompt tokens sent on every call; only a stable prefix gets the cache discount"},{"severity":"low","line":6,"title":"Repeat-prone task with no response-cache opt-in"}],"ok":true},{"name":"ts-anthropic-system-no-breakpoint","clean":false,"path":"src/assistant.ts","expected":["static-prompt"],"found":["static-prompt"],"waste_pct":70,"findings":[{"severity":"high","line":3,"title":"~1,500 static prompt tokens re-billed at full price on every call"}],"ok":true},{"name":"py-loop-per-item","clean":false,"path":"jobs/enrich.py","expected":["loop"],"found":["loop"],"waste_pct":15,"findings":[{"severity":"medium","line":7,"title":"LLM call inside a loop"}],"ok":true},{"name":"ts-vercel-ai-json-extraction-frontier","clean":false,"path":"lib/extract.ts","expected":["cascade"],"found":["cascade"],"waste_pct":70,"findings":[{"severity":"high","line":4,"title":"gpt-6-astra used for a task whose prompt reads like extraction/classification"}],"ok":true},{"name":"py-gemini-static-prefix-sentiment","clean":false,"path":"svc/sentiment.py","expected":["static-prompt","repeat-cache"],"found":["static-prompt","repeat-cache"],"waste_pct":12,"findings":[{"severity":"medium","line":3,"title":"~1,040 static prompt tokens sent on every call; only a stable prefix gets the cache discount"},{"severity":"low","line":6,"title":"Repeat-prone task with no response-cache opt-in"}],"ok":true},{"name":"py-langchain-translate-frontier","clean":false,"path":"pipeline/translate.py","expected":["cascade"],"found":["cascade"],"waste_pct":70,"findings":[{"severity":"high","line":2,"title":"gpt-6-astra used for a task whose prompt reads like extraction/classification"}],"ok":true},{"name":"py-retiring-model","clean":false,"path":"svc/digest.py","expected":["lifecycle"],"found":["lifecycle"],"waste_pct":0,"findings":[{"severity":"medium","line":5,"title":"\"gpt-4o\" retires on 2027-01-14"}],"ok":true},{"name":"lib-sdk-wrapper","clean":true,"path":"src/agents/models/openai_chat.py","expected":[],"found":[],"waste_pct":0,"findings":[],"ok":true},{"name":"ts-anthropic-already-cached","clean":true,"path":"src/cached.ts","expected":[],"found":[],"waste_pct":0,"findings":[],"ok":true},{"name":"py-already-cheap-model","clean":true,"path":"app/tag.py","expected":[],"found":[],"waste_pct":0,"findings":[],"ok":true},{"name":"docs-model-names-in-prose","clean":true,"path":"docs/models.md","expected":[],"found":[],"waste_pct":0,"findings":[],"ok":true},{"name":"py-batched-loop","clean":true,"path":"jobs/batch_enrich.py","expected":[],"found":[],"waste_pct":0,"findings":[],"ok":true},{"name":"ts-openai-cache-options-set","clean":true,"path":"src/summarize.ts","expected":[],"found":[],"waste_pct":0,"findings":[],"ok":true}]}