Skip to content

Re-vendor the kitchen_sink spec fixture under the authalic convention - #42

Merged
espg merged 2 commits into
mainfrom
claude/41-authalic-fixtures
Aug 17, 2026
Merged

Re-vendor the kitchen_sink spec fixture under the authalic convention#42
espg merged 2 commits into
mainfrom
claude/41-authalic-fixtures

Conversation

@espg

@espg espg commented Aug 17, 2026

Copy link
Copy Markdown
Owner

Closes #41.

Re-vendors the kitchen_sink spec-conformance fixture under mortie 0.9.8's authalic latitude convention, tracking englacial/zagg#441 (merged 2026-08-16; the fixture re-pin is zagg commit 30866c7d, "re-pin the kitchen_sink spec fixture + content hashes under authalic (issue #438)"). Without this, moczarr's O11 hash gate and its located-word goldens are pinned to pre-authalic morton words and would diverge from any zagg store written on 0.9.8.

Drift list — exactly what moved

Refreshed from englacial/zagg main at b9347561:

file change
tests/data/spec/kitchen_sink/1/1/2/1/3/11213.zarr/6/h_tdigest_signal_locations/c/0 chunk bytes (234 → 234 bytes)
tests/data/spec/kitchen_sink/1/1/2/1/3/11213.zarr/6/h_tdigest_noise_locations/c/0 chunk bytes (282 → 282 bytes)
tests/data/spec/kitchen_sink.expected.json 7 order-29 location words + 2 array hashes + combined

The expected.json diff in full — 10 changed lines, nothing else:

-    "1234197404132082555"        +    "1234197404132082553"     # signal_locations
-    "1234197404132064308"        +    "1234197404132064305"     # noise_locations
-    "1234197404132084476"        +    "1234197404132084473"
-    "1234197404132091646"        +    "1234197404132091643"
-    "1234197404132071993"        +    "1234197404132071987"
-    "1235464041527242174"        +    "1235464041527242548"
-    "1238419528782723259"        +    "1238419528782723258"
-   "6/h_tdigest_noise_locations": "05102b04…"   +  "c4f7ad04…"
-   "6/h_tdigest_signal_locations": "ffd8bcc3…"  +  "11e0a598…"
-  "combined": "57c41348…"                       +  "7ee8ad92…"

Provenance / docs (no bytes):

  • tests/test_spec_conformance.py — fixture pin 9e11e65b9347561, plus an honest statement of the vendoring scope (see "Questions for review").
  • tests/test_composition.pyTestStoreReadBinding fixture pin 9e11e65b9347561; the vendored 6/composition array is byte-identical at the new sha (re-verified by cmp/diff), so this is a pure pin advance.
  • CHANGELOG.md — one Unreleased bullet, so a downstream holding its own copy of the zagg vectors knows to refresh.

Nothing in src/ changed. No reader behavior changed.

How it was verified

Blast radius was measured before anything was edited, by exporting zagg's tests/data/spec at both shas and diffing whole trees against the vendored copy:

  • diff -r zagg@9e11e65/tests/data/spec/kitchen_sink tests/data/spec/kitchen_sinkidentical, i.e. the vendored copy was exactly what PR Repin spec provenance to zagg main 9e11e65 #33 pinned (nothing local had drifted).
  • diff -r zagg@b9347561/… kitchen_sink → the two *_locations/c/0 chunks, plus the pre-existing staleness listed below.
  • minimal and minimal.expected.jsonbyte-identical at b9347561 (authalic does not move them; minimal has no located field).
  • tests/data/composition/{c/0,zarr.json} vs kitchen_sink/…/6/composition/ at b9347561cmp/diff clean.
  • Grepped the whole repo for every old literal (57c41348…, ffd8bcc3…, 05102b04…, and each of the 7 pre-authalic words): every hit is inside kitchen_sink.expected.json — no frozen located-word or parity-hash literal is duplicated in src/, tools/, docs/ or any other test.
  • Confirmed the zagg-side change is the one described: git show --stat 30866c7d is the two chunks, expected.json, and regeneration timestamps — no payload/count/morton/composition array moved.

Testing

Env: uv sync --extra test --extra zagg --extra xdggs → zagg 0.44.0, mortie 0.9.8 (so the live-zagg parity legs ran, not skipped).

  • Baseline on clean origin/main (d3b4115): 768 passed, 2 skipped.
  • This branch: 768 passed, 2 skipped — same count, no test added or removed.
  • The only two skips are by design: test_hhdc.py:230 ("runs only in a core (no-zagg) environment") and a dask-gated test_moc_index case.
  • ruff check src tests tools clean; ruff format --check clean (44 files).

The gate that matters here is TestDecodedValues::test_o11_content_hashes_match (moczarr's own §5 O11 recipe over the refreshed chunks reproduces the new zagg-recorded hashes, including combined) and TestStrataFields::test_located_strata_match_expected (decoded uint64 location words equal the refreshed goldens, byte-exact).

Questions for review

  1. The vendored fixtures were already stale in a second, unrelated way — I deliberately did not fix that here. diff -r against zagg main also reports, for both minimal and kitchen_sink:

    None of that is #441 and none of it is read by this suite (every byte these tests touch is identical at b9347561), so pulling it in would have added ancestor overview zarrs to the fixture tree — a change of what the vectors are, with its own effect on leaf enumeration — under a fixture-refresh PR. I reworded the test_spec_conformance docstring to say precisely what is vendored (the leaf subtree + morton_hive.json) rather than keep the now-false blanket "vendored byte-identical, re-verified diff -r". Want a follow-up issue to adopt the pyramid-era fixture surface, or is the leaf-subset vendoring the intended steady state?

  2. I left the two spec-text pins alone (src/moczarr/ragged.py and src/moczarr/composition.py both say the § references are "re-checked at 9e11e65"). Unlike the fixture pins, those assert a read-through of docs/specification.md, which grew +656/−45 lines between the two shas. §3 (composition) is byte-identical, so composition.py could move safely — but §1/§2 gained a new reader-relevant MUST: §2.0 weights (GEDI waveform aggregation template: photon-currency digests (plan) englacial/zagg#422), where a digest payload array declares counts vs flux and "a reader MUST strict-check the value". moczarr does not gate on weights today, so advancing ragged.py's pin would assert a re-check that has not happened. Following PR Repin spec provenance to zagg main 9e11e65 #33's precedent (it declined the §5.3 overview-sidecar sentence and filed Read (and verify) the D20 sidecars zagg now writes for overview leaves #32 instead), this looks like its own issue rather than a line in a fixture PR — confirm, and I'll leave both spec-text pins at 9e11e65 until it's worked?

  3. tests/data/strata_hive also carries located words, generated from a much older zagg checkout (166e908, recorded zagg_version: 0.39.1.dev44+g166e908e4). zagg#441 did not touch it and it is self-consistent, so it is untouched here — flagging only so the asymmetry is on the record.

@espg
espg merged commit a0cce5b into main Aug 17, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Re-vendor zagg spec fixtures under the authalic convention (zagg#441)

1 participant