Home › About › Methods › Changelog

Rendered from CHANGELOG.md.

1.20.0 — 2026-10-12 (release R2026.25, every pass on every project)

1.19.1 — 2026-10-10 (release R2026.24, external annotation of the content-filter gap projects)

1.19.0 — 2026-10-10 (release R2026.23, subject ids, longitudinal design and relatedness)

1.18.2 — 2026-10-09 (release R2026.22, owner audit of empty projects and of split deposits)

1.18.1 — 2026-10-09 (release R2026.21, deep annotation of the R2026.20 samples; owner audit of PRJEB120967)

1.18.0 — 2026-10-09 (release R2026.20, owner review of 1.17.1 + external coverage report)

1.17.1 — 2026-10-09 (release R2026.19, owner review of 1.17.0)

1.17.0 — 2026-10-09 (release R2026.18, deep annotation of every project)

1.16.0 — 2026-10-08 (release R2026.17, owner review part 2)

1.15.0 — 2026-10-08 (release R2026.16, owner review)

1.14.0 — 2026-10-01 (release R2026.15, owner review)

1.13.1 — 2026-10-01 (release R2026.14, owner decisions)

1.13.0 — 2026-09-30 (release R2026.13, cleanup)

1.12.0 — 2026-09-29 (release R2026.12, owner site review: new fields, collections, atlas)

1.11.0 — 2026-09-28 (release R2026.11, external curated resources)

1.10.1 — 2026-09-28 (release R2026.10, sources and acknowledgements)

1.10.0 — 2026-09-28 (release R2026.9, all-age catalog site)

1.9.0 — 2026-09-28 (release R2026.8, gut_all route R3 — full-text cohort statements)

1.8.0 — 2026-09-28 (release R2026.7, curated scope gut_all — "Microbiome Repo")

1.7.1 — 2026-09-28 (release R2026.6, rebrand — no data change)

1.7.0 — 2026-09-27 (release R2026.5, scale-up S2: registry sample tier)

1.6.0 — 2026-09-27 (release R2026.4, scale-up S1: registry tier)

1.5.0 — 2026-09-27 (release R2026.3, monthly cycle 2026-09b)

1.4.0 — 2026-09-27 — release R2026.2 (community-contribution worklist)

Deterministic changes only; no LLM calls; no value of any 1.3.0 table changed. Adds the read-only worklist that drives the site's contribute/ pages and the GitHub-Issue contribution intake (MATURITY_PLAN §3.2–3.4; pipeline config/contribute.yaml, docs/CONTRIBUTE.md). * contribute_worklist.csv — one row per OPEN included/uncertain study (at least one of age / delivery / feeding / preterm / antibiotics / probiotic below 0.5 coverage on its catalog_scope samples; body-site scope for studies without catalog_scope samples), ranked by priority_score = Σ weight × (1 − coverage) × log10(n_catalog_scope + 1) (weights 3/2/2/1.5/1/0.5). Per study: missing fields, the six coverages, best recoverability tier per field, one blocker_code (controlled_access · no_linked_paper · paywalled_abstract_only · tables_unjoinable_need_key · pdf_only_supplement · no_supplement_found · archive_only_uncertain · unitless_age_needs_curator · partial_coverage) with blocker_detail, an imperative unlock_text, the primary contribution_type, linked papers, ENA/NCBI links and a prefilled issue_url (Issue form catalog-contribution.yml, label contribution). * contribute_worklist_fields.csv — study × field detail (coverage, n_with_value, best tier, field-level blocker incl. complete, evidence ≤ 120 chars). * Both tables carry release_added = R2026.2, release_retired (null), package_added = 1.4.0; a row is retired when the study becomes complete in a later release. * Coverage is recomputed from sample_metadata_wide on catalog_scope at build time (the shipped study_field_coverage_matrix.csv is on a different scope and is unchanged). * Inputs (registered in the pipeline's config/inputs.json, group contribute): extraction_worklist_v3.csv, recoverability.parquet, RESCUE_REPORT_v2.md (sample-ID forms), r2_rescue_studies.csv, supp_inventory.parquet, controlled_access_registry.csv. No e-mail address or participant name enters any table. * DATA_DICTIONARY.md section 'Contribute worklist' (every column); README Files-table rows; build_counts.json gains n_worklist_studies, n_worklist_fields_rows. * Counts unchanged: 389 included studies · 154,206 samples · 72,358 catalog_scope · 618,898 current determinations · Sandpiper 2.0.0.

