Decisions¶
Every choice this project made that a reader might reasonably have made differently, with the evidence behind it and what would reverse it.
The route pages record what the archives do. These pages record what we decided to do about it — which is the part that ages fastest and is hardest to reconstruct from code.
The log¶
| Decision | Basis | Status |
|---|---|---|
| How routes are ranked | census over 12,755 BioProjects and 13,045 GEO series | in force |
| What counts as evidence | each rule exists because breaking it produced a wrong number | in force |
| What counts as a metadata gold set | 120 ArrayExpress studies: 119 carry curated labels, 0 carry an independent sample | in force |
| How values are grounded | three measured wrong answers, each from an obvious implementation | in force |
| What happens when two archives disagree | union, per-value provenance, conflicts surfaced | in force |
| Parity before improvement | 14 of 14 of the incumbent's own test cases | in force until the swap lands |
| No DDBJ provider is needed | ENA resolves 137/137 PRJDB projects |
reverses on a corpus ENA misses |
| The ENA browser XML API is not needed | every field already in filereport |
reverses for analysis or submission records |
| Why fetch-series reads the reads itself | SRR29534765 and ERR4265292: which copy of a library is usable is a property of the copy | in force |
| What a read sample can prove | refusal needs positive evidence; the first reads are a stratum; 0/66 held-out HIGH calls wrong | in force |
| When metadata may break a tie | 7 of 7 design ties, 2 of 2 held-out, settled as the pipeline mapped them; the reads win all 20 disagreements | in force since 2026-10-26 |
| When a second route earns its place | rule set 2026-10-27 before measuring: it adds values or sole resolutions for 0.1% of a shared draw | measurement pending |
Decisions recorded elsewhere¶
Some belong with the thing they describe rather than here, and are cross-linked so this page stays the index of all of them:
| Decision | Where |
|---|---|
| Ask every file route, not the first that answers | the file layer |
| Which files to use is a requirements question, not an evidence one | the file layer |
| Precision is not claimed for the assay screen, and why | the assay layer |
| Metadata sources are unranked until surveyed, so disagreement is reported | the metadata layer |
| A key whose meaning depends on the record is resolved from the archive's own declaration | the metadata layer |
| Library type and chemistry report ambiguity rather than picking | the assay layer |
hard-cases gates a route; it never becomes evidence |
benchmarks |
A named draw, never --limit, for anything recorded |
benchmarks |
| Route by the accession's issuing archive | routing by archive |
The two sra_be/efetch run routes were not re-censused |
what counts as evidence |
Decisions taken outside the evidence¶
Two, and they are marked as such rather than dressed up:
- No PyPI release for now. The maintainer's call, 2026-09-16. Nothing in the measurements bears on it.
- The upstream reports are drafted and not filed. Sending them is
outward-facing and belongs to the maintainer;
upstream/holds them ready to paste, each with the command that regenerates its evidence first.
The form these take¶
Each page states the decision, the measurement it rests on, the argument, and what would reverse it. That last section is the one that matters most: a decision with no stated failure condition is a preference, and this project's governing rule is that preferences do not ship.