🤖 from Claude
Surfaced by the gridlook PR #7 cross-implementation review (finding): the v1.0 spec page §6.1 declares path_grouping but never states which component absorbs the remainder when order % grouping ≠ 0. Three implementations — gridlook TS (hive.ts), moczarr (group_digits, PR #17), and the pg3 fixture layout — all independently chose "leading components full-width, last component carries the remainder" (e.g. order 8, grouping 3 → 3+3+2: 4/331/422/41/433142241.zarr), with moczarr's recorded justification: it is the only rule that preserves shared ancestor directories across mixed shard orders. They agree today by convergent judgment, not by contract — a fourth implementation could legally pick remainder-first and produce disjoint trees.
Fix: one sentence + one worked example in §6.1 freezing leading-full-width/remainder-last as normative, plus a drift-pin case in test_spec_page.py if the page grows a path-construction example table. Also worth stating explicitly (both current implementations assume it): the {sign+base} component stands alone and does NOT participate in grouping.
Refs: espg/gridlook#7 (the review evidence + differential harness), espg/moczarr#17 (group_digits), zagg D21 / #300 ratifications.
🤖 from Claude
Surfaced by the gridlook PR #7 cross-implementation review (finding): the v1.0 spec page §6.1 declares
path_groupingbut never states which component absorbs the remainder when order % grouping ≠ 0. Three implementations — gridlook TS (hive.ts), moczarr (group_digits, PR #17), and the pg3 fixture layout — all independently chose "leading components full-width, last component carries the remainder" (e.g. order 8, grouping 3 →3+3+2:4/331/422/41/433142241.zarr), with moczarr's recorded justification: it is the only rule that preserves shared ancestor directories across mixed shard orders. They agree today by convergent judgment, not by contract — a fourth implementation could legally pick remainder-first and produce disjoint trees.Fix: one sentence + one worked example in §6.1 freezing leading-full-width/remainder-last as normative, plus a drift-pin case in
test_spec_page.pyif the page grows a path-construction example table. Also worth stating explicitly (both current implementations assume it): the{sign+base}component stands alone and does NOT participate in grouping.Refs: espg/gridlook#7 (the review evidence + differential harness), espg/moczarr#17 (
group_digits), zagg D21 / #300 ratifications.