1.3.0 — 2026-09-26 — release R2026.1 (first numbered catalog release; bitemporal columns)

Deterministic changes only; no LLM calls; no value of any 1.2.2 table changed (asserted at build: dropping the new columns reproduces every 1.2.2 fact table). * Release model (VERSION.json.release_id = R2026.1, previous_release_id = 1.2.2; registry releases.csv, one row per release id with the counts the CHANGELOGs state). Release ids are R<YYYY>.<n>; pre-numbered states are their package semver (1.0.0 first public package 2026-09-25, 1.1.0 release v11, 1.2.0, 1.2.1, 1.2.2). * Bitemporal columns release_added, release_retired (null = current), package_added appended at the end of sample_determinations, universe_studies_all, study_metadata_wide (parquet + csv), cohorts.csv, study_paper_links.csv, sandpiper_sample_summary, sandpiper_run_qc, sandpiper_top_genera, sandpiper_study_panels. sample_metadata_wide is derived and unchanged. release_added of pre-existing rows is reconstructed from value_history.change_stage/src_track (exact for 13,191 determinations: 3,632 run-level rows → 1.1.0, 9,559 adult-age recommits → 1.2.0; all other pre-1.3.0 rows 1.0.0 by assumption — DATA_DICTIONARY 'Release columns'). * sample_determinations_all.parquet (620,214 rows = 618,898 current + 1,316 retired): retired published values reconstructed from value_history rows with status superseded / moved_to_parent_biosamples / recommitted_out_of_scope_host / recommitted_out_of_scope_isolate — 75 retired in 1.1.0 (sample_unit_fix), 245 in 1.2.0 (B2 97 + B9 148), 295 in 1.2.1 (R3-3), 701 in 1.2.2 (owner_decision) — with retired_reason and retired_change_stage. * RELEASE_NOTES_R2026.1.md generated from 1.2.2 → 1.3.0 (studies/samples, coverage on catalog_scope, verdict flips, findings, Sandpiper, gold metrics, schema changes, token cost). * build_counts.json regenerated from the tables (the 1.2.2 copy was stale: package_version 1.2.1, n_catalog_scope 71,795 → now 72,358); README heading carries the package version (1.2.2 shipped "v1.2.0"). * Counts unchanged: 389 included studies · 154,206 samples · 72,358 catalog_scope · 618,898 current determinations · Sandpiper 2.0.0 (Zenodo 20419175).

1.2.2 — 2026-09-26

Owner decisions applied (value_history change_stage=owner_decision, 701 rows): * PRJEB90577 (PediCAP, 631 peri-rectal swab samples): body_site_class excluded → primary, new column body_site='rectal_swab'; catalog_scope 71,795 → 72,358. * 70 samples labelled METAGENOMIC whose organism is a named microbe (68 PRJNA799247: Staphylococcus epidermidis/Clostridioides difficile; 2 PRJNA1082298: Enterobacter asburiae) and flagged non-metagenome by Sandpiper: body_site_class → excluded, reason assay_isolate_genome. Studies remain included. * body_site column added to sample_metadata_wide (currently only 'rectal_swab'; stool is implied by body_site_class=primary otherwise).

v1.2.1 (2026-09-26) — data fixes from the three final reviews (patch)

CHANGELOG

v1.2.0 — 2026-09-26 (release v12) — Sandpiper profiles, author index, versioning

