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
Sweep of closed PRs from the last 10 days (July 1 β July 11, 2026). Issue #166 ("Follow up items for the week of July 4, 2026") is still open; per this repo's CLAUDE.md Β§6 on side-effecting actions, closing/consolidating it is left for @espg rather than done by this routine β its still-open items are re-verified against current main and folded in below rather than duplicated.
(1) Lambda worker IAM role β delete permission spans Lambda's own distribution artifacts β PR #176
The worker execution role's s3:DeleteObject/PutObject grant covers the whole output bucket, which also holds versions.json and layer zips. Review thread (discussion_r3532665667, unresolved) proposed scoping to a prefix; never mitigated. Confirmed current: deployment/aws/execution_role.yaml's WriteOutputObjects statement still includes s3:DeleteObject with no narrower resource split. No tracking issue found.
(2) No hard cap on Lambda read fan-out budget β PR #183
granule_workers Γ read_workers Γ chunk-fetch width can exceed h5coro's S3Driver 100-connection budget. PR #183's body explicitly left this as documentation-only and asked "Add a validate_config warning if you want one?" β never answered. src/zagg/config.py::validate_config still has no such check, and PR #187 already bumped the granule_workers default to 4, increasing exposure.
(3) Direct process_shard callers get an unclamped granule_workers=4 default β PR #187
Callers that bypass the dispatcher aren't clamped to min(K, len(granule_urls)). Raised as "Questions for review" item 3 in the PR; unanswered, no clamp added since.
(4) espg's "belt-and-suspenders" malloc_trim question never answered β PR #140
espg asked in review (issuecomment-4851160003) whether to call malloc_trim at worker start too (not just teardown), given warm-container reuse risk. No reply, and no later PR revisits it. Note: PR #140 fell inside the window #166 already swept, but this specific question wasn't surfaced then β genuinely missed previously, still open now.
(5) Located-field streaming support explicitly rejected, no follow-up filed β PR #165
validate_streaming rejects located fields; the PR body says it's "a small follow-up... say the word and it becomes its own issue/PR." No such issue exists yet. It fails loudly today (not a silent gap), so risk is contained, but the gap is real.
(6) Dead codec-specific render path retained in plot_series.py β PR #196
make_codec_figure/_codec_layout/make_figure flagged in review as "prune in a follow-up. Low priority." (issuecomment-4911533452). Not addressed since.
template.yaml's RecycleMaxInvocations description text left stale (an offer to fix it wasn't taken up); publish_mirror.sh retirement ("in a follow-up" per docs) is still undecided.
(8) runner.py growth under issue #161 β worth re-flagging priority
Not a new gap (already tracked under open issue #161, labels plan+blocked), but the trend is worsening: src/zagg/runner.py is now ~114.6 KB (vs. ~1,360 lines when last measured in PR #70), and deployment/aws/lambda_handler.py (1,163 lines) and src/zagg/config.py (1,747 lines) now also exceed CLAUDE.md Β§4's ~1000-line-without-discussion convention. Flagging for re-prioritization, not as a new tracking target.
Priority / severity table
Priority
Item
Severity
Source
1
Lambda worker IAM role can delete its own distribution artifacts (versions.json, layer zips) β unscoped s3:DeleteObject
π€ from Claude
Sweep of closed PRs from the last 10 days (July 1 β July 11, 2026). Issue #166 ("Follow up items for the week of July 4, 2026") is still open; per this repo's CLAUDE.md Β§6 on side-effecting actions, closing/consolidating it is left for @espg rather than done by this routine β its still-open items are re-verified against current
mainand folded in below rather than duplicated.Re-verification of #166's 10 items:
shard_orderwrite-path knob is now resolved. Contrary to PR update benchmarks: forward sharded-vs-inner tdigest/HEALPix matrixΒ #134's own checklist ("Phase 8 β Not started"), it actually shipped inside that same PR (commit7886243, "phase 8 of issue update benchmarksΒ #133", landed before update benchmarks: forward sharded-vs-inner tdigest/HEALPix matrixΒ #134 merged). Confirmed live insrc/zagg/config.py::get_shard_order,src/zagg/grids/healpix.py,src/zagg/processing/write.py, andtests/test_processing.py::TestShardOrderObjectSplit; issue ShardingCodec doesn't consolidate ragged (tdigest) writes β K serial CSR groups dominate shard write timeΒ #142 already references it as done._write_ragged_fanout/src/zagg/csr.pyentirely in favor of a sharded vlen-bytes layout, which would obsolete both concerns once merged. Still open onmaintoday, so both remain live risks until Sharded vlen-bytes layout for ragged t-digest output (issue 209)Β #211 lands.main.New items this week
(1) Lambda worker IAM role β delete permission spans Lambda's own distribution artifacts β PR #176
The worker execution role's
s3:DeleteObject/PutObjectgrant covers the whole output bucket, which also holdsversions.jsonand layer zips. Review thread (discussion_r3532665667, unresolved) proposed scoping to a prefix; never mitigated. Confirmed current:deployment/aws/execution_role.yaml'sWriteOutputObjectsstatement still includess3:DeleteObjectwith no narrower resource split. No tracking issue found.(2) No hard cap on Lambda read fan-out budget β PR #183
granule_workers Γ read_workers Γ chunk-fetch widthcan exceed h5coro's S3Driver 100-connection budget. PR #183's body explicitly left this as documentation-only and asked "Add avalidate_configwarning if you want one?" β never answered.src/zagg/config.py::validate_configstill has no such check, and PR #187 already bumped thegranule_workersdefault to 4, increasing exposure.(3) Direct
process_shardcallers get an unclampedgranule_workers=4default β PR #187Callers that bypass the dispatcher aren't clamped to
min(K, len(granule_urls)). Raised as "Questions for review" item 3 in the PR; unanswered, no clamp added since.(4) espg's "belt-and-suspenders"
malloc_trimquestion never answered β PR #140espg asked in review (issuecomment-4851160003) whether to call
malloc_trimat worker start too (not just teardown), given warm-container reuse risk. No reply, and no later PR revisits it. Note: PR #140 fell inside the window #166 already swept, but this specific question wasn't surfaced then β genuinely missed previously, still open now.(5) Located-field streaming support explicitly rejected, no follow-up filed β PR #165
validate_streamingrejects located fields; the PR body says it's "a small follow-up... say the word and it becomes its own issue/PR." No such issue exists yet. It fails loudly today (not a silent gap), so risk is contained, but the gap is real.(6) Dead codec-specific render path retained in
plot_series.pyβ PR #196make_codec_figure/_codec_layout/make_figureflagged in review as "prune in a follow-up. Low priority." (issuecomment-4911533452). Not addressed since.(7) Small stale/undecided items in PR #182
template.yaml'sRecycleMaxInvocationsdescription text left stale (an offer to fix it wasn't taken up);publish_mirror.shretirement ("in a follow-up" per docs) is still undecided.(8)
runner.pygrowth under issue #161 β worth re-flagging priorityNot a new gap (already tracked under open issue #161, labels
plan+blocked), but the trend is worsening:src/zagg/runner.pyis now ~114.6 KB (vs. ~1,360 lines when last measured in PR #70), anddeployment/aws/lambda_handler.py(1,163 lines) andsrc/zagg/config.py(1,747 lines) now also exceed CLAUDE.md Β§4's ~1000-line-without-discussion convention. Flagging for re-prioritization, not as a new tracking target.Priority / severity table
versions.json, layer zips) β unscopeds3:DeleteObjecttcp_keepalive(carried forward from #166 item 5) β same idle-kill failure mode #151 was opened forgranule_workers=4default for directprocess_shardcallersmalloc_trimworker-start question never answeredrunner.py/lambda_handler.py/config.pysize growth β already tracked (#161), re-flagging prioritypublish_mirror.sh --credsignores region/endpoint (carried forward from #166 item 2)hyperslicehardening one-liner (carried forward from #166 item 8)plot_series.pyRecycleMaxInvocationsdescription + undecidedpublish_mirror.shretirement