{"record":{"id":"9e9c3ece06bb04d5","repo":"rohitg00/ai-engineering-from-scratch","slug":"taxonomy-artifact-missing-at-taxonomy-path-run","errorCode":null,"errorMessage":"taxonomy artifact missing at {TAXONOMY_PATH}; run lesson 82 main.py first","messagePattern":"taxonomy artifact missing at (.+?); run lesson 82 main\\.py first","errorType":"exception","errorClass":"FileNotFoundError","httpStatus":null,"severity":"error","filePath":"phases/19-capstone-projects/83-prompt-injection-detector/code/main.py","lineNumber":164,"sourceCode":"                score = float(r[\"score\"])\n                scores_by_category[cat] = max(scores_by_category.get(cat, 0.0), score)\n                fired.append(str(r[\"name\"]))\n        for r in self.regex_rules:\n            compiled: re.Pattern = r[\"_compiled\"]\n            if any(compiled.search(h) for h in haystacks):\n                cat = str(r[\"category\"])\n                score = float(r[\"score\"])\n                scores_by_category[cat] = max(scores_by_category.get(cat, 0.0), score)\n                fired.append(str(r[\"name\"]))\n        if not scores_by_category:\n            return Verdict(category=\"benign\", confidence=0.0, fired=[])\n        best_cat = max(scores_by_category.items(), key=lambda kv: kv[1])\n        return Verdict(category=best_cat[0], confidence=best_cat[1], fired=fired)\n\n\ndef load_taxonomy() -> list[dict[str, object]]:\n    if not TAXONOMY_PATH.exists():\n        raise FileNotFoundError(\n            f\"taxonomy artifact missing at {TAXONOMY_PATH}; run lesson 82 main.py first\"\n        )\n    payload = json.loads(TAXONOMY_PATH.read_text())\n    return list(payload[\"fixtures\"])\n\n\ndef evaluate(detector: Detector, fixtures: list[dict[str, object]], benign: list[str]) -> dict[str, object]:\n    categories = sorted({str(f[\"category\"]) for f in fixtures})\n    metrics = {c: PerCategoryMetrics(category=c) for c in categories}\n\n    total_correct = 0\n    for f in fixtures:\n        true_cat = str(f[\"category\"])\n        v = detector.analyze(str(f[\"prompt\"]))\n        pred_cat = v.category\n        if pred_cat == true_cat:\n            metrics[true_cat].tp += 1\n            total_correct += 1","sourceCodeStart":146,"sourceCodeEnd":182,"githubUrl":"https://github.com/rohitg00/ai-engineering-from-scratch/blob/39ea8a1c6d0b61f071226eff7ede4d4105fed820/phases/19-capstone-projects/83-prompt-injection-detector/code/main.py#L146-L182","documentation":"Error \"taxonomy artifact missing at {TAXONOMY_PATH}; run lesson 82 main.py first\" thrown in rohitg00/ai-engineering-from-scratch.","triggerScenarios":"Thrown at phases/19-capstone-projects/83-prompt-injection-detector/code/main.py:164 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"39ea8a1c6d0b61f071226eff7ede4d4105fed820","analyzedAt":"2026-08-26T03:13:46.626Z","schemaVersion":2},"datasetVersion":"2026-08-26T07:17:17.940Z"}