22-spike Spike 9 — Prudhomme PROV-O→BFO vendoring CLOSED 2026-05-03 (Batch D second)

Status

CLOSED outcome-VALIDATED 2026-05-03T12:25 BST. 8th spike of 22-spike Q&A-formulation suite to close (after Spikes 1 + 12 + 18 + 22 + 2 + 21 + 3 + 8). SECOND of strict-chain Batch D (Spike 8 → 9 → 10) Group 4 Phase-1 Sprint S1/S2 pre-deliveries. Methodological-foundation spike pre-delivering richard-task #216.

Cascade complete

SurfaceOutcome
T-file~/off-github/library/projects/inherit/T-spike-rt216-prudhomme-prov-o-bfo-vendoring-2026-05-03.md v1.0 (191 lines) at off-github commit db483cf
Spike artefacts~/tools/inherit-spike-corpora/prudhomme-prov-o-bfo-vendoring-artefact/ 13 files: 3 vendored TTLs (prov-bfo / prov-cco / prov-ro) + LICENSE CC0 1.0 + README + CITATION.cff + COMMIT-SHA pin file with sha256sums + extract_sssom.py + prudhomme-prov-o-bfo.sssom.tsv + cross-val.md + prov-bfo-directmappings.owl
arch-stateNO §11/§12/§13 row added — DEFERRED to Phase E Task 13 batch per Group 4 closure mapping
Plan2026-05-03-22-spike-q-and-a-formulation-suite.md v1.18 → v1.19 — §0 Spike 9 ticked + lastmod 11:50 → 12:25 + CHANGELOG row at docs-strategy commit (absorbed by parallel session commit 7d5aded)
richard-tasks#216 → PRE-DELIVERED at docs-personal commit 84b4e76
Memorythis file
MEMORY.mdindexed (forthcoming this session)
Active-work-logCLOSED entry (forthcoming this session)

Findings

#Finding
1Zenodo DOI 10.5281/zenodo.14692262 HTTP 200 (kill clause a NOT-MET); GitHub repo HTTP 200
2LICENSE = CC0 1.0 Universal (public domain dedication; STRICTLY MORE permissive than required CC-BY; kill clause b NOT-MET)
3All 3 vendored TTLs ROBOT-parseable (506 + 486 + parsed-OK triples); ROBOT round-trip via --format ttl succeeds (workaround for OWL/XML save policy on cco/ro files)
473 SSSOM TSV mapping rows extracted via custom Python regex (5 skos:exactMatch + 68 skos:narrowMatch; 48 BFO + 25 CCO targets); sssom-py validate exit 0
5Cross-validation against Spike 8 9-class IRIs: ZERO direct cco anchor overlap; complementary not overlapping; both terminate at BFO 2020 IndependentContinuant root
6Plan defect surfaced: §5 Task 9 Step 1 placeholder DOI XXXXXXX — T6 §0 + §3 already provided exact DOI 14692262; recommend plan v1.19 → v1.20 patch

Vendoring pin reference

repository: https://github.com/BFO-Mappings/PROV-to-BFO
commit_sha: c60847a4b838d25972d899731c0f6bb83716181d
release_tag: v2025-01-19
zenodo_doi: 10.5281/zenodo.14692262
license: CC0-1.0
authors: Tim Prudhomme, Giacomo De Colle, Austin Liebers, Alec Sculley, Peihong Karl Xie, Sydney Cohen, John Beverley
paper_doi: https://www.nature.com/articles/s41597-025-04580-1

richard-task #216 disposition

PRE-DELIVERED 2026-05-03 by Spike 9. Phase-1 Sprint S2 commit-time work reduced from ~1d planned-estimate to ~½d (commit + frontmatter + CI gate registration only).

Reconsideration trigger: Phase-1 Sprint S2 build-start OR Prudhomme upstream releases new version (v2025-01-19 pinned at commit-SHA per A-33).

Next in Batch D strict-chain

  • Spike 10 — B3 #218 G-IRI-VERIFY CI gate (consumes Spike 8 + Spike 9 IRI universe; ≥160 IRIs to HTTP-HEAD verify)

Honesty caveats

  1. Plan defect (DOI placeholder XXXXXXX) prevented blind execution; T6 pre-flight resolved DOI before spike runtime
  2. rdflib (notation3 strict parser) FAILS to parse all 3 vendored TTLs because of empty-prefix swrl Variable declarations without @prefix : <uri> directive — ROBOT (canonical for INHERIT v2 CI) tolerates by treating empty prefix as @base
  3. ROBOT default OWL/XML save fails on prov-cco + prov-ro with INVALID ELEMENT ERROR rdfs:comment: URI policy (OBO-Foundry-specific); workaround: --format ttl round-trip succeeds (Year-2+ uplift candidate)
  4. 73 SSSOM TSV rows is a NAVIGABLE SUMMARY of simple class-class mappings (5 owl:equivalentClass + 68 rdfs:subClassOf); rich union/intersection/restriction axioms preserved in vendored TTL itself
  5. Cross-validation ZERO direct cco anchor overlap with Spike 8 is EXPECTED architecture (complementary anchoring strategies; not a defect)
  6. SSSOM TSV extraction via custom Python regex parser (NOT sssom-py) — sssom-py 0.4.19 lacks TTL-to-SSSOM extraction utility for owl:Axiom annotation patterns
  7. Wall-clock ~25 min (12:00→12:25 BST); pre-flight T6 read saved ~15-20 min over plan’s DOI-resolution steps
  8. 0-byte stale OWL files (failed ROBOT save attempts) removed from durable location post-spike (kept in /tmp/ for forensic completeness)