Skip to content

Follow up items for the week of July 11, 2026Β #212

Description

@espg

πŸ€– 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 main and folded in below rather than duplicated.

Re-verification of #166's 10 items:

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/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.

(7) Small stale/undecided items in PR #182

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 High #176
2 Zero-photon granule read cost (carried forward from #166 item 1) β€” wasted full segment I/O by default High #166 / PR #96
3 No hard cap on Lambda read fan-out budget β€” can exceed h5coro's 100-connection budget, risk increased by #187's default bump Medium-High #183
4 Sync Lambda-dispatch fallback missing tcp_keepalive (carried forward from #166 item 5) β€” same idle-kill failure mode #151 was opened for Medium #166 / PR #153
5 Unclamped granule_workers=4 default for direct process_shard callers Medium #187
6 malloc_trim worker-start question never answered Medium #140
7 runner.py / lambda_handler.py / config.py size growth β€” already tracked (#161), re-flagging priority Medium #161
8 Run-level retry budget missing (carried forward from #166 item 6) β€” no circuit breaker for systemic failures Low-Medium #166
9 Local-backend ragged-write fan-out cap / CSR-write consolidation (carried forward from #166 items 4, 7) β€” in flight via draft PR #211 Low-Medium #166 / PR #211
10 Located-field streaming rejected, no follow-up filed Low-Medium #165
11 publish_mirror.sh --creds ignores region/endpoint (carried forward from #166 item 2) Low #166
12 Upstream h5coro hyperslice hardening one-liner (carried forward from #166 item 8) Low #166
13 ipyleaflet shardmap viewer browser verification deferred (carried forward from #166 item 9) Low #166
14 Benchmark runner abort/progress-streaming nits (carried forward from #166 item 10) Low #166
15 Dead codec-specific render path in plot_series.py Low #196
16 Stale RecycleMaxInvocations description + undecided publish_mirror.sh retirement Low #182

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