- adapt meta-/code-/obs- rules to the local Python benchmark pipeline - replace db-sql-ddl, code-config-env-scope, test-e2e-pytest with pipeline equivalents - add code-python-style, data-determinism, data-naming-units, bench-methodology, build-pipeline-tasks - normalize specs and README typography to ASCII per code-data-formatting - rewrite root CLAUDE.md trigger table; add .cursorrules and .gitignore - specs: pipeline plan and task specs 00-11 - rules: 19 binding rule files adapted for this project - docs: CLAUDE.md rule-trigger table - config: .cursorrules commit convention, .gitignore excluding out/ and .venv/ - docs: rewrite README.md with pipeline diagrams, setup guide, result placeholders - config: requirements.txt for the closed dependency list - datagen: make_lab_config.py writes out/config/lab_config.yaml and .done marker
1.0 KiB
1.0 KiB
Task 10 — Anomaly Report & Iteration Gate
Goal
Consolidate anomalies, refine rules/mappings/ontology, and gate the Phase 2↔3 loop.
Input
rejects/*.jsonl,manifest/unmatched.csv, current rule/mapping/schema versions.
Actions
- Write
scripts/anomaly_report.py→manifest/anomaly_report.md: counts by reason code × measurement type, top offending files, examples per class, reject-rate per fingerprint. - Triage each anomaly class: (a) true data anomaly — keep quarantined, document; (b) rule defect — fix
anomaly_rules.json/ mapping / token pattern; (c) ontology gap — escalate to Task 08. - If (b) or (c) occurred: bump versions and re-run Tasks 07→09 for affected types.
- Repeat until: fingerprint mapping coverage 100%, reject classes are all category (a), reject rate stable between runs.
Intermediate Result (done when)
anomaly_report.mdfinal; every reject class documented as a true anomaly.- Canonical dataset frozen:
canonical/SNAPSHOT.mdwritten with versions + row counts. Phases 2↔3 complete.