Repository navigation
feat: pre-wet-lab polish — error handling, CLI validation, WAVE2 context - #67
Merged
Merged
Conversation
…E2 context CRITICAL fix: - cli.py pilot-panel: bare JSONDecodeError on malformed JSONL → structured error with line number and 120-char line preview; returns exit code 1 (was unhandled crash) MEDIUM fixes: - cli.py validate-scoring stdout now includes n_positives, n_negatives, benchmark_type, auprc alongside auroc (previously needed --out file to see these fields) - cli.py synthesis-order: explicit CSV header validation before row iteration; missing candidate_id/sequence columns → structured error with found_columns list - WAVE2_PLAN.md: added SEED-008 Trp mechanism divergence note (disagreement ~0.37 is a mechanistic marker — Boman W=-3.398 vs Wimley-White W=-1.85 kcal/mol — not uncertainty; safe to expand Trp-rich scaffold in Wave 2 if SEED-008 hits) HIGH fix: - CHANGELOG.md Unreleased section updated with PRs #61-66 impact; stale "phase3.yaml: 0.30" (wrong) corrected to 0.40 (unified in PR #61) LOW fix: - presynth_check.py check_sequence(): validates all 20 canonical amino acids before QC; raises ValueError with bad-residue list on non-canonical input Tests added (1191 → 1200): - test_presynth_qc.py::TestCheckSequenceInputValidation (6 tests) - test_cli.py::test_validate_scoring_stdout_includes_n_and_auprc - test_cli.py::test_pilot_panel_malformed_jsonl_returns_error - test_cli.py::test_synthesis_order_missing_columns_returns_error
…taset-size assertions
2 of 5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Final hardening pass before synthesis ordering. All issues identified in audit by code-reviewer agent.
CRITICAL
cli.pypilot-panelJSONL error handling: bareJSONDecodeErrorcrash on any malformed line → structured JSON error with line number and 120-char preview, exit code 1. A single stray character in a multi-thousand-line ranked.jsonl file would have silently terminated the entire pilot panel selection.HIGH
CHANGELOG.mdUnreleased section updated with PRs fix: resolve CRITICAL pre-wetlab pipeline issues (SEED-008 excluded, benchmark config mismatch) #61–66 impact summaries; stalephase3.yaml: 0.30line corrected to0.40(unified in PR fix: resolve CRITICAL pre-wetlab pipeline issues (SEED-008 excluded, benchmark config mismatch) #61)MEDIUM
cli.pyvalidate-scoringstdout: now includesn_positives,n_negatives,benchmark_type,auprcalongside auroc — previously required reading the--outJSON file to see these fieldscli.pysynthesis-orderCSV validation: explicit header check before row iteration; missingcandidate_id/sequencecolumns → structured error withfound_columnslist instead of bareKeyErrorWAVE2_PLAN.md: added SEED-008 (puroindoline-a) Trp mechanism divergence note explaining that disagreement ~0.37 is mechanistic (Boman W=−3.398 vs Wimley-White W=−1.85 kcal/mol), not prediction uncertainty — Wave 2 should expand Trp-rich scaffold confidently if SEED-008 hitsLOW
presynth_check.pycheck_sequence(): validates all 20 canonical AAs before running QC; raisesValueErrorwith bad-residue list on non-canonical inputTests (1191 → 1200)
TestCheckSequenceInputValidation— 6 tests: canonical accepted, lowercase normalized, non-canonical raises, error message names residues, all 20 AAs acceptedtest_validate_scoring_stdout_includes_n_and_auprc— asserts n_positives=43, n_negatives=44, benchmark_type and auprc in stdouttest_pilot_panel_malformed_jsonl_returns_error— asserts exit code 1, structured error, "line 2" in messagetest_synthesis_order_missing_columns_returns_error— asserts exit code 1, structured error, "sequence" in messageTest plan
pytest tests/ -q→ 1200 passed🤖 Generated with Claude Code