VESUVIUS CHALLENGE · SEPTEMBER 2026 PROGRESS PRIZE

ScrolIQ

Reproducible scan-health triage and diagnostic provenance. Measure the bottleneck first.

This page is the September submission as submitted. Everything added after the deadline (real-segment and corpus-wide Mesh IQ, OBJ input, truly-disjoint and pre-registered stability results, fail-closed health, Winding and Fiber IQ on real data) is on the October 2026 update. Two numbers here have since been superseded: the stability ρ = 0.7944 was inflated by chunk re-reading (truly disjoint: 0.63; pre-registered v2: 0.750, FAIL, so the leaderboard now shows rank bands), and the evidence table's "synthetic fixtures only" no longer holds for Mesh IQ and Fiber IQ.
Contribution URLs
Repo: github.com/Svyable/scrollq (MIT)
Live evaluator dashboard: svyable.github.io/scrollq
Challenge alignment: ScrolIQ × Vesuvius Challenge open problems
Worked example: what ScrolIQ says about PHerc0813
Companion integrity gate: zarr-pyramid-audit
Update log (no scan-health score changed in any update):
  • Mesh, ink-validation and held-out geometry work described in section (3) and the evidence table; label-coverage join corrected (16 → 14 label_next entries).
  • First Letters target qualification and exact-scan surface-prediction CT support (#43).
  • OME-Zarr v2 reader and whole-bucket chunk audit, pre-registered protocol-pair test (negative result), and prize manifests derived from pinned official sources (#33).
  • Fiber IQ trace-continuity audit, scroliq-fiber (#45), and provenance schema v4 binding held-out ink evidence to its exact report (#44).
64 / 64
listed volcomp scroll volumes scored
real L0 voxels decoded
22.9
mean chunks decoded / volume
24-sample, 5×5×5 campaign
0.7944
Spearman ρ vs resample (September)
below our 0.85 gate; provenance shows
only 2/64 truly disjoint (mean 63% re-read)
superseded Oct 1: ρ = 0.63
14
top-quartile exact-volume entries
flagged “label next”

(1) Which scroll data did you work on?

ScrolIQ was run on the public scroll-volume corpus rather than a hand-picked showcase:

(2) How does it increase the probability of reading the scrolls?

The scarce resources in virtual unwrapping are expert attention, annotation time, and compute. ScrolIQ makes the scan-quality part of that allocation decision measurable instead of implicit. It does not claim to know which scroll contains the easiest text; it tells the team what the CT data actually supports before expensive downstream work begins.

Important negative result: the dense campaign's disjoint resample reaches Spearman ρ = 0.7944, below the documented ρ ≥ 0.85 gate. We publish the failure rather than rounding it away. Mean |Δscore| is 4.195 and top-10 overlap is 7/10; the evidence says the volumes are heterogeneous enough that rankings should be treated as triage bands, not precise truth.

(3) What does it enable that was not possible before?

(4) What evidence have you provided?

claimevidence (in repo)
64 / 64 listed volumes scored; mean 22.9 decoded chunks / volume artifacts/2026-09-30-scrollq-n24-dense/ — volumes.json, campaign log, generated leaderboard, coverage join, and campaign README.
Resample: ρ = 0.7944, mean |Δ| = 4.195, top-10 overlap 7 / 10; documented gate fails. Per-chunk provenance proves only 2/64 volumes were truly disjoint (mean 63% chunk re-read) — ρ is inflated by re-reading artifacts/2026-09-30-resampling-stability/stability-n24-dense-prov.json — rotate 0 vs 13, 64 volumes, 24 samples, spread 5, per-volume Jaccard overlap.
14 top-quartile campaign entries flagged label_next (corrected 2026-10-01 from 16; see below) artifacts/2026-09-30-scrollq-n24-dense/coverage.json — exact-volume label/segment join used by the published leaderboard. The first published version of this file was joined against an empty inventory, so every volume showed zero labels and PHercParis4 (70 ink labels) was wrongly flagged. It was rebuilt from the same 2026-09-30 inventory recorded in the n=4 and n=12 campaigns, and scrollq-coverage now refuses an empty inventory.
Known-success control does not justify calling ordinary target metric values failures artifacts/2026-09-30-pherc1667-scan-control/ — PHerc1667 control comparison for spatial scan metrics.
All 13 Grand Prize targets matched by exact eligible volume; primary frontier contains PHerc0813 and PHerc1447 under the two declared axes artifacts/2026-09-30-grand-prize-qualifier-n24-dense/targets.json — manifest dated 2026-09-30; PHerc1203 higher-resolution substitute explicitly excluded.
First Letters: only PHerc0800 is on the quality × segments frontier in both resample runs (run0: PHerc0800, PHerc0813; run1: PHerc0800, PHerc1545). Across the 22 scans the runs agree at ρ = 0.7211 (mean |Δ| 7.15), below our gate, so quality leaders are reported as a band artifacts/2026-09-30-first-letters-qualifier-n24-dense/ — targets.json, targets_run0.json, targets_run1.json, stability.json (bin/subset_stability.py).
Native CT support reproduces an independent survey: on 18 scans with exact-scan evidence from both, 15 / 18 external values fall inside the native 95% interval; mean |difference| 0.043, max 0.111, ρ = 0.78. The three disagreements are listed, not dropped artifacts/2026-09-30-first-letters-support/ — support_native.json (256 chunks × 22 scans), support_external.json (pinned commit, blob SHAs), agreement.json.
First exact-scan support numbers for PHerc0846A, PHerc1203, PHerc1218, PHerc0125. For PHerc1203 the higher-resolution scan's survey (0.698) overstated eligible-scan support (0.454) by about 0.24. With support as a third axis, PHerc0175B, PHerc0306B, PHerc0490A, PHerc0800 are on the frontier in both runs artifacts/2026-09-30-first-letters-support/README.md, targets_with_native_support.json, targets_run1_with_native_support.json; tests in tests/test_support.py.
Open-bucket chunk audit: 1 declared-vs-stored mismatch across 65 volumes / 390 levels (942,696 sampled objects). PHerc0343P 8.64 µm level 0 stores 555 of 8,543 chunk objects at a size other than declared. The 23 prize-eligible volumes, checked exhaustively (4,228,772 objects), have none. Reported as an observed mismatch; cause unknown; not filed upstream artifacts/2026-10-01-bucket-chunk-audit/ — chunk-audit.json, prize-volumes-full.json, pherc0343p-8.64um-full.json, and an unfiled issue draft.
Pre-registered protocol-pair test is negative: on 4 registered rescan pairs, the documented-better protocol is rated lower by otsu_eta in 3/4 pairs and by edge_sharpness in 2/4. So ScrolIQ scores must not be compared across different scans of the same scroll artifacts/2026-10-01-protocol-pairs/ — protocol-pairs.json (verdict from decide()), run logs, deviation log; protocol: docs/protocol-pairs-protocol.md.
Hand-entered prize manifests match pinned official sources: Grand Prize 13 / 13, First Letters 22 / 22 (volume ID, voxel size, energy, segments, released predictions, same-scroll higher-resolution scans) artifacts/2026-10-01-prize-targets/; regression tests in tests/test_prize_manifest.py.
Combined integrity + quality verdict path proven on live data artifacts/2026-09-30-health-verdicts/ — healthy TRAIN case and defective-data DO NOT TRAIN case.
Native TIFXYZ mesh checks, ink falsification controls, held-out ink validation, fiber trace continuity, and the fit/held-out geometry gap certificate are implemented and tested (synthetic fixtures; not yet run on real community segments or traces) scroliq-mesh, scroliq-ink-audit, scroliq-ink-validate, scroliq-fiber, and scrollq-geometry-probe, with deterministic coverage in tests/test_tifxyz_audit.py, tests/test_ink_audit.py, tests/test_ink_validation.py, tests/test_fiber_audit.py, and tests/test_geometry_probe.py.
Grand Prize provenance requires public held-out validation per trained model, and (schema v4) binds each one to its exact scroliq-ink-validate report; the published example manifest validates with zero errors under v4 docs/grand-prize-provenance.md — schema v2 requires public input + known ground truth, numeric metrics, a public evaluation run, a hashed result artifact, code-commit binding, and same-volume training/validation exclusion proof; schema v4 adds checkpoint, evaluated-array and falsification-control binding (tests/test_provenance.py).
Challenge bottlenecks are represented without inventing downstream confidence docs/open-problems-alignment.md, docs/grand-prize-provenance.md, and the tested CLIs in src/scrollq/.

2027 Grand Prize bridge

ScrolIQ is not an unrolling or ink-detection submission by itself. Its role is to make the path to a qualifying full-scroll submission harder to fool: choose exact eligible data, preserve spatial evidence, expose missing constraints, bind artifacts to the correct CT root, and make provenance fail closed before a result is packaged.

The current Grand Prize tooling therefore favors auditability over a single winner score. The primary target qualifier publishes a Pareto frontier instead of hiding trade-offs inside arbitrary weights; scroliq-recto-coverage requires every declared main/attached/detached component to be unrolled and enforces the strict <10% disconnected-outer-patch exception; provenance schema v3 additionally requires the ledger's mesh-ID set to match the submitted mesh set exactly; passports keep unmeasured stages unknown; provenance validation rejects wrong-volume lineage, training/prediction overlap, and training/held-out overlap while requiring public known-ground-truth validation; mesh and ink evidence remain explicitly partial unless their own direct diagnostics pass.

Design target: ScrolIQ should eventually answer one practical question for each candidate scroll: what specific, evidenced bottleneck prevents the next verified step toward a complete, low-distortion, legible, reproducible unrolling?

Honest scope

The 0–100 ScrolIQ score is scan-health triage only. It is not readability, surface quality, ink quality, or Grand Prize readiness. It does not infer text from CT texture. A high score does not mean a scroll will read; a low score does not prove it will not. The score weights are visible in src/scrollq/score.py, and the September stability gate is published as failed. Surface-prediction CT support is likewise a geometry-prior sanity check: it says how much of a released prediction sits on scanned material, not whether that surface carries ink or text. And because the pre-registered protocol-pair test came out negative, scores from different scans of the same scroll are not comparable.

This distinction is part of the contribution: every later ScrolIQ layer is designed to keep measured, partial, and unknown states separate instead of converting missing evidence into confidence.

One suite, three layers

zarr-pyramid-audit

Don't train on lies. Structural integrity, publish-time gating, and chunk-content probes for the Vesuvius open data.

repo · dashboard

ScrolIQ

Train on the best evidence first. Real-voxel scan-health triage, explicit sampling provenance, coverage joins, stability tests, and the live evaluator leaderboard.

leaderboard · repo

ScrolIQ

Find the bottleneck. Spatial scan maps, diagnostic passports, Grand Prize provenance, winding-input auditing, native TIFXYZ Mesh IQ, Ink IQ falsification controls, and a path toward surface / fiber / spiral / label diagnostics.

open-problems alignment

Team

Solo human contributor: Sven. Muse (AI assistant) was used for implementation, analysis, documentation, and review support. Code is MIT licensed; campaign outputs and the exact evidence behind the published claims are committed in the repository.