Skip to content

2026-08-07 hio architecture review

Adversarial architecture review of the S3-first hio library and histo.io seam.

Work Done

  • Read the implementation on histo branch feat/fk/s3-io (commits 39c3c1f2..f216f8da) without editing the repository.
  • Compared the hio raster/physical-space abstraction conceptually with xarray, SpatialData, TensorStore, Icechunk, and OME-NGFF.
  • Reported exact-line findings to the parent agent. The highest risks were mutable-key overwrite masquerading as atomic commit, lack of writer fencing/spec validation, resolution views whose declared geometry differs from returned array shape, incomplete OME-NGFF 0.5 semantics, lack of a transform graph and multi-array transaction, and eager control-plane materialization at OTLS scale.
  • Recommended keeping hio a thin physical-space facade while using a proven async data plane, NGFF metadata tooling/validation, SpatialData-style heterogeneous coordinate models, and immutable snapshot transactions.

Lessons Learned: Pitfalls

  • The library README’s “commit is one small write, last” statement is true only for first publication under a single-writer/immutable-URI assumption. The default overwrite=True helper mutates keys still referenced by already-published metadata, so it provides neither snapshot isolation nor atomic replacement.
  • Existence-based resume is safe only after the geometry/layout/producer identity has been durably bound to the store and only with one fenced writer. Checking shape and dtype is insufficient.
  • The repository’s own references already record OME-NGFF’s dimension_names requirement and transaction alternatives, but the implementation does not yet enforce them.
  • The required knowledge-base reading was useful for workstream context but did not contain design-specific hio guidance; the branch proposal and references were the relevant sources.

Lessons Learned: Improvements

  • Add a durable histo SOP/checklist for storage publication: immutable generations, CAS publication, writer fencing, resume-spec hashes, multi-array commit, cache versioning, and no post-commit mutation.
  • Add an OME-NGFF conformance checklist and official-validator test, including dimension_names, standard label linkage, channel metadata, transformations, and collections.
  • Add architecture invariants to tests: Image.read(region).shape must match its declared output geometry for every level policy; concurrent writer/overwrite/read histories must never expose hybrids; panoptic semantic and instance maps must publish as one dataset version.
  • Benchmark bounded streaming and cancellation at realistic 3D object counts, not only tile throughput on small stores.
Navigation

Type to search…

↑↓ navigate↵ selectEsc close