Skip to content

feat(alertmanager): route paperclip_data_volume to an owner + sync docker adapter-pin test (BLO-10699) - #448

Merged
kkroo merged 4 commits into
masterfrom
omar/blo10699-alert-owner-route
Jun 17, 2026
Merged

feat(alertmanager): route paperclip_data_volume to an owner + sync docker adapter-pin test (BLO-10699)#448
kkroo merged 4 commits into
masterfrom
omar/blo10699-alert-owner-route

Conversation

@kkroo

@kkroo kkroo commented Jun 17, 2026

Copy link
Copy Markdown

Issue (inline description — BLO-10699 follow-up)

What happened?
The byte-usage watermark alerts on the shared paperclip-data CephFS PVC
(PaperclipDataVolumeNearlyFull / PaperclipDataVolumeCritical, shipped in
onprem-k8s#804) carry the label class: paperclip_data_volume. The alertmanager
plugin's DEFAULT_OWNER_MAP only routes class: paperclip_claude_k8s, so this
new alert resolves to source: "no-match" and the auto-created Paperclip issue
is unassigned — nobody is paged for a filling shared HOME that walls the
whole agent fleet at workspace materialization (the EDQUOT incident itself).

Expected behavior
The data-volume alert class routes to a durable default owner, like every other
bundled alert class.

Steps to reproduce
Fire an Alertmanager alert with labels.class = "paperclip_data_volume" and no
paperclip_assignee_email override → today the resulting issue has no assignee.

Paperclip version or commit
master @ c772d35 (current tip).

Thinking Path

The resolver (owner-resolver.ts) is pure and order-driven: a direct override
label wins first, then the merged ownerMap is matched by label key, then an
annotation override, else no-match. The data-volume alert carries no override
labels, so the only place to give it an owner without operator config is the
bundled DEFAULT_OWNER_MAP — exactly where paperclip_claude_k8s already lives,
keyed on the same class label. So the minimal, consistent fix is one map entry
mirroring the existing class route, rather than touching resolution logic. I kept
it in DEFAULT_OWNER_MAP (not a hardcoded resolver branch) because mergeOwnerMap
in worker.ts layers operator instance config on top of the defaults, so this stays
an overridable default, not a lock, and is covered by the existing merge tests.

What Changed

Verification

  • pnpm exec vitest run in paperclip-plugin-alertmanager: 72/72 pass (owner-resolver 24, worker 30, issue-mapping 18).
  • Traced resolveOwnerEmail → the class label hits the merged map → email branch → owner-map. mergeOwnerMap is key-additive, so operator overrides remain intact (covered by existing worker tests).

Risks

  • Minimal. Additive map key; no behavior change for any other alert class. Worst case the route is "wrong owner" (support@), trivially overridable via instance ownerMap config without a code change. No schema/secret/infra change.

Model Used

Claude Opus 4.8 (1M context).

  • I searched for existing/duplicate work before opening this PR (BLO-10699 follow-up; this is the routing-key item flagged in onprem-k8s#804's body).

🤖 Generated with Claude Code

…er (BLO-10699)

The byte-usage watermark alert on the shared `paperclip-data` CephFS PVC
(PaperclipDataVolumeNearlyFull/Critical, onprem-k8s#804) carries
`class: paperclip_data_volume` but had no entry in DEFAULT_OWNER_MAP, so it
fired unassigned. Add a durable default route to support@blockcast.net,
mirroring the existing paperclip_claude_k8s route. Operator config still
overrides via mergeOwnerMap (worker.ts).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@allyblockcast

allyblockcast Bot commented Jun 17, 2026

Copy link
Copy Markdown

Hey @kkroo! Before this PR can be reviewed, a few things need attention:

Missing or incomplete:

Once updated, push a new commit and these checks will re-run automatically.

— commitperclip

… added)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@allyblockcast

allyblockcast Bot commented Jun 17, 2026

Copy link
Copy Markdown

Hey @kkroo! Before this PR can be reviewed, a few things need attention:

Missing or incomplete:

  • Thinking Path needs more detail (2 sentences — aim for 3+)

Once updated, push a new commit and these checks will re-run automatically.

— commitperclip

kkroo and others added 2 commits June 17, 2026 21:02
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#447 bumped CLAUDE_K8S_REF af5df84→f79ab9a and OPENCODE_K8S_REF
4b195304→cac7d0b in the Dockerfile but did not update
docker-opencode-runtime-pin.test.ts, which hard-pins the expected SHAs.
That left master red (Release verify_canary) and broke every PR off master.
Update the two pinned SHAs to match; all comment-string assertions still hold.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@kkroo kkroo changed the title feat(alertmanager): route paperclip_data_volume alert class to an owner (BLO-10699) feat(alertmanager): route paperclip_data_volume to an owner + sync docker adapter-pin test (BLO-10699) Jun 17, 2026
@kkroo
kkroo merged commit 7d628ce into master Jun 17, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant