The April 2026 ExternalData fetch failures for ITKSphinxExamplesData CIDs no longer reproduce — main CI has been green since 2026-06-25. What remains is a mirror-list hygiene problem: cloudflare-ipfs.com is a retired gateway that no longer resolves in DNS, and several public IPFS gateways are unreliable enough that a transient outage silently turns ~708 tests into "Not Run".
Original failure (April 2026) — recorded for history
All configured mirrors returned HTTP errors for a set of ITKSphinxExamplesData objects: cloudflare-ipfs.com, w3s.link, ipfs.io, dweb.link, gin.g-node.org, insightsoftwareconsortium.github.io, itk.org.
Affected CIDs:
bafkreid3uloy2yfjqggy5d46aghpb4b5v3q2xaqylkg2uoqsuqc5dh4s7q — Sphere3D.png
bafkreihi6qoq7pqy… — Segmentation.png
bafkreickuima2tmu… — Transparency.png
bafkreiact2ar5jwd… — MiniPipeline.png
Symptoms: 3 ubuntu jobs failed, 4 cancelled by fail-fast; main failed identically (run 24423023702); ~708 tests reported Not Run because the ExternalData targets never resolved.
Current status (re-verified 2026-07-29)
- ITKSphinxExamples
main: "Build, test, publish" success 2026-06-25; weekly main runs green through 2026-07-23. The outage is over.
- Live gateway probe:
ipfs.io → 504, w3s.link → 504 for a known-good control CID as well, dweb.link → 301, cloudflare-ipfs.com → NXDOMAIN. Public-gateway flakiness is ongoing background noise, not a CID-pinning problem.
- Cloudflare shut down its public IPFS gateway; the hostname no longer resolves, so every ExternalData fetch wastes a retry on it.
Requested actions
- Drop
https://cloudflare-ipfs.com/ipfs/%(hash) from the ExternalData URL template list — it is dead. In ITK proper this is CMake/ITKExternalData.cmake:62-63; ITKSphinxExamples inherits the list from ITK, so this part should land as an ITK PR.
- Order the template list so the reliable HTTP mirror (
https://insightsoftwareconsortium.github.io/ITKTestingData/%(algo)/%(hash)) is tried before the public IPFS gateways, so a gateway outage costs latency rather than a failed build.
- Cache the ExternalData object store across CI runs so a mirror outage cannot zero out a run. ITK PR #6109 (
ENH: Cache ExternalData object store across CI runs, merged 2026-04-25) is the pattern to copy; note the cache path is the object store directory (ExternalData/), not <build>/ExternalData/Objects.
- Consider adopting direct-file CIDs, as done in ITK PR #6547 (
ENH: Serve SWIG/PCRE archives via direct-file IPFS CIDs, merged 2026-07-04) — these resolve on more gateways than DAG-wrapped CIDs.
- Longer term, evaluate whether GitHub Releases or the GitHub Pages mirror should be the primary source with IPFS as fallback, rather than the reverse.
The April 2026 ExternalData fetch failures for ITKSphinxExamplesData CIDs no longer reproduce —
mainCI has been green since 2026-06-25. What remains is a mirror-list hygiene problem:cloudflare-ipfs.comis a retired gateway that no longer resolves in DNS, and several public IPFS gateways are unreliable enough that a transient outage silently turns ~708 tests into "Not Run".Original failure (April 2026) — recorded for history
All configured mirrors returned HTTP errors for a set of ITKSphinxExamplesData objects:
cloudflare-ipfs.com,w3s.link,ipfs.io,dweb.link,gin.g-node.org,insightsoftwareconsortium.github.io,itk.org.Affected CIDs:
bafkreid3uloy2yfjqggy5d46aghpb4b5v3q2xaqylkg2uoqsuqc5dh4s7q—Sphere3D.pngbafkreihi6qoq7pqy…—Segmentation.pngbafkreickuima2tmu…—Transparency.pngbafkreiact2ar5jwd…—MiniPipeline.pngSymptoms: 3 ubuntu jobs failed, 4 cancelled by fail-fast;
mainfailed identically (run 24423023702); ~708 tests reported Not Run because the ExternalData targets never resolved.Current status (re-verified 2026-07-29)
main: "Build, test, publish" success 2026-06-25; weeklymainruns green through 2026-07-23. The outage is over.ipfs.io→ 504,w3s.link→ 504 for a known-good control CID as well,dweb.link→ 301,cloudflare-ipfs.com→ NXDOMAIN. Public-gateway flakiness is ongoing background noise, not a CID-pinning problem.Requested actions
https://cloudflare-ipfs.com/ipfs/%(hash)from the ExternalData URL template list — it is dead. In ITK proper this isCMake/ITKExternalData.cmake:62-63; ITKSphinxExamples inherits the list from ITK, so this part should land as an ITK PR.https://insightsoftwareconsortium.github.io/ITKTestingData/%(algo)/%(hash)) is tried before the public IPFS gateways, so a gateway outage costs latency rather than a failed build.ENH: Cache ExternalData object store across CI runs, merged 2026-04-25) is the pattern to copy; note the cache path is the object store directory (ExternalData/), not<build>/ExternalData/Objects.ENH: Serve SWIG/PCRE archives via direct-file IPFS CIDs, merged 2026-07-04) — these resolve on more gateways than DAG-wrapped CIDs.