# Build-corrected three-format comparator rerun (2026-09-22)

## Why this rerun is necessary

The 2026-09-18 adapter incorrectly declared the PLINK2 and Pan-UKBB inputs
as GRCh38. Pan-UKBB's [per-phenotype specification](https://pan.ukbb.broadinstitute.org/docs/per-phenotype-files/index.html)
explicitly gives `pos` in GRCh37 coordinates. The PLINK2 dataset's
[source pipeline](https://github.com/shz9/viprs-paper/blob/master/data_preparation/ukbb_qc_job.sh)
reads UK Biobank v3 imputed BGEN directly; [UK Biobank documents those
coordinates as GRCh37](https://biobank.ndph.ox.ac.uk/ukb/label.cgi?id=100319).
Independent Harmonizer rsID and reference checks also favored GRCh37 for
the PLINK2 file (0.95 build confidence, with 4,974 contradictions under GRCh38
in the preview). No liftover step appears in the cited source preprocessing path.

The old PLINK2 and Pan-UKBB comparator results must not be used as
build-correct GRCh38 outcomes. The source files and normalized core-column
inputs are unchanged; the corrected adapter changes only the declared build
and consequently enables each comparator's GRCh37-to-GRCh38 path.

## Verified PLINK2 rerun

Source: 1,074,448 rows, SHA-256
`19d38fa30bf763be271c189f8bb847211eddb737219c1b1ff4e2e7f4d1c86477`.
Normalized core-column input: SHA-256
`94ea5ed07be41be65d9b82b35c2d7dba7e2998980ce59df1e40b1267ce33059b`,
identical to the 2026-09-18 comparator input.

| Tool | Terminal status | Output rows | Input retention | Interpretation |
|---|---|---:|---:|---|
| GWASLab 4.2.1 | completed | 1,073,886 | 99.9477% | Explicit GRCh37-to-GRCh38 liftover with pinned chain and FASTA; `remove=False`. |
| tidyGWAS 1.0.0 | completed | 1,074,356 | 99.9914% | Correct source build 37; output contains both build positions, with 1,063,833 changed coordinates. |
| MungeSumstats 1.20.0 | failed before row processing | — | — | Missing `SNPlocs.Hsapiens.dbSNP155.GRCh37` at the pinned environment. |

Run metadata, reference paths, tool versions, output checksums, and exact
errors are in each tool's `run_metadata.json`. These figures are retention and
feasibility outcomes, not controlled scientific-field accuracy.

## Pan-UKBB rerun

The normalized input covers all 28,987,534 rows; its SHA-256 is
`ef2cd97c88d73051da55cfba078fd44c300cf2cf39ce7b7dd60a6b333c961a94`,
identical to the 2026-09-18 normalized input. The corrected source build is
GRCh37. Converting the source's `-log10(p)` column to float64 `P` for these
comparators produces 142 zeros by underflow; those records cannot support
exact p-value concordance claims. GWASLab 4.2.1 completed the full
GRCh37-to-GRCh38 run: 28,410,168 output rows (98.0082% input retention),
output SHA-256 `2155f8b2c30ac5ae479900f5c9193e94d582ee468d627545765614eb7e449f38`.
tidyGWAS 1.0.0 also completed with 28,416,180 output rows (98.0291% input
retention) in 673.528 seconds. Its cleaned Parquet SHA-256 is
`178f4e1a4e694a55f6f3e4934d25310abccd2c336afcc4ad1c18585b08386628`.
MungeSumstats 1.20.0 failed before row processing because the pinned
environment lacks `SNPlocs.Hsapiens.dbSNP155.GRCh37`; its exact error is
preserved in `panukbb/mungesumstats/run_metadata.json`. These are retention
and feasibility outcomes, not a controlled truth comparison.

The GWAS Harmonizer Pan-UKBB full-file run
`360d3d79-9776-4ddc-af51-a325d9e9417c` failed with
`Download status failed: No download status found for this file_id.` No
locally verifiable full-file evidence bundle was produced. Its preview counts
must not be used as full-file or cross-tool results.

On 2026-09-23, production logs showed that the latter run had completed a
28,968,245-row export before the six-hour upload-session cleanup removed its
ready job and artifacts. Backend fix `b18342d` separates terminal-job
retention from upload-lease expiry and is deployed. A subsequent connector
start reused the old run ID rather than creating a fresh upload; polling then
failed with `Semantic confirmation failed: Original uploaded file not found.`
The logged count is diagnostic only; a new local evidence bundle is still
required before any Pan-UKBB Harmonizer figure enters the paper.
