#!/usr/bin/env python3 """Append collected runs to responses.jsonl, flagging pre-registered discriminators.""" import json, sys, os BASE = "/home/claude/audit" QS = json.load(open(os.path.join(BASE, "questions.json"), encoding="utf-8")) INSTR = QS["instruction"] QMAP = {q["id"]: q for q in QS["questions"]} def _normalise(s): s = s.lower().replace(" ", " ").replace(" ", " ") s = s.replace(" per cent", "%").replace(" percent", "%").replace("percent", "%") return " ".join(s.split()) def flag(text, discs): norm = _normalise(text) return [d for d in discs if _normalise(d["match"]) in norm] def add(rec): q = QMAP[rec["question_id"]] rec.setdefault("question_class", q["class"]) rec.setdefault("prompt", f"{q['text']} {INSTR}") rec.setdefault("surface", "api") rec.setdefault("collected_via", "dataforseo/ai_optimization") rec.setdefault("error", None) rec.setdefault("note", None) rec["discriminator_hits"] = flag(rec["answer_text"], q.get("discriminators", [])) if rec.get("answer_text") else None order = ["question_id","question_class","prompt","system","model_reported","run","started_utc", "surface","collected_via","search_used","money_spent","error","note","answer_text", "citations","discriminator_hits"] out = {k: rec[k] for k in order if k in rec} for k in rec: if k not in out: out[k] = rec[k] with open(os.path.join(BASE, "responses.jsonl"), "a", encoding="utf-8") as fh: fh.write(json.dumps(out, ensure_ascii=False) + "\n") hits = " ".join(f"[{h['match']} -> {h['diagnoses']}]" for h in (out["discriminator_hits"] or [])) print(f"ok {out['question_id']} run {out['run']} {out['system']}: {len(out.get('citations') or [])} citations {hits}") if __name__ == "__main__": for path in sys.argv[1:]: for rec in json.load(open(path, encoding="utf-8")): add(rec)