You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Filed per espg's directive (in-session, 2026-08-16; surfaced by PR #42's Questions for review). zagg's spec §2.0 (englacial/zagg#422, landed in zagg PR #431) added a reader-relevant MUST that moczarr does not yet gate on: digest payload arrays carry a sibling spec-owned weights declaration — "counts" (integers ≥ 1, sum = exact obs count; absent key ⇒ counts, every pre-#431 store conformant verbatim) vs "flux" (positive reals, sum estimates detected photoelectrons, gain {name, version} provenance required beside it). Merges are legal only between matching declarations.
The gap: moczarr decodes digest payloads without reading the declaration, so a flux store (arriving with the GEDI template — zagg PR #432, then #426) would silently decode as counts: sum(weights) would be presented as an observation count when it is photoelectron flux. Any moczarr-side fold/summary surface compounds it (merging across declarations is illegal under §2.0).
Scope:
Read the weights declaration off payload arrays (leaf and derived/overview — both are stamped since zagg PR #431's fold) with the absent ⇒ counts default.
Surface it on the read API (whatever shape fits moczarr's conventions) so consumers can distinguish count-sums from flux-sums.
Refuse (or loudly type) any moczarr-side operation that would combine payloads across mismatched declarations — mirror zagg's check_weights_match posture.
Parity coverage: the flux/ conformance fixture zagg PR #431 added (tests/data/spec/flux/) is the natural vendored vector — fractional flux sums, gain attrs, stamped overview arrays.
Not in scope: the pyramid-era fixture surface (all.pyramid.* / zagg-pyramid/2) — that adoption waits on the #36/#37 multiscale-reader work, per the standing Q on PR #42.
🤖 from Claude
Filed per espg's directive (in-session, 2026-08-16; surfaced by PR #42's Questions for review). zagg's spec §2.0 (englacial/zagg#422, landed in zagg PR #431) added a reader-relevant MUST that moczarr does not yet gate on: digest payload arrays carry a sibling spec-owned weights declaration —
"counts"(integers ≥ 1, sum = exact obs count; absent key ⇒ counts, every pre-#431 store conformant verbatim) vs"flux"(positive reals, sum estimates detected photoelectrons,gain{name, version} provenance required beside it). Merges are legal only between matching declarations.The gap: moczarr decodes digest payloads without reading the declaration, so a flux store (arriving with the GEDI template — zagg PR #432, then #426) would silently decode as counts:
sum(weights)would be presented as an observation count when it is photoelectron flux. Any moczarr-side fold/summary surface compounds it (merging across declarations is illegal under §2.0).Scope:
check_weights_matchposture.flux/conformance fixture zagg PR #431 added (tests/data/spec/flux/) is the natural vendored vector — fractional flux sums,gainattrs, stamped overview arrays.src/moczarr/ragged.py,src/moczarr/composition.py, currently at zagg9e11e65) in the same PR — this issue is the re-check the pin advancement asserts (the PR Repin spec provenance to zagg main 9e11e65 #33 → Read (and verify) the D20 sidecars zagg now writes for overview leaves #32 precedent: never move a pin without performing the delta review; the §1/§2 delta IS this issue).Not in scope: the pyramid-era fixture surface (all.pyramid.* / zagg-pyramid/2) — that adoption waits on the #36/#37 multiscale-reader work, per the standing Q on PR #42.
Refs: PR #42 (Q2), PR #33 / #32 (pin-advancement precedent), englacial/zagg#422, zagg PR #431.