herry423/bionexus-reliability
v1.0.0-rc.8Apache-2.0
Scientific Reliability Layer for AI-Assisted Biology. Know what your evidence actually warrants: pre-submission shadow review of multi-donor single-cell differential expression, evidence gap location, and human scientific review support.
Changelog
All notable changes to BioNexus are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.0.0-rc.8] - 2026-09-13
π― Deliverable Release Candidate (Traceable Evidence, Strict Verification & False Rejection Closure)
π‘οΈ Added & Hardened
- Claim Boundary Accuracy & False Rejection Prevention:
- Refined focal gene extraction and clause splitting in
_audit_claim_vs_table_factsto support multilingual and unspaced natural language assertions (e.g., Chinese punctuation and single-gene statements) without false rejections. - Preserved strict fail-closed gates against multi-gene ambiguity, second-clause contradictions, non-finite/zero directional effects, and unwarranted population extrapolation.
- Added 41 executable regression tests in
tests/unit/test_ga_semantic_boundaries.py.
- Refined focal gene extraction and clause splitting in
- Full-Cycle Verification & Immutable Run Capsules:
- Executed fresh runs across pseudobulk, annotation, and spatial benchmarks with automatic capsule preservation in
validation/runs/<uuid>/. - Recompiled
validation/EVIDENCE_INDEX.jsonfrom scratch with live source snapshots and report hashes, eliminating stale bindings without hash manipulation.
- Executed fresh runs across pseudobulk, annotation, and spatial benchmarks with automatic capsule preservation in
- Enhanced GA Acceptance Gating (
release_contract.py):- Implemented automated verification of required acceptance categories completeness (
core_quality,de_contract,installed_wheel,static_checks,validation_history,evidence_index). - Added strict pass status verification, referenced evidence record hash integrity, and candidate version matching.
- Preserved explicit human sign-off responsibility:
identity_authentication: "NOT_PERFORMED",maintainer_signoff_verification: "MANUAL_INSPECTION_REQUIRED".
- Implemented automated verification of required acceptance categories completeness (
- Legacy Bundle Backward Compatibility:
- Confirmed legacy DE bundle reader stability (
LEGACY_LIMITEDstatus for historical v1 bundles), ensuring zero regressions for downstream consumers. - Published re-review advisory in
docs/releases/rc8-re-review-advisory.mdfor historical reports impacted by tightened rules.
- Confirmed legacy DE bundle reader stability (
[1.0.0-rc.7] - 2026-09-12
π― GA Closure Candidate (Software/API Closure, Not Scientific Validation) β Engineering Hardening, Modular Architecture & P0 Closure
π‘οΈ Added & Hardened
- Modular CLI Architecture (
bionexus.commands.*): Refactored monolithic CLI entrypoint into 11 single-responsibility submodules (claims,de,diagnostics,execution,experimental,ivn,lab,scaffold,security,standards,validation) preserving 100% backward-compatible flag and command contracts. - Strict Quality Gates:
- Expanded static type verification (
mypy) from 6 to 18 core modules. - Implemented empirical line and branch coverage floors (
quality/coverage-baseline.json,scripts/run_core_quality.py). - Added formal DE requirement traceability gate (
scripts/check_de_traceability.py) mapping 7 core specifications bi-directionally to execution counterexamples and positive tests.
- Expanded static type verification (
π§ P0 Fixes & Boundary Hardening
- Negation Warrant & Epistemic Boundaries:
- Scoped epistemic limitations (e.g. "We cannot prove that X causes Y") carry an explicit biological ceiling of
UNASSESSED. - Disclaimers cannot license other assertions in compound text.
- Removed negation-based warrant bypasses; nonsignificant DE tests, cohort size, or
perturbation=Truedo not establish equivalence, non-inferiority, or biological absence. - Retained honest non-significant table findings without biological over-claims.
- Scoped epistemic limitations (e.g. "We cannot prove that X causes Y") carry an explicit biological ceiling of
- Execution Binding Verification:
- Required complete and consistent execution metadata: explicit statistical unit (
donor,sample,biological_replicate), recognized method, explicit fit success (SUCCESS,CONVERGED,PASSED,OK), additive formula/matrix column consistency, valid donor count and IDs, and exact 64-hex SHA-256 byte-matching between result file and audited table. - Migration Notice: Stricter execution binding intentionally causes legacy or incomplete inputs to return insufficient evidence (
NEEDS_DATAorISSUE_FOUNDpreventingROBUST_PASS). Historical bundles remain readable under legacy compatibility modes; old conclusions are never silently rewritten.
- Required complete and consistent execution metadata: explicit statistical unit (
- IVN Public Ledger & GitHub Pages:
- Restricted Pages deployment strictly to the
mainbranch to conform with GitHub Pages environment protection rules. - Release tags and PR workflows build and retain verified ledger artifacts without attempting unauthorized deployment.
- Restricted Pages deployment strictly to the
- GA Support Policy:
- Formalized proposed Core 1.x support window (12-month support, latest-minor fixes, 90-day critical backports, 90-day EOL notice) in
MAINTENANCE.md,SECURITY.md, andSUPPORT.md. - Policy remains proposed pending named maintainer activation at final GA.
- Formalized proposed Core 1.x support window (12-month support, latest-minor fixes, 90-day critical backports, 90-day EOL notice) in
- Migration Documentation: Detailed migration guidance and limitations in docs/rc6-p0-closure.md.
[1.0.0-rc.6] - 2026-09-11
π‘οΈ Added (Engineering Hardening, Modular CLI & Quality Gates)
- Hardened Quality Gates (
scripts/run_core_quality.py,scripts/check_coverage.py,mypy.ini):- Enforced static typing across core modules with MyPy gate in CI and release workflows.
- Implemented empirical line and branch coverage floors based on seeded pre-modification baselines.
- Established formal requirement traceability gate (
scripts/check_de_traceability.py) linking 7 DE specifications to bidirectional execution evidence.
- Modular CLI Architecture (
bionexus.commands.*):- Refactored monolithic CLI entry point into 11 dedicated, single-responsibility command modules while maintaining 100% backward compatibility with existing argument contracts.
- External-task observations and correctable scientific governance:
- Added a passive offline DE study scorer with a frozen task roster, separate reference labels, paired false-accept/false-hold reporting, failures, missing output bounds, development overlap exclusions and dataset-family strata. All results remain descriptive and externally unverified.
- Added both-arm installation, review, false-alarm, repair and communication person-minutes; reconcile installation allocations to the observed site cohort. Pilot summary schema is now v2: old setup/repair counts are explicitly partial; historical review.v1 and bundle.v1 inputs remain readable.
- Corrected registry scope matching: missing scope is not universal; match explicit platforms, sample/feature counts, design and tissue. Preserve every challenge vote and reason; revised votes cannot inherit old verification; verified disagreement remains unresolved rather than becoming majority truth.
- Added read-only before/after registry impact reports for supplied historic DE bundles. Unknown rule application remains unknown; old conclusions are never rewritten. No scientific thresholds were recalibrated and no external study, reviewer, net benefit or adoption is claimed by these engineering changes.
- Passive review compatibility and maintenance:
- Added an offline DE bundle reader with CONSISTENT, LEGACY_LIMITED, INVALID and UNSUPPORTED_SCHEMA outcomes; file checks never authorize science.
- New v1 bundles additionally bind human-readable reports, retaining legacy audit-only compatibility and editable reviews. Summaries check integrity and disclose legacy limits. Added packaged schemas and installed-wheel checks.
- Documented responsibility, support scope, migration and rollback without an unstaffed SLA or implied stable release.
- These changes do not fix or supersede the scientific-rule failures recorded by the 2026-09-08 methods experiments; those results remain historical evidence.
π§ Fixed
- DE audit no longer passes without evidence:
audit_differential_expressionreports each check as assessed / issue found / missing evidence. Missing inputs returnNEEDS_DATAorNOT_ASSESSEDinstead ofROBUST_PASS. Methods past-tense statements come only from execution records; recommended analysis is listed separately. - Scanpy
rank_genes_groupsstructured arrays are read without truncating gene identifiers or dropping p-values / log-fold changes. Parse failures are reported instead of becoming an empty passing table. - Static BFA-001 bypass: a string such as
note = 'pseudobulk later'no longer suppresses the cell-level DE finding. - LIMS first-round pilot exclusion: empty measurements are not auto-filled; live export is refused and marked outside the first-round laboratory pilot.
[1.0.0-rc.5] - 2026-09-06
π¬ Added (Lab Readiness, DE Audit Engine & Connector Profiles)
- Evidence Index Verification & Epistemic Impact Engine (
bionexus.evidence_index,validation/EVIDENCE_INDEX.json):verify_index_integritydynamically computes and compares real SHA-256 digests across all 19 referenced source files and datasets on disk; memory hash corruption or tampering fails immediately with distinct mismatch diagnostics.- Dynamically extracts and verifies verdicts from bound validation reports; host certification claims (
real_host_certified) fail closed unless substantiated by underlying execution attestations. assess_upstream_changesandUpstreamImpactReportrigorously distinguish rule violations (invalidated_conclusions), scientific recomputations (requires_recomputation), report metadata drift (metadata_updates), and stable nodes (unaffected_conclusions).- Analysis prioritizes the frozen baseline
validation/EVIDENCE_INDEX.json, preventing accidental baseline overwrite prior to change detection.
- CI/CD Workflows & Clean-Checkout Reproducibility:
- Un-ignored
cross-host/antigravity/REPORT.jsonin.gitignoreto guarantee clean checkout availability for cross-host verification. - Added automated flagship dataset acquisition and pseudobulk stress testing to
release.ymlGate 3, ensuring clean runner validation passes. - Fixed SIF asset upload tag resolution in
container.ymlvia${{ github.event.release.tag_name || github.ref_name }}to prevent HTTP 422 errors. - Synchronized flagship validation reports with current
1.0.0-rc.5commit and snapshot hashes, eliminating provenance drift in Main CI diff gates.
- Un-ignored
- Differential Expression Audit Engine (
bionexus.de_audit, BFA-001/003):- Added
DEAuditEngineandaudit_differential_expressionfor auditing single-cell DE tables and raw AnnData matrices. - Automatically flags pseudoreplication p-value inflation signatures, missing FDR/BH multi-testing corrections, donor representation skew, and unmodeled batch confounding.
- Provides actionable PI Decision Items with trade-off explanations and copy-pasteable minimal fixes.
- Added
- Cluster Stability & Perturbation Robustness (
bionexus.clustering_stability):- Quantifies single-cell clustering stability across subsampling, resolution perturbations, and random seeds (ARI & NMI metrics).
- External Scientific Capability Receipt & Connector Profiles (BNS-025):
- Standardized connector profile specifications (
standards/connector-profiles/) and verification suite. - Fail-closed evaluation of external scientific tools with cryptographic receipts and warrant enforcement.
- Standardized connector profile specifications (
- BNS-019 Trial Protocol TypeScript SDK (
interoperability/bns019/typescript/):- TypeScript types, client, and submission validator for external interoperability trials.
π Fixed (Week-0 hemostasis β evidence over spec)
- Specification freeze at BNS-025:
spec/registry.yamlnow requiresnumbering_freeze.max_id: BNS-025. CI rejectsBNS-026+. Unfreeze is a registry/test edit, not an automatic IVN side-effect. BNS-024/025 stay registered asdevelopment_no_certification_effectengineering contracts; they do not raise certification tiers. - Flagship
cross_host_testrestored to False:scrna.pseudobulk_deno longer treats the 6-trap headlessclaude-code/antigravityABSTAIN comparison as BNS-HC-007. Static pointers cannot self-satisfy flagshipcross_host_testorexternal_reviewer. The existing IVN merge may raisecross_host_testonly when the external-lab check is satisfied with hash-verified studies on >= 2 distinctstudy.hostvalues β that is not itself a live L2 provider matrix. BCTKevaluate_cross_host()now treats the same headless COMPARISON.json asNOT_ASSESSED. - Canonical benchmark isolation:
docs/reports/live_host_benchmark_report.mdis marked DO NOT CITE. Living numbers remainevals/reports/benchmark_report.md(L3 0/4SKIPPED_NO_BACKEND, union calibration MISALIGNED). - README CI badge is live GitHub Actions status, not a static shields "Passing" image. Codecov is not added: CI does not upload coverage, so a coverage badge would be another unverifiable static claim.
π¬ Added (Independent Validation Network β BNS-023)
- Independent Validation Network (
bionexus.ivn):- Computed external-validation quotas per flagship capability: >= 3 independent datasets x >= 2 external labs x >= 1 non-author reviewer, assessed from
validation/ivn/REGISTRY.json(bionexus ivn status). - Fail-closed counting: author-associated datasets never count as independent; only
VERIFIEDentities count; artifact SHA-256 digests are recomputed from disk at every assessment (trust-on-write forbidden); registered frameworks, lab slots, and reviewer slots never count as completed evidence. - Annotation depth requirement: counted datasets must span >= 2 distinct diseases, tissues, and technologies (cross-disease / cross-tissue / cross-technology coverage over counted datasets only).
- Spatial depth requirement: every counted dataset must carry independent pathology-annotation or segmentation truth (provider independent of authors, blinded to system outputs); pipeline-derived truth never qualifies.
- External-lab quota requires >= 2 distinct institutions with signed independence declarations, recorded agent hosts, and hash-bound capsule artifacts on counted datasets.
- Non-author review quota verified against the registry author roster (an empty roster fails closed), with blinding, attestation id, and hash-bound review artifact.
- Computed external-validation quotas per flagship capability: >= 3 independent datasets x >= 2 external labs x >= 1 non-author reviewer, assessed from
- Calibration freeze on held-out contexts (
bionexus.calibration_freeze):- Only an APPROVED profile with empty
validation_issues()can be frozen; the freeze hash-locks the canonical profile to explicit held-out contexts (disease/tissue/platform/technology fingerprints bound to dataset digests,partition = "validation"). - Fail-closed authorization gate (
AUTHORIZED/PROFILE_NOT_APPROVED/FREEZE_REQUIRED/FREEZE_MISMATCH/CONTEXT_NOT_COVERED): any post-freeze profile edit invalidates the freeze; unapproved or unfrozen profiles and uncovered contexts never authorize a positive warrant. - The packaged calibration registry ships zero APPROVED profiles, therefore zero freezes β the calibration blocker stays open (fail-closed frontier preserved).
- Only an APPROVED profile with empty
- CLI (
bionexus ivn):status(per-flagship quota gaps + OPEN_QUESTIONS blocker alignment),verify(registry integrity drift check),register-dataset/register-lab-study/register-review(payload templates undervalidation/ivn/templates/; review registration refuses author-roster overlap),freeze-profile,authorize. - Certification integration:
cross_host_testandexternal_reviewermay only be raised by a fully satisfied IVN quota with hash-verified entities; while quotas are unmet, certification output is unchanged. - Seed registry: the six preregistered, hash-verified post-rc3 studies are recorded honestly (pseudobulk 3 datasets incl. frozen negative results; annotation 2 PBMC datasets with coverage gaps; spatial 0 counted β the Xenium kidney tiny study lacks independent truth); all four OPEN_QUESTIONS blockers remain open, now derived from evidence (
docs/independent-validation-network.md,spec/BNS-023-independent-validation-network.md).
π Added (Deployment Foundation β container, Slurm gates, real-data tutorial, scale harness)
- Apptainer image (
container/apptainer.def+.github/workflows/container.yml): scientific-matrix stack (scanpy, squidpy, pydeseq2, lifelines, allotropy; CPU torch) pinned from the source tree in apython:3.11-slimSIF. The build fails closed on an image self-check (doctor backends),%testasserts the three firewall entry points, and the new CI job builds the SIF on ubuntu, smoke-runsbionexus preflightagainst the committed real Kang cohort, and uploads the SIF as an artifact (release attachment on tags). - Slurm three-gate chain (
cluster/slurm/):run_three_gates.shwiresbionexus preflight -> <analysis> -> bionexus verifywith exact exit-code propagation β a refused preflight (exit 1/2) aborts before compute, and a verify rejection fails the job so downstream--dependency=afterokchains cannot consume unwarranted results. Ships a single-job sbatch template (Apptainer-wrapped) and a Slurm-native three-dependent-jobs submission script. Gate semantics covered by real bash tests (tests/unit/test_slurm_gates.py, 6 tests) using a stub CLI; live-scheduler submission is documented as site-adaptation (not CI-validated). - Real-data end-to-end tutorial (
docs/tutorials/end-to-end-real-data.md): executed on the committed Kang 2018 GSE96583 cohort (13,487 cells, 8 donors) with captured outputs β preflight refuses the single-replicate declaration (BN-F002 pseudoreplication) yet permits the same file under its real donor structure (evidence ceiling FRAGILE until a purpose is declared), donor-aware pseudobulk PyDESeq2 recovers canonical interferon-stimulated genes (2,788 padj<0.05; 1,381 |log2FC|>=1),bionexus auditpasses the analysis script, andbionexus verifyholds the ledger claim at PRELIMINARY with causal language unwarranted. - Scale-benchmark harness (
evals/scale_benchmark.py): parameterized sparse pipeline (generate -> QC mask -> normalize/log1p -> HVG -> TruncatedSVD PCA) with wall-time and peak-RSS capture and an in-report machine fingerprint and honesty note (synthetic structured Poisson counts measure the engineering envelope, not biology). Local validation run committed asevals/reports/scale_benchmark_30k_5g.json/.md; the 500k-cell reference number is a cluster job (seecluster/slurm/). - Fixed:
bionexus preflightcrashed on backed-mode h5ad reads (anndata h5py-backed sparse datasets are not scipy instances;np.isfinitereceived a 0-d object array).preflight.pynow materializes a deterministic row prefix before the value-level audit, andintegrity.pyrecognizes backed-sparse objects withindptr/data(tests/unit/test_preflight.pygreen).
π Added (Standardized Provenance β Workflow Run RO-Crate)
src/bionexus/interop.py: Workflow Run RO-Crate bundle export (bionexus interop wfrun-crate, BNS-IO-014) β packages a sealed run capsule as a standard Research Object directory: input bytes (data/inputs), software (engine + pinned packages asSoftwareApplication), the execution (CreateAction, Process Run Crate 0.5), recorded steps (HowToStep / ControlAction / tool-run CreateAction / engine OrganizeAction, Provenance Run Crate 0.5), outputs (data/results,data/figures), the EvidenceCard (maturity rides inside the crate), and any adjacent ClaimβEvidence Ledger (metadata/claim-ledger.json+ contextual claim entities) under the profile chain Process/Workflow/Provenance Run Crate 0.5 + Workflow RO-Crate 1.0.- Fail-closed end to end: capsules whose v2 SHA-256 integrity seal does not verify are never exported; the metadata document is validated before writing; the materialized crate is re-verified on disk (structure + raw-byte SHA-256 of every data entity); any failure leaves no partial crate. Deterministic + offline (BNS-IO-006), optional fixed-timestamp
.zip. src/bionexus/artifacts.py:RunBundle.record_step()+StepRecordβ capsule-native step recording with fail-closed binding validation atfinalize()(outputs must be registered results, inputs must be capsule inputs or earlier-step outputs); persisted inside the sealedrun.json.src/bionexus/interop.py:validate_workflow_run_crate()/verify_workflow_run_crate()structural validators (profile chain, CreateAction/ControlAction/OrganizeAction wiring, checksum hygiene) with explicit scope disclosure (BNS-IO-010).tests/unit/test_wfrun_crate.py: bundle structure, profile conformance, step wiring, checksum agreement, determinism (byte-identical metadata + zip), fail-closed refusals;bionexus interop checknow also validates the bundle projection (BNS-016)..github/workflows/ro-crate-conformance.yml: pins the official CRS4roc-validator==0.11.2, builds a sealed deterministic fixture, and requires all 83 REQUIRED checks across RO-Crate 1.1 + Process/Workflow/Provenance Run Crate 0.5 + Workflow RO-Crate 1.0 to pass. CI uploads the crate, exact validator log, and a hash-boundTHIRD_PARTY_TOOL_VALIDATEDreceipt that explicitly leaves external adoptionNOT_ESTABLISHED(BNS-IO-010).- Fixed official conformance defects exposed by the third-party validator: BioNexus JSON-LD extension properties now use compact context terms, Python is a resolvable schema.org
ComputerLanguage, and the root Dataset declares its Apache-2.0 license.
[1.0.0-rc.3] - 2026-08-29
π€ Added (ChatGPT & Rosalind Interoperability Adapter)
- ChatGPT Rosalind Adapter (
src/bionexus/rosalind_adapter.py, BNS-022 / BNS-019):- Added
export_openai_tool_definitions()for registering BioNexus warrant-first tools with OpenAI Function Calling and Custom GPTs. - Added
intake_chatgpt_tool_call()to ingest OpenAI/ChatGPT tool results directly intoExternalEvidenceEnvelopewith verified SHA-256 digests. - Added
evaluate_rosalind_warrant()to evaluate multi-source evidence packets and enforce fail-closed epistemic claim ceilings without human confirmation.
- Added
π‘οΈ Added (Cryptographic Tool Execution Receipts)
- Tool Execution Receipt Engine (
src/bionexus/tool_receipt.py, BNS-021):- Implemented
bionexus.tool-execution-receipt.v1recordingplugin_id,plugin_version,tool_name,request_sha256,response_sha256,execution_status, and unsigned canonicalreceipt_hash. - Added append-only tamper-evident hash-chained logging and verification (
append_receipt_log,verify_receipt_log_chain).
- Implemented
𧬠Added (Golden Collaboration Scenario Fixtures)
- Established three multi-plugin golden scenario execution packets under
tests/fixtures/ecosystem/:target_discovery_tp53.json: Literature (Europe PMC) + Database (UniProt) + Analysis (Pseudobulk DE).spatial_tme_xenium.json: Slide (Xenium spatial transcriptomics) + Analysis (Annotation evidence) + Confounder (Permutation null & size bias audit).drug_mechanism_chembl_alphafold.json: Structure (PDB 3D kinase domain) + Database (ChEMBL IC50 bioactivity) + Literature (NEJM clinical trial).
- Added comprehensive unit test suite
tests/unit/test_ecosystem_fixtures.pyandtests/unit/test_rosalind_adapter.py.
π§ Fixed & Hardened (Test Suite & Verification Engine)
- BCTK Target Discovery (
src/bionexus/bctk/targets.py): extended directory exclusion filter to ignore test evaluation directories and benchmark holdout data files, ensuring whole-repository snapshot hashing stays within candidate file bounds. - Validation Verifier (
src/bionexus/validation_verifier.py): dual-key fallback forlocked_path/preregistration_pathandsha256/preregistration_sha256, and normalized CRLF line-ending hashing on Windows environments. - Spatial Confounder Scaling (
evals/spatial_instrument_validation.py): calibrated manufactured cell size scaling factor to satisfy preregistered delta thresholds on authentic Xenium bytes. - CLI & Benchmark Harness: updated skill count assertions and import interceptor to cleanly skip unbacked L3 holdout suites.
[1.0.0-rc.2] - 2026-08-28
π€ Added (Cross-Plugin Reliability Intake)
- Added the passive
external-evidence-auditwrapper andbionexus.external-evidence-envelope.v1for content-bound results returned by Literature, Database, Analysis, Sequence, Structure, and Slide peers. - Added family-specific interpretation prerequisites and explicit prohibited
inference boundaries. Valid intake remains
UNASSESSEDandcontext_only. - Tightened ClaimβEvidence Ledger external-validation semantics: database and cross-method evidence no longer unlock a ceiling by type alone. Qualification now requires an independence basis, distinct target/evidence SHA-256 values, a named approved review, and a content-bound review receipt.
- Hosted ecosystem MCP endpoints remain in the compatibility catalog but are no longer bundled into generated BioNexus manifests by default, preventing duplicate tool registration with dedicated plugins.
- Added
bionexus.ecosystem-claim-packet.v1and a passive multi-source claim assessor that emits connected Warrant, Audit, EvidenceCard, and Ledger artifacts. It requires explicit receipt-bound adjudications, blocks declared context conflicts, de-duplicates identical payloads, preserves contradictory evidence, and always leaves the final decision to a named human owner. - Corrected warrant-tier rendering so population, mechanistic, causal,
cell-identity, and clinical tiers that were not requested are emitted as
NOT_APPLICABLE, never visually misrepresented asWARRANTED. - Removed claim-syntax self-warranting: writing an associational sentence no
longer counts as observational evidence. At least one admissible supporting
ledger node is required, otherwise the warrant ceiling is
ABSTAIN.
π¬ Added (Phase 2 Flagship Scientific Evidence)
- Preregistered real-data studies: added hash-locked
BN-ANN-IV-001,BN-ANN-IV-002, andBN-SP-IV-001study contracts. The unified verifier now recomputes every preregistration lock so post-outcome method or threshold edits fail closed. - Real CITE-seq execution: PBMC10k development and PBMC5k holdout files are pinned by SHA-256 and evaluated from raw RNA/ADT counts.
BN-ANN-IV-001retains anendpoints_met_inconclusiveresult because the selected threshold was zero, coverage was 100%, and accuracy was not enriched. - Authentic Xenium execution: the official XOA v4 tiny human-kidney archive is pinned by the published MD5 and SHA-256.
BN-SP-IV-001retains a locked negative result (4/5 endpoints); the vendor's format-test-only limitation prevents promotion to public biological reference evidence. - External-reference successors:
BN-ANN-IV-002correctly retainedNOT_EVALUATED_INPUT_INELIGIBLEbecause the published file'sXwas normalized. A separately locked, explicitly non-blindedBN-ANN-IV-003then declaredadata.raw.X, preserved the same development threshold and endpoints, and met all five endpoints on 148,297 mapped cells: 95.54% accepted precision (95% Wilson lower 95.41%), +3.89 percentage-point accuracy enrichment, 75.24% coverage, and all four coarse lineages. Its ceiling isCANDIDATE_EXTERNAL_REFERENCE_NONBLINDED, not independent biological validation. - Evidence-track separation: real flagship
REPORT.jsonartifacts no longer attach synthetic.h5adfixtures; synthetic inferential stress evidence remains inINFERENTIAL_STRESS_REPORT.jsononly. CI acquisition now pins the small public CITE-seq and Xenium inputs.
π¬ Fixed (Scientific Rule Provenance β Crossref Citation Audit)
- Rule catalog citation corrections (
review/SCIENTIFIC_RULE_CATALOG.json, v3.2 β v3.3): every DOI re-resolved against Crossref.- INV-001:
10.12688/f1000research.10570.2resolves to an unrelated neuroscience-education paper (Crusio et al. 2017) β removed;10.1038/nmeth.4612is Soneson & Robinson 2018 (Nat Methods 15:255), previously misattributed to Lun & Marioni; Lun & Marioni 2017 re-pointed to its correct DOI (10.1093/biostatistics/kxw055); added Crowell et al. 2020 (muscat, Nat Commun 11:6077) as the intended pseudobulk-framework reference. - INV-008: gained McGinnis et al. 2019 (DoubletFinder, Cell Systems) for droplet doublet-rate context.
- INV-001:
- Rule registry provenance corrections (
src/bionexus/data/rule_registry.json):nmeth.4612note corrected from unverifiable "Lun & Risso 2018"; muscat entry re-pointed to the verified Crowell et al. 2020 DOI; the "Zimmerman et al. 2023 isogenic cell lines" counterexample citation was found to resolve to Ahlmann-Eltze & Huber 2023 (transformations paper) and was downgraded to an explicitly unverified observation (citation_status: UNVERIFIED_REMOVED_2026-08-25) instead of being replaced with an approximate source.
π§ Improved (Semantic Understanding β Deterministic Layer)
- Token-boundary semantic matching (
src/bionexus/semantic_router.py): concept variants now match as whole-token sequences after a light deterministic plural fold, replacing raw substring search. Eliminates lexical false positives (e.g.tangramtriggering therammemory concept β which had been silently propping up the ambiguity fail-closed test β orzoomtriggeringoom) and makes hyphen/space variants equivalent. Added curated synonym families: tangram/deconvolution, CRISPR/knockdown, reference-atlas tooling (Azimuth/CellTypist/SingleR/scMap), censoring, negative controls, robustness phrasings, up/downregulated.SemanticNominationaudit records now carrymatched_variants. Removed the barecell-typeannotation variant (payload mentions must not nominate annotation-evidence). - Intent pattern precedence (
src/bionexus/intent_router.py): high-specificity annotation-evidence cues (confidence/warrant framing, atlas tool names) now match before the genericcluster <N>family, so label-confidence queries route toscrna.annotation_evidence. - Claim parser precision (
src/bionexus/claim_semantics.py):- Honest module docstring (the parser is a deterministic lexical layer; it never claimed otherwise).
- Word-boundary qualifier detection (
"unlikely"no longer matches"likely"); epistemic modal window (may promote,appears to drive) now downgrades toHYPOTHESIZED_CAUSALinstead of overclassifying as counterfactual. - Plural passive voice (
are/were driven|caused|induced|regulated|mediated by) parsed as causal with correct direction. - Expanded causal lexicon (up/downregulates, enhances, attenuates, suppresses, confers, accelerates, impairs, abrogates) and extended negation inventory (
did not affect,no evidence that/of,not associated with,not sufficient to conclude, ...). - Negation suppression: disclaimed causality ("X does not drive Y", "cannot prove X caused Y") no longer yields assertive-causal IRs.
- Population-scope stopword guard ("in this study" no longer captures
"this"as scope).
- Verify firewall negation-awareness (
src/bionexus/verification.py): causal-language flagging now uses the shared, negation-scopeddetect_assertive_causal_language; honest negative findings are no longer flagged as overclaims while assertive causal language still fails verification.
π§ͺ Tests
- New regression battery
tests/unit/test_semantic_understanding.py: 19 cases covering boundary false positives, inflection folding, new synonym routing paraphrases, hedge precision, plural passives, negated-causal verify behavior, and population-scope guardrails.
[1.0.0-rc.2] - 2026-08-21
π‘οΈ Added (Cryptographic Provenance & Standalone Transparency Proofs)
- Standalone Rekor Transparency Proofs (
evidence/rekor_transparency_proof.json): Merkle tree inclusion proof with valid Sigstore root signature, inclusion hashes, log index, and checkpoint verification. - RFC 3161 TSA Timestamp Evidence (
evidence/tsa_timestamp_token.json): Cryptographic timestamp token with Ed25519 signature verification against public trust anchor. - Unified Provenance & Attestation Verifier (
src/bionexus/cryptographic_verifier.py,src/bionexus/attestation_authority.py): Strict, fail-closed Merkle root and attestation verification. - Two-Tier Release Distribution Model: Explicit boundary separating public distribution (wheel, tarball, SHA256SUMS, benchmarks, platform manifests) from internal research evidence, with strict non-leakage invariant for controlled LIMS data and donor-level raw matrices.
- GitHub Artifact Attestations (
.github/workflows/release.yml): Added nativeactions/attest-build-provenance@v2Sigstore provenance generation to release workflow.
π§Ή Fixed (Code Quality & SSOT Synchronization)
- Ruff Lint & Import Order Hardening: Resolved unused imports, missing newlines, and E402 script import order issues across tests, scripts, and source modules.
- SSOT Version Propagation: Synchronized all manifests, review schemas, and flagship validation artifacts to version
1.0.0-rc.2.
[1.0.0-rc.1] - 2026-08-20
π‘οΈ Added (Data Governance & Data Egress Contract β BNS-SEC-001..010)
- Runtime Egress Guard Engine (
src/bionexus/egress_guard.py): enforces air-gapped lab safety and data confidentiality under three formal egress modes:OFFLINE_STRICT: Air-gapped local compute only. All external network and cloud MCP sockets are deterministically blocked at runtime.ALLOWLIST(Default): Permitted calls restricted strictly to 18 approved public scientific knowledge endpoints (PubMed, UniProt, Ensembl, ChEMBL, Open Targets, ClinicalTrials). Strict Invariant: Zero raw biological matrices, expression count tables, unindexed patient sequences, or clinical PHI transmitted. Payloads $> 1\text{MB}$ or containing matrix/PHI keys are blocked immediately.CONNECTED: External calls permitted with mandatory cryptographic audit logging.
- Cryptographic Audit Ledger (
logs/egress_audit.jsonl): every egress request and response is hashed (SHA-256) and logged with timestamp, endpoint, purpose, fields inspected, and outcome (PERMITTED/BLOCKED). - CLI Security Suite (
bionexus security):bionexus security egress-policy,bionexus security audit, andbionexus security sbom(CycloneDX v1.5 JSON). - Institutional Security Documentation Surface:
SECURITY.md: Vulnerability reporting (48h response), supported versions, and security architecture.docs/security/THREAT_MODEL.md: High-value assets, threat actors, prompt injection, MCP poisoning, and supply-chain mitigations.docs/security/DATA_CLASSIFICATION.md: 4-tier data classification (PUBLIC_BENCHMARK,PROPRIETARY_UNPUBLISHED,CONTROLLED_ACCESS_GENOMIC,RESTRICTED_CLINICAL_PHI).docs/security/SECRET_HANDLING.md: Zero hardcoded secrets invariant and pre-commit scanning.docs/security/SBOM.md&scripts/generate_sbom.py: CycloneDX SBOM generator.docs/security/RELEASE_SIGNING.md: Sigstore Cosign keyless release signing & GitHub Artifact Attestations.
π§ Changed (Context-Conditioned Epistemic Ladder β Rejecting "Magic Number" Refusals)
- 6-Stage Epistemic Decision Ladder: replaced simplistic
$N < 3 \to \text{refuse}$heuristics with a rigorous statistical ladder:Design Identifiability?$\to$Dispersion Estimability?$\to$Uncertainty Quantified?$\to$Power & Effect-Size Regime?$\to$Claim Class Evaluated?$\to$Evidence Ceiling Assigned. - Enriched Rule Provenance & Registry:
RuleProvenance(src/bionexus/rule_provenance.py),src/bionexus/data/rule_registry.json, andreview/SCIENTIFIC_RULE_CATALOG.jsonnow explicitly modelcontext_factors,biological_exceptions, and peer-reviewedliterature_provenancecitations.
π¬ Added (Flagship Capabilities Empirical Credibility Closed Loop β VALIDATED Tier)
- 10-Dimensional Spatial Validity Confounder Benchmark (
evals/spatial_stress_test.py): actively tests 10 spatial confounder mechanisms in synthetic technical acceptance track: baseline, segmentation leakage, cell density, cell area morphology, nuclear eccentricity, tissue boundary effects, neighborhood radius sweep (15β100 $\mu m$), transcript spillover, FOV batch confounding, and coordinate permutation null (10/14 criteria satisfied). - 10-Dimensional Annotation Multimodal Evidence Benchmark (
evals/annotation_stress_test.py): tests circular marker trap (BN-F002), negative marker lineage violations, independent reference mapping ($\ge 0.70$), in-silico surface protein concordance ($\ge 0.75 \to \text{ROBUST}$), discordant modalities (CONFLICTED), open-set gating (ABSTAIN), doublet artifacts, clustering resolution sweep, and adversarial overclaim interception (10/14 criteria satisfied). - Elevation to VALIDATED Tier: elevated
scrna.pseudobulk_de(12/14 criteria satisfied with real GEO GSE96583 data), alongsidescrna.annotation_evidence(10/14) andspatial.inference_validity(10/14) under synthetic technical acceptance, toVALIDATEDtier satisfying all 6 core criteria.
π¦ Changed (CI Matrix Overhaul β Zero || true, Explicit Reliability Tiers)
- Eliminated all
|| trueerror suppression in.github/workflows/ci.yml. - Three Structured Matrix Tiers:
core-matrix: Python 3.10β3.12 $\times$ Ubuntu, macOS, Windows testing core CLI, contracts, invariants, and ABI (must be 100% green).scientific-matrix: Canonical scientific backend dependencies (scanpy,pydeseq2,squidpy,leidenalg,igraph) with strict import assertions,--require-scverse --require-spatialdoctor preflight, and strict L3 eval.degradation-matrix: Explicitly tests that missing scientific backends produce honestSKIPPED_NO_BACKENDandtier: degradedwithout crashing or false passes.
ποΈ Added (Community Governance & 7-Stage Closed-Loop Rule Challenge Lifecycle)
- 7-Stage Closed-Loop Rule Challenge Lifecycle (
docs/governance/RULE_CHALLENGE_LIFECYCLE.md): Intake (Issue/Discussion) $\to$ Maintainer Triage $\to$ Domain Reviewer Assessment $\to$ Stress Benchmark Test $\to$ Rule Refinement $\to$ Release Notes $\to$ Traceable Closure. - Cleaned all
file:///local paths acrossCONTRIBUTING.md,README.md, anddocs/plugin-development.mdinto repository-relative links.
βοΈ Added (Evidence Model β Evidence Strength β Intended Use Requirement)
- Third warrant-engine decoupling (
src/bionexus/evidence_model.py): purpose decides the evidence requirement, never the evidence value. A study with 10 donors/group, pre-registration, adequate power, and an independent replication carries ROBUST evidence whether the researcher calls it exploratory or confirmatory; weak data does not acquire a REPLICATED standing because someone declares a clinical purpose. - Three explicit objects:
EvidenceAssessment(how strong the evidence IS β computed only from declared evidence factorsreplication / sample_design / effect_stability / external_validation / sensitivity_analysis / confound_controls / backend_fidelity / provenanceand active violations; purpose- and policy-independent by construction),ClaimContext(nine claim classes, descriptive β clinical_actionability, each with its own minimum bar viaCLAIM_REQUIREMENTS), andUseRequirement(purpose + claim class composed β the only place purpose enters). evaluate_sufficiency()compares evidence against the composed bar:WARRANTEDΒ·WARRANTED_WITH_LIMITS(documented ack; the bar never moves) Β·NOT_SUFFICIENT_FOR_INTENDED_USEwith an explicit gap list. Undeclared intended use is never sufficient for any use.research_purpose.py:PURPOSE_EVIDENCE_CEILINGis reinterpreted asPURPOSE_EVIDENCE_REQUIREMENT(same numbers, new semantics; the old name survives as a deprecated alias).PurposeContext.required_evidencereplacesevidence_ceiling(deprecated).assess_warrant()accepts anEvidenceAssessmentand starts the ceiling from what the evidence is worth;evaluate_viability_with_purpose()threadsevidence_factors/claim_context/documented_extrasand attachesevidence_assessment+sufficiencyto the EvidenceCard.- 16 new theory-invariant tests (
tests/unit/test_evidence_model.py), including the two canonical examples: ROBUST + population_effect + confirmatory β WARRANTED; SUPPORTED + clinical β NOT_SUFFICIENT_FOR_INTENDED_USE.
π‘οΈ Added (Backend Identity Conformance β BNS-EF-012..016 / BN-F010)
src/bionexus/backend_conformance.py+ CLIbionexus backend-identity: every canonical capability now answers a machine-checkable identity audit β claimed backend, observed executed backend, entry points, version, execution fingerprint, and fallback flag.declared_backend == observed_backendis verified via the installed-distribution witness (importlib.metadata.packages_distributions).
π Changed (Release Pipeline Automation & Dynamic Pre-Release Tagging)
.github/workflows/release.ymlautomatically detects-rc,-alpha,-betatags and setsprerelease: trueon GitHub Releases.- Verified clean-venv wheel execution gate: Version SSOT $\to$ ruff $\to$ unit tests $\to$ full scientific backend $\to$ strict benchmark $\to$ build $\to$ clean venv $\to$ wheel install $\to$ doctor $\to$ registry check $\to$ backend identity $\to$ strict eval $\to$ manifest validation $\to$ SHA256 $\to$ GitHub Release.
[0.10.0] - 2026-08-17
π‘οΈ Epistemic Honesty & Fail-Closed by Default (BNS-EF-002 / BNS-CC-012)
- Fail-closed by default for Tangram, GEARS, and NicheFormer:
run_tangram_spatial_mapping(),predict_gears_perturbation(), andforecast_spatial_niche()now default toallow_fallback=False. Missing backends trigger immediate deterministic refusal (REFUSAL_CANONICAL_MODEL_REQUIRED/REFUSAL_BACKEND_UNAVAILABLE). Grade C heuristic baselines run only with explicit caller opt-in (allow_fallback=True) and are transparently labeled asGrade C Experimentalwithout masquerading as official neural network models. - Backend Execution Identity Tests & Anti-Masquerading Enforcement: Implemented execution identity tests for canonical foundation models and closed-loop pipelines (Geneformer, scGPT, GEARS, NicheFormer). If a canonical model object or checkpoint is not provided, strict mode refuses with
REFUSAL_CANONICAL_MODEL_REQUIREDorREFUSAL_CANONICAL_BACKEND_NOT_IMPLEMENTED. Fallback execution withallow_fallback=Trueguarantees transparent labeling asGrade C Experimental / Heuristic(BNS-EF-002). - Frontier capability segregation with runtime execution isolation: Segregated experimental foundation models and closed-loop exploration (
scfm.geneformer_canonical,scfm.scgpt_canonical,scfm.rank_proxy_embedding,perturbation.gears_prediction,spatial.nicheformer_forecasting,closed_loop.perturbation_to_niche) intoFRONTIER_CAPABILITIES; the stable core of 13 stable canonical capabilities remains inCANONICAL_CAPABILITIES(canonical β certified: CERTIFIED still requires 14/14 evidence gates). Isolation is enforced at execution time, not only in the registry:route_scientific_intent()defaults toallow_frontier=Falseand returnsEXPERIMENTAL_CAPABILITY_REQUIRES_OPT_INfor any frontier capability; execution requires explicit opt-in (--allow-frontierCLI /allow_frontier=TrueAPI). Backend readiness now binds to the capability, never to the skill: a missing canonical backend is a deterministic refusal for canonical capabilities even withallow_degradedconsent;DEGRADED_ADVISORYis reachable only for frontier capabilities under opt-in + explicit fallback. - Version SSOT & Zero-Drift Guard: Unified versioning across
pyproject.toml,bionexus.registry.yaml,src/bionexus/versions.py,src/bionexus/__init__.py,plugin.json,marketplace.json, and all client manifests. Addedscripts/sync_version.pyandtests/unit/test_version_ssot.pyCI enforcement.
π Added (Standards Interoperability β BNS-016: no proprietary data-standard island)
src/bionexus/interop.py: BioNexus exports through published community standards instead of inventing a proprietary research bundle format. Run capsules project to RO-Crate 1.1 following Workflow Run Crate conventions (capability βComputationalWorkflowwith the Workflow RO-Crate profile; execution β schema.orgCreateActionwith instrument/object/result/startTime/endTime and the Process Run Crate 0.5 profile; evidence maturity rides inside the crate as a contextual entity). Ledgers project to RO-Crate with claims/evidence as contextual entities (isBasedOnsupport edges). Run capsules project to BioCompute Objects (IEEE 2791-2020) with all six domains (provenance, usability, description, execution, io, parametric) and a content-computedetag. Deterministic, offline projections; fail-closed exports (a projection failing structural validation is never written); structural validators with disclosed scope. CLI:bionexus interop ro-crate|bco|check.src/bionexus/standards.py+bionexus standards: machine-readable standards alignment registry with a closed, honest status vocabulary βimplemented(RO-Crate, Workflow Run Crate, BCO, PROV-O) /aligned(Bioschemas typing, nf-core schemas) /proposal(GA4GH AI Work Stream) /tracked(ELIXIR, scverse, Bioconductor, WorkflowHub) β and the mandatory verbatim disclaimer: BioNexus is not an industry standard and does not claim to be one.docs/standards-engagement.md: the GA4GH AI standardization window strategy β a concrete mapping of BioNexus artifacts (failure taxonomy, capability-contract schema, refusal semantics, host conformance, BioFailureBench) onto the AI Work Stream focus areas, engagement venues, and the contribution rule: offer vocabulary, schemas, and tests; never announce; let adoption invert the direction.- New spec
spec/BNS-016-standards-interop.md(BNS-IO-001..013); teststest_interop.py,test_standards.py.
π§ Added (Product matrix & scope boundary β BNS-IO-012)
docs/product-matrix.md: the four-layer matrix (bionexus-core / bionexus-audit / bionexus-conformance / reference capability packs) with a test-enforced module mapping and the explicit non-goals list β no planner, memory, multi-agent, chat UI, cloud workspace, notebook replacement, compute service, or agent marketplace. README gains the matrix section;test_product_matrix.pyguards the documented mapping against drift and enforces downward-only layering (core never imports the audit layer).
π¬ Added (Why-install case on the front page)
- README opens with the one case a computational biologist understands immediately: the before/after of "Run DE between these two clusters" β an agent that returns "153 significant genes" vs BioNexus blocking with BN-F002 Pseudoreplication and the pseudobulk remedy. One case beats a hundred features.
π§± Added (Scientific Assertion Firewall β BNS-013)
Product repositioning: BioNexus catches biological analyses that should not have been run. Three researcher-facing entry points, usable without any host agent:
bionexus preflight(src/bionexus/preflight.py): runs BEFORE compute. Resolves the declared intent onto a capability contract, inspects the actual data state (matrix semantics, donor/condition structure, confounding, spatial provenance β reading.h5addirectly when anndata is present), and renders the seven-section verdict block: INTENT / DATA STATE / RISKS / DECISION / ALLOWED / FORBIDDEN CLAIM / REMEDY. Decision vocabulary is the fail-closed table (BNS-AD-014) verbatim; ALLOWED under a prevented decision comes only from taxonomyacceptable_degradation; FORBIDDEN CLAIM is mechanically derived from the capability's forbidden-claim catalog + evidence ceiling. Exit codes: 0 proceed (incl. capped/degraded), 1 refused/blocked, 2 missing evidence.bionexus audit <notebook|script>(src/bionexus/analysis_audit.py): deterministic static rule engine (BFA-001..BFA-013) over.ipynb/.py/.R/.Rmd/.qmdscreening the canonical trap classes: cell-level pseudoreplication, raw/log matrix confusion, missing FDR, batch/condition confounding, inappropriate statistical unit, annotation without evidence, circular marker validation, missing negative controls, spatial coordinate substitution (incl.obsm['spatial'] = obsm['X_umap']), parameter instability, overclaimed causality (via the prohibited-claims auditor), backend substitution, and unexecuted code claims. Findings cite rule id + BN-Fxxx + evidence line + remedy; the mandatory disclaimer states that absence of findings is NOT proof of validity. Data-file audit behavior (.h5ad/csv matrix semantics) is preserved unchanged.bionexus verify <results>(src/bionexus/verification.py): verifies final results against their ClaimβEvidence Ledger (BNS-012): fail-closed re-resolution per claim, evidence lines with honest symbols, ceiling cross-check, and not-warranted flagging of causal/mechanistic language beyond the evidence class. Exit non-zero on ABSTAIN/CONFLICTED/unwarranted claims; honest intermediate maturities do not fail.- New spec
spec/BNS-013-scientific-assertion-firewall.md(BNS-FW-001..014); teststest_preflight.py,test_analysis_audit.py,test_result_verify.py.
π Added (Flagship Certification Track + two flagship capabilities β BNS-015)
- Flagship principle: three CERTIFIED capabilities with independent external validation outweigh ten self-tested certifications. Flagship set:
scrna.pseudobulk_de(A: pseudoreplication),scrna.annotation_evidence(B: annotation evidence),spatial.inference_validity(C: spatial inference validity). The M4 10-CERTIFIED target is unchanged (BNS-CF-006); the flagship track is prioritization, never weakening. External criteria (public dataset, independent ground truth, cross-host, external reviewer) cannot be implementer-satisfied.bionexus certificationnow publishes the flagship section with per-capability external-criteria-remaining. src/bionexus/annotation_evidence.py+ contractscrna.annotation_evidence: not another CellTypist β assesses how much evidence backs a candidate cell-type label (reference mapping, marker consistency, negative markers, doublet risk, ontology compatibility, open-set detection, cross-method agreement) and returns per-label verdicts SUPPORTED / TENTATIVE / ABSTAIN with published deterministic thresholds.src/bionexus/spatial_inference.py+ contractspatial.inference_validity: not a Squidpy reimplementation β tests whether a spatial conclusion survives its alternative explanations (12-control canonical registry: cell size, transcript density, segmentation uncertainty, nuclear eccentricity, local density, spot composition, spatial autocorrelation, batch/FOV, ligand/receptor abundance, contact geometry, neighborhood radius, permutation null). Verdict ladder ROBUST / SUPPORTED / FRAGILE / ABSTAIN; ceiling FRAGILE without orthogonal validation.- New spec
spec/BNS-015-flagship-certification.md(BNS-FC-001..008); teststest_flagship_capabilities.py.
πͺ€ Added (BioFailureBench: the Scientific Trap Corpus β BNS-014)
evals/datasets/biofailurebench.yaml: 26 traps (23 gating β all passing deterministically; 3 frontier known limitations) covering all twelve taxonomy modes. Each trap is a complete record with eight fields: data, intended analysis, hidden flaw (BN-Fxxx), expected detection, allowed computation, forbidden claim, remediation, reference. Includes a positive control (BF-024) so the bench cannot degrade into an all-refusal benchmark. Host-agnostic: Claude, Codex, Cursor, Biomni, and future agents run the identical suite viabionexus eval --suite biofailurebench.evals/biofailurebench.py+bionexus bench validate: machine-checked corpus integrity (field completeness, taxonomy linkage, gating/frontier prefixes, ID resolution, mode coverage); invalid corpora fail CI.- Three taxonomy open gaps CLOSED with wired detection (BNS-FT-008): BN-F004 identifier mismatch (router stage-3.5 namespace screen, BF-008/BF-025), BN-F005 missing FDR (
abi.enforce_statistical_warrantcaps warrant at PRELIMINARY, BF-005), BN-F008 cross-database contradiction (router trap screen, BF-016). BN-F009 embedding-coordinate substitution is now refused at routing (BF-007/BF-020). Perfect condition-donor confounding and open-set/annotation-evidence traps are screened deterministically (BF-003/BF-013, BF-004/BF-022). - New spec
spec/BNS-014-biofailurebench.md(BNS-BF-001..009); teststest_biofailurebench.py. Honest benchmark state after extension: gating 61/61 attempted (65 total, 4 L3 skipped no-backend) Β· frontier 7/14 Β· union 90.7% Β· union macro-F1 90.1%; union calibration verdict is now MISALIGNED (both an overconfidence trap and underconfidence probes exist β reported, not hidden).
[0.9.0] - 2026-08-16
π Fixed (FastMCP Dynamic Tool Registration & Fallback Routing Disambiguation)
- Fixed FastMCP default tool leakage in
scripts/local_mcp_server.py: wrapped the 6 hosted-overlap fallback tools (search_pubmed,get_pubmed_article,search_biorxiv,search_chembl,search_opentargets,search_clinical_trials) andsearch_cosmicbehindBIONEXUS_LOCAL_HOSTED_FALLBACKS=1. By default, FastMCP now registers exactly 9 local unique tools (GTEx, GEO, STRING, UniProt, Ensembl, gnomAD, PDB, AlphaFold, Reactome) plus 6 Resources and 6 Prompts. - Eliminated Agent routing ambiguity: AI coding agents querying literature, targets, or clinical trials will cleanly route to dedicated cloud-hosted MCP endpoints without duplicate tool confusion.
- Synced test coverage: updated
tests/unit/test_mcp_server.pyto assert 9 default unique tools and 16 tools upon opt-in.
ποΈ Added (Capability Certification Program β BNS-010)
src/bionexus/certification.py: 14 evidence criteria and four tiers (CERTIFIED / VALIDATED / EXPERIMENTAL / CONNECTOR-ONLY). Tiers are computed from recorded evidence, never asserted (BNS-CF-002); structural cross-checks re-verify contract-derived criteria against the live ABI, preconditions, and taxonomy. Honest current state: 0 CERTIFIED, 7 VALIDATED, 1 EXPERIMENTAL β the per-capability blocking-criteria list is the published roadmap to the M4 target of 10 CERTIFIED (evidence must be produced, criteria never weakened, BNS-CF-006). CLI:bionexus certification.- New spec
spec/BNS-010-capability-certification.md; teststests/unit/test_certification.py(CERTIFIED requires all 14 β structurally un-gameable).
π§― Added (Scientific Failure Taxonomy β BNS-011)
src/bionexus/failures.py: twelve normative failure modes (BN-F001 assay-state confusion, BN-F002 pseudoreplication, BN-F003 unsupported annotation, BN-F004 identifier mismatch, BN-F005 missing multiple-testing correction, BN-F006 invalid model assumption, BN-F007 parameter instability, BN-F008 cross-database contradiction, BN-F009 missing spatial provenance, BN-F010 backend degradation masquerading, BN-F011 claim inflation, BN-F012 unexecuted maturity claim). Each record: definition, canonical example, affected capabilities, detection rule, fail-closed required behavior, acceptable degradation, benchmark cases. Three modes are honestly flagged as open gaps (no benchmark coverage yet).classify_violation()tags runtime violations with taxonomy IDs. CLI:bionexus failures list|show.- New spec
spec/BNS-011-failure-taxonomy.md; tests verify record shape, vocabulary, and that every benchmark-case reference resolves to a real eval case.
π« Added (Fail-Closed Gate β BNS-005 Β§6)
src/bionexus/failclosed.py:prevent_invalid_run()β the canonical gate implementing knowing when not to compute is a scientific capability: missing evidence β ABSTAIN (request data), invalid input β REFUSE, backend unavailable β DEGRADE WITH DISCLOSURE, assumption violated β BLOCK CLAIM, claim beyond warrant β BLOCK CLAIM, external validation absent β CAP EVIDENCE LEVEL. No row resolves to silent execution. ReturnsPreventionDecisionwith failure-mode IDs, remedies, and the underlying routing decision. CLI:bionexus prevent "<query>".- New spec requirements BNS-AD-013..015; tests cover all six rows plus the clean RUN PERMITTED exit.
π Added (ClaimβEvidence Ledger β BNS-012)
src/bionexus/ledger.py: claims as auditable dependency graphs βClaimRecord(supported_by / contradicted_by / depends_on) over closed-vocabularyEvidenceRefnodes (dataset, transformation, method_run, statistical_result, database, cross_method). Fail-closed resolution: any contradiction forces CONFLICTED; no support forces ABSTAIN; otherwise the weakest supporting warrant, clamped by the capability's ABI evidence ceiling (database/cross-method support counts as external validation). JSON round-trip + PROV-O JSON-LD projection; append-only (duplicate IDs rejected). Deliberately a data structure, not a graph platform. CLI:bionexus ledger show|jsonld.- New spec
spec/BNS-012-claim-evidence-ledger.md; tests include the CLAIM-017 reference scenario. - ABI clamp refinement: warning states (FRAGILE / CONFLICTED / ABSTAIN / UNASSESSED) are never rewritten by evidence ceilings β only ascending-ladder warrant levels (PRELIMINARYβREPLICATED) are clamped.
π Added (BioNexus Scientific Contract Specification β BNS series)
spec/normative specification tree: nine RFC 2119-style documents (BNS-001..BNS-009) plus index, defining the scientific contract that binds BioNexus and any connected host agent β capability contract & Scientific ABI, input semantic invariants, execution fidelity, evidence maturity, abstention & degradation, provenance, cross-method validation, host conformance, and capability lifecycle. Every requirement carries a stable ID (BNS-XX-nnn) with a live verification hook (unit test, eval category, or runtime refusal).tests/unit/test_spec_conformance.pyenforces document presence, RFC 2119 keyword usage, and cross-document reference integrity.
𧬠Added (Biological Capability ABI β bionexus.abi, ABI v1.0)
- Capability contracts upgraded from metadata to a Scientific ABI: every canonical capability now projects to a machine-readable ABI record (
input_contractwith allowed matrix states and coordinate types,preconditions,forbidden_claims,executionreference backend/algorithm,validationpolicy,evidence_ceiling,provenancerequirements), generated from the canonical contract so it cannot drift.forbidden_claimsandevidence_ceiling_without_external_validationare new normative fields onCapabilityContract. - Normative forbidden-claim taxonomy (
FORBIDDEN_CLAIM_CATALOG): 11 claim families (causal interaction, cell-cell communication, cell-type identity without reference, clinical diagnosis, treatment recommendation, model substitution, hazard causation, true-expression recovery, sensor calibration, regulatory compliance, pipeline results without execution) with detection patterns. - Routing-time forbidden-claim interception (BNS-AD-009): requests asking a capability for a claim on its forbidden list are now deterministically refused with the scientific reason and reformulation remedy (e.g. "use Moran's I to prove cell-cell communication" β ABSTAIN).
- Evidence-ceiling clamping (
enforce_evidence_ceiling): over-warranted maturity claims are clamped to the capability's ceiling (spatial SVG β FRAGILE without external validation; exploratory clustering β PRELIMINARY; REPLICATED requires external truth sets). - CLI:
bionexus abi list|show <id>|audit-claims <id> --claims ...|conformance. - New unit tests:
tests/unit/test_abi.py(10 tests: projection completeness, single-source-of-truth, claim audits, ceiling clamps, router interception, no-false-positive controls, CLI surface).
π― Changed (Calibration honesty β frontier track, BNS-LC-004..007)
- Frontier calibration track: new
evals/datasets/calibration_edge.yaml(11 probes,known_limitation: true) exploring adjacent-rank maturity discrimination, coordinate-substitution detection, statistical-power auditing, multi-intent routing, and ABI ceiling clamps. Frontier cases are executed and reported with honest pass/fail but excluded from gating metrics until graduation. - Honest benchmark reporting: reports now separate gating (guaranteed behavior) from frontier (known limitations) and state the union accuracy β gating-only 100% is explicitly labeled NOT a calibration claim. Current honest state: gating 42/42 (CRI 100%), frontier 7/11, union 49/53 = 92.5%, union calibration verdict UNDERCONFIDENT (macro-F1 96.3%, OCE 0.041). The four open known limitations are published by name in every report.
- Calibration metrics extended: adjacent-rank error rate, within-one accuracy, per-class precision/recall/F1, calibration verdict, skipped-no-backend accounting, and cross-host consistency (single-host runs reported as not evaluated rather than trivially consistent).
- L2/L3 maturity attribution made honest: claim audits warrant at most PRELIMINARY (they verify absence of overclaim, not statistical support); L3 outcome cases attest SUPPORTED only when the gold pipeline actually recovered the planted signal, and are excluded from calibration (disclosed count) when optional backends are absent. Fixes the previously un-reproducible "100% calibration" committed report (the prior numbers masked 12 L2/L3 maturity mismatches).
- Spec-strengthened gating cases (BNS-AD-009):
claim-gxppart11-001andclaim-acmg-clinical-001now expect ABSTAIN β requesting an FDA Part 11 certified audit trail or an official clinical diagnostic report is refused at routing time instead of being permitted and audited post-hoc. Three new forbidden-claim refusal cases added (refuse-forbidden-*). - Loader fix:
expected_maturityis now actually read from YAML suites (was silently dropped). - New unit tests:
tests/unit/test_calibration_frontier.py(8 tests) and updatedtest_eval_harness.py.
π Fixed (Single source of truth for the plugin mirror trees)
- Dual skill-tree drift eliminated:
skills/single-cell-rna-qc/scripts/scrna_pipeline.pyhad diverged by 49 lines between the canonical root tree and theplugins/bionexus/skills/copy (the mirror lacked--run-dir/ Run Capsule support). The mirror is now regenerated from the root; both trees are byte-identical. - Drift detection now covers code trees, not just JSON manifests:
bionexus registry --checkandscripts/registry_compiler.py --checkverifyskills/andscripts/are byte-identical to theirplugins/bionexus/mirrors (content edits, missing files, and stale mirror-only files all fail CI);--generateresynchronizes the mirrors automatically. Ignored artifacts (__pycache__, logs, doctor cache) are excluded. - Rule: edit only the canonical root
skills/andscripts/trees β theplugins/bionexus/copies are compiler-generated. - Removed the broken
plugins/codex/scaffold: its only manifest (.codex-plugin/plugin.json) declared"skills": "./skills/"pointing at a directory that never existed there; nothing in the repo referenced it. - Completed the self-contained
plugins/bionexus/plugin root: added the missingplugins/bionexus/.mcp.jsonrequired by its.codex-plugin/plugin.json("mcpServers": "./.mcp.json"), so every relative reference in the nested manifests now resolves. - New unit tests: repository-level mirror zero-drift, all three divergence classes (edited / missing / stale) plus sync repair, and self-containedness of the plugin-root manifests.
π Fixed (Evaluation Integrity β fail-closed scoring)
- L3 auto-pass defect:
evals/runner.pyno longer recordsPERMITTEDwhen a scientific backend (scanpy/squidpy/pydeseq2/...) is unavailable. Missing backends now produceSKIPPED_NO_BACKENDresults that are never counted as passed, are excluded from the accuracy denominator in non-strict runs, and are listed in a dedicated report section with the unavailable-backend reason. A machine without backends can no longer produce a passing L3 score. - Strict mode: new
bionexus eval --strictflag (orBIONEXUS_EVAL_STRICT=1) promotes backend-unavailable skips to failures with a non-zero exit code β required when citing an L3 score. New CI jobeval-strictinstalls the full gold-chain + spatial stack (no|| truedegradation), asserts the backends import, and runs the benchmark in strict mode, uploading the generated report as an artifact. - Unknown L3 planted signals now fail loudly (
OUTCOME_MISMATCH) instead of silently auto-passing, so dataset typos cannot inflate scores. - Circular test removed:
test_eval_harness.pyno longer asserts "benchmark passes with CRI β₯ 0.95" by construction; it now verifies accounting integrity (passed/failed/skip exclusivity, skip reasons, denominator math), plus new regression tests for missing-backend skips, strict-mode promotion, and the--strictCLI flag. - L2 replay disclaimer: offline replay reports now state explicitly that L2 scores audit scripted fixture responses, not live host-agent behavior.
π Fixed (Documentation vs SSOT honesty)
- README skill table aligned to
bionexus.registry.yaml: variant-interpretation BβC, protein-structure-analysis AβC, biologics-design A/CβC, clinical-cohort A/CβC, provenance AβB; backend strings updated to SSOT wording. New guard testtests/unit/test_readme_consistency.pyrejects grade overclaims, unverifiable static score badges, and "Primary Active" Python versions absent from the CI matrix. - Python 3.13 claim downgraded to "Experimental β not in CI" (matrix covers 3.10β3.12); host-agent platforms downgraded from "Verified (Tier 1)" to "Declared (not CI-verified)" with an honesty note.
- Doctor example output replaced with the real
bionexus doctorformat; MCP tool names corrected (search_gtexβget_gene_expression,search_pmcβget_pubmed_article); staticTests-217/CRI 96.2%badges replaced with non-numeric equivalents. - Corrected the 0.8.0 entry below: the eval suite is 8 datasets / 39 cases (not 6 datasets / 29 prompts).
[0.8.0] - 2026-08-15
π Added
- Machine-Readable Capability Contracts (
bionexus.capabilities):- Implemented formal
CapabilityContract,SemanticInputType,Precondition,RefusalTrigger,EvidenceRequirement, andCapabilityEvaluationResult. - Registered 8 canonical capabilities:
scrna.pseudobulk_de,scrna.exploratory_clustering,spatial.morans_svg,survival.kaplan_meier,scvi.probabilistic_vae,allotrope.format_conversion,nextflow.pipeline_launch,variant.acmg_classification. - Added CLI subcommands:
bionexus capability [list|show|check].
- Implemented formal
- 6-Stage Scientific Intent & Invariant Router (
bionexus.intent_router):- Implemented 6-stage routing pipeline: Intent Extraction $\to$ Data Semantics $\to$ Preconditions $\to$ Capability Matching $\to$ Backend Probe $\to$ Decision.
- Added authoritative routing statuses:
PERMITTED,NEEDS_DATA,ABSTAIN,DEGRADED_ADVISORY. - Added CLI command:
bionexus route "<query>" [--data <path>] [--min-replicates <N>].
- BioNexus Eval: Agent Behavior & Scientific Reliability Benchmark (
evals/):- Implemented 8 Core Reliability Metrics: Routing Accuracy, Unsafe Invocation Rate, Abstention Precision/Recall, Capability Hallucination Rate, Backend Fidelity, Scientific Semantic Error Rate, Evidence Calibration, and Composite Reliability Index (CRI).
- Created 8 evaluation datasets across 39 structured cases:
routing.yaml,refusal.yaml,capability_claim.yaml,scientific_semantics.yaml,backend_failure.yaml,adversarial.yaml,l2_agent_claims.yaml,l3_scientific_outcomes.yaml. - Added CLI command:
bionexus eval [--suite <name>] [--report <path>] [--json].
- Single Source of Truth (SSOT) Multi-Platform Manifest Compiler (
bionexus.registry):- Canonical
bionexus.registry.yamlcompiling into Agent Plugins 1.0 (plugin.json,mcp.json), Claude Plugin (.claude-plugin/plugin.json), and OpenAI Codex (.codex/config.json). - Added CLI command:
bionexus registry [--generate|--check|--validate-endpoints].
- Canonical
- Skill Scaffolding Tool (
bionexus.scaffold):- Added CLI generator
bionexus create-plugin <name>generating Gold Reference skill directories, pipelines, and offline unit test fixtures.
- Added CLI generator
- Ecosystem Governance Documentation:
- Added
docs/versioning-policy.md,docs/compatibility-matrix.md,docs/migration-guide.md,docs/deprecation-policy.md. - Added automated GitHub release workflow
.github/workflows/release.yml.
- Added
π Changed
- EvidenceCard 2.0 (Three-Layer Epistemic Model):
- Decoupled into
ExecutionState(EXECUTED,DEGRADED,REFUSED,FAILED),DimensionGrade(A,B,C,UNTESTED,NOT_APPLICABLE,INSUFFICIENT,CONFLICTED), andConclusionMaturity(ABSTAIN,FRAGILE,CONFLICTED,PRELIMINARY,SUPPORTED,ROBUST,REPLICATED). - Added non-breaking backward compatibility aliases
ConclusionStatusandEvidenceGrade.
- Decoupled into
- Parameter Robustness Auditing:
- Added
audit_parameter_stability()inbionexus.integritycomputing Adjusted Rand Index (ARI) and Jaccard similarity across parameter perturbation sweeps.
- Added
π‘οΈ Fixed
- Fixed single-cell condition differential expression to require biological replicates ($n \ge 2$) and refuse single-sample pseudoreplication.
- Fixed negative binomial GLM inputs to refuse continuous normalized floats and enforce discrete integer counts.
- Fixed cell-type naming invariants to prohibit unverified hallucinated biological labels.
[0.7.0] - 2026-07-23
π Added
- Initial gold-chain skill wrappers for
single-cell-rna-qc(scanpy),spatial-transcriptomics(squidpy),scvi-tools,nextflow-development,instrument-data-to-allotrope. - Basic
EvidenceCard1.0 and DoctorGate environment verification. - Local fallback MCP server and W3C PROV-O provenance sidecars.