From cbafae686a0bfe5877ec47aae55c9976dc973b6d Mon Sep 17 00:00:00 2001 From: OpenCode Date: Mon, 6 Jul 2026 23:03:47 +0700 Subject: [PATCH 1/4] docs: fix stale Phase 4 artifact paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update the reproducibility report's Phase 4 artifact paths to the canonical review and research doc locations after the docs reorganization. Constraint: exclude unrelated pipeline changes from the original branch-local fix. Confidence: High — narrow path correction only. Tested: commit-level replay only; broader verification runs later in the stacked branch. Co-authored-by: OmX --- scripts/release/full_reproducibility_report.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/release/full_reproducibility_report.py b/scripts/release/full_reproducibility_report.py index 3edd9778..9affbc2f 100644 --- a/scripts/release/full_reproducibility_report.py +++ b/scripts/release/full_reproducibility_report.py @@ -94,14 +94,14 @@ def build_report() -> dict: # 5. Phase 4 readiness phase4_exit = { - "lab_partner_onboarding": "docs/LAB_PARTNER_ONBOARDING.md", + "lab_partner_onboarding": "docs/review/LAB_PARTNER_ONBOARDING.md", "pass_fail_criteria": "configs/wave1_pass_fail.yaml", "expert_review_template": ".github/ISSUE_TEMPLATE/expert_review.yml", "decision_log_schema": "schemas/decision_log.schema.json", "lab_batch_pack": "scripts/build_lab_batch_pack.py", - "analysis_plan": "docs/WAVE1_ANALYSIS_PLAN.md", + "analysis_plan": "docs/research/WAVE1_ANALYSIS_PLAN.md", "data_return_validation": "scripts/validate_lab_data_return.py", - "publication_pack": "docs/PUBLICATION_PACK.md", + "publication_pack": "docs/review/PUBLICATION_PACK.md", } exists = {k: Path(repo_root / v).exists() for k, v in phase4_exit.items()} report["sections"]["phase_4_readiness"] = { From 83c01c434797e0c05ec88c9dc5ad58a1e04fd693 Mon Sep 17 00:00:00 2001 From: OpenCode Date: Mon, 6 Jul 2026 22:26:37 +0700 Subject: [PATCH 2/4] docs: shrink root docs surface to true entrypoints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The docs tree now follows the information architecture much more closely. Strategy, trust, evidence, review, and operations documents that still sat at the docs root were moved into their canonical subfolders, leaving only the true docs entrypoint files at the root: README, PROJECT_INDEX, and AGENTS. This change updates the repo's living references so the moved files are no longer treated as legacy root documents. Hub READMEs, project indexes, issue templates, agent instructions, report strings, and the docs consistency test now resolve through the canonical paths. The result is a materially smaller and clearer root docs surface without sacrificing consistency or discoverability. Constraint: Exclude the unrelated unstaged src/openamp_foundry/pipeline.py modification from this commit. Confidence: High — root docs surface reduced to three files and the staged diff is mechanically clean. Tested: git diff --cached --check; full pre-push verification gate will run on push. Co-authored-by: OmX --- docs/README.md | 16 ++++++++-------- docs/{ => evidence}/CALIBRATION_POLICY.md | 0 .../EXTERNAL_PREDICTOR_CONSENSUS.md | 0 docs/{ => evidence}/PROOF_LADDER.md | 0 docs/evidence/README.md | 4 ++-- docs/{ => evidence}/VIRTUAL_ASSAY_SCOPE.md | 0 .../EXTERNAL_VALIDATION_AGENT_PROMPT.md | 0 docs/{ => operations}/LEGACY_LOOP_PROMPT.md | 0 docs/{ => research}/50_LOOP_PLAN.md | 0 docs/{ => research}/ADOPTION_METRICS.md | 0 docs/{ => research}/ADOPTION_STRATEGY.md | 0 docs/{ => research}/DISCOVERY_PREDICTION.md | 0 docs/{ => research}/IP_PLAN.md | 0 docs/{ => research}/NEW_VISION.md | 0 docs/{ => research}/NUMBER_ONE_REPO_STANDARD.md | 0 docs/{ => research}/OPEN_BIOTECH_STACK.md | 0 docs/{ => research}/OPEN_INFRASTRUCTURE_MOAT.md | 0 docs/{ => research}/PLAN.md | 0 docs/research/README.md | 16 ++++++++-------- docs/{ => research}/WAVE_0_5_BASELINE.md | 0 .../WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md | 0 docs/{ => research}/WAVE_0_5_NOVELTY_AUDIT.md | 0 .../WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md | 0 docs/{ => research}/WET_LAB_PROBABILITY.md | 0 docs/{ => research}/WHY_WORK_ON_OPENAMP.md | 0 docs/review/README.md | 2 +- docs/{ => review}/REVIEWER_SUMMARY.md | 0 docs/{ => trust}/DATA_GOVERNANCE.md | 0 docs/{ => trust}/MODEL_CARD_TEMPLATE.md | 0 docs/{ => trust}/PUBLICATION_POLICY.md | 0 docs/trust/README.md | 14 +++++++------- docs/{ => trust}/RELEASE_CHECKLIST.md | 0 docs/{ => trust}/RISK_REGISTER.md | 0 docs/{ => trust}/RISK_REVIEW.md | 0 docs/{ => trust}/SAFETY_DOC_AUDIT.md | 0 docs/{ => trust}/SAFE_SCOPE.md | 0 docs/{ => trust}/TRUST_CENTER.md | 0 37 files changed, 26 insertions(+), 26 deletions(-) rename docs/{ => evidence}/CALIBRATION_POLICY.md (100%) rename docs/{ => evidence}/EXTERNAL_PREDICTOR_CONSENSUS.md (100%) rename docs/{ => evidence}/PROOF_LADDER.md (100%) rename docs/{ => evidence}/VIRTUAL_ASSAY_SCOPE.md (100%) rename docs/{ => operations}/EXTERNAL_VALIDATION_AGENT_PROMPT.md (100%) rename docs/{ => operations}/LEGACY_LOOP_PROMPT.md (100%) rename docs/{ => research}/50_LOOP_PLAN.md (100%) rename docs/{ => research}/ADOPTION_METRICS.md (100%) rename docs/{ => research}/ADOPTION_STRATEGY.md (100%) rename docs/{ => research}/DISCOVERY_PREDICTION.md (100%) rename docs/{ => research}/IP_PLAN.md (100%) rename docs/{ => research}/NEW_VISION.md (100%) rename docs/{ => research}/NUMBER_ONE_REPO_STANDARD.md (100%) rename docs/{ => research}/OPEN_BIOTECH_STACK.md (100%) rename docs/{ => research}/OPEN_INFRASTRUCTURE_MOAT.md (100%) rename docs/{ => research}/PLAN.md (100%) rename docs/{ => research}/WAVE_0_5_BASELINE.md (100%) rename docs/{ => research}/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md (100%) rename docs/{ => research}/WAVE_0_5_NOVELTY_AUDIT.md (100%) rename docs/{ => research}/WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md (100%) rename docs/{ => research}/WET_LAB_PROBABILITY.md (100%) rename docs/{ => research}/WHY_WORK_ON_OPENAMP.md (100%) rename docs/{ => review}/REVIEWER_SUMMARY.md (100%) rename docs/{ => trust}/DATA_GOVERNANCE.md (100%) rename docs/{ => trust}/MODEL_CARD_TEMPLATE.md (100%) rename docs/{ => trust}/PUBLICATION_POLICY.md (100%) rename docs/{ => trust}/RELEASE_CHECKLIST.md (100%) rename docs/{ => trust}/RISK_REGISTER.md (100%) rename docs/{ => trust}/RISK_REVIEW.md (100%) rename docs/{ => trust}/SAFETY_DOC_AUDIT.md (100%) rename docs/{ => trust}/SAFE_SCOPE.md (100%) rename docs/{ => trust}/TRUST_CENTER.md (100%) diff --git a/docs/README.md b/docs/README.md index 05cfa14f..4375c27f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -20,10 +20,10 @@ This is the documentation front door. Start with a route, not the file list. ## Three documents that prevent most mistakes -1. [Trust Center](TRUST_CENTER.md) defines the safety, evidence, and release +1. [Trust Center](trust/TRUST_CENTER.md) defines the safety, evidence, and release architecture. -2. [Proof Ladder](PROOF_LADDER.md) limits claims to their evidence level. -3. [Current Metrics](../evidence/METRICS_CURRENT.md) records current measured performance +2. [Proof Ladder](evidence/PROOF_LADDER.md) limits claims to their evidence level. +3. [Current Metrics](evidence/METRICS_CURRENT.md) records current measured performance and known weaknesses. ## Documentation map @@ -48,11 +48,11 @@ flowchart TD - Safety: [`../SAFETY.md`](../SAFETY.md) and [`../RESPONSIBLE_USE.md`](../RESPONSIBLE_USE.md). -- Claims: [`PROOF_LADDER.md`](PROOF_LADDER.md) and - [`CLAIM_REVIEW_CHECKLIST.md`](../evidence/CLAIM_REVIEW_CHECKLIST.md). -- Metrics: [`METRICS_CURRENT.md`](../evidence/METRICS_CURRENT.md). -- Current work: [`ROADMAP.md`](research/ROADMAP.md) and - [`NEXT_100_PR_MAP.md`](research/NEXT_100_PR_MAP.md). +- Claims: [`evidence/PROOF_LADDER.md`](evidence/PROOF_LADDER.md) and + [`evidence/CLAIM_REVIEW_CHECKLIST.md`](evidence/CLAIM_REVIEW_CHECKLIST.md). +- Metrics: [`evidence/METRICS_CURRENT.md`](evidence/METRICS_CURRENT.md). +- Current work: [`research/ROADMAP.md`](research/ROADMAP.md) and + [`research/NEXT_100_PR_MAP.md`](research/NEXT_100_PR_MAP.md). - Full document catalog: [`PROJECT_INDEX.md`](PROJECT_INDEX.md). Documents describing a wave, audit, recommendation, or dated plan are records diff --git a/docs/CALIBRATION_POLICY.md b/docs/evidence/CALIBRATION_POLICY.md similarity index 100% rename from docs/CALIBRATION_POLICY.md rename to docs/evidence/CALIBRATION_POLICY.md diff --git a/docs/EXTERNAL_PREDICTOR_CONSENSUS.md b/docs/evidence/EXTERNAL_PREDICTOR_CONSENSUS.md similarity index 100% rename from docs/EXTERNAL_PREDICTOR_CONSENSUS.md rename to docs/evidence/EXTERNAL_PREDICTOR_CONSENSUS.md diff --git a/docs/PROOF_LADDER.md b/docs/evidence/PROOF_LADDER.md similarity index 100% rename from docs/PROOF_LADDER.md rename to docs/evidence/PROOF_LADDER.md diff --git a/docs/evidence/README.md b/docs/evidence/README.md index abe02c83..3231be30 100644 --- a/docs/evidence/README.md +++ b/docs/evidence/README.md @@ -2,7 +2,7 @@ ## Claim discipline -- [Proof ladder](../PROOF_LADDER.md) +- [Proof ladder](PROOF_LADDER.md) - [Claim review checklist](CLAIM_REVIEW_CHECKLIST.md) - [Current metrics](METRICS_CURRENT.md) @@ -12,7 +12,7 @@ - [Benchmark governance](BENCHMARK_GOVERNANCE.md) - [Benchmark card](BENCHMARK_CARD.md) - [Simulation benchmark](SIMULATION_BENCHMARK.md) -- [Calibration policy](../CALIBRATION_POLICY.md) +- [Calibration policy](CALIBRATION_POLICY.md) ## Candidate evidence diff --git a/docs/VIRTUAL_ASSAY_SCOPE.md b/docs/evidence/VIRTUAL_ASSAY_SCOPE.md similarity index 100% rename from docs/VIRTUAL_ASSAY_SCOPE.md rename to docs/evidence/VIRTUAL_ASSAY_SCOPE.md diff --git a/docs/EXTERNAL_VALIDATION_AGENT_PROMPT.md b/docs/operations/EXTERNAL_VALIDATION_AGENT_PROMPT.md similarity index 100% rename from docs/EXTERNAL_VALIDATION_AGENT_PROMPT.md rename to docs/operations/EXTERNAL_VALIDATION_AGENT_PROMPT.md diff --git a/docs/LEGACY_LOOP_PROMPT.md b/docs/operations/LEGACY_LOOP_PROMPT.md similarity index 100% rename from docs/LEGACY_LOOP_PROMPT.md rename to docs/operations/LEGACY_LOOP_PROMPT.md diff --git a/docs/50_LOOP_PLAN.md b/docs/research/50_LOOP_PLAN.md similarity index 100% rename from docs/50_LOOP_PLAN.md rename to docs/research/50_LOOP_PLAN.md diff --git a/docs/ADOPTION_METRICS.md b/docs/research/ADOPTION_METRICS.md similarity index 100% rename from docs/ADOPTION_METRICS.md rename to docs/research/ADOPTION_METRICS.md diff --git a/docs/ADOPTION_STRATEGY.md b/docs/research/ADOPTION_STRATEGY.md similarity index 100% rename from docs/ADOPTION_STRATEGY.md rename to docs/research/ADOPTION_STRATEGY.md diff --git a/docs/DISCOVERY_PREDICTION.md b/docs/research/DISCOVERY_PREDICTION.md similarity index 100% rename from docs/DISCOVERY_PREDICTION.md rename to docs/research/DISCOVERY_PREDICTION.md diff --git a/docs/IP_PLAN.md b/docs/research/IP_PLAN.md similarity index 100% rename from docs/IP_PLAN.md rename to docs/research/IP_PLAN.md diff --git a/docs/NEW_VISION.md b/docs/research/NEW_VISION.md similarity index 100% rename from docs/NEW_VISION.md rename to docs/research/NEW_VISION.md diff --git a/docs/NUMBER_ONE_REPO_STANDARD.md b/docs/research/NUMBER_ONE_REPO_STANDARD.md similarity index 100% rename from docs/NUMBER_ONE_REPO_STANDARD.md rename to docs/research/NUMBER_ONE_REPO_STANDARD.md diff --git a/docs/OPEN_BIOTECH_STACK.md b/docs/research/OPEN_BIOTECH_STACK.md similarity index 100% rename from docs/OPEN_BIOTECH_STACK.md rename to docs/research/OPEN_BIOTECH_STACK.md diff --git a/docs/OPEN_INFRASTRUCTURE_MOAT.md b/docs/research/OPEN_INFRASTRUCTURE_MOAT.md similarity index 100% rename from docs/OPEN_INFRASTRUCTURE_MOAT.md rename to docs/research/OPEN_INFRASTRUCTURE_MOAT.md diff --git a/docs/PLAN.md b/docs/research/PLAN.md similarity index 100% rename from docs/PLAN.md rename to docs/research/PLAN.md diff --git a/docs/research/README.md b/docs/research/README.md index 2e208b54..ad77c24f 100644 --- a/docs/research/README.md +++ b/docs/research/README.md @@ -5,15 +5,15 @@ - [Roadmap](ROADMAP.md) - [Next 100 PR map](NEXT_100_PR_MAP.md) - [High-leverage tasks](../operations/HIGH_LEVERAGE_TASKS.md) -- [Current metrics](../METRICS_CURRENT.md) -- [Risk register](../RISK_REGISTER.md) +- [Current metrics](../evidence/METRICS_CURRENT.md) +- [Risk register](../trust/RISK_REGISTER.md) ## Strategy -- [Open infrastructure moat](../OPEN_INFRASTRUCTURE_MOAT.md) -- [Open biotech stack](../OPEN_BIOTECH_STACK.md) -- [Adoption strategy](../ADOPTION_STRATEGY.md) -- [Adoption metrics](../ADOPTION_METRICS.md) +- [Open infrastructure moat](OPEN_INFRASTRUCTURE_MOAT.md) +- [Open biotech stack](OPEN_BIOTECH_STACK.md) +- [Adoption strategy](ADOPTION_STRATEGY.md) +- [Adoption metrics](ADOPTION_METRICS.md) ## Research records @@ -21,8 +21,8 @@ Wave plans, audits, recommendations, and postmortems preserve decisions under the assumptions and data available at the time. Treat them as historical evidence, not current policy or current metrics. -- [Wave 0.5 baseline](../WAVE_0_5_BASELINE.md) -- [Wave 0.5 novelty audit](../WAVE_0_5_NOVELTY_AUDIT.md) +- [Wave 0.5 baseline](WAVE_0_5_BASELINE.md) +- [Wave 0.5 novelty audit](WAVE_0_5_NOVELTY_AUDIT.md) - [Wave 1 analysis plan](WAVE1_ANALYSIS_PLAN.md) - [Wave 1 panel recommendation](WAVE_1_PANEL_RECOMMENDATION.md) - [Wave 2 plan](WAVE2_PLAN.md) diff --git a/docs/WAVE_0_5_BASELINE.md b/docs/research/WAVE_0_5_BASELINE.md similarity index 100% rename from docs/WAVE_0_5_BASELINE.md rename to docs/research/WAVE_0_5_BASELINE.md diff --git a/docs/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md b/docs/research/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md similarity index 100% rename from docs/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md rename to docs/research/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md diff --git a/docs/WAVE_0_5_NOVELTY_AUDIT.md b/docs/research/WAVE_0_5_NOVELTY_AUDIT.md similarity index 100% rename from docs/WAVE_0_5_NOVELTY_AUDIT.md rename to docs/research/WAVE_0_5_NOVELTY_AUDIT.md diff --git a/docs/WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md b/docs/research/WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md similarity index 100% rename from docs/WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md rename to docs/research/WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md diff --git a/docs/WET_LAB_PROBABILITY.md b/docs/research/WET_LAB_PROBABILITY.md similarity index 100% rename from docs/WET_LAB_PROBABILITY.md rename to docs/research/WET_LAB_PROBABILITY.md diff --git a/docs/WHY_WORK_ON_OPENAMP.md b/docs/research/WHY_WORK_ON_OPENAMP.md similarity index 100% rename from docs/WHY_WORK_ON_OPENAMP.md rename to docs/research/WHY_WORK_ON_OPENAMP.md diff --git a/docs/review/README.md b/docs/review/README.md index 32fb1a57..84ad8431 100644 --- a/docs/review/README.md +++ b/docs/review/README.md @@ -18,7 +18,7 @@ laboratory protocols. - [Assay preregistration](ASSAY_PREREGISTRATION.md) - [Pre-wet-lab checklist](PRE_WET_LAB_CHECKLIST.md) - [Publication pack](PUBLICATION_PACK.md) -- [Negative result archive](../NEGATIVE_RESULT_ARCHIVE.md) +- [Negative result archive](../evidence/NEGATIVE_RESULT_ARCHIVE.md) All experimental decisions remain with qualified humans under appropriate institutional oversight. diff --git a/docs/REVIEWER_SUMMARY.md b/docs/review/REVIEWER_SUMMARY.md similarity index 100% rename from docs/REVIEWER_SUMMARY.md rename to docs/review/REVIEWER_SUMMARY.md diff --git a/docs/DATA_GOVERNANCE.md b/docs/trust/DATA_GOVERNANCE.md similarity index 100% rename from docs/DATA_GOVERNANCE.md rename to docs/trust/DATA_GOVERNANCE.md diff --git a/docs/MODEL_CARD_TEMPLATE.md b/docs/trust/MODEL_CARD_TEMPLATE.md similarity index 100% rename from docs/MODEL_CARD_TEMPLATE.md rename to docs/trust/MODEL_CARD_TEMPLATE.md diff --git a/docs/PUBLICATION_POLICY.md b/docs/trust/PUBLICATION_POLICY.md similarity index 100% rename from docs/PUBLICATION_POLICY.md rename to docs/trust/PUBLICATION_POLICY.md diff --git a/docs/trust/README.md b/docs/trust/README.md index 131df47d..cbe575ca 100644 --- a/docs/trust/README.md +++ b/docs/trust/README.md @@ -2,18 +2,18 @@ ## Start here -- [Trust Center](../TRUST_CENTER.md) +- [Trust Center](TRUST_CENTER.md) - [Safety policy](../../SAFETY.md) - [Responsible use](../../RESPONSIBLE_USE.md) -- [Safe scope](../SAFE_SCOPE.md) +- [Safe scope](SAFE_SCOPE.md) ## Governance -- [Data governance](../DATA_GOVERNANCE.md) -- [Publication policy](../PUBLICATION_POLICY.md) -- [Release checklist](../RELEASE_CHECKLIST.md) -- [Risk register](../RISK_REGISTER.md) -- [Safety documentation audit](../SAFETY_DOC_AUDIT.md) +- [Data governance](DATA_GOVERNANCE.md) +- [Publication policy](PUBLICATION_POLICY.md) +- [Release checklist](RELEASE_CHECKLIST.md) +- [Risk register](RISK_REGISTER.md) +- [Safety documentation audit](SAFETY_DOC_AUDIT.md) Changes to safety policy, release policy, claim boundaries, benchmark thresholds, or calibration policy require human review. diff --git a/docs/RELEASE_CHECKLIST.md b/docs/trust/RELEASE_CHECKLIST.md similarity index 100% rename from docs/RELEASE_CHECKLIST.md rename to docs/trust/RELEASE_CHECKLIST.md diff --git a/docs/RISK_REGISTER.md b/docs/trust/RISK_REGISTER.md similarity index 100% rename from docs/RISK_REGISTER.md rename to docs/trust/RISK_REGISTER.md diff --git a/docs/RISK_REVIEW.md b/docs/trust/RISK_REVIEW.md similarity index 100% rename from docs/RISK_REVIEW.md rename to docs/trust/RISK_REVIEW.md diff --git a/docs/SAFETY_DOC_AUDIT.md b/docs/trust/SAFETY_DOC_AUDIT.md similarity index 100% rename from docs/SAFETY_DOC_AUDIT.md rename to docs/trust/SAFETY_DOC_AUDIT.md diff --git a/docs/SAFE_SCOPE.md b/docs/trust/SAFE_SCOPE.md similarity index 100% rename from docs/SAFE_SCOPE.md rename to docs/trust/SAFE_SCOPE.md diff --git a/docs/TRUST_CENTER.md b/docs/trust/TRUST_CENTER.md similarity index 100% rename from docs/TRUST_CENTER.md rename to docs/trust/TRUST_CENTER.md From b71085fe40bb53c33a37725123e12bb684835c63 Mon Sep 17 00:00:00 2001 From: OpenCode Date: Mon, 6 Jul 2026 22:37:52 +0700 Subject: [PATCH 3/4] docs: repair remaining canonical path references MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The root docs reduction exposed the last class of regressions: code, templates, and historical docs that still treated deleted root doc paths as canonical. This commit rewrites those remaining references to the new evidence, trust, review, research, and engineering locations so the reduced docs surface is not only smaller but operationally correct. This includes the docs consistency test, report strings, GitHub templates, root guidance files, and the remaining historical docs that referenced deleted root-level pages. The branch still intentionally excludes the unrelated src/openamp_foundry/pipeline.py modification. Constraint: Keep the reduced root docs surface while restoring full test and hook compatibility. Confidence: High — docs consistency returned to green after the path repair pass and the staged diff is mechanically clean. Tested: ./.venv/bin/python -m pytest tests/test_docs_consistent.py -q; git diff --cached --check Co-authored-by: OmX --- .github/CODEOWNERS | 6 +-- .github/ISSUE_TEMPLATE/claim_review.md | 2 +- .github/ISSUE_TEMPLATE/data_contribution.md | 2 +- .../ISSUE_TEMPLATE/model_release_review.md | 4 +- .github/ISSUE_TEMPLATE/safety_review.md | 2 +- .github/PULL_REQUEST_TEMPLATE.md | 2 +- AGENTS.md | 12 ++--- README.md | 36 ++++++------- docs/PROJECT_INDEX.md | 54 +++++++++---------- docs/evidence/METRICS_CURRENT.md | 4 +- docs/evidence/NOVELTY_AUDIT_FULL.md | 2 +- docs/getting-started/FIRST_RUN_WALKTHROUGH.md | 2 +- docs/getting-started/HUMAN_ONBOARDING.md | 4 +- docs/getting-started/REVIEWER_ONBOARDING.md | 2 +- docs/operations/DOCS_MAINTENANCE.md | 12 ++--- docs/operations/LEGACY_LOOP_PROMPT.md | 6 +-- .../SUSTAINABILITY_AND_BUS_FACTOR.md | 6 +-- docs/research/50_LOOP_PLAN.md | 2 +- docs/research/DISCOVERY_PREDICTION.md | 6 +-- docs/research/NEW_VISION.md | 2 +- docs/research/PLAN.md | 2 +- docs/research/ROADMAP.md | 46 ++++++++-------- docs/research/WAVE_0_5_BASELINE.md | 2 +- .../WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md | 4 +- .../WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md | 8 +-- docs/review/PRE_WET_LAB_CHECKLIST.md | 2 +- docs/review/PUBLICATION_PACK.md | 8 +-- docs/trust/RELEASE_CHECKLIST.md | 4 +- docs/trust/TRUST_CENTER.md | 10 ++-- .../gates/wave0_5_gate_checker.py | 4 +- tests/test_docs_consistent.py | 16 +++--- 31 files changed, 137 insertions(+), 137 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index ba3265bf..1f54dcc5 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -21,7 +21,7 @@ docs/review/PRE_REGISTERED_PILOT_TEMPLATE.md @Open-Problem-Lab/maintainers # Benchmarks, calibration, data, and model release need responsible review. docs/evidence/BENCHMARK_GOVERNANCE.md @Open-Problem-Lab/maintainers -docs/CALIBRATION_POLICY.md @Open-Problem-Lab/maintainers -docs/DATA_GOVERNANCE.md @Open-Problem-Lab/maintainers -docs/MODEL_CARD_TEMPLATE.md @Open-Problem-Lab/maintainers +docs/evidence/CALIBRATION_POLICY.md @Open-Problem-Lab/maintainers +docs/trust/DATA_GOVERNANCE.md @Open-Problem-Lab/maintainers +docs/trust/MODEL_CARD_TEMPLATE.md @Open-Problem-Lab/maintainers configs/recalibration_policy.yaml @Open-Problem-Lab/maintainers diff --git a/.github/ISSUE_TEMPLATE/claim_review.md b/.github/ISSUE_TEMPLATE/claim_review.md index 5804835c..ec1051b4 100644 --- a/.github/ISSUE_TEMPLATE/claim_review.md +++ b/.github/ISSUE_TEMPLATE/claim_review.md @@ -60,7 +60,7 @@ body: attributes: label: Checks options: - - label: `docs/PROOF_LADDER.md` reviewed. + - label: `docs/evidence/PROOF_LADDER.md` reviewed. required: true - label: `docs/evidence/CLAIM_REVIEW_CHECKLIST.md` reviewed. required: true diff --git a/.github/ISSUE_TEMPLATE/data_contribution.md b/.github/ISSUE_TEMPLATE/data_contribution.md index feb24221..61ac8c50 100644 --- a/.github/ISSUE_TEMPLATE/data_contribution.md +++ b/.github/ISSUE_TEMPLATE/data_contribution.md @@ -7,7 +7,7 @@ body: - type: markdown attributes: value: | - Use this template for non-toy data contributions or dataset review. Read `DATA_LICENSE_NOTICE.md` and `docs/DATA_GOVERNANCE.md` first. + Use this template for non-toy data contributions or dataset review. Read `DATA_LICENSE_NOTICE.md` and `docs/trust/DATA_GOVERNANCE.md` first. - type: textarea id: dataset attributes: diff --git a/.github/ISSUE_TEMPLATE/model_release_review.md b/.github/ISSUE_TEMPLATE/model_release_review.md index 42ff1e9e..17a5f51a 100644 --- a/.github/ISSUE_TEMPLATE/model_release_review.md +++ b/.github/ISSUE_TEMPLATE/model_release_review.md @@ -82,8 +82,8 @@ body: - MODEL_RELEASE_POLICY.md - SAFETY.md - RESPONSIBLE_USE.md - - docs/MODEL_CARD_TEMPLATE.md - - docs/RELEASE_CHECKLIST.md + - docs/trust/MODEL_CARD_TEMPLATE.md + - docs/trust/RELEASE_CHECKLIST.md validations: required: true - type: checkboxes diff --git a/.github/ISSUE_TEMPLATE/safety_review.md b/.github/ISSUE_TEMPLATE/safety_review.md index df30184f..1ebd8b1e 100644 --- a/.github/ISSUE_TEMPLATE/safety_review.md +++ b/.github/ISSUE_TEMPLATE/safety_review.md @@ -45,7 +45,7 @@ body: - SAFETY.md - RESPONSIBLE_USE.md - MODEL_RELEASE_POLICY.md - - docs/PROOF_LADDER.md + - docs/evidence/PROOF_LADDER.md - docs/review/EXTERNAL_REVIEW_PACKET.md validations: required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 36a5a5f0..06aa5cc4 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -37,7 +37,7 @@ See `docs/getting-started/MAINTAINER_GUIDE.md`. ## Claim discipline -- [ ] Claims are mapped to `docs/PROOF_LADDER.md` +- [ ] Claims are mapped to `docs/evidence/PROOF_LADDER.md` - [ ] Dry-lab outputs are not described as biological proof - [ ] No “AI discovered an antibiotic” / “drug candidate” / “safe” / “clinically useful” language unless evidence level supports it - [ ] Unsupported claims are explicitly listed or avoided diff --git a/AGENTS.md b/AGENTS.md index 4fc8fc80..a06cd1db 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -34,10 +34,10 @@ Before making nontrivial changes, agents should read: 2. [`SAFETY.md`](SAFETY.md) — safety policy. 3. [`RESPONSIBLE_USE.md`](RESPONSIBLE_USE.md) — allowed and disallowed uses. 4. [`docs/getting-started/AGENT_ONBOARDING.md`](docs/getting-started/AGENT_ONBOARDING.md) — task workflow. -5. [`docs/PROOF_LADDER.md`](docs/PROOF_LADDER.md) — claim levels. +5. [`docs/evidence/PROOF_LADDER.md`](docs/evidence/PROOF_LADDER.md) — claim levels. 6. [`docs/operations/HIGH_LEVERAGE_TASKS.md`](docs/operations/HIGH_LEVERAGE_TASKS.md) — task priority map. 7. [`docs/research/NEXT_100_PR_MAP.md`](docs/research/NEXT_100_PR_MAP.md) — PR-sized backlog. -8. [`docs/TRUST_CENTER.md`](docs/TRUST_CENTER.md) — trust architecture. +8. [`docs/trust/TRUST_CENTER.md`](docs/trust/TRUST_CENTER.md) — trust architecture. If these docs conflict, safety and claim discipline win. @@ -179,7 +179,7 @@ Agents must follow: - [`SAFETY.md`](SAFETY.md) - [`RESPONSIBLE_USE.md`](RESPONSIBLE_USE.md) - [`MODEL_RELEASE_POLICY.md`](MODEL_RELEASE_POLICY.md) -- [`docs/SAFETY_DOC_AUDIT.md`](docs/SAFETY_DOC_AUDIT.md) +- [`docs/trust/SAFETY_DOC_AUDIT.md`](docs/trust/SAFETY_DOC_AUDIT.md) ## Benchmark rule @@ -207,7 +207,7 @@ Agents must not present proxy models as validated biology. A virtual-assay module may affect ranking only when the documented gate allows it. -Use [`docs/VIRTUAL_ASSAY_SCOPE.md`](docs/VIRTUAL_ASSAY_SCOPE.md) and [`docs/evidence/SIMULATION_BENCHMARK.md`](docs/evidence/SIMULATION_BENCHMARK.md). +Use [`docs/evidence/VIRTUAL_ASSAY_SCOPE.md`](docs/evidence/VIRTUAL_ASSAY_SCOPE.md) and [`docs/evidence/SIMULATION_BENCHMARK.md`](docs/evidence/SIMULATION_BENCHMARK.md). ## Data and model rule @@ -218,9 +218,9 @@ Agents must not commit or release non-toy data, sensitive model artifacts, or ca Use: - [`DATA_LICENSE_NOTICE.md`](DATA_LICENSE_NOTICE.md) -- [`docs/DATA_GOVERNANCE.md`](docs/DATA_GOVERNANCE.md) +- [`docs/trust/DATA_GOVERNANCE.md`](docs/trust/DATA_GOVERNANCE.md) - [`MODEL_RELEASE_POLICY.md`](MODEL_RELEASE_POLICY.md) -- [`docs/MODEL_CARD_TEMPLATE.md`](docs/MODEL_CARD_TEMPLATE.md) +- [`docs/trust/MODEL_CARD_TEMPLATE.md`](docs/trust/MODEL_CARD_TEMPLATE.md) - [`docs/engineering/ARTIFACT_VERSIONING.md`](docs/engineering/ARTIFACT_VERSIONING.md) ## Reproducibility rule diff --git a/README.md b/README.md index 5738481d..005ae73d 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ The larger mission is more ambitious: > Build an open **wet-lab compression engine** for AMP discovery: a system that helps qualified scientists decide which small number of experiments are most worth running next, then learns from those outcomes. -The long-term infrastructure ambition is described in [`VISION.md`](VISION.md), [`GOAL.md`](GOAL.md), [`docs/OPEN_BIOTECH_STACK.md`](docs/OPEN_BIOTECH_STACK.md), [`docs/OPEN_INFRASTRUCTURE_MOAT.md`](docs/OPEN_INFRASTRUCTURE_MOAT.md), and [`docs/TRUST_CENTER.md`](docs/TRUST_CENTER.md). +The long-term infrastructure ambition is described in [`VISION.md`](VISION.md), [`GOAL.md`](GOAL.md), [`docs/research/OPEN_BIOTECH_STACK.md`](docs/research/OPEN_BIOTECH_STACK.md), [`docs/research/OPEN_INFRASTRUCTURE_MOAT.md`](docs/research/OPEN_INFRASTRUCTURE_MOAT.md), and [`docs/trust/TRUST_CENTER.md`](docs/trust/TRUST_CENTER.md). ## Start here @@ -20,13 +20,13 @@ The long-term infrastructure ambition is described in [`VISION.md`](VISION.md), |---|---|---| | New human contributor | [`docs/README.md`](docs/README.md) | [`docs/getting-started/FIRST_RUN_WALKTHROUGH.md`](docs/getting-started/FIRST_RUN_WALKTHROUGH.md), [`CONTRIBUTING.md`](CONTRIBUTING.md) | | AI agent | [`AGENTS.md`](AGENTS.md) | [`docs/getting-started/AGENT_ONBOARDING.md`](docs/getting-started/AGENT_ONBOARDING.md), [`docs/operations/HUMAN_AGENT_COLLABORATION.md`](docs/operations/HUMAN_AGENT_COLLABORATION.md) | -| Reviewer | [`docs/getting-started/REVIEWER_ONBOARDING.md`](docs/getting-started/REVIEWER_ONBOARDING.md) | [`docs/evidence/CLAIM_REVIEW_CHECKLIST.md`](docs/evidence/CLAIM_REVIEW_CHECKLIST.md), [`docs/RISK_REGISTER.md`](docs/RISK_REGISTER.md) | +| Reviewer | [`docs/getting-started/REVIEWER_ONBOARDING.md`](docs/getting-started/REVIEWER_ONBOARDING.md) | [`docs/evidence/CLAIM_REVIEW_CHECKLIST.md`](docs/evidence/CLAIM_REVIEW_CHECKLIST.md), [`docs/trust/RISK_REGISTER.md`](docs/trust/RISK_REGISTER.md) | | Computational scientist | [`docs/evidence/README.md`](docs/evidence/README.md) | [`docs/evidence/METRICS_CURRENT.md`](docs/evidence/METRICS_CURRENT.md), [`docs/evidence/BENCHMARKING.md`](docs/evidence/BENCHMARKING.md) | -| Data/schema/model contributor | [`docs/engineering/SCHEMA_REGISTRY.md`](docs/engineering/SCHEMA_REGISTRY.md) | [`docs/DATA_GOVERNANCE.md`](docs/DATA_GOVERNANCE.md), [`docs/engineering/ADAPTER_AUTHOR_GUIDE.md`](docs/engineering/ADAPTER_AUTHOR_GUIDE.md) | +| Data/schema/model contributor | [`docs/engineering/SCHEMA_REGISTRY.md`](docs/engineering/SCHEMA_REGISTRY.md) | [`docs/trust/DATA_GOVERNANCE.md`](docs/trust/DATA_GOVERNANCE.md), [`docs/engineering/ADAPTER_AUTHOR_GUIDE.md`](docs/engineering/ADAPTER_AUTHOR_GUIDE.md) | | Wet-lab/domain expert | [`docs/review/WET_LAB_HANDOFF.md`](docs/review/WET_LAB_HANDOFF.md) | [`docs/review/EXTERNAL_REVIEW_PACKET.md`](docs/review/EXTERNAL_REVIEW_PACKET.md), [`docs/review/PRE_REGISTERED_PILOT_TEMPLATE.md`](docs/review/PRE_REGISTERED_PILOT_TEMPLATE.md) | -| Safety reviewer | [`docs/TRUST_CENTER.md`](docs/TRUST_CENTER.md) | [`SAFETY.md`](SAFETY.md), [`SECURITY.md`](SECURITY.md) | -| Funder/institution | [`docs/OPEN_INFRASTRUCTURE_MOAT.md`](docs/OPEN_INFRASTRUCTURE_MOAT.md) | [`docs/ADOPTION_METRICS.md`](docs/ADOPTION_METRICS.md), [`GOVERNANCE.md`](GOVERNANCE.md) | -| Maintainer | [`GOVERNANCE.md`](GOVERNANCE.md) | [`docs/operations/SUSTAINABILITY_AND_BUS_FACTOR.md`](docs/operations/SUSTAINABILITY_AND_BUS_FACTOR.md), [`docs/RELEASE_CHECKLIST.md`](docs/RELEASE_CHECKLIST.md) | +| Safety reviewer | [`docs/trust/TRUST_CENTER.md`](docs/trust/TRUST_CENTER.md) | [`SAFETY.md`](SAFETY.md), [`SECURITY.md`](SECURITY.md) | +| Funder/institution | [`docs/research/OPEN_INFRASTRUCTURE_MOAT.md`](docs/research/OPEN_INFRASTRUCTURE_MOAT.md) | [`docs/research/ADOPTION_METRICS.md`](docs/research/ADOPTION_METRICS.md), [`GOVERNANCE.md`](GOVERNANCE.md) | +| Maintainer | [`GOVERNANCE.md`](GOVERNANCE.md) | [`docs/operations/SUSTAINABILITY_AND_BUS_FACTOR.md`](docs/operations/SUSTAINABILITY_AND_BUS_FACTOR.md), [`docs/trust/RELEASE_CHECKLIST.md`](docs/trust/RELEASE_CHECKLIST.md) | ## Why this repo exists @@ -157,37 +157,37 @@ openamp-foundry/ models/README.md # model directory rules docs/README.md # task-based documentation front door docs/PROJECT_INDEX.md # exhaustive document catalog - docs/TRUST_CENTER.md # safety/evidence/governance trust front door - docs/OPEN_INFRASTRUCTURE_MOAT.md # durable infrastructure thesis - docs/NUMBER_ONE_REPO_STANDARD.md # category-leader standard + docs/trust/TRUST_CENTER.md # safety/evidence/governance trust front door + docs/research/OPEN_INFRASTRUCTURE_MOAT.md # durable infrastructure thesis + docs/research/NUMBER_ONE_REPO_STANDARD.md # category-leader standard docs/getting-started/FIRST_RUN_WALKTHROUGH.md # first-run path docs/getting-started/COMMAND_SURFACE.md # command workflows and claim boundaries docs/engineering/SCHEMA_REGISTRY.md # schema and artifact registry docs/engineering/RUN_MANIFEST_STANDARD.md # provenance standard docs/engineering/ADAPTER_AUTHOR_GUIDE.md # safe adapter authoring - docs/RISK_REGISTER.md # major risks and mitigations + docs/trust/RISK_REGISTER.md # major risks and mitigations docs/operations/SUSTAINABILITY_AND_BUS_FACTOR.md # sustainability and bus-factor plan - docs/PUBLICATION_POLICY.md # public claims policy + docs/trust/PUBLICATION_POLICY.md # public claims policy docs/research/NEXT_100_PR_MAP.md # PR-sized roadmap docs/engineering/CI_AND_QUALITY_GATES.md # CI and quality gates docs/operations/HUMAN_AGENT_COLLABORATION.md # human-agent collaboration model docs/getting-started/REVIEWER_ONBOARDING.md # reviewer guide - docs/ADOPTION_METRICS.md # adoption metrics focused on trust + docs/research/ADOPTION_METRICS.md # adoption metrics focused on trust docs/operations/DECISION_RECORD_TEMPLATE.md # decision record template docs/getting-started/HUMAN_ONBOARDING.md # human contributor onboarding docs/getting-started/AGENT_ONBOARDING.md # agent task protocol - docs/PROOF_LADDER.md # evidence levels and claim ladder + docs/evidence/PROOF_LADDER.md # evidence levels and claim ladder docs/evidence/CLAIM_REVIEW_CHECKLIST.md # claim review checklist - docs/DATA_GOVERNANCE.md # data governance standard - docs/MODEL_CARD_TEMPLATE.md # model/adapter card template + docs/trust/DATA_GOVERNANCE.md # data governance standard + docs/trust/MODEL_CARD_TEMPLATE.md # model/adapter card template docs/engineering/ARTIFACT_VERSIONING.md # artifact compatibility policy - docs/RELEASE_CHECKLIST.md # release checklist + docs/trust/RELEASE_CHECKLIST.md # release checklist docs/evidence/BENCHMARKING.md # benchmark suite docs/evidence/BENCHMARK_GOVERNANCE.md # benchmark lifecycle and governance docs/evidence/METRICS_CURRENT.md # current benchmark summary - docs/CALIBRATION_POLICY.md # recalibration gate policy + docs/evidence/CALIBRATION_POLICY.md # recalibration gate policy docs/evidence/EVIDENCE_CERTIFICATE.md # candidate certificate spec - docs/VIRTUAL_ASSAY_SCOPE.md # virtual-assay scope and gates + docs/evidence/VIRTUAL_ASSAY_SCOPE.md # virtual-assay scope and gates docs/review/WET_LAB_HANDOFF.md # safe expert-review handoff guide examples/ # toy datasets only outputs/.gitkeep # generated files ignored by git diff --git a/docs/PROJECT_INDEX.md b/docs/PROJECT_INDEX.md index 8f58038e..5c9278a9 100644 --- a/docs/PROJECT_INDEX.md +++ b/docs/PROJECT_INDEX.md @@ -75,10 +75,10 @@ First useful contribution: select one narrow bottleneck, implement it, add tests Read in this order: 1. [`docs/getting-started/REVIEWER_ONBOARDING.md`](getting-started/REVIEWER_ONBOARDING.md) — reviewer roles and checklists. -2. [`docs/PROOF_LADDER.md`](PROOF_LADDER.md) — claim levels. +2. [`docs/evidence/PROOF_LADDER.md`](PROOF_LADDER.md) — claim levels. 3. [`docs/evidence/CLAIM_REVIEW_CHECKLIST.md`](../evidence/CLAIM_REVIEW_CHECKLIST.md) — claim review. 4. [`docs/evidence/BENCHMARK_GOVERNANCE.md`](../evidence/BENCHMARK_GOVERNANCE.md) — benchmark review. -5. [`docs/RISK_REGISTER.md`](RISK_REGISTER.md) — major risks and mitigations. +5. [`docs/trust/RISK_REGISTER.md`](RISK_REGISTER.md) — major risks and mitigations. First useful contribution: reject or downgrade weak claims, unclear release status, missing baselines, or unreviewable artifacts. @@ -99,7 +99,7 @@ First useful contribution: add a leakage-resistant benchmark, improve reference Read in this order: 1. [`DATA_LICENSE_NOTICE.md`](../DATA_LICENSE_NOTICE.md) — data license and redistribution policy. -2. [`docs/DATA_GOVERNANCE.md`](DATA_GOVERNANCE.md) — dataset cards, labels, leakage, release status. +2. [`docs/trust/DATA_GOVERNANCE.md`](DATA_GOVERNANCE.md) — dataset cards, labels, leakage, release status. 3. [`docs/engineering/SCHEMA_REGISTRY.md`](../engineering/SCHEMA_REGISTRY.md) — structured artifact registry. 4. [`docs/engineering/ADAPTER_AUTHOR_GUIDE.md`](../engineering/ADAPTER_AUTHOR_GUIDE.md) — safe adapter authoring. 5. [`docs/engineering/ARTIFACT_VERSIONING.md`](../engineering/ARTIFACT_VERSIONING.md) — artifact compatibility rules. @@ -111,7 +111,7 @@ First useful contribution: add a dataset card, schema example, adapter card, mod Read in this order: 1. [`docs/review/WET_LAB_HANDOFF.md`](review/WET_LAB_HANDOFF.md) — safe expert-review handoff guide. -2. [`docs/PROOF_LADDER.md`](PROOF_LADDER.md) — claim ladder from dry-lab nomination to independent validation. +2. [`docs/evidence/PROOF_LADDER.md`](PROOF_LADDER.md) — claim ladder from dry-lab nomination to independent validation. 3. [`docs/review/EXTERNAL_REVIEW_PACKET.md`](review/EXTERNAL_REVIEW_PACKET.md) — standard review packet contents. 4. [`docs/review/LAB_PARTNER_ONBOARDING.md`](review/LAB_PARTNER_ONBOARDING.md) — safe partner onboarding boundaries. 5. [`docs/review/PRE_REGISTERED_PILOT_TEMPLATE.md`](review/PRE_REGISTERED_PILOT_TEMPLATE.md) — non-protocol template for freezing pilot logic before qualified testing. @@ -122,11 +122,11 @@ First useful contribution: review whether candidate evidence packages are interp Read in this order: -1. [`docs/TRUST_CENTER.md`](TRUST_CENTER.md) — safety, evidence, release, and governance overview. +1. [`docs/trust/TRUST_CENTER.md`](TRUST_CENTER.md) — safety, evidence, release, and governance overview. 2. [`SAFETY.md`](../SAFETY.md) — safety posture. 3. [`SECURITY.md`](../SECURITY.md) — safety-sensitive reporting. 4. [`MODEL_RELEASE_POLICY.md`](../MODEL_RELEASE_POLICY.md) — release rules. -5. [`docs/SAFETY_DOC_AUDIT.md`](SAFETY_DOC_AUDIT.md) — safety-doc audit history. +5. [`docs/trust/SAFETY_DOC_AUDIT.md`](SAFETY_DOC_AUDIT.md) — safety-doc audit history. First useful contribution: identify where an artifact could be misread, over-released, overclaimed, or used outside scope. @@ -135,9 +135,9 @@ First useful contribution: identify where an artifact could be misread, over-rel Read in this order: 1. [`VISION.md`](../VISION.md) — long-term infrastructure thesis. -2. [`docs/OPEN_INFRASTRUCTURE_MOAT.md`](OPEN_INFRASTRUCTURE_MOAT.md) — why infrastructure can be durable. -3. [`docs/TRUST_CENTER.md`](TRUST_CENTER.md) — trust architecture. -4. [`docs/ADOPTION_METRICS.md`](ADOPTION_METRICS.md) — adoption metrics that value trust over hype. +2. [`docs/research/OPEN_INFRASTRUCTURE_MOAT.md`](OPEN_INFRASTRUCTURE_MOAT.md) — why infrastructure can be durable. +3. [`docs/trust/TRUST_CENTER.md`](TRUST_CENTER.md) — trust architecture. +4. [`docs/research/ADOPTION_METRICS.md`](ADOPTION_METRICS.md) — adoption metrics that value trust over hype. 5. [`GOVERNANCE.md`](../GOVERNANCE.md) — decision governance. First useful contribution: fund independent validation, benchmark audits, safe result publication, or infrastructure work that makes the project less dependent on any one person or model. @@ -149,8 +149,8 @@ Read in this order: 1. [`GOVERNANCE.md`](../GOVERNANCE.md) — project governance. 2. [`docs/getting-started/MAINTAINER_GUIDE.md`](getting-started/MAINTAINER_GUIDE.md) — maintainer review rules. 3. [`docs/operations/SUSTAINABILITY_AND_BUS_FACTOR.md`](operations/SUSTAINABILITY_AND_BUS_FACTOR.md) — sustainability and bus-factor plan. -4. [`docs/RISK_REGISTER.md`](RISK_REGISTER.md) — major risks and mitigations. -5. [`docs/RELEASE_CHECKLIST.md`](RELEASE_CHECKLIST.md) — release checklist. +4. [`docs/trust/RISK_REGISTER.md`](RISK_REGISTER.md) — major risks and mitigations. +5. [`docs/trust/RELEASE_CHECKLIST.md`](RELEASE_CHECKLIST.md) — release checklist. First useful contribution: make the repo easier to maintain without lowering safety, evidence, or reproducibility standards. @@ -162,15 +162,15 @@ First useful contribution: make the repo easier to maintain without lowering saf | [`GOAL.md`](../GOAL.md) | Concrete milestones, kill rules, and metrics. | | [`MISSION.md`](../MISSION.md) | Scientific mission and claim boundaries. | | [`GOVERNANCE.md`](../GOVERNANCE.md) | Project decision governance. | -| [`docs/TRUST_CENTER.md`](TRUST_CENTER.md) | Trust front door for safety, evidence, release, governance, and agents. | -| [`docs/OPEN_INFRASTRUCTURE_MOAT.md`](OPEN_INFRASTRUCTURE_MOAT.md) | Why OpenAMP should win through reusable trust infrastructure. | -| [`docs/NUMBER_ONE_REPO_STANDARD.md`](NUMBER_ONE_REPO_STANDARD.md) | Defines what category leadership means. | -| [`docs/WHY_WORK_ON_OPENAMP.md`](WHY_WORK_ON_OPENAMP.md) | Positioning: why serious contributors should choose this repo. | -| [`docs/OPEN_BIOTECH_STACK.md`](OPEN_BIOTECH_STACK.md) | Infrastructure thesis and stack model. | -| [`docs/ADOPTION_STRATEGY.md`](ADOPTION_STRATEGY.md) | Adoption strategy for humans, agents, labs, and institutions. | -| [`docs/ADOPTION_METRICS.md`](ADOPTION_METRICS.md) | Adoption metrics that prioritize trust and reuse over popularity. | +| [`docs/trust/TRUST_CENTER.md`](TRUST_CENTER.md) | Trust front door for safety, evidence, release, governance, and agents. | +| [`docs/research/OPEN_INFRASTRUCTURE_MOAT.md`](OPEN_INFRASTRUCTURE_MOAT.md) | Why OpenAMP should win through reusable trust infrastructure. | +| [`docs/research/NUMBER_ONE_REPO_STANDARD.md`](NUMBER_ONE_REPO_STANDARD.md) | Defines what category leadership means. | +| [`docs/research/WHY_WORK_ON_OPENAMP.md`](WHY_WORK_ON_OPENAMP.md) | Positioning: why serious contributors should choose this repo. | +| [`docs/research/OPEN_BIOTECH_STACK.md`](OPEN_BIOTECH_STACK.md) | Infrastructure thesis and stack model. | +| [`docs/research/ADOPTION_STRATEGY.md`](ADOPTION_STRATEGY.md) | Adoption strategy for humans, agents, labs, and institutions. | +| [`docs/research/ADOPTION_METRICS.md`](ADOPTION_METRICS.md) | Adoption metrics that prioritize trust and reuse over popularity. | | [`docs/research/NEXT_100_PR_MAP.md`](research/NEXT_100_PR_MAP.md) | PR-sized roadmap for compounding work. | -| [`docs/RISK_REGISTER.md`](RISK_REGISTER.md) | Major risks and mitigations. | +| [`docs/trust/RISK_REGISTER.md`](RISK_REGISTER.md) | Major risks and mitigations. | | [`CITATION.cff`](../CITATION.cff) | Citation metadata. | ## Core operating docs @@ -188,7 +188,7 @@ First useful contribution: make the repo easier to maintain without lowering saf | [`docs/operations/HIGH_LEVERAGE_TASKS.md`](operations/HIGH_LEVERAGE_TASKS.md) | Task map for humans and agents. | | [`docs/getting-started/MAINTAINER_GUIDE.md`](getting-started/MAINTAINER_GUIDE.md) | Maintainer review and governance standard. | | [`docs/operations/SUSTAINABILITY_AND_BUS_FACTOR.md`](operations/SUSTAINABILITY_AND_BUS_FACTOR.md) | Project sustainability and bus-factor plan. | -| [`docs/RELEASE_CHECKLIST.md`](RELEASE_CHECKLIST.md) | Release checklist. | +| [`docs/trust/RELEASE_CHECKLIST.md`](RELEASE_CHECKLIST.md) | Release checklist. | | [`docs/operations/DECISION_RECORD_TEMPLATE.md`](operations/DECISION_RECORD_TEMPLATE.md) | Decision record template. | | [`docs/operations/DOCS_MAINTENANCE.md`](operations/DOCS_MAINTENANCE.md) | Documentation maintenance rules. | | [`docs/operations/ISSUE_LABEL_TAXONOMY.md`](operations/ISSUE_LABEL_TAXONOMY.md) | Issue-label system. | @@ -208,21 +208,21 @@ First useful contribution: make the repo easier to maintain without lowering saf | [`docs/evidence/BENCHMARK_GOVERNANCE.md`](../evidence/BENCHMARK_GOVERNANCE.md) | Benchmark lifecycle and anti-cheating rules. | | [`docs/evidence/METRICS_CURRENT.md`](../evidence/METRICS_CURRENT.md) | Current benchmark state and single source of truth for metrics. | | [`docs/evidence/EVIDENCE_CERTIFICATE.md`](../evidence/EVIDENCE_CERTIFICATE.md) | Candidate certificate spec. | -| [`docs/CALIBRATION_POLICY.md`](CALIBRATION_POLICY.md) | Recalibration gate and policy. | -| [`docs/VIRTUAL_ASSAY_SCOPE.md`](VIRTUAL_ASSAY_SCOPE.md) | What virtual assay modules may and may not claim. | +| [`docs/evidence/CALIBRATION_POLICY.md`](CALIBRATION_POLICY.md) | Recalibration gate and policy. | +| [`docs/evidence/VIRTUAL_ASSAY_SCOPE.md`](VIRTUAL_ASSAY_SCOPE.md) | What virtual assay modules may and may not claim. | ## Data, model, release, and claims docs | Document | Job | |---|---| | [`DATA_LICENSE_NOTICE.md`](../DATA_LICENSE_NOTICE.md) | Data license and redistribution notice. | -| [`docs/DATA_GOVERNANCE.md`](DATA_GOVERNANCE.md) | Dataset cards, label governance, leakage, and release status. | +| [`docs/trust/DATA_GOVERNANCE.md`](DATA_GOVERNANCE.md) | Dataset cards, label governance, leakage, and release status. | | [`data/README.md`](../data/README.md) | Data directory policy. | | [`MODEL_RELEASE_POLICY.md`](../MODEL_RELEASE_POLICY.md) | Model and artifact release policy. | -| [`docs/MODEL_CARD_TEMPLATE.md`](MODEL_CARD_TEMPLATE.md) | Model, scorer, simulator, generator, and adapter card template. | +| [`docs/trust/MODEL_CARD_TEMPLATE.md`](MODEL_CARD_TEMPLATE.md) | Model, scorer, simulator, generator, and adapter card template. | | [`models/README.md`](../models/README.md) | Models directory policy. | | [`docs/evidence/CLAIM_REVIEW_CHECKLIST.md`](../evidence/CLAIM_REVIEW_CHECKLIST.md) | Claim review checklist. | -| [`docs/PUBLICATION_POLICY.md`](PUBLICATION_POLICY.md) | Publication and public claims policy. | +| [`docs/trust/PUBLICATION_POLICY.md`](PUBLICATION_POLICY.md) | Publication and public claims policy. | ## External review and collaboration docs @@ -243,10 +243,10 @@ First useful contribution: make the repo easier to maintain without lowering saf |---|---| | [`SAFETY.md`](../SAFETY.md) | Project safety policy. | | [`SECURITY.md`](../SECURITY.md) | Security and safety-sensitive reporting. | -| [`docs/SAFETY_DOC_AUDIT.md`](SAFETY_DOC_AUDIT.md) | Safety audit and remediation record for docs. | +| [`docs/trust/SAFETY_DOC_AUDIT.md`](SAFETY_DOC_AUDIT.md) | Safety audit and remediation record for docs. | | [`RESPONSIBLE_USE.md`](../RESPONSIBLE_USE.md) | Allowed and disallowed use. | | [`MODEL_RELEASE_POLICY.md`](../MODEL_RELEASE_POLICY.md) | Release policy for models, weights, and sensitive artifacts. | -| [`docs/TRUST_CENTER.md`](TRUST_CENTER.md) | Cross-cutting trust overview. | +| [`docs/trust/TRUST_CENTER.md`](TRUST_CENTER.md) | Cross-cutting trust overview. | ## GitHub workflow files diff --git a/docs/evidence/METRICS_CURRENT.md b/docs/evidence/METRICS_CURRENT.md index b8aabdf3..cb019946 100644 --- a/docs/evidence/METRICS_CURRENT.md +++ b/docs/evidence/METRICS_CURRENT.md @@ -24,7 +24,7 @@ Machine-readable snapshot: `outputs/metrics_snapshot.json` regenerated with `mak > **New in v0.5.54:** Simulation ablation benchmark — tests MembraneProxy + StructureProxy on 500-AMP AMP-vs-decoy benchmark. Honest finding: composite degrades (delta=−0.1153) but `bacterial_binding` alone achieves AUROC 0.7512 — genuine non-charge signal. 17 new tests. 1922 total. > **New in v0.5.53:** Structure ensemble proxy — `StructureProxy` using Chou-Fasman 3-state helix/sheet/coil propensities. `non_helical` flag for helic-biased scorer warnings. `HelicityBaseline`. 34 new tests. 1905 total. > **New in v0.5.52:** Membrane interaction proxy — `MembraneProxy` using Wimley-White interfacial/octanol scales for coarse-grained bacterial and mammalian binding energy scores. `BomanBaseline` clamped. 30 new tests. 1873 total. -> **New in v0.5.51:** Virtual assay scope document — `docs/VIRTUAL_ASSAY_SCOPE.md` with uncertainty policy, ablation requirements, integration modes. Doc drift fixes: BENCHMARKING.md, METRICS_CURRENT.md test count, NOVELTY_AUDIT_GUIDE.md script ref. No code changes. +> **New in v0.5.51:** Virtual assay scope document — `docs/evidence/VIRTUAL_ASSAY_SCOPE.md` with uncertainty policy, ablation requirements, integration modes. Doc drift fixes: BENCHMARKING.md, METRICS_CURRENT.md test count, NOVELTY_AUDIT_GUIDE.md script ref. No code changes. > **New in v0.5.50:** Negative-result archive template — `docs/evidence/NEGATIVE_RESULT_ARCHIVE.md` with full 18-field entry schema, automation notes, and limitations. Phase 2 exit criteria: all 5 met ✅. No code changes. > **New in v0.5.49:** Policy version bump workflow — `scripts/calibration/bump_recalibration_policy.py` (standalone CLI, decision-log guard, dry-run mode, auto-increment + write). CI guard in `ci.yml` validates policy version against base branch when `configs/recalibration_policy.yaml` changes. `make bump-policy-version` Makefile target. 9 tests. 1843 total passing. Phase 2 exit: 5 of 5 criteria met. > **New in v0.5.48:** Fixed stale ARCHITECTURE.md package map — calibration and active_learning were listed as "Potential future packages" despite shipping in v0.5.19+ and v0.5.45+. Moved to main package map with version annotations. Updated 50_LOOP_PLAN.md "Current Position" and completed Phase 2 table. No code changes. @@ -1168,4 +1168,4 @@ Decoys score low on activity. Selective AMPs score moderately on both. | 2026-07-04 | **Calibration intake module added:** `openamp-foundry calibration-intake` joins a pilot panel CSV with a directory of validated lab result JSON files, produces a per-candidate prediction-vs-actual report with cohort metrics gated by `MIN_COHORT_SIZE=5`. Descriptive only — does NOT trigger recalibration, weight updates, or selection-rule changes. Synthetic example data in `examples/lab_results/` is clearly labeled in every file and in `examples/lab_results/README.md`. 29 new tests; total 1614 passing. | OpenAMP loop | | 2026-06-29 | Initial — expanded benchmark (PR #110) | OpenAMP CI | | 2026-07-05 | **Per-family benchmark breakdown added:** stratifies 500 AMPs by structural class (cysteine_rich, proline_rich, short, highly_cationic, moderately_cationic, low_charge). Pipeline is charge-dominated: highly_cationic AUROC 0.958 vs proline_rich AUROC 0.586 — a 0.37 gap. Proline-rich, short, and low-charge AMPs are consistently undervalued. Diversity selection should deliberately compensate for pipeline's helic/charge bias. `scripts/benchmarks/benchmark_per_family.py`, `make bench-per-family`, CI informational step. 27 new tests. | OpenAMP loop 18 | -| 2026-07-04 | **Recalibration policy + gate module added:** `openamp-foundry recalibration-gate` evaluates a calibration intake report against the pre-registered policy in `configs/recalibration_policy.yaml` and emits a binary `may_recalibrate` verdict. The policy file encodes 7 minimum conditions (cohort size, controls, orphans, positives, negatives, metrics availability), 5 permanent prohibited actions (toxicity, hemolysis, novelty, pathogen enhancement, post-hoc success redefinition), and 2 rate limits (L1 weight budget, cooldown). The validator rejects policy files that omit any canonical prohibited action or any `locked_changes` entry. The gate does NOT trigger weight updates; it is the missing permission layer between v0.5.19 intake and a future recalibration engine. Exit code 0 when `may_recalibrate=true`, 3 when false. 39 new tests; total 1647 passing. See `docs/CALIBRATION_POLICY.md`. | OpenAMP loop | +| 2026-07-04 | **Recalibration policy + gate module added:** `openamp-foundry recalibration-gate` evaluates a calibration intake report against the pre-registered policy in `configs/recalibration_policy.yaml` and emits a binary `may_recalibrate` verdict. The policy file encodes 7 minimum conditions (cohort size, controls, orphans, positives, negatives, metrics availability), 5 permanent prohibited actions (toxicity, hemolysis, novelty, pathogen enhancement, post-hoc success redefinition), and 2 rate limits (L1 weight budget, cooldown). The validator rejects policy files that omit any canonical prohibited action or any `locked_changes` entry. The gate does NOT trigger weight updates; it is the missing permission layer between v0.5.19 intake and a future recalibration engine. Exit code 0 when `may_recalibrate=true`, 3 when false. 39 new tests; total 1647 passing. See `docs/evidence/CALIBRATION_POLICY.md`. | OpenAMP loop | diff --git a/docs/evidence/NOVELTY_AUDIT_FULL.md b/docs/evidence/NOVELTY_AUDIT_FULL.md index 6c2e7992..7c38ed07 100644 --- a/docs/evidence/NOVELTY_AUDIT_FULL.md +++ b/docs/evidence/NOVELTY_AUDIT_FULL.md @@ -117,7 +117,7 @@ Bac2A proline-rich intracellular. Novel mechanism (DnaK binding). ## Wave 0.5 Novelty Audit (2026-06-29) > Separate audit for Wave 0.5 scaffold diversification candidates. -> Full details: `docs/WAVE_0_5_NOVELTY_AUDIT.md` +> Full details: `docs/research/WAVE_0_5_NOVELTY_AUDIT.md` > Machine-readable: `outputs/wave0_5_novelty_audit.csv` ### Summary diff --git a/docs/getting-started/FIRST_RUN_WALKTHROUGH.md b/docs/getting-started/FIRST_RUN_WALKTHROUGH.md index 7eb3e1db..6ef7cffe 100644 --- a/docs/getting-started/FIRST_RUN_WALKTHROUGH.md +++ b/docs/getting-started/FIRST_RUN_WALKTHROUGH.md @@ -17,7 +17,7 @@ Read: - [`README.md`](../README.md) - [`SAFETY.md`](../SAFETY.md) - [`docs/getting-started/COMMAND_SURFACE.md`](COMMAND_SURFACE.md) -- [`docs/PROOF_LADDER.md`](PROOF_LADDER.md) +- [`docs/evidence/PROOF_LADDER.md`](PROOF_LADDER.md) ## Expected setup diff --git a/docs/getting-started/HUMAN_ONBOARDING.md b/docs/getting-started/HUMAN_ONBOARDING.md index fc640a71..7a28b28b 100644 --- a/docs/getting-started/HUMAN_ONBOARDING.md +++ b/docs/getting-started/HUMAN_ONBOARDING.md @@ -58,7 +58,7 @@ Then look for a small issue in CLI ergonomics, tests, reports, schemas, or doc c - [`VISION.md`](../VISION.md) - [`GOAL.md`](../GOAL.md) -- [`docs/PROOF_LADDER.md`](PROOF_LADDER.md) +- [`docs/evidence/PROOF_LADDER.md`](PROOF_LADDER.md) - [`docs/evidence/METRICS_CURRENT.md`](../evidence/METRICS_CURRENT.md) - [`docs/evidence/BENCHMARKING.md`](../evidence/BENCHMARKING.md) @@ -68,7 +68,7 @@ Then look for a weak benchmark, missing baseline, leakage risk, uncontrolled com - [`docs/review/WET_LAB_HANDOFF.md`](WET_LAB_HANDOFF.md) - [`docs/review/COLLABORATION_PLAYBOOK.md`](COLLABORATION_PLAYBOOK.md) -- [`docs/PROOF_LADDER.md`](PROOF_LADDER.md) +- [`docs/evidence/PROOF_LADDER.md`](PROOF_LADDER.md) - [`RESPONSIBLE_USE.md`](../RESPONSIBLE_USE.md) Then review whether the evidence package would help a qualified scientist decide whether a small assay batch is worth considering. diff --git a/docs/getting-started/REVIEWER_ONBOARDING.md b/docs/getting-started/REVIEWER_ONBOARDING.md index f2cc45b9..516e0447 100644 --- a/docs/getting-started/REVIEWER_ONBOARDING.md +++ b/docs/getting-started/REVIEWER_ONBOARDING.md @@ -122,7 +122,7 @@ Ask: Use direct comments like: -- “Please map this claim to `docs/PROOF_LADDER.md`.” +- “Please map this claim to `docs/evidence/PROOF_LADDER.md`.” - “This needs a cheap-baseline comparison before it can affect ranking.” - “This reads like validation, but the evidence is dry-lab only.” - “Please add release status.” diff --git a/docs/operations/DOCS_MAINTENANCE.md b/docs/operations/DOCS_MAINTENANCE.md index 85495de9..2db5cb60 100644 --- a/docs/operations/DOCS_MAINTENANCE.md +++ b/docs/operations/DOCS_MAINTENANCE.md @@ -45,7 +45,7 @@ These docs define current project truth. | `MODEL_RELEASE_POLICY.md` | Artifact release boundaries. | | `docs/evidence/METRICS_CURRENT.md` | Current benchmark metrics. | | `docs/evidence/DECISION_RULES.md` | Gates and thresholds. | -| `docs/CALIBRATION_POLICY.md` | Recalibration gate policy. | +| `docs/evidence/CALIBRATION_POLICY.md` | Recalibration gate policy. | | `docs/PROJECT_INDEX.md` | Navigation hub. | These must be kept current. @@ -72,7 +72,7 @@ These explain systems and artifacts. - `docs/evidence/BENCHMARKING.md` - `docs/evidence/BENCHMARK_GOVERNANCE.md` - `docs/evidence/EVIDENCE_CERTIFICATE.md` -- `docs/VIRTUAL_ASSAY_SCOPE.md` +- `docs/evidence/VIRTUAL_ASSAY_SCOPE.md` - `docs/evidence/SIMULATION_BENCHMARK.md` If code behavior changes, these may need updates. @@ -84,9 +84,9 @@ These help outsiders safely evaluate or reuse the project. - `docs/review/COLLABORATION_PLAYBOOK.md` - `docs/review/WET_LAB_HANDOFF.md` - `docs/review/PRE_REGISTERED_PILOT_TEMPLATE.md` -- `docs/ADOPTION_STRATEGY.md` -- `docs/OPEN_BIOTECH_STACK.md` -- `docs/PROOF_LADDER.md` +- `docs/research/ADOPTION_STRATEGY.md` +- `docs/research/OPEN_BIOTECH_STACK.md` +- `docs/evidence/PROOF_LADDER.md` If external-facing language changes, these need review. @@ -99,7 +99,7 @@ Update: - `docs/evidence/METRICS_CURRENT.md` - `outputs/metrics_snapshot.json` if generated - `docs/evidence/BENCHMARKING.md` if benchmark meaning changed -- `docs/research/ROADMAP.md` or `docs/50_LOOP_PLAN.md` if milestone changed +- `docs/research/ROADMAP.md` or `docs/research/50_LOOP_PLAN.md` if milestone changed ### Benchmark added or changed diff --git a/docs/operations/LEGACY_LOOP_PROMPT.md b/docs/operations/LEGACY_LOOP_PROMPT.md index 07a33bf8..48fcf07b 100644 --- a/docs/operations/LEGACY_LOOP_PROMPT.md +++ b/docs/operations/LEGACY_LOOP_PROMPT.md @@ -25,11 +25,11 @@ Read these first: - MISSION.md - README.md - docs/engineering/ARCHITECTURE.md -- docs/PLAN.md +- docs/research/PLAN.md - docs/research/ROADMAP.md - docs/evidence/METRICS_CURRENT.md -- docs/CALIBRATION_POLICY.md (if present — pre-registered recalibration gate) -- docs/SAFE_SCOPE.md +- docs/evidence/CALIBRATION_POLICY.md (if present — pre-registered recalibration gate) +- docs/trust/SAFE_SCOPE.md Agent-friendly package note: The calibration module (`src/openamp_foundry/calibration/`) now exposes its public API at the package level. Use diff --git a/docs/operations/SUSTAINABILITY_AND_BUS_FACTOR.md b/docs/operations/SUSTAINABILITY_AND_BUS_FACTOR.md index af11c907..8b429131 100644 --- a/docs/operations/SUSTAINABILITY_AND_BUS_FACTOR.md +++ b/docs/operations/SUSTAINABILITY_AND_BUS_FACTOR.md @@ -89,11 +89,11 @@ The repo is succession-ready when these are current: - `SAFETY.md`; - `MODEL_RELEASE_POLICY.md`; - `docs/PROJECT_INDEX.md`; -- `docs/TRUST_CENTER.md`; +- `docs/trust/TRUST_CENTER.md`; - `docs/evidence/METRICS_CURRENT.md`; - `docs/research/NEXT_100_PR_MAP.md`; -- `docs/RELEASE_CHECKLIST.md`; -- `docs/RISK_REGISTER.md`. +- `docs/trust/RELEASE_CHECKLIST.md`; +- `docs/trust/RISK_REGISTER.md`. ## Documentation debt policy diff --git a/docs/research/50_LOOP_PLAN.md b/docs/research/50_LOOP_PLAN.md index 8e583a54..a87c700f 100644 --- a/docs/research/50_LOOP_PLAN.md +++ b/docs/research/50_LOOP_PLAN.md @@ -99,7 +99,7 @@ Build the multi-resolution virtual assay layer: structure proxies, membrane inte | Loop | Bottleneck | Deliverable | Verification | |------|-----------|-------------|-------------| -| 30 ✅ | No explicit virtual-assay scope document; stale BENCHMARKING.md; stale test count in METRICS_CURRENT.md; broken script ref in NOVELTY_AUDIT_GUIDE.md | `docs/VIRTUAL_ASSAY_SCOPE.md` — scope doc with modeled/NOT-modeled effects, uncertainty policy, ablation requirement, integration modes. Rewrote `docs/evidence/BENCHMARKING.md` with all 19 benchmarks. Fixed test count, script ref, scripts/__init__.py. | Scope doc reviewable; BENCHMARKING.md matches Makefile; 1843 tests | +| 30 ✅ | No explicit virtual-assay scope document; stale BENCHMARKING.md; stale test count in METRICS_CURRENT.md; broken script ref in NOVELTY_AUDIT_GUIDE.md | `docs/evidence/VIRTUAL_ASSAY_SCOPE.md` — scope doc with modeled/NOT-modeled effects, uncertainty policy, ablation requirement, integration modes. Rewrote `docs/evidence/BENCHMARKING.md` with all 19 benchmarks. Fixed test count, script ref, scripts/__init__.py. | Scope doc reviewable; BENCHMARKING.md matches Makefile; 1843 tests | | 31 ✅ | No membrane interaction proxy. The simulation module had only a dummy placeholder | `simulation/membrane.py`: MembraneProxy with Wimley-White interfacial and octanol scales, bacterial/mammalian binding scores, selectivity ratio, and uncertainty. BomanBaseline clamped. v0.5.52 | 30 tests, 1873 total. Magainin more selective than melittin (verified by test). Membrane proxy initialised, benchmark deferred to Loop 34 | | 32 ✅ | No structure ensemble proxy. Current pipeline assumes all AMPs are helical | `simulation/structure.py`: StructureProxy with Chou-Fasman 3-state propensities, normalized ensemble weights, non_helical flag. v0.5.53 | 34 tests, 1905 total. Protegrin/tachyplesin non-helical (✅), magainin not non-helical (✅). Melittin ambiguous — Chou-Fasman limitation documented | | 33 ✅ | No per-module ablation: do simulation modules improve discrimination? (Original 'selectivity ratio' superseded by Loop 31 membrane proxy — replaced with more useful ablation benchmark) | `scripts/benchmark_simulation_ablation.py`: tests MembraneProxy + StructureProxy on 500-AMP AMP-vs-decoy benchmark. Reports per-module AUROC, combined composite AUROC, and verdict. v0.5.54 | 17 tests, 1922 total. Honest finding: composite degrades AMP-vs-decoy (delta=-0.1153), but bacterial_binding alone achieves 0.7512 AUROC — genuine non-charge signal from Wimley-White + hydrophobic moment | diff --git a/docs/research/DISCOVERY_PREDICTION.md b/docs/research/DISCOVERY_PREDICTION.md index fbb7747c..e6b48248 100644 --- a/docs/research/DISCOVERY_PREDICTION.md +++ b/docs/research/DISCOVERY_PREDICTION.md @@ -16,7 +16,7 @@ improvements already implemented or recommended. **Bottom line (post-PR #110, 7 scaffold families, AUROC 0.7832 on expanded 95-AMP + 96-decoy benchmark; original demo set AUROC 0.8420):** The pilot panel has a ~99.95% probability of yielding ≥1 candidate with MIC ≤ 16 µg/mL (P(zero active) = 0.000508 -across 7 families; per-family breakdown in [`docs/WET_LAB_PROBABILITY.md`](WET_LAB_PROBABILITY.md)) +across 7 families; per-family breakdown in [`docs/research/WET_LAB_PROBABILITY.md`](WET_LAB_PROBABILITY.md)) and **~10–20%** probability of generating high-impact publication material (up from 5–12% before computational improvements). The higher per-candidate estimate (internal model) is corrected to 10–20% by accounting for near-seed correlation and 7 effective independent scaffold @@ -690,7 +690,7 @@ is meaningfully higher (mean ensemble 0.821, mean safety 0.991). The 3 excluded mechanism-diverse seeds — a net improvement. > **For a per-family detailed analysis** with attrition model and assay guidance, see -> [`docs/WET_LAB_PROBABILITY.md`](WET_LAB_PROBABILITY.md). That document distinguishes +> [`docs/research/WET_LAB_PROBABILITY.md`](WET_LAB_PROBABILITY.md). That document distinguishes > "publishable novel result" (~30–50%) from "high-impact scenario tier" (~8–18% with MDR added). | Outcome | Internal model (n=20 independent) | Calibrated estimate (n=7 scaffolds, post-PR #72) | @@ -701,7 +701,7 @@ mechanism-diverse seeds — a net improvement. *"Publishable novel result" bar is lower than "high-impact" — single-lab first characterisation in a peptide science journal, not requiring independent external replication. See -`docs/WET_LAB_PROBABILITY.md` Section 3 for the composite probability derivation. +`docs/research/WET_LAB_PROBABILITY.md` Section 3 for the composite probability derivation. The MIC-only probability (Stage 1) is harder to correct without a formal per-scaffold Stage 1 rate; it is left as a qualitative adjustment toward the lower end of the 61–71% range. The diff --git a/docs/research/NEW_VISION.md b/docs/research/NEW_VISION.md index bcdf356e..f3aac1e5 100644 --- a/docs/research/NEW_VISION.md +++ b/docs/research/NEW_VISION.md @@ -4,7 +4,7 @@ > vision for a future virtual wet-lab layer. It is NOT a description of current > pipeline capability. Do not cite or present as implemented functionality. > For the current architecture, see `docs/engineering/ARCHITECTURE.md` and -> `docs/VIRTUAL_ASSAY_SCOPE.md`. For the current roadmap, see `docs/research/ROADMAP.md`. +> `docs/evidence/VIRTUAL_ASSAY_SCOPE.md`. For the current roadmap, see `docs/research/ROADMAP.md`. This is **exactly the right "bend reality" question**. diff --git a/docs/research/PLAN.md b/docs/research/PLAN.md index 014eaa7d..c8a7acdc 100644 --- a/docs/research/PLAN.md +++ b/docs/research/PLAN.md @@ -246,7 +246,7 @@ Second-batch hit rate improves over first-batch hit rate without changing succes Phase 5 is deliberately staged: the policy + gate ship before any recalibration engine exists, so the engine cannot be silently -applied. See `docs/CALIBRATION_POLICY.md` for the exact gate contract. +applied. See `docs/evidence/CALIBRATION_POLICY.md` for the exact gate contract. ### Phase 6 — Scientific credibility diff --git a/docs/research/ROADMAP.md b/docs/research/ROADMAP.md index 3a0c2c15..51c808a8 100644 --- a/docs/research/ROADMAP.md +++ b/docs/research/ROADMAP.md @@ -9,7 +9,7 @@ Changes: - ``scripts/full_reproducibility_report.py`` — Fixed lab_batch_pack path to check for ``scripts/build_lab_batch_pack.py`` instead of ``make lab-batch-pack``. Updated loops_completed to 50. -- ``docs/50_LOOP_PLAN.md`` — Added Loop 50 entry. Next loop set to "None." +- ``docs/research/50_LOOP_PLAN.md`` — Added Loop 50 entry. Next loop set to "None." - ``docs/evidence/METRICS_CURRENT.md`` — Changelog updated. - 2021 tests passing. @@ -28,7 +28,7 @@ Changes: limitations (6 documented caveats). - ``Makefile`` — Added ``full-reproducibility-report`` target. - ``tests/test_full_reproducibility_report.py`` — 8 tests. -- ``docs/50_LOOP_PLAN.md`` — Loop 49 ✅. All 49 loops marked complete. +- ``docs/research/50_LOOP_PLAN.md`` — Loop 49 ✅. All 49 loops marked complete. Current position updated to "Phase 4 Complete". - ``docs/evidence/METRICS_CURRENT.md`` — Changelog updated. Test count: 2021. - 2021 tests passing (2013 existing + 8 new). @@ -47,7 +47,7 @@ Changes: results, calibration, reproducibility evidence, negative results, safety and governance, README for reproduction, preprint preparation. References 7 related governance docs. -- ``docs/50_LOOP_PLAN.md`` — Loop 48 ✅. Next: Loop 49. +- ``docs/research/50_LOOP_PLAN.md`` — Loop 48 ✅. Next: Loop 49. - ``docs/evidence/METRICS_CURRENT.md`` — Changelog updated. - No code changes. 2013 tests still pass. @@ -60,7 +60,7 @@ Changes: ``schemas/lab_result.schema.json``, reports per-file errors, detects control failures. Exit 0 all pass, 3 any fail, 2 missing files. - ``tests/test_validate_lab_data_return.py`` — 8 tests. -- ``docs/50_LOOP_PLAN.md`` — Loop 47 ✅. Next: Loop 48. +- ``docs/research/50_LOOP_PLAN.md`` — Loop 47 ✅. Next: Loop 48. - ``docs/evidence/METRICS_CURRENT.md`` — Changelog updated. Test count: 2008. - 2008 tests passing. @@ -78,7 +78,7 @@ Changes: against an existing zip. - `tests/test_lab_batch_pack.py` — covers custody-file generation, successful verification, tamper detection, and CLI verification mode. -- `docs/50_LOOP_PLAN.md` — Loop 45 ✅. Next: Loop 46. +- `docs/research/50_LOOP_PLAN.md` — Loop 45 ✅. Next: Loop 46. - `docs/evidence/METRICS_CURRENT.md` — version and changelog synced. Honest boundary: @@ -95,7 +95,7 @@ Changes: - ``schemas/decision_log.schema.json`` — Draft 2020-12 JSON Schema with 12 fields, 9 decision types, conditional dissent-requires-notes. - ``tests/test_decision_log_schema.py`` — 11 tests. -- ``docs/50_LOOP_PLAN.md`` — Loop 43 ✅. Next: Loop 45. +- ``docs/research/50_LOOP_PLAN.md`` — Loop 43 ✅. Next: Loop 45. - ``docs/evidence/METRICS_CURRENT.md`` — Changelog updated. Test count: 2000. - 2000 tests passing. @@ -116,7 +116,7 @@ Changes: evidence certificates can carry them without schema drift. - ``tests/test_simulation_mode_cli.py`` — covers ranked output, report columns, evidence-certificate inclusion, and schema validation for the new fields. -- ``docs/VIRTUAL_ASSAY_SCOPE.md`` and ``docs/evidence/SIMULATION_BENCHMARK.md`` — synced +- ``docs/evidence/VIRTUAL_ASSAY_SCOPE.md`` and ``docs/evidence/SIMULATION_BENCHMARK.md`` — synced to current behavior. Honest finding: @@ -135,7 +135,7 @@ Changes: modifications), assay protocols (MIC, hemolysis, serum stability), data return JSON format with required fields, positive/negative controls, safety and biosecurity (BSL-2), timeline (5–8 weeks), and related document links. -- ``docs/50_LOOP_PLAN.md`` — Loop 40 ✅. Phase 4 status: "In progress — Loop 40 ✅". +- ``docs/research/50_LOOP_PLAN.md`` — Loop 40 ✅. Phase 4 status: "In progress — Loop 40 ✅". Next: Loop 41. - ``docs/evidence/METRICS_CURRENT.md`` — Changelog entry updated. - No code changes. 1966 tests still pass. @@ -174,7 +174,7 @@ Changes: scope, error result schema. - ``docs/engineering/ARCHITECTURE.md`` — Extension points section expanded with ``ExternalSimulationAdapter`` usage example and documentation. -- ``docs/50_LOOP_PLAN.md`` — Loop 38 ✅. Next: Loop 39. +- ``docs/research/50_LOOP_PLAN.md`` — Loop 38 ✅. Next: Loop 39. - ``docs/evidence/METRICS_CURRENT.md`` — Pipeline version v0.5.59. Test count: 1966. - 1965 tests passing (1953 existing + 12 new — one test deduplicated). @@ -189,7 +189,7 @@ Changes: vs helix_propensity, non_helical vs proline_fraction. ``make bench-simulation-baselines`` target. - ``tests/test_benchmark_simulation_baselines.py`` — 13 tests. -- ``docs/50_LOOP_PLAN.md`` — Loop 36 ✅. Next: Loop 38. +- ``docs/research/50_LOOP_PLAN.md`` — Loop 36 ✅. Next: Loop 38. - ``docs/evidence/METRICS_CURRENT.md`` — Pipeline version v0.5.58. Test count: 1953. - ``docs/evidence/BENCHMARKING.md`` — Added bench-simulation-baselines (22 targets). @@ -238,7 +238,7 @@ Changes: only when weighted mode is honestly allowed, `3` otherwise. - ``Makefile`` — ``make simulation-gate`` target writing ``outputs/simulation_gate_verdict.json`` from both ablation artifacts. -- ``docs/VIRTUAL_ASSAY_SCOPE.md`` — corrected stale claim that `rank` already +- ``docs/evidence/VIRTUAL_ASSAY_SCOPE.md`` — corrected stale claim that `rank` already accepts `--simulation-mode`; current state now says weighted mode is blocked until the gate passes. - ``tests/test_simulation_gate.py`` — 6 tests covering blocked current-state @@ -265,7 +265,7 @@ Changes: ``examples/validation/hemolysis_reference.csv``. Reports per-score hemolysis detection AUROC (inverted for safety-type scorers). - ``Makefile`` — Added ``bench-simulation-ablation-within-amp`` target. -- ``docs/50_LOOP_PLAN.md`` — Loop 34 ✅ (re-interpreted). Next: Loop 35. +- ``docs/research/50_LOOP_PLAN.md`` — Loop 34 ✅ (re-interpreted). Next: Loop 35. - ``docs/evidence/METRICS_CURRENT.md`` — Pipeline version v0.5.55. Test count: 1928. - 1928 tests passing (1905 existing + 23 updated). @@ -290,7 +290,7 @@ Changes: computes per-module AUROC, and a combined simulation composite AUROC. ``make bench-simulation-ablation`` target. Output written to ``outputs/simulation_ablation.json``. -- ``docs/50_LOOP_PLAN.md`` — Loop 33 ✅ (re-interpreted as ablation benchmark). +- ``docs/research/50_LOOP_PLAN.md`` — Loop 33 ✅ (re-interpreted as ablation benchmark). Next: Loop 34. - ``docs/evidence/METRICS_CURRENT.md`` — Pipeline version v0.5.54. Test count: 1922. - ``docs/engineering/ARCHITECTURE.md`` — Package map updated. @@ -323,7 +323,7 @@ Changes: normalization, dominant state, non-helical flag, known reference comparisons (magainin helical, protegrin/tachyplesin beta-sheet, proline-rich non-helical, melittin ambiguous — documented limitation), and empty sequence. -- ``docs/50_LOOP_PLAN.md`` — Loop 32 ✅. Next: Loop 33. +- ``docs/research/50_LOOP_PLAN.md`` — Loop 32 ✅. Next: Loop 33. - ``docs/evidence/METRICS_CURRENT.md`` — Pipeline version v0.5.53. Test count: 1905. - 1905 tests passing (1871 existing + 34 new). @@ -345,7 +345,7 @@ Changes: - ``tests/test_membrane_proxy.py`` — 27 tests covering scale lookup, normalization, selectivity ratio, uncertainty, proxy contract, known-reference comparison (magainin more selective than melittin), empty sequence, and version. -- ``docs/50_LOOP_PLAN.md`` — Loop 31 ✅. Phase 3 status updated. Next: Loop 32. +- ``docs/research/50_LOOP_PLAN.md`` — Loop 31 ✅. Phase 3 status updated. Next: Loop 32. - ``docs/evidence/METRICS_CURRENT.md`` — Pipeline version bumped to v0.5.52. Test count: 1873. - 1873 tests passing (1843 existing + 30 new). @@ -359,7 +359,7 @@ was missing ~11 of 19 benchmarks; METRICS_CURRENT.md test count was stale (1832+ → 1843); NOVELTY_AUDIT_GUIDE.md referenced a nonexistent script. Changes: -- ``docs/VIRTUAL_ASSAY_SCOPE.md`` — Phase 3 scope document covering 4 planned +- ``docs/evidence/VIRTUAL_ASSAY_SCOPE.md`` — Phase 3 scope document covering 4 planned modules (membrane binding, structure ensemble, selectivity ratio, stability), 12 explicitly NOT-modeled effects, uncertainty policy (modules with uncertainty > 0.5 cannot affect selection), ablation requirement (each @@ -372,7 +372,7 @@ Changes: - ``docs/evidence/METRICS_CURRENT.md`` — Test count corrected: 1832+ → 1843. - ``docs/evidence/NOVELTY_AUDIT_GUIDE.md`` — Fixed stale script reference: ``scripts/download_uniprot_amps.py`` → ``scripts/download_novelty_dbs.py --uniprot``. -- ``docs/50_LOOP_PLAN.md`` — Loop 30 marked ✅. Phase 3 status updated to +- ``docs/research/50_LOOP_PLAN.md`` — Loop 30 marked ✅. Phase 3 status updated to "In progress — Loop 30 ✅". - ``scripts/__init__.py`` — Populated with module docstring. - 1843 tests passing. No code changes to pipeline. @@ -389,7 +389,7 @@ Changes: automation notes (auto-append by ``calibration-intake`` and ``filter_wave*`` scripts), and explicit limitations. Covers pre-selection rejects, selected but untested, lab-tested inactives, lab-tested toxic, and control failures. -- ``docs/50_LOOP_PLAN.md`` — Phase 2 header marked ✅ complete, status updated +- ``docs/research/50_LOOP_PLAN.md`` — Phase 2 header marked ✅ complete, status updated to v0.5.50, Loop 29 ✅, all 5 exit criteria now show green, Current Position updated to Phase 3 ready. - ``docs/evidence/METRICS_CURRENT.md`` — Bumped to v0.5.50, changelog entry. @@ -432,7 +432,7 @@ Changes: "Potential future packages" to the main package map with version annotations. Removed the stale ``analysis`` future-package entry. Fixed duplicate step "8." in the target future data flow (→ steps 8–10 with correct numbering). -- ``docs/50_LOOP_PLAN.md``: updated "Current Position" from "Loop 25 of 29" +- ``docs/research/50_LOOP_PLAN.md``: updated "Current Position" from "Loop 25 of 29" to "Loop 27 of 29", added Loops 23–27 to the completed Phase 2 table, fixed "Next loop" reference to Loop 28, updated Phase 2 exit-criteria tracking. - ``docs/evidence/METRICS_CURRENT.md``: test count updated to 1834. @@ -721,7 +721,7 @@ Implemented during the pre-wet-lab improvement loop (PRs #31–#54): - CLI integration tests — gold-standard, external-predict, pilot-confident, diversity-check (PRs #74–#79/#82/#85) - Lab-results directory loading + toxicity flag branch coverage (PR #80) -- Wet-lab probability analysis (`docs/WET_LAB_PROBABILITY.md`) — per-family P(MIC≤16) breakdown, composite P(≥1 active) = 99.95% (PRs #81/#87) +- Wet-lab probability analysis (`docs/research/WET_LAB_PROBABILITY.md`) — per-family P(MIC≤16) breakdown, composite P(≥1 active) = 99.95% (PRs #81/#87) - Assay pre-registration (`docs/review/ASSAY_PREREGISTRATION.md`) — MRSA USA300, serum stability gate, RPMI-1640 arm for SEED-009 (PR #83) - SEED-007 helix-wheel length fix 18 AA → 11 AA (PR #84) - `novelty-check-broad` CLI + 72-AMP curated database: 16/20 NOVEL, 3 KNOWN_VARIANT, 1 CLOSE_RELATIVE (`docs/evidence/NOVELTY_BROAD_CHECK.md`) (PR #86) @@ -777,7 +777,7 @@ Implemented during the pre-wet-lab improvement loop (PRs #31–#54): ## v0.5.5 — Wave 0.5 Scaffold Diversification ✓ (2026-06-29) -- Baseline freeze of Wave 0 panel (20 candidates, 7 families, `docs/WAVE_0_5_BASELINE.md`) +- Baseline freeze of Wave 0 panel (20 candidates, 7 families, `docs/research/WAVE_0_5_BASELINE.md`) - 10 new seed families designed: SEED-010 (histatin), SEED-011 (Pro-kinked), SEED-012 (Gly-rich), SEED-013 (pleurocidin), SEED-014 (cathelicidin-mini), SEED-015 (KFLK de novo), SEED-016 (RRWK dual-Trp), SEED-017 (Pro-kinked Leu/Phe), SEED-018 (GKRK scattered-charge), SEED-019 (Arg-Val alternating) - 118 raw candidates generated across 10 new families (`scripts/generate_wave0_5_candidates.py`) - 60 candidates shortlisted at internal gates (activity≥0.70, safety≥0.75, novelty≥0.50, `scripts/filter_wave0_5_candidates.py`) @@ -1065,7 +1065,7 @@ It must NOT replace the ensemble activity gate — it is a complementary signal. - New script: `scripts/benchmark_cross_dataset.py` - New target: `make bench-cross-dataset` - Docs: `docs/evidence/METRICS_CURRENT.md` (new section), `docs/evidence/BENCHMARK_CARD.md` (new section), - `docs/50_LOOP_PLAN.md` (Phase 1 ✅) + `docs/research/50_LOOP_PLAN.md` (Phase 1 ✅) ## v0.5.34 — Benchmark Card Consolidation ✓ (2026-07-05) @@ -1386,7 +1386,7 @@ Changes: loader (happy + every rejection mode), gate evaluator (every minimum condition), prohibited-action audit, rate-limit status, reviewer- artefact status, writers, end-to-end CLI smoke. Total 1647 passing. -- `docs/CALIBRATION_POLICY.md`: human-readable overview of the policy, +- `docs/evidence/CALIBRATION_POLICY.md`: human-readable overview of the policy, the gate, the permanent floor, rate limits, and how to update. Key honest limitations (must read before relying on the gate): diff --git a/docs/research/WAVE_0_5_BASELINE.md b/docs/research/WAVE_0_5_BASELINE.md index 8b234004..1212b233 100644 --- a/docs/research/WAVE_0_5_BASELINE.md +++ b/docs/research/WAVE_0_5_BASELINE.md @@ -76,7 +76,7 @@ and classifies each candidate into a role that guides Wave 1 panel construction. ## External Predictor Status Historical baseline state only: at the time this file was frozen, external predictor fields had not yet been filled. -That is no longer the current repo state. The completed Wave 0.5 external screen is summarized in `docs/evidence/METRICS_CURRENT.md`, `docs/research/ROADMAP.md`, and `docs/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md`. +That is no longer the current repo state. The completed Wave 0.5 external screen is summarized in `docs/evidence/METRICS_CURRENT.md`, `docs/research/ROADMAP.md`, and `docs/research/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md`. The original manual-submission tool stack was: diff --git a/docs/research/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md b/docs/research/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md index 4ca2543e..89b260c1 100644 --- a/docs/research/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md +++ b/docs/research/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md @@ -150,5 +150,5 @@ If not achieved, return to Phase 3 and generate additional candidates. ## See Also - `outputs/wave0_5_internal_shortlist.csv` — 60 candidates with internal scores -- `docs/WAVE_0_5_BASELINE.md` — Wave 0 panel baseline -- `docs/EXTERNAL_PREDICTOR_CONSENSUS.md` — Wave 0 consensus (same tool stack) +- `docs/research/WAVE_0_5_BASELINE.md` — Wave 0 panel baseline +- `docs/evidence/EXTERNAL_PREDICTOR_CONSENSUS.md` — Wave 0 consensus (same tool stack) diff --git a/docs/research/WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md b/docs/research/WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md index 801d7700..82890f9d 100644 --- a/docs/research/WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md +++ b/docs/research/WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md @@ -25,12 +25,12 @@ correlated-failure risk. The goal is not more candidates — it is more independ | Phase | Action | Output | |---|---|---| -| 1 — Baseline Freeze | Locked Wave 0 panel state | `docs/WAVE_0_5_BASELINE.md`, `outputs/wave0_5_baseline.csv` | +| 1 — Baseline Freeze | Locked Wave 0 panel state | `docs/research/WAVE_0_5_BASELINE.md`, `outputs/wave0_5_baseline.csv` | | 2 — Scaffold Search | Defined 10 new independent families | (design parameters in `scripts/generate_wave0_5_candidates.py`) | | 3 — Candidate Generation | Generated 118 raw candidates | `outputs/wave0_5_raw_candidates.csv` | | 4 — Internal Filter | Shortlisted 60 at internal gates | `outputs/wave0_5_internal_shortlist.csv` | -| 5 — External Predictors | Planned manual submissions; later completed and summarized in current-state docs | `docs/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md`, `docs/evidence/METRICS_CURRENT.md` | -| 6 — Novelty Audit | Classified 60 shortlist vs 92 references | `outputs/wave0_5_novelty_audit.csv`, `docs/WAVE_0_5_NOVELTY_AUDIT.md` | +| 5 — External Predictors | Planned manual submissions; later completed and summarized in current-state docs | `docs/research/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md`, `docs/evidence/METRICS_CURRENT.md` | +| 6 — Novelty Audit | Classified 60 shortlist vs 92 references | `outputs/wave0_5_novelty_audit.csv`, `docs/research/WAVE_0_5_NOVELTY_AUDIT.md` | | 7 — Panel Selection | Selected 24-candidate Wave 1 panel | `outputs/wave1_final_panel.csv`, `docs/research/WAVE_1_PANEL_RECOMMENDATION.md` | | 8 — Evidence Certificates | Generated machine-readable certs | `outputs/evidence_wave0_5/*.json` | | 9 — Docs Update | Updated all docs | `docs/evidence/METRICS_CURRENT.md`, `docs/research/ROADMAP.md`, etc. | @@ -70,7 +70,7 @@ correlated-failure risk. The goal is not more candidates — it is more independ | Task | Status | Blocker | |---|---|---| -| External predictor screen (all 60 shortlist) | COMPLETE | Reflected in `docs/evidence/METRICS_CURRENT.md` and `docs/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md` | +| External predictor screen (all 60 shortlist) | COMPLETE | Reflected in `docs/evidence/METRICS_CURRENT.md` and `docs/research/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md` | | Wave 0.5 Gate W0.5-3 (activity consensus) | COMPLETE | Gate result recorded after external screen | | Wave 0.5 Gate W0.5-4 (safety annotation) | COMPLETE | Gate result recorded after external screen | | FTO (freedom-to-operate) for CLOSE_RELATIVE candidates | PENDING | Legal review | diff --git a/docs/review/PRE_WET_LAB_CHECKLIST.md b/docs/review/PRE_WET_LAB_CHECKLIST.md index fa400f74..3723ced1 100644 --- a/docs/review/PRE_WET_LAB_CHECKLIST.md +++ b/docs/review/PRE_WET_LAB_CHECKLIST.md @@ -251,7 +251,7 @@ infectious disease specialist — ideally someone who: | Document | Purpose | |----------|---------| -| `docs/REVIEWER_SUMMARY.md` | 2-page quick overview — start here | +| `docs/review/REVIEWER_SUMMARY.md` | 2-page quick overview — start here | | `docs/review/EXPERT_REVIEW_PACK.md` | Full expert review packet with all candidate data | | `docs/evidence/NOVELTY_AUDIT_FULL.md` | Novelty classification against 120-AMP library | | `docs/evidence/BENCHMARK_CARD.md` | Benchmark methodology and metrics | diff --git a/docs/review/PUBLICATION_PACK.md b/docs/review/PUBLICATION_PACK.md index d87384d5..32cf4fcf 100644 --- a/docs/review/PUBLICATION_PACK.md +++ b/docs/review/PUBLICATION_PACK.md @@ -148,9 +148,9 @@ A top-level README in the release package should include: ## Related Documents -- `docs/RELEASE_CHECKLIST.md` — General release process. +- `docs/trust/RELEASE_CHECKLIST.md` — General release process. - `docs/evidence/CLAIM_REVIEW_CHECKLIST.md` — Claim verification before publication. -- `docs/DATA_GOVERNANCE.md` — Data licensing and redistribution policy. +- `docs/trust/DATA_GOVERNANCE.md` — Data licensing and redistribution policy. - `docs/engineering/ARTIFACT_VERSIONING.md` — Versioning scheme for pipeline outputs. -- `docs/MODEL_CARD_TEMPLATE.md` — Model card format for released scorers. -- `docs/TRUST_CENTER.md` — Trust and safety documentation hub. +- `docs/trust/MODEL_CARD_TEMPLATE.md` — Model card format for released scorers. +- `docs/trust/TRUST_CENTER.md` — Trust and safety documentation hub. diff --git a/docs/trust/RELEASE_CHECKLIST.md b/docs/trust/RELEASE_CHECKLIST.md index 06f4ddf7..53c64dac 100644 --- a/docs/trust/RELEASE_CHECKLIST.md +++ b/docs/trust/RELEASE_CHECKLIST.md @@ -48,7 +48,7 @@ A release is a trust event. ### 4. Evidence and claims -- [ ] Claims mapped to `docs/PROOF_LADDER.md`. +- [ ] Claims mapped to `docs/evidence/PROOF_LADDER.md`. - [ ] Dry-lab outputs are not described as biological proof. - [ ] Unsupported claims listed or avoided. - [ ] Positive evidence is not overgeneralized. @@ -118,7 +118,7 @@ A release is a trust event. ## Claim level -Mapped to `docs/PROOF_LADDER.md`: Level . +Mapped to `docs/evidence/PROOF_LADDER.md`: Level . ## What this does not prove diff --git a/docs/trust/TRUST_CENTER.md b/docs/trust/TRUST_CENTER.md index af0b649a..41fde47d 100644 --- a/docs/trust/TRUST_CENTER.md +++ b/docs/trust/TRUST_CENTER.md @@ -35,15 +35,15 @@ OpenAMP has several trust surfaces. | Surface | Trust question | Source of truth | |---|---|---| | Safety | Could this increase misuse risk? | `SAFETY.md`, `RESPONSIBLE_USE.md`, `MODEL_RELEASE_POLICY.md` | -| Claims | Does wording exceed evidence? | `docs/PROOF_LADDER.md` | +| Claims | Does wording exceed evidence? | `docs/evidence/PROOF_LADDER.md` | | Benchmarks | Could the result be shortcut-driven? | `docs/evidence/BENCHMARK_GOVERNANCE.md`, `docs/evidence/METRICS_CURRENT.md` | | Candidates | Why was this candidate selected? | `docs/evidence/EVIDENCE_CERTIFICATE.md` | | External review | Can outsiders reject the package? | `docs/review/EXTERNAL_REVIEW_PACKET.md` | -| Data | Can the data be used and redistributed? | `DATA_LICENSE_NOTICE.md`, `docs/DATA_GOVERNANCE.md` | -| Models | Should this model/artifact be released? | `MODEL_RELEASE_POLICY.md`, `docs/MODEL_CARD_TEMPLATE.md` | -| Calibration | Can the system update without cherry-picking? | `docs/CALIBRATION_POLICY.md` | +| Data | Can the data be used and redistributed? | `DATA_LICENSE_NOTICE.md`, `docs/trust/DATA_GOVERNANCE.md` | +| Models | Should this model/artifact be released? | `MODEL_RELEASE_POLICY.md`, `docs/trust/MODEL_CARD_TEMPLATE.md` | +| Calibration | Can the system update without cherry-picking? | `docs/evidence/CALIBRATION_POLICY.md` | | Agents | Can agents work safely? | `AGENTS.md`, `docs/getting-started/AGENT_ONBOARDING.md` | -| Maintainers | Can the project survive growth? | `docs/getting-started/MAINTAINER_GUIDE.md`, `docs/RELEASE_CHECKLIST.md` | +| Maintainers | Can the project survive growth? | `docs/getting-started/MAINTAINER_GUIDE.md`, `docs/trust/RELEASE_CHECKLIST.md` | ## Trust architecture diff --git a/src/openamp_foundry/gates/wave0_5_gate_checker.py b/src/openamp_foundry/gates/wave0_5_gate_checker.py index d8a5e4d9..7cea984e 100644 --- a/src/openamp_foundry/gates/wave0_5_gate_checker.py +++ b/src/openamp_foundry/gates/wave0_5_gate_checker.py @@ -108,7 +108,7 @@ def check_w05_3_activity_consensus(consensus_path: Path) -> W05GateResult: status="PENDING", value=f"{len(pending_rows)}/{len(rows)} rows PENDING", threshold=f">= {int(MIN_ACTIVITY_CONSENSUS_FRACTION * 100)}% STRONG_ACTIVITY", - detail="External predictor submissions required. See docs/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md", + detail="External predictor submissions required. See docs/research/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md", ) strong = sum(1 for r in rows if r.get("activity_consensus") == "STRONG_ACTIVITY") @@ -145,7 +145,7 @@ def check_w05_4_safety_annotation(consensus_path: Path) -> W05GateResult: status="PENDING", value=f"{len(missing)}/{len(rows)} missing", threshold="100% annotated", - detail=f"{len(missing)} candidates need HemoFinder/AntiCP submissions. See docs/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md", + detail=f"{len(missing)} candidates need HemoFinder/AntiCP submissions. See docs/research/WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md", ) return W05GateResult( diff --git a/tests/test_docs_consistent.py b/tests/test_docs_consistent.py index eb613b63..a4780afe 100644 --- a/tests/test_docs_consistent.py +++ b/tests/test_docs_consistent.py @@ -116,7 +116,7 @@ def test_doc_simulation_benchmark_report_records_blocked_weighted_mode(self): assert "sim_max_uncertainty" in report def test_virtual_assay_scope_records_uncertainty_certificate_contract(self): - scope = (DOCS_DIR / "VIRTUAL_ASSAY_SCOPE.md").read_text(encoding="utf-8") + scope = (DOCS_DIR / "evidence" / "VIRTUAL_ASSAY_SCOPE.md").read_text(encoding="utf-8") assert "evidence" in scope assert "certificates" in scope assert "uncertainty" in scope @@ -175,7 +175,7 @@ def test_doc_no_overconfident_probability_claims(self): def test_doc_wet_lab_probability_has_honest_correction(self): """WET_LAB_PROBABILITY.md must contain an honest lower-bound estimate.""" - path = DOCS_DIR / "WET_LAB_PROBABILITY.md" + path = DOCS_DIR / "research" / "WET_LAB_PROBABILITY.md" assert path.exists() text = path.read_text(encoding="utf-8") assert "55–80%" in text or "55-80" in text or "honest" in text.lower(), ( @@ -187,7 +187,7 @@ def test_doc_wave05_generated_outputs_claimed_only_if_present(self): files_present = all(path.exists() for path in WAVE05_GENERATED_OUTPUTS) metrics_text = (DOCS_DIR / "evidence" / "METRICS_CURRENT.md").read_text(encoding="utf-8") - summary_text = (DOCS_DIR / "WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md").read_text( + summary_text = (DOCS_DIR / "research" / "WAVE_0_5_EXTERNAL_PREDICTOR_SUMMARY.md").read_text( encoding="utf-8" ) @@ -198,8 +198,8 @@ def test_doc_wave05_generated_outputs_claimed_only_if_present(self): def test_doc_wave05_historical_docs_do_not_pose_as_live_pending_state(self): """Historical Wave 0.5 docs must label superseded pending steps as historical.""" - baseline_text = (DOCS_DIR / "WAVE_0_5_BASELINE.md").read_text(encoding="utf-8") - scaffold_text = (DOCS_DIR / "WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md").read_text( + baseline_text = (DOCS_DIR / "research" / "WAVE_0_5_BASELINE.md").read_text(encoding="utf-8") + scaffold_text = (DOCS_DIR / "research" / "WAVE_0_5_SCAFFOLD_DIVERSIFICATION_PLAN.md").read_text( encoding="utf-8" ) prereg_text = (DOCS_DIR / "review" / "ASSAY_PREREGISTRATION.md").read_text(encoding="utf-8") @@ -217,11 +217,11 @@ def test_doc_wave05_historical_docs_do_not_pose_as_live_pending_state(self): def test_doc_external_predictor_gate_distinguishes_generic_from_wave05(self): """Live docs must not imply the completed Wave 0.5 screen is still wholly pending.""" - consensus_text = (DOCS_DIR / "EXTERNAL_PREDICTOR_CONSENSUS.md").read_text( + consensus_text = (DOCS_DIR / "evidence" / "EXTERNAL_PREDICTOR_CONSENSUS.md").read_text( encoding="utf-8" ) decision_text = (DOCS_DIR / "evidence" / "DECISION_RULES.md").read_text(encoding="utf-8") - reviewer_text = (DOCS_DIR / "REVIEWER_SUMMARY.md").read_text(encoding="utf-8") + reviewer_text = (DOCS_DIR / "review" / "REVIEWER_SUMMARY.md").read_text(encoding="utf-8") roadmap_text = (DOCS_DIR / "research" / "ROADMAP.md").read_text(encoding="utf-8") expert_text = (DOCS_DIR / "review" / "EXPERT_REVIEW_PACK.md").read_text(encoding="utf-8") @@ -244,7 +244,7 @@ def test_doc_external_predictor_gate_distinguishes_generic_from_wave05(self): def test_doc_lab_batch_pack_chain_of_custody_current(self): """Loop 45 must stay marked as shipped with identity-hash boundaries.""" - loop_text = (DOCS_DIR / "50_LOOP_PLAN.md").read_text(encoding="utf-8") + loop_text = (DOCS_DIR / "research" / "50_LOOP_PLAN.md").read_text(encoding="utf-8") roadmap_text = (DOCS_DIR / "research" / "ROADMAP.md").read_text(encoding="utf-8") metrics_text = (DOCS_DIR / "evidence" / "METRICS_CURRENT.md").read_text(encoding="utf-8") onboarding_text = (DOCS_DIR / "review" / "LAB_PARTNER_ONBOARDING.md").read_text( From 58f22a6fa283cecfdad8d755004d8d0a55e0f3fd Mon Sep 17 00:00:00 2001 From: OpenCode Date: Mon, 6 Jul 2026 22:59:49 +0700 Subject: [PATCH 4/4] tests: mirror domains in test tree MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The remaining root tests now live in domain folders that mirror the codebase and workflow lanes instead of accumulating in a flat top-level surface. Benchmark, data, evidence, feature, generator, integration, QC, scoring, selection, simulation, and active-learning coverage now have clear homes, and the moved path-sensitive tests were updated to keep resolving repo-root resources correctly. This change makes the test tree read like the system it validates. Contributors and agents can now find the right test neighborhood with much less search overhead, while the full moved-tree verification confirmed that the reorganized paths still behave correctly. Constraint: Exclude the unrelated unstaged src/openamp_foundry/pipeline.py modification from this commit. Confidence: High — the test root is reduced to AGENTS.md only and the broad moved-tree verification passed. Tested: ./.venv/bin/python -m pytest tests/active_learning tests/data tests/evidence tests/features tests/generators tests/integration tests/qc tests/scoring tests/selection tests/simulation tests/benchmarks tests/calibration tests/external tests/lab tests/novelty tests/release tests/waves -q; git diff --cached --check Co-authored-by: OmX --- .../{ => active_learning}/test_active_learning.py | 2 +- tests/{ => benchmarks}/test_ablation.py | 0 tests/{ => benchmarks}/test_auprc.py | 0 tests/{ => benchmarks}/test_cluster_split.py | 0 tests/{ => benchmarks}/test_expert_ablation.py | 0 tests/{ => benchmarks}/test_feature_decomp.py | 0 .../test_hidden_active_recovery.py | 0 tests/{ => benchmarks}/test_metrics_snapshot.py | 0 tests/{ => benchmarks}/test_negative_robustness.py | 0 tests/{ => benchmarks}/test_retrospective.py | 0 tests/{ => data}/test_data_loaders.py | 2 +- tests/{ => data}/test_lab_results.py | 0 tests/{ => data}/test_reference_set.py | 0 tests/{ => evidence}/test_batch_pack.py | 0 tests/{ => evidence}/test_certificate.py | 0 tests/{ => evidence}/test_certificate_schema.py | 2 +- tests/{ => evidence}/test_decision_log_schema.py | 0 tests/{ => evidence}/test_reproducibility.py | 0 .../{ => features}/test_aggregation_propensity.py | 0 .../test_aggregation_safe_mutations.py | 0 tests/{ => features}/test_helix_propensity.py | 0 tests/{ => features}/test_net_charge_ph74.py | 0 tests/{ => features}/test_physchem.py | 0 .../{ => features}/test_physchem_amphipathicity.py | 0 tests/{ => generators}/test_simple_mutation.py | 0 tests/{ => generators}/test_template_mutator.py | 0 tests/{ => integration}/test_cli.py | 0 tests/{ => integration}/test_cli_triage.py | 0 tests/{ => integration}/test_config.py | 14 +++++++------- tests/{ => integration}/test_docs_consistent.py | 2 +- tests/{ => integration}/test_import_shim.py | 2 +- tests/{ => integration}/test_pipeline_demo.py | 0 tests/{ => integration}/test_pipeline_filters.py | 6 +++--- tests/{ => integration}/test_public_api_imports.py | 0 tests/{ => integration}/test_utils.py | 0 tests/{ => qc}/test_order_generator.py | 0 tests/{ => qc}/test_presynth_qc.py | 0 tests/{ => scoring}/test_boman_scorer.py | 0 tests/{ => scoring}/test_elastase_stability.py | 0 .../test_expert_ranking_integration.py | 0 tests/{ => scoring}/test_expert_scoring.py | 0 tests/{ => scoring}/test_hemolysis_risk.py | 0 tests/{ => scoring}/test_macrel_local.py | 0 tests/{ => scoring}/test_negative_penalization.py | 0 .../test_rich_selectivity_integration.py | 0 tests/{ => scoring}/test_safety_moment.py | 0 tests/{ => scoring}/test_scoring_activity.py | 0 tests/{ => scoring}/test_scoring_ensemble.py | 0 tests/{ => scoring}/test_scoring_safety.py | 0 tests/{ => scoring}/test_scoring_synthesis.py | 0 tests/{ => scoring}/test_selectivity_proxy.py | 0 tests/{ => scoring}/test_selectivity_rich.py | 0 tests/{ => scoring}/test_serum_stability.py | 0 tests/{ => scoring}/test_toxicity_penalty.py | 0 tests/{ => selection}/test_diversity.py | 0 tests/{ => selection}/test_pilot_panel.py | 0 tests/{ => selection}/test_selection_diversity.py | 0 tests/{ => selection}/test_selection_pareto.py | 0 tests/{ => simulation}/test_external_adapter.py | 0 tests/{ => simulation}/test_membrane_proxy.py | 0 tests/{ => simulation}/test_simulation_gate.py | 0 .../{ => simulation}/test_simulation_interfaces.py | 0 tests/{ => simulation}/test_simulation_mode_cli.py | 2 +- tests/{ => simulation}/test_structure_proxy.py | 0 64 files changed, 16 insertions(+), 16 deletions(-) rename tests/{ => active_learning}/test_active_learning.py (99%) rename tests/{ => benchmarks}/test_ablation.py (100%) rename tests/{ => benchmarks}/test_auprc.py (100%) rename tests/{ => benchmarks}/test_cluster_split.py (100%) rename tests/{ => benchmarks}/test_expert_ablation.py (100%) rename tests/{ => benchmarks}/test_feature_decomp.py (100%) rename tests/{ => benchmarks}/test_hidden_active_recovery.py (100%) rename tests/{ => benchmarks}/test_metrics_snapshot.py (100%) rename tests/{ => benchmarks}/test_negative_robustness.py (100%) rename tests/{ => benchmarks}/test_retrospective.py (100%) rename tests/{ => data}/test_data_loaders.py (99%) rename tests/{ => data}/test_lab_results.py (100%) rename tests/{ => data}/test_reference_set.py (100%) rename tests/{ => evidence}/test_batch_pack.py (100%) rename tests/{ => evidence}/test_certificate.py (100%) rename tests/{ => evidence}/test_certificate_schema.py (97%) rename tests/{ => evidence}/test_decision_log_schema.py (100%) rename tests/{ => evidence}/test_reproducibility.py (100%) rename tests/{ => features}/test_aggregation_propensity.py (100%) rename tests/{ => features}/test_aggregation_safe_mutations.py (100%) rename tests/{ => features}/test_helix_propensity.py (100%) rename tests/{ => features}/test_net_charge_ph74.py (100%) rename tests/{ => features}/test_physchem.py (100%) rename tests/{ => features}/test_physchem_amphipathicity.py (100%) rename tests/{ => generators}/test_simple_mutation.py (100%) rename tests/{ => generators}/test_template_mutator.py (100%) rename tests/{ => integration}/test_cli.py (100%) rename tests/{ => integration}/test_cli_triage.py (100%) rename tests/{ => integration}/test_config.py (91%) rename tests/{ => integration}/test_docs_consistent.py (99%) rename tests/{ => integration}/test_import_shim.py (93%) rename tests/{ => integration}/test_pipeline_demo.py (100%) rename tests/{ => integration}/test_pipeline_filters.py (99%) rename tests/{ => integration}/test_public_api_imports.py (100%) rename tests/{ => integration}/test_utils.py (100%) rename tests/{ => qc}/test_order_generator.py (100%) rename tests/{ => qc}/test_presynth_qc.py (100%) rename tests/{ => scoring}/test_boman_scorer.py (100%) rename tests/{ => scoring}/test_elastase_stability.py (100%) rename tests/{ => scoring}/test_expert_ranking_integration.py (100%) rename tests/{ => scoring}/test_expert_scoring.py (100%) rename tests/{ => scoring}/test_hemolysis_risk.py (100%) rename tests/{ => scoring}/test_macrel_local.py (100%) rename tests/{ => scoring}/test_negative_penalization.py (100%) rename tests/{ => scoring}/test_rich_selectivity_integration.py (100%) rename tests/{ => scoring}/test_safety_moment.py (100%) rename tests/{ => scoring}/test_scoring_activity.py (100%) rename tests/{ => scoring}/test_scoring_ensemble.py (100%) rename tests/{ => scoring}/test_scoring_safety.py (100%) rename tests/{ => scoring}/test_scoring_synthesis.py (100%) rename tests/{ => scoring}/test_selectivity_proxy.py (100%) rename tests/{ => scoring}/test_selectivity_rich.py (100%) rename tests/{ => scoring}/test_serum_stability.py (100%) rename tests/{ => scoring}/test_toxicity_penalty.py (100%) rename tests/{ => selection}/test_diversity.py (100%) rename tests/{ => selection}/test_pilot_panel.py (100%) rename tests/{ => selection}/test_selection_diversity.py (100%) rename tests/{ => selection}/test_selection_pareto.py (100%) rename tests/{ => simulation}/test_external_adapter.py (100%) rename tests/{ => simulation}/test_membrane_proxy.py (100%) rename tests/{ => simulation}/test_simulation_gate.py (100%) rename tests/{ => simulation}/test_simulation_interfaces.py (100%) rename tests/{ => simulation}/test_simulation_mode_cli.py (99%) rename tests/{ => simulation}/test_structure_proxy.py (100%) diff --git a/tests/test_active_learning.py b/tests/active_learning/test_active_learning.py similarity index 99% rename from tests/test_active_learning.py rename to tests/active_learning/test_active_learning.py index c4592e2a..16698f37 100644 --- a/tests/test_active_learning.py +++ b/tests/active_learning/test_active_learning.py @@ -14,7 +14,7 @@ import pytest -REPO_ROOT = Path(__file__).resolve().parent.parent +REPO_ROOT = Path(__file__).resolve().parents[2] # ── Helpers ─────────────────────────────────────────────────────────── diff --git a/tests/test_ablation.py b/tests/benchmarks/test_ablation.py similarity index 100% rename from tests/test_ablation.py rename to tests/benchmarks/test_ablation.py diff --git a/tests/test_auprc.py b/tests/benchmarks/test_auprc.py similarity index 100% rename from tests/test_auprc.py rename to tests/benchmarks/test_auprc.py diff --git a/tests/test_cluster_split.py b/tests/benchmarks/test_cluster_split.py similarity index 100% rename from tests/test_cluster_split.py rename to tests/benchmarks/test_cluster_split.py diff --git a/tests/test_expert_ablation.py b/tests/benchmarks/test_expert_ablation.py similarity index 100% rename from tests/test_expert_ablation.py rename to tests/benchmarks/test_expert_ablation.py diff --git a/tests/test_feature_decomp.py b/tests/benchmarks/test_feature_decomp.py similarity index 100% rename from tests/test_feature_decomp.py rename to tests/benchmarks/test_feature_decomp.py diff --git a/tests/test_hidden_active_recovery.py b/tests/benchmarks/test_hidden_active_recovery.py similarity index 100% rename from tests/test_hidden_active_recovery.py rename to tests/benchmarks/test_hidden_active_recovery.py diff --git a/tests/test_metrics_snapshot.py b/tests/benchmarks/test_metrics_snapshot.py similarity index 100% rename from tests/test_metrics_snapshot.py rename to tests/benchmarks/test_metrics_snapshot.py diff --git a/tests/test_negative_robustness.py b/tests/benchmarks/test_negative_robustness.py similarity index 100% rename from tests/test_negative_robustness.py rename to tests/benchmarks/test_negative_robustness.py diff --git a/tests/test_retrospective.py b/tests/benchmarks/test_retrospective.py similarity index 100% rename from tests/test_retrospective.py rename to tests/benchmarks/test_retrospective.py diff --git a/tests/test_data_loaders.py b/tests/data/test_data_loaders.py similarity index 99% rename from tests/test_data_loaders.py rename to tests/data/test_data_loaders.py index dd808282..b14b69e3 100644 --- a/tests/test_data_loaders.py +++ b/tests/data/test_data_loaders.py @@ -138,7 +138,7 @@ def test_returns_peptide_candidate_objects(self): assert isinstance(candidates[0], PeptideCandidate) def test_uses_demo_file_successfully(self): - demo = Path(__file__).parents[1] / "examples" / "sequences" / "demo_candidates.csv" + demo = Path(__file__).parents[2] / "examples" / "sequences" / "demo_candidates.csv" candidates = load_candidates_csv(demo) assert len(candidates) > 0 for c in candidates: diff --git a/tests/test_lab_results.py b/tests/data/test_lab_results.py similarity index 100% rename from tests/test_lab_results.py rename to tests/data/test_lab_results.py diff --git a/tests/test_reference_set.py b/tests/data/test_reference_set.py similarity index 100% rename from tests/test_reference_set.py rename to tests/data/test_reference_set.py diff --git a/tests/test_batch_pack.py b/tests/evidence/test_batch_pack.py similarity index 100% rename from tests/test_batch_pack.py rename to tests/evidence/test_batch_pack.py diff --git a/tests/test_certificate.py b/tests/evidence/test_certificate.py similarity index 100% rename from tests/test_certificate.py rename to tests/evidence/test_certificate.py diff --git a/tests/test_certificate_schema.py b/tests/evidence/test_certificate_schema.py similarity index 97% rename from tests/test_certificate_schema.py rename to tests/evidence/test_certificate_schema.py index 658b12f2..8b204c29 100644 --- a/tests/test_certificate_schema.py +++ b/tests/evidence/test_certificate_schema.py @@ -11,7 +11,7 @@ from openamp_foundry.features.physchem import compute_features from openamp_foundry.types import PeptideCandidate, ScoredCandidate -_SCHEMA = Path(__file__).parents[1] / "schemas" / "candidate.schema.json" +_SCHEMA = Path(__file__).parents[2] / "schemas" / "candidate.schema.json" def test_certificate_validates(): diff --git a/tests/test_decision_log_schema.py b/tests/evidence/test_decision_log_schema.py similarity index 100% rename from tests/test_decision_log_schema.py rename to tests/evidence/test_decision_log_schema.py diff --git a/tests/test_reproducibility.py b/tests/evidence/test_reproducibility.py similarity index 100% rename from tests/test_reproducibility.py rename to tests/evidence/test_reproducibility.py diff --git a/tests/test_aggregation_propensity.py b/tests/features/test_aggregation_propensity.py similarity index 100% rename from tests/test_aggregation_propensity.py rename to tests/features/test_aggregation_propensity.py diff --git a/tests/test_aggregation_safe_mutations.py b/tests/features/test_aggregation_safe_mutations.py similarity index 100% rename from tests/test_aggregation_safe_mutations.py rename to tests/features/test_aggregation_safe_mutations.py diff --git a/tests/test_helix_propensity.py b/tests/features/test_helix_propensity.py similarity index 100% rename from tests/test_helix_propensity.py rename to tests/features/test_helix_propensity.py diff --git a/tests/test_net_charge_ph74.py b/tests/features/test_net_charge_ph74.py similarity index 100% rename from tests/test_net_charge_ph74.py rename to tests/features/test_net_charge_ph74.py diff --git a/tests/test_physchem.py b/tests/features/test_physchem.py similarity index 100% rename from tests/test_physchem.py rename to tests/features/test_physchem.py diff --git a/tests/test_physchem_amphipathicity.py b/tests/features/test_physchem_amphipathicity.py similarity index 100% rename from tests/test_physchem_amphipathicity.py rename to tests/features/test_physchem_amphipathicity.py diff --git a/tests/test_simple_mutation.py b/tests/generators/test_simple_mutation.py similarity index 100% rename from tests/test_simple_mutation.py rename to tests/generators/test_simple_mutation.py diff --git a/tests/test_template_mutator.py b/tests/generators/test_template_mutator.py similarity index 100% rename from tests/test_template_mutator.py rename to tests/generators/test_template_mutator.py diff --git a/tests/test_cli.py b/tests/integration/test_cli.py similarity index 100% rename from tests/test_cli.py rename to tests/integration/test_cli.py diff --git a/tests/test_cli_triage.py b/tests/integration/test_cli_triage.py similarity index 100% rename from tests/test_cli_triage.py rename to tests/integration/test_cli_triage.py diff --git a/tests/test_config.py b/tests/integration/test_config.py similarity index 91% rename from tests/test_config.py rename to tests/integration/test_config.py index 32112626..40c77853 100644 --- a/tests/test_config.py +++ b/tests/integration/test_config.py @@ -22,20 +22,20 @@ def test_loads_valid_yaml(self): assert result["nested"]["a"] == 1 def test_loads_default_pipeline_config(self): - default = Path(__file__).parents[1] / "configs" / "pipeline.yaml" + default = Path(__file__).parents[2] / "configs" / "pipeline.yaml" result = load_config(default) assert "filters" in result assert "weights" in result assert "selection" in result def test_default_config_weights_are_positive(self): - default = Path(__file__).parents[1] / "configs" / "pipeline.yaml" + default = Path(__file__).parents[2] / "configs" / "pipeline.yaml" result = load_config(default) for name, w in result["weights"].items(): assert w > 0, f"Weight '{name}' must be positive, got {w}" def test_default_config_filters_present(self): - default = Path(__file__).parents[1] / "configs" / "pipeline.yaml" + default = Path(__file__).parents[2] / "configs" / "pipeline.yaml" result = load_config(default) filters = result["filters"] assert "min_length" in filters @@ -43,7 +43,7 @@ def test_default_config_filters_present(self): assert filters["min_length"] < filters["max_length"] def test_default_config_selection_present(self): - default = Path(__file__).parents[1] / "configs" / "pipeline.yaml" + default = Path(__file__).parents[2] / "configs" / "pipeline.yaml" result = load_config(default) sel = result["selection"] assert "top_n" in sel @@ -54,7 +54,7 @@ def test_default_config_selection_present(self): assert 0.0 <= sel["max_disagreement"] <= 1.0 def test_phase3_config_selection_present(self): - phase3 = Path(__file__).parents[1] / "configs" / "phase3.yaml" + phase3 = Path(__file__).parents[2] / "configs" / "phase3.yaml" result = load_config(phase3) sel = result["selection"] assert "top_n" in sel @@ -65,13 +65,13 @@ def test_phase3_config_selection_present(self): assert 0.0 <= sel["max_disagreement"] <= 1.0 def test_phase3_config_weights_are_positive(self): - phase3 = Path(__file__).parents[1] / "configs" / "phase3.yaml" + phase3 = Path(__file__).parents[2] / "configs" / "phase3.yaml" result = load_config(phase3) for name, w in result["weights"].items(): assert w > 0, f"phase3.yaml weight '{name}' must be positive, got {w}" def test_phase3_config_filters_present(self): - phase3 = Path(__file__).parents[1] / "configs" / "phase3.yaml" + phase3 = Path(__file__).parents[2] / "configs" / "phase3.yaml" result = load_config(phase3) filters = result["filters"] assert "min_length" in filters diff --git a/tests/test_docs_consistent.py b/tests/integration/test_docs_consistent.py similarity index 99% rename from tests/test_docs_consistent.py rename to tests/integration/test_docs_consistent.py index a4780afe..a37c97d9 100644 --- a/tests/test_docs_consistent.py +++ b/tests/integration/test_docs_consistent.py @@ -7,7 +7,7 @@ from pathlib import Path -REPO_ROOT = Path(__file__).resolve().parent.parent +REPO_ROOT = Path(__file__).resolve().parents[2] DOCS_DIR = REPO_ROOT / "docs" # Current authoritative benchmark values — single source of truth diff --git a/tests/test_import_shim.py b/tests/integration/test_import_shim.py similarity index 93% rename from tests/test_import_shim.py rename to tests/integration/test_import_shim.py index abff2992..7635a083 100644 --- a/tests/test_import_shim.py +++ b/tests/integration/test_import_shim.py @@ -7,7 +7,7 @@ from pathlib import Path -REPO_ROOT = Path(__file__).resolve().parent.parent +REPO_ROOT = Path(__file__).resolve().parents[2] SRC_PACKAGE = REPO_ROOT / "src" / "openamp_foundry" diff --git a/tests/test_pipeline_demo.py b/tests/integration/test_pipeline_demo.py similarity index 100% rename from tests/test_pipeline_demo.py rename to tests/integration/test_pipeline_demo.py diff --git a/tests/test_pipeline_filters.py b/tests/integration/test_pipeline_filters.py similarity index 99% rename from tests/test_pipeline_filters.py rename to tests/integration/test_pipeline_filters.py index 816d42e4..f8a821f3 100644 --- a/tests/test_pipeline_filters.py +++ b/tests/integration/test_pipeline_filters.py @@ -227,7 +227,7 @@ def test_disagreement_gate_config_values_documented(tmp_path): exceeds disagreement 0.41 (verified across 709-sequence phase3 pool), so raising to 0.45 accommodates known mechanism divergence without admitting genuinely uncertain ones. """ - repo_root = Path(__file__).parents[1] + repo_root = Path(__file__).parents[2] pipeline_cfg = load_config(repo_root / "configs" / "pipeline.yaml") phase3_cfg = load_config(repo_root / "configs" / "phase3.yaml") @@ -249,7 +249,7 @@ def test_phase3_config_has_stricter_safety_filter_than_pipeline(): A candidate with safety=0.50 passes pipeline.yaml but is blocked by phase3.yaml. """ - repo_root = Path(__file__).parents[1] + repo_root = Path(__file__).parents[2] pipeline_cfg = load_config(repo_root / "configs" / "pipeline.yaml") phase3_cfg = load_config(repo_root / "configs" / "phase3.yaml") @@ -338,7 +338,7 @@ def test_all_proline_pipeline_scores_and_disagreement(tmp_path): assert act < 0.25 # Disagreement ≈ 0.33: passes both pipeline and phase3 gate (both 0.45) assert 0.25 < dis < 0.45, f"PPPPPPPP disagreement expected ~0.33, got {dis}" - repo_root = Path(__file__).parents[1] + repo_root = Path(__file__).parents[2] pipeline_max = float(load_config(repo_root / "configs" / "pipeline.yaml")["selection"]["max_disagreement"]) phase3_max = float(load_config(repo_root / "configs" / "phase3.yaml")["selection"]["max_disagreement"]) assert dis < pipeline_max, "PPPPPPPP should pass the pipeline disagreement gate" diff --git a/tests/test_public_api_imports.py b/tests/integration/test_public_api_imports.py similarity index 100% rename from tests/test_public_api_imports.py rename to tests/integration/test_public_api_imports.py diff --git a/tests/test_utils.py b/tests/integration/test_utils.py similarity index 100% rename from tests/test_utils.py rename to tests/integration/test_utils.py diff --git a/tests/test_order_generator.py b/tests/qc/test_order_generator.py similarity index 100% rename from tests/test_order_generator.py rename to tests/qc/test_order_generator.py diff --git a/tests/test_presynth_qc.py b/tests/qc/test_presynth_qc.py similarity index 100% rename from tests/test_presynth_qc.py rename to tests/qc/test_presynth_qc.py diff --git a/tests/test_boman_scorer.py b/tests/scoring/test_boman_scorer.py similarity index 100% rename from tests/test_boman_scorer.py rename to tests/scoring/test_boman_scorer.py diff --git a/tests/test_elastase_stability.py b/tests/scoring/test_elastase_stability.py similarity index 100% rename from tests/test_elastase_stability.py rename to tests/scoring/test_elastase_stability.py diff --git a/tests/test_expert_ranking_integration.py b/tests/scoring/test_expert_ranking_integration.py similarity index 100% rename from tests/test_expert_ranking_integration.py rename to tests/scoring/test_expert_ranking_integration.py diff --git a/tests/test_expert_scoring.py b/tests/scoring/test_expert_scoring.py similarity index 100% rename from tests/test_expert_scoring.py rename to tests/scoring/test_expert_scoring.py diff --git a/tests/test_hemolysis_risk.py b/tests/scoring/test_hemolysis_risk.py similarity index 100% rename from tests/test_hemolysis_risk.py rename to tests/scoring/test_hemolysis_risk.py diff --git a/tests/test_macrel_local.py b/tests/scoring/test_macrel_local.py similarity index 100% rename from tests/test_macrel_local.py rename to tests/scoring/test_macrel_local.py diff --git a/tests/test_negative_penalization.py b/tests/scoring/test_negative_penalization.py similarity index 100% rename from tests/test_negative_penalization.py rename to tests/scoring/test_negative_penalization.py diff --git a/tests/test_rich_selectivity_integration.py b/tests/scoring/test_rich_selectivity_integration.py similarity index 100% rename from tests/test_rich_selectivity_integration.py rename to tests/scoring/test_rich_selectivity_integration.py diff --git a/tests/test_safety_moment.py b/tests/scoring/test_safety_moment.py similarity index 100% rename from tests/test_safety_moment.py rename to tests/scoring/test_safety_moment.py diff --git a/tests/test_scoring_activity.py b/tests/scoring/test_scoring_activity.py similarity index 100% rename from tests/test_scoring_activity.py rename to tests/scoring/test_scoring_activity.py diff --git a/tests/test_scoring_ensemble.py b/tests/scoring/test_scoring_ensemble.py similarity index 100% rename from tests/test_scoring_ensemble.py rename to tests/scoring/test_scoring_ensemble.py diff --git a/tests/test_scoring_safety.py b/tests/scoring/test_scoring_safety.py similarity index 100% rename from tests/test_scoring_safety.py rename to tests/scoring/test_scoring_safety.py diff --git a/tests/test_scoring_synthesis.py b/tests/scoring/test_scoring_synthesis.py similarity index 100% rename from tests/test_scoring_synthesis.py rename to tests/scoring/test_scoring_synthesis.py diff --git a/tests/test_selectivity_proxy.py b/tests/scoring/test_selectivity_proxy.py similarity index 100% rename from tests/test_selectivity_proxy.py rename to tests/scoring/test_selectivity_proxy.py diff --git a/tests/test_selectivity_rich.py b/tests/scoring/test_selectivity_rich.py similarity index 100% rename from tests/test_selectivity_rich.py rename to tests/scoring/test_selectivity_rich.py diff --git a/tests/test_serum_stability.py b/tests/scoring/test_serum_stability.py similarity index 100% rename from tests/test_serum_stability.py rename to tests/scoring/test_serum_stability.py diff --git a/tests/test_toxicity_penalty.py b/tests/scoring/test_toxicity_penalty.py similarity index 100% rename from tests/test_toxicity_penalty.py rename to tests/scoring/test_toxicity_penalty.py diff --git a/tests/test_diversity.py b/tests/selection/test_diversity.py similarity index 100% rename from tests/test_diversity.py rename to tests/selection/test_diversity.py diff --git a/tests/test_pilot_panel.py b/tests/selection/test_pilot_panel.py similarity index 100% rename from tests/test_pilot_panel.py rename to tests/selection/test_pilot_panel.py diff --git a/tests/test_selection_diversity.py b/tests/selection/test_selection_diversity.py similarity index 100% rename from tests/test_selection_diversity.py rename to tests/selection/test_selection_diversity.py diff --git a/tests/test_selection_pareto.py b/tests/selection/test_selection_pareto.py similarity index 100% rename from tests/test_selection_pareto.py rename to tests/selection/test_selection_pareto.py diff --git a/tests/test_external_adapter.py b/tests/simulation/test_external_adapter.py similarity index 100% rename from tests/test_external_adapter.py rename to tests/simulation/test_external_adapter.py diff --git a/tests/test_membrane_proxy.py b/tests/simulation/test_membrane_proxy.py similarity index 100% rename from tests/test_membrane_proxy.py rename to tests/simulation/test_membrane_proxy.py diff --git a/tests/test_simulation_gate.py b/tests/simulation/test_simulation_gate.py similarity index 100% rename from tests/test_simulation_gate.py rename to tests/simulation/test_simulation_gate.py diff --git a/tests/test_simulation_interfaces.py b/tests/simulation/test_simulation_interfaces.py similarity index 100% rename from tests/test_simulation_interfaces.py rename to tests/simulation/test_simulation_interfaces.py diff --git a/tests/test_simulation_mode_cli.py b/tests/simulation/test_simulation_mode_cli.py similarity index 99% rename from tests/test_simulation_mode_cli.py rename to tests/simulation/test_simulation_mode_cli.py index dcb65d8b..118f3f0e 100644 --- a/tests/test_simulation_mode_cli.py +++ b/tests/simulation/test_simulation_mode_cli.py @@ -10,7 +10,7 @@ DEMO_CANDIDATES = "examples/sequences/demo_candidates.csv" DEMO_REFS = "examples/known_reference/demo_known_amps.csv" -CERT_SCHEMA = Path(__file__).parents[1] / "schemas" / "candidate.schema.json" +CERT_SCHEMA = Path(__file__).parents[2] / "schemas" / "candidate.schema.json" def test_simulation_mode_off_default_has_no_sim_scores(): diff --git a/tests/test_structure_proxy.py b/tests/simulation/test_structure_proxy.py similarity index 100% rename from tests/test_structure_proxy.py rename to tests/simulation/test_structure_proxy.py