Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions docs/evidence/METRICS_CURRENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ Machine-readable snapshot: `outputs/metrics_snapshot.json` regenerated with `mak
> **Purpose:** One authoritative table of current pipeline metrics. If any doc disagrees
> with this file, this file wins. Updated whenever benchmark/benchmark config changes.
>
> **Last updated:** 2026-07-09 (Phase F negative-result informativeness — v0.5.77)
> **Last updated:** 2026-07-09 (Phase F F7 — calibration link from negative-result entries to intake reports — v0.5.78)
> **New in v0.5.78:** Calibration link from negative-result entries to intake reports (F7) — closes learning loop by tracing each negative-result entry back to its prediction-vs-actual data in the calibration intake report. Schema addition: `intake_report_id` optional field on `negative_result_entry.schema.json`. CLI (`scripts/link_negative_result_to_intake.py`) reads negative-result archive JSON + calibration intake report, links by candidate_id, reports matched/unmatched entries, orphan intake candidates, lab summary for matched entries, and validates intake_report_id references. Produces structured JSON + Markdown link report. 25 tests. 2822 total.
>
> **New in v0.5.77:** Negative-result informativeness guide (F6) — comprehensive documentation defining 7-dimension informativeness framework for negative-result entries, with 14 examples across all 6 reason categories, before/after transformation pairs, and quick-reference checklist. CLI classifier (`scripts/classify_negative_result_informativeness.py`) that scores entries on 7 dimensions and produces informative/neutral/non-informative classification. 37 tests. 2796 total.
>
> **New in v0.5.76:** Safe-publication filter (F5) — CLI that reads candidate panel data with safety metadata and checks each candidate against publication safety constraints before external release. FAIL-CLOSED: defaults to reject unless all checks pass. Checks: dry_lab_only (must be true), proof_ladder_level (≤4), toxicity_screened, hemolysis_screened, dual_use_reviewed (all must be true). Produces structured JSON filter result and human-readable Markdown summary. 33 tests. 2758 total.
Expand Down Expand Up @@ -64,7 +66,7 @@ Machine-readable snapshot: `outputs/metrics_snapshot.json` regenerated with `mak
> **New in v0.5.31:** Added dipeptide-order features for sequence-order awareness. `dipeptide_order_score` achieves AUROC 0.7861 on AMP-vs-scrambled discrimination — the strongest order-dependent feature in the pipeline. Only 7/31 features survive scrambling (amphipathicity/helix-wheel + dipeptide). All composition features are purely position-independent (exactly 0.5000 AUROC on scrambled test).
> **New in v0.5.30:** Easy baseline benchmark added — charge density alone (AUROC 0.8166) outperforms the full pipeline ensemble (0.7792) on AMP-vs-Swiss-Prot-decoy discrimination. Honest finding documented: expected because pipeline optimizes for safety, not raw discrimination.
> **New in v0.5.29:** Expanded benchmark to 500 AMPs + 500 composition-matched decoys (n=1000). AUROC 0.7792 (CI₉₅: 0.7505–0.8065) confirms signal generalizes. Cluster-aware CI: 0.746–0.8102. Representative AUROC: 0.778. Standard benchmark (n=191) retained for backward comparison.
> **Pipeline version:** v0.5.77
> **Pipeline version:** v0.5.78
> **Branch:** main

---
Expand Down
39 changes: 39 additions & 0 deletions docs/research/ROADMAP.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
# Roadmap

## v0.5.78 — Loop 77: Phase F F7 — Calibration Link from Negative-Result Entries to Intake Reports ✓ (2026-07-09)

Closes the learning loop by tracing each negative-result entry back to its
prediction-vs-actual data in the calibration intake report. Schema, CLI, and tests.

Changes:
- `schemas/negative_result_entry.schema.json` — Added `intake_report_id` optional
field (string) to link negative-result entries back to their calibration intake
report source.
- `scripts/link_negative_result_to_intake.py` (F7) — CLI that reads a negative-result
archive JSON and a calibration intake report JSON, links entries by candidate_id,
and produces a structured link report with: matched/unmatched counts, linkage rate,
orphan intake detection, per-candidate predictions + lab summary for matched entries,
intake_report_id validation, control failures and cohort metrics from the intake report.
Supports `--out-json` and `--out-md` output.
- `tests/evidence/test_link_negative_result_to_intake.py` — 25 tests covering: linkage
counts and rate, matched entries with predictions, unmatched entries without predictions,
orphan intake candidate detection, intake_report_id validation (valid + invalid),
by-reason-category aggregation, metadata and caveat generation, lab summary in linked
entries, markdown section content, empty entries handling, all-unmatched case,
file loading error paths, CLI output (JSON + Markdown + both), missing input and
empty entries error paths, control failures and cohort metrics forwarding, list-format
input support, lab summary absent when no lab result.
- `docs/evidence/METRICS_CURRENT.md` — v0.5.78 changelog. Pipeline version bumped.
Test count: 2822.
- `tests/test_test_count_regression.py` — baseline updated to 2822.

Honest boundaries:
- Linkage is by candidate_id only. Entries without a matching intake row are reported
as unmatched but are not invalidated.
- Orphan intake candidates (in intake but not in negative-result archive) may be active,
pending, or withdrawn — absence of a negative entry does not imply success.
- The intake_report_id field is advisory and does not affect linkage logic; validation
reports mismatches but does not block report generation.
- The link report is informational only and requires qualified review before any claim
about candidate quality or pipeline performance.
- Cohort metrics and control failures are forwarded from the intake report; this script
does not independently validate them.

## v0.5.77 — Loop 76: Phase F F6 — Negative-Result Informativeness Guide ✓ (2026-07-09)

Comprehensive guide defining informative vs non-informative negative results with
Expand Down
1 change: 1 addition & 0 deletions schemas/negative_result_entry.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"score_novelty": {"type": "number", "minimum": 0, "maximum": 1},
"score_ensemble": {"type": "number", "minimum": 0, "maximum": 1},
"recalibration_used": {"type": "string", "enum": ["yes", "no"]},
"intake_report_id": {"type": "string", "description": "Optional reference to the calibration intake report that contains this candidate's prediction-vs-actual data"},
"superseded_by": {"type": "integer"},
"reviewer_notes": {"type": "string"}
}
Expand Down
Loading
Loading