Deterministic changes only; no LLM calls. * Sandpiper (A6, B5, B6, B7). 79,473 / 154,206 samples profiled (87,125 / 174,022 runs); 38 sp_* columns on the sample table, 16 sp_* columns on the study table; seven on-site Sandpiper tables; full profiles off-site. * Scope (B13). <field>__scope for the 16 coverage fields. * Authors. authors.parquet (28,367 rows), study_authors_summary.csv, authors_index.json; first_author, n_authors, organisations on the study table. * Versioning (A7, B11). VERSION.json with per-table sha256 and row counts; README heading carries the semver; all *.csv.gz written with gzip mtime 0 so rebuilds are byte-identical. * Wide table: 143 columns.

v1.2 — 2026-09-26 (release v12) — data-model fix after Reviewer B

Deterministic changes only; no LLM calls. Before/after counts in DATA_MODEL_FIX_REPORT.md. * B1 age scope. New sample columns age_scope, age_scope_basis, role_source; role defaults to unknown when unevidenced (infant 138,348 → 72,848); new roles adult/child for out-of-range ages. Study columns n_age_scope_infant, n_<age_scope> counts, mixed_age_deposit. Headline coverage is now reported on age-scope infant samples (74,695), with the body-site denominator (146,631) kept in field_coverage_summary.csv. * B2 parent BioSamples. The 16 biosample_pooled rows left the sample table (parent_biosamples.parquet); their 97 determinations are in value_history.parquet. Sample table 154,222 → 154,206 rows. * B9 adult_age_flag. Now literally age_at_collection_days > 1100: 9,559 out-of-range R1 ages committed as determinations (parse_note out_of_scope_adult | validate_age: …, src_track = adult_scope_fix, all validate_row-checked). The 12 samples with a conflicting in-scope age were resolved for the archive attribute (23 in-scope rows superseded: PRJEB14941 maternal-visit dob arithmetic ×16, PRJNA716780 mother rows read as months ×6, PRJNA695570 R1>R2 ×1); 8 adult rows on PRJEB14941 .infant. samples rejected (maternal age copied onto infant samples); 125 PRJEB14941 title-parser birth → 0 d rows on maternal birth-visit samples superseded (sample_id_pattern). Flag count 9,567 → 9,559. * B10 unique infants. n_unique_infants_est is NaN unless subject evidence exists; new n_unique_infants_source, n_unique_infants_upper, n_unique_infants_display. * B15 identity. biosample_accession (always) and run_accession (run units) on every sample row. * B3 history. study_verdict_history.parquet (32,231 rows, 56 stage tables) and value_history.parquet (45,591 rows). * B8 confidence. confidence_tiers.csv, tier_field_precision.csv, dictionary paragraph "not a calibrated probability". * B14 reconciliation. Gold recall: 17/22 automated, 18/22 after human review. Age covered: 54,105 body-site-scope samples with age ≤ 1,100 d (v1.1 README 53,802 predates the run-unit fix; site 54,150 counted parent rows and later-superseded values). Multi-run studies: 57 class-C + 6 class-A assessed; the 4 further studies with multi-run BioSamples in the sample table (PRJNA1019702, PRJNA1198101, PRJNA613032, PRJNA613054) share BioSamples with a sibling BioProject (class X_cross_study_biosample, sample_unit_classification_by_study.csv); the dictionary's "33 technical multi-run studies" was the pre-classification heuristic count and is withdrawn. Study n_samples/n_runs now come from runs.parquet (PRJEB49206: 419/457 → 439/477). * Determinations 609,584 − 97 (parent rows) − 23 (superseded conflicting ages) − 125 (superseded title-parser ages) + 9,559 (adult ages) = 618,898.

v1.1 — 2026-09-25 (release v11)

Sample-unit fix (run-level rows for 6 one-BioSample-per-infant deposits), auditor findings applied, group-statement audit.

v1 — 2026-09-25

First public data package.