Skip to content

Loop 74: Phase F F4 — failed-candidate report generator - #759

Merged
cschanhniem merged 1 commit into
mainfrom
feat/loop-74-failed-candidate-report
Jul 9, 2026
Merged

cschanhniem merged 1 commit into
mainfrom
feat/loop-74-failed-candidate-report

Conversation

@cschanhniem

Copy link
Copy Markdown
Collaborator

Change

CLI script that reads batches of failed candidates (with rejection taxonomy codes), validates codes against the F3 taxonomy, and generates structured JSON + Markdown reports.

Why

F4 directly builds on F3 (rejection taxonomy). Without a report generator, the taxonomy codes exist but cannot produce reviewable batch summaries. This PR closes the gap between rejection taxonomy (machine-readable codes) and actionable reports (per-batch aggregation, categorization, frequency analysis).

Evidence

  • make failed-candidate-report generates valid JSON + Markdown from the example input
  • python3 -m pytest tests/evidence/test_failed_candidate_report.py -v — 25/25 passed
  • Test count regression: 2724 tests collected (baseline updated)

Safety impact

None — this is a report generation tool. The output explicitly includes dry_lab_only: true and 5 caveat statements. No claims are strengthened.

Proof level

N/A (infrastructure only). The report generator produces computational summaries that do not make biological claims.

Limitations

  • Computational summary, not biological proof
  • Soft rejections may be overcome by policy changes
  • Taxonomy validation is optional (--validate-rejection-codes flag)
  • Report does not enforce downstream adoption of taxonomy codes

Human review needed

No

CLI that reads candidate rejection data validated against the rejection
taxonomy (F3) and produces structured JSON + Markdown reports.

Changes:
- scripts/generate_failed_candidate_report.py — standalone CLI with
  --input, --out-json, --out-md, --validate-rejection-codes, taxonomy
  loading, report building (summary aggregation, per-candidate breakdown,
  category/severity/stage/evidence-impact stats)
- examples/failed_candidates_example.json — 5-candidate toy example
- docs/evidence/FAILED_CANDIDATE_REPORT.md — usage reference
- tests/evidence/test_failed_candidate_report.py — 25 tests (import,
  validation, report build, CLI, markdown, example round-trip)
- Makefile — failed-candidate-report target
- docs/evidence/METRICS_CURRENT.md — v0.5.75 changelog, test count 2724
- docs/research/ROADMAP.md — Loop 74 entry
- tests/test_test_count_regression.py — baseline 2724

Honest boundaries:
- Report is computational summary, not biological proof
- Soft rejections may be overcome by policy changes
- Taxonomy validation is optional (--validate-rejection-codes)
- Report does not enforce downstream adoption of taxonomy codes
@cschanhniem
cschanhniem merged commit c032776 into main Jul 9, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant