π€ from Claude
Sweep of closed PRs from the last 10 days (June 17β27, 2026): #53, #55, #57, #58, #59, #70, #72, #76, #84. Items already individually tracked as open issues (#78, #79, #80, #81, #83) or fully addressed in the prior sweep issue (#73) are excluded. Items (7)β(10) are carry-forwards from #73 that are not yet individually tracked.
Items
(1) // floor-division (Morton coarsening) operator β deferred β PR #72
PR #72 added moc_min / common_ancestor and documented // as the reduce-by-common-coarsening sibling of clip2order. The operator was explicitly called "deferred" in the PR body. No tracking issue exists. Scope: MortonIndex // n coarsening to a given order, matching Python // semantics.
(2) Morton __repr__ deferred to a separate PR β PR #76
PR #76's body explicitly notes: "no morton __repr__ is added here β that was deferred to a separate PR." No issue has been opened. A useful repr (e.g. MortonCell(order=12, base=3, ...) rather than a raw int) would significantly improve interactive usability and debugging.
(3) res2display() order cap silently wrong above order 20 β PR #76
res2display() in tools.py loops only to order 20 and prints km-only units. With the packed-u64 encoding now supporting order 29, the function returns None for any order above 20 β silently giving wrong output for the ~11 new usable orders. Should extend to order 29 with readable units (m at fine scales).
(4) Earthdata-gated notebooks not publicly Binder-runnable β PR #76
Three of the five updated example notebooks (velocity/grounding line workflows) require authenticated earthaccess downloads and cannot run on public Binder without credentials. PR #76 asked: "Leave as-is, or open a follow-up to cache a small anonymous subset in-tree?" β no decision was made. CLAUDE.md Β§4 states notebooks "should be runnable on binder" with "publicly (anonymously) reachable" data, so this is a compliance gap.
(5) split_base_cells dict entry ordering β decision pending β PR #84
PR #84 added split_base_cells with an open question on dict ordering: first-seen (insertion order from traversal) vs sorted by base cell id. This is an API/behavior decision that affects reproducibility and testability. No determinism test can be written until this is decided.
(6) split_base_cells Python wrapper vs Rust group_by kernel β decision pending β PR #84
A sorted-output variant of split_base_cells could be a Python wrapper (sort the existing dict result) or a new Rust group-by kernel. The current implementation is pure Python. PR #84 raised this as an open question for @espg. No decision recorded.
(7) CI versioning automation β PR #55 / carry-forward from #73
Still unaddressed: the most recent Cargo.toml bump commit message reads "REALLY needs to be automated!!!" (commit 1cf29c2, June 25). Manual Cargo.toml bumps remain the only release path and will keep causing friction on every release. Risk: version drift between the git tag that triggers build-wheels.yml and the Cargo.toml version that sets the wheel version.
(8) mort2norm FORCE_PYTHON remnant β PR #49 / carry-forward from #73
mort2norm's _python_mort2norm fallback, the os.environ env-var switch, and the os import remain in tools.py. CLAUDE.md Β§7 states the Rust extension is the sole runtime path β this remnant is inconsistent with that guarantee. Scope: one function + ~5 lines of cleanup.
(9) Clippy useless_conversion 27 warnings β decision pending β PR #57 / carry-forward from #73
27 pre-existing clippy warnings remain on main from the pyo3/numpy ? idiom (false-positive clippy::useless_conversion β the conversion is load-bearing). PR #57 left the decision open: keep as-is (noisy clippy output) or add #[allow(clippy::useless_conversion)] at the crate root. Tracked broadly under #48 but never individually filed.
(10) Benchmark scripts reference removed FORCE_PYTHON functions β PR #49 / carry-forward from #73
benchmarks/benchmark_rust_vs_python.py and benchmark_morton_bbox.py still set MORTIE_FORCE_PYTHON. For the four removed functions this env var is now a no-op; the benchmarks silently measure only the Rust path while claiming to compare Rust vs Python. Not run by CI so no failure, but misleading. Scope: small update or deletion.
Priority / severity table
| Priority |
Item |
Severity |
Source PR |
| 1 |
res2display() order cap at 20 β silent wrong output for orders 21β29 |
High |
PR #76 |
| 2 |
CI versioning automation β repeated manual pain, explicitly flagged by committer |
Medium-High |
PR #55 |
| 3 |
Earthdata-gated notebooks β 3 notebooks can't run on public Binder (CLAUDE.md Β§4 gap) |
Medium |
PR #76 |
| 4 |
mort2norm FORCE_PYTHON remnant β violates Β§7 Rust-only guarantee |
Medium |
PR #49 |
| 5 |
Morton __repr__ missing β deferred usability gap, no issue filed |
Medium |
PR #76 |
| 6 |
// Morton coarsening operator β deferred API gap, no issue filed |
Medium |
PR #72 |
| 7 |
split_base_cells ordering decision β blocks writing determinism tests |
Low-Medium |
PR #84 |
| 8 |
split_base_cells Python vs Rust implementation site β performance decision |
Low |
PR #84 |
| 9 |
Benchmark scripts reference removed FORCE_PYTHON β misleading dead code |
Low |
PR #49 |
| 10 |
Clippy useless_conversion 27 warnings β decision pending (broadly tracked in #48) |
Low |
PR #57 |
π€ from Claude
Sweep of closed PRs from the last 10 days (June 17β27, 2026): #53, #55, #57, #58, #59, #70, #72, #76, #84. Items already individually tracked as open issues (#78, #79, #80, #81, #83) or fully addressed in the prior sweep issue (#73) are excluded. Items (7)β(10) are carry-forwards from #73 that are not yet individually tracked.
Items
(1)
//floor-division (Morton coarsening) operator β deferred β PR #72PR #72 added
moc_min/common_ancestorand documented//as the reduce-by-common-coarsening sibling ofclip2order. The operator was explicitly called "deferred" in the PR body. No tracking issue exists. Scope:MortonIndex // ncoarsening to a given order, matching Python//semantics.(2) Morton
__repr__deferred to a separate PR β PR #76PR #76's body explicitly notes: "no morton
__repr__is added here β that was deferred to a separate PR." No issue has been opened. A useful repr (e.g.MortonCell(order=12, base=3, ...)rather than a raw int) would significantly improve interactive usability and debugging.(3)
res2display()order cap silently wrong above order 20 β PR #76res2display()intools.pyloops only to order 20 and prints km-only units. With the packed-u64 encoding now supporting order 29, the function returnsNonefor any order above 20 β silently giving wrong output for the ~11 new usable orders. Should extend to order 29 with readable units (m at fine scales).(4) Earthdata-gated notebooks not publicly Binder-runnable β PR #76
Three of the five updated example notebooks (velocity/grounding line workflows) require authenticated
earthaccessdownloads and cannot run on public Binder without credentials. PR #76 asked: "Leave as-is, or open a follow-up to cache a small anonymous subset in-tree?" β no decision was made. CLAUDE.md Β§4 states notebooks "should be runnable on binder" with "publicly (anonymously) reachable" data, so this is a compliance gap.(5)
split_base_cellsdict entry ordering β decision pending β PR #84PR #84 added
split_base_cellswith an open question on dict ordering: first-seen (insertion order from traversal) vs sorted by base cell id. This is an API/behavior decision that affects reproducibility and testability. No determinism test can be written until this is decided.(6)
split_base_cellsPython wrapper vs Rustgroup_bykernel β decision pending β PR #84A sorted-output variant of
split_base_cellscould be a Python wrapper (sort the existing dict result) or a new Rust group-by kernel. The current implementation is pure Python. PR #84 raised this as an open question for @espg. No decision recorded.(7) CI versioning automation β PR #55 / carry-forward from #73
Still unaddressed: the most recent Cargo.toml bump commit message reads "REALLY needs to be automated!!!" (commit
1cf29c2, June 25). Manual Cargo.toml bumps remain the only release path and will keep causing friction on every release. Risk: version drift between the git tag that triggersbuild-wheels.ymland theCargo.tomlversion that sets the wheel version.(8)
mort2normFORCE_PYTHON remnant β PR #49 / carry-forward from #73mort2norm's_python_mort2normfallback, theos.environenv-var switch, and theosimport remain intools.py. CLAUDE.md Β§7 states the Rust extension is the sole runtime path β this remnant is inconsistent with that guarantee. Scope: one function + ~5 lines of cleanup.(9) Clippy
useless_conversion27 warnings β decision pending β PR #57 / carry-forward from #7327 pre-existing clippy warnings remain on main from the pyo3/numpy
?idiom (false-positiveclippy::useless_conversionβ the conversion is load-bearing). PR #57 left the decision open: keep as-is (noisy clippy output) or add#[allow(clippy::useless_conversion)]at the crate root. Tracked broadly under #48 but never individually filed.(10) Benchmark scripts reference removed FORCE_PYTHON functions β PR #49 / carry-forward from #73
benchmarks/benchmark_rust_vs_python.pyandbenchmark_morton_bbox.pystill setMORTIE_FORCE_PYTHON. For the four removed functions this env var is now a no-op; the benchmarks silently measure only the Rust path while claiming to compare Rust vs Python. Not run by CI so no failure, but misleading. Scope: small update or deletion.Priority / severity table
res2display()order cap at 20 β silent wrong output for orders 21β29mort2normFORCE_PYTHON remnant β violates Β§7 Rust-only guarantee__repr__missing β deferred usability gap, no issue filed//Morton coarsening operator β deferred API gap, no issue filedsplit_base_cellsordering decision β blocks writing determinism testssplit_base_cellsPython vs Rust implementation site β performance decisionuseless_conversion27 warnings β decision pending (broadly tracked in #48)