From the operator's run logs (pathological image 81602: gpu 38311ms + recurring 413):
Load huge images:Image.MAX_IMAGE_PIXELS = None (trusted local library) so 90–95MP images load instead of hard-erroring at PIL's 2× decompression-bomb limit.
Cap figures per frame (MAX_FIGURES, default 8) like components/panels already are — uncapped, a busy/huge image → hundreds of per-figure CCIP calls + crops → 38s job + oversized submit.
Global per-job region backstop (MAX_REGIONS, default 128): keep the highest-scoring, log the drop, so a submit body can't exceed curator's limit (413).
Stale "active" meter:stop() resets _active to 0 and _bump clamps at 0, so the meter reads 0 the instant you stop and can't go negative from a lagging decrement.
From the operator's run logs (pathological image 81602: `gpu 38311ms` + recurring 413):
- **Load huge images:** `Image.MAX_IMAGE_PIXELS = None` (trusted local library) so 90–95MP images load instead of hard-erroring at PIL's 2× decompression-bomb limit.
- **Cap figures per frame** (`MAX_FIGURES`, default 8) like components/panels already are — uncapped, a busy/huge image → hundreds of per-figure CCIP calls + crops → 38s job + oversized submit.
- **Global per-job region backstop** (`MAX_REGIONS`, default 128): keep the highest-scoring, log the drop, so a submit body can't exceed curator's limit (413).
- **Stale "active" meter:** `stop()` resets `_active` to 0 and `_bump` clamps at 0, so the meter reads 0 the instant you stop and can't go negative from a lagging decrement.
All agent-only. Full CI green on dev.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Trusted local library, not an upload surface, so a legitimately large image
(90–95M px, operator-flagged) must load. PIL only WARNS at the 89M-px default but
RAISES DecompressionBombError at ~179M px, which would fail those jobs. Set
Image.MAX_IMAGE_PIXELS = None. (The agent works off individual extracted files —
curator's archive_extractor unpacks zip/cbz/rar/7z at import — so this is about
big single images, not archives.)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ttrj5P7upUTueSfoJcxEqa
Three safety/robustness fixes from the operator's run logs:
- Cap figures per frame (MAX_FIGURES, default 8) like components/panels already
are. Uncapped, a huge/busy image yielded hundreds of figure boxes → hundreds
of per-figure CCIP calls + crops → a 38s job AND a submit too big to accept
(image 81602 looped on 413). This is the acute fix.
- Global per-JOB backstop (MAX_REGIONS, default 128): if total regions still
exceed the cap (long video), keep the highest-scoring and log the drop, so a
submit body can never blow past curator's limit.
- Stale "active" meter: stop() now resets _active to 0 (no slots remain, so the
meter must read 0 at once), and _bump clamps at 0 so a slot finishing after the
reset can't drive it negative.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ttrj5P7upUTueSfoJcxEqa
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
From the operator's run logs (pathological image 81602:
gpu 38311ms+ recurring 413):Image.MAX_IMAGE_PIXELS = None(trusted local library) so 90–95MP images load instead of hard-erroring at PIL's 2× decompression-bomb limit.MAX_FIGURES, default 8) like components/panels already are — uncapped, a busy/huge image → hundreds of per-figure CCIP calls + crops → 38s job + oversized submit.MAX_REGIONS, default 128): keep the highest-scoring, log the drop, so a submit body can't exceed curator's limit (413).stop()resets_activeto 0 and_bumpclamps at 0, so the meter reads 0 the instant you stop and can't go negative from a lagging decrement.All agent-only. Full CI green on dev.
🤖 Generated with Claude Code