Skip to content

Follow up items for the week of July 4, 2026Β #166

Description

@espg

πŸ€– from Claude

Sweep of closed PRs from the last 10 days (June 24 – July 4, 2026): #44, #70, #103, #105, #106, #107, #111, #112, #113, #115, #123, #124, #125, #127, #128, #129, #131, #134, #136, #140, #144, #146, #147, #150, #152, #153, #159, #162. PRs #103/#105/#106/#107 were already surfaced by the prior sweep (#114); this issue covers new gaps from the remaining 24 PRs, plus a re-verification of #114's 4 carry-forward items against current main. Two of #114's items are now resolved and excluded: the cryocloud notebook now explicitly documents itself as non-Binder-runnable rather than silently requiring credentials, and jupyterhub_example.ipynb no longer has hardcoded deployment-specific ARNs. Two carry-forwards are still open and folded into the list below.

Items

(1) Zero-photon granule segment-read cost still unaddressed in the production read path β€” carry-forward from #114 β€” PR #96 / touched by #152

No July PR added a general per-granule early exit for granules that don't actually cross the shard. PR #152 built an experimental "a-priori read plan" (arm 2a) that can skip the geolocation-rate read using pre-extracted chunk-boundary geometry, but it's wired only into the 88S stress-benchmark config (issue #148, still open) β€” the default _planned_read_group path (src/zagg/processing/read.py) still reads every granule's full coarse-level segment-coordinate + link arrays before it can tell the granule doesn't intersect.

(2) publish_mirror.sh --creds still ignores region/endpoint fields β€” carry-forward from #114 β€” PR #85

Current deployment/aws/publish_mirror.sh only pulls AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_SESSION_TOKEN out of the --creds JSON; region/endpoint still come only from MIRROR_REGION. Unchanged by any PR in this window.

(3) shard_order write-path knob (PR #134 Phase 8) has no tracking issue β€” PR #134

PR #134's own checklist left Phase 8 unstarted: "decouple the sharding object from the dispatch shard... a shard_order knob (parent_order < shard_order <= chunk_inner)... makes large/dense shards (88S) writable under the 2 GB cap." This is the specific mechanism needed to fit dense o8/o9 shards β€” exactly the 88S stress target being actively pursued in #148 β€” under the Lambda memory cap. Issues #138 and #142 mention shard_order only in passing, and #133 (the issue they point back to) is already closed. No issue actually tracks implementing this knob.

(4) Local-backend ragged-write fan-out has no cross-worker concurrency cap β€” PR #147

_write_ragged_fanout (src/zagg/processing/write.py) bounds each worker's inner CSR-write pool at _RAGGED_WRITE_CONCURRENCY = 128 β€” safe on Lambda (one worker per isolated container) but on the local backend the theoretical peak is outer_cells Γ— 128 threads, since fd_safe_max_workers() only floors the per-call bound, not a cross-pool budget. Flagged as an explicit open "Question for review" in PR #147 with no reply in the thread; the flat constant is unchanged.

(5) Sync Lambda-dispatch fallback still has no TCP keepalive, leaving it exposed to the same idle-kill #151 was opened to fix β€” PR #153, Refs #151

The root-cause analysis on #151 proposed a short-term Config(tcp_keepalive=True, ...) fix for the ~4-minute SNAT idle-connection kill; espg went straight to the durable async/poll fix (#153) instead. PR #153's own self-review flagged that keepalive "is now only relevant to the sync fallback path" and needs either a two-line addition or an explicit won't-do note on #151 β€” neither happened, and #151 was closed by #153's merge with no further comment. Confirmed in current src/zagg/runner.py: both boto_config = Config(...) blocks (read_timeout=960 and read_timeout=900) omit tcp_keepalive. The sync path is the documented fallback for oversized async payloads and pre-#153 workers β€” exactly the scenario #151 hit.

(6) Run-level retry budget still missing (per-cell retries have no overall circuit breaker) β€” PR #127, echoes #119

PR #127 fixed per-cell retry behavior (_invoke_lambda_cell in src/zagg/runner.py) but explicitly left standing: "the run-level retry budget... is explicitly out of scope here; the per-cell dispatch/LAMBDA_RETRY path in dispatch.py is untouched." The same gap was flagged in #119 (closed) but never turned into its own issue β€” a systemic failure (e.g. AWS throttling across a whole run) still has no circuit breaker; every cell retries independently.

(7) CSR-write consolidation ("option 2") has no successor tracking issue β€” PR #147, Refs #142

#142 discussed consolidating the K per-inner-chunk CSR groups into one group per dispatch shard (~1500 S3 objects β†’ ~6, cheaper consolidate_metadata), requiring re-offsetting cell_ids into shard-wide space and generalizing the reader's hardcoded _CHUNK_SIDE=64/divmod assumption in src/zagg/readers/tdigest_tensor.py. #142 is now closed, satisfied only by option 1 (the per-cell writes just merged); option 2 has no home.

(8) Upstream h5coro hyperslice hardening left as an untracked one-liner β€” PR #162

PR #162's fix note: the optional upstream setdefault("hyperslice", []) hardening "is out of scope here per the issue β€” it stays a candidate one-liner for a future SlideRuleEarth/h5coro PR." Distinct from #154 (numpy-vectorization hand-off); nothing else tracks this specific defensive nicety.

(9) Browser verification of the ipyleaflet shardmap viewer still deferred β€” PR #44

PR #44's "Questions for review": "Browser verification of the live ipyleaflet map is still deferred (constructs + layers attach headlessly; in-browser rendering can't be verified here)." #74 (globe-view viewer, Phase B) is a separate, larger feature and doesn't cover manually verifying the existing inline widget (src/zagg/viz/leaflet.py) in a real browser.

(10) Two self-acknowledged non-blocking nits in the benchmark runner β€” PR #146

From PR #146's self-review: (a) a target manifest exceeding the 16-way concurrency cap lets already-queued targets finish before an abort rather than stopping immediately; (b) per-target progress lines print only after all targets complete rather than streaming. File: .github/scripts/run_benchmark.py. Both called non-blocking by the author; neither has a tracking issue.


Priority / severity table

Priority Item Severity Source PR
1 Zero-photon granule read cost β€” wasted full segment I/O scales with AOI size, still only fixed experimentally for one benchmark config High #96 (carry-forward)
2 shard_order write-path knob untracked β€” blocks the active 88S dense-shard-under-2GB effort Medium-High #134
3 Local-backend ragged-write fan-out has no cross-worker cap β€” FD/resource-exhaustion risk at scale Medium #147
4 Sync Lambda-dispatch fallback missing TCP keepalive β€” same idle-kill failure mode #151 was opened for Medium #153
5 Run-level retry budget missing β€” no circuit breaker for systemic (not per-cell) failures Low-Medium #127
6 CSR-write consolidation "option 2" β€” object-count/efficiency gap, no correctness impact Low-Medium #147
7 publish_mirror.sh --creds ignores region/endpoint β€” potential mis-upload to wrong region Low #85 (carry-forward)
8 ipyleaflet shardmap viewer browser verification still deferred Low #44
9 Upstream h5coro hyperslice hardening β€” untracked one-liner for a library not owned here Low #162
10 Benchmark runner abort/progress-streaming nits β€” cosmetic, author-acknowledged Low #146

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions