Skip to content

aggregator(alerts): bound mergeClasses keys to a class registry (#3702 disposition 4) #4981

Open

Description

@dezren39

Disposition 4 of design #3702 Phase 3 (audit task 5613, 2026-11-03). mergeClasses (pm-stack/aggregator/src/alerts.ts:119) copies every boolean key from client input into the subscription's classes JSON, so a client can grow that object without bound; classEnabled treats an unknown key as on, so unknown keys are semantically inert today (test pm-stack/aggregator/test/alerts.test.ts:53 pins pass-through for quota-wall).

Accepted for v1 in the audit: no server-side amplification, one row per subscription, growth is client-cooperative, and #3317 is about to introduce real classes — a strict allowlist now would drop them. This issue is the bound once a class registry exists: cap the key count/length and validate against the registry of classes the engine actually consults.

Filed from #3702 Phase 3 audit; no behaviour change landed there by design.

Activity

  1. added
    priority/lowNice to have; do when convenient
    effort/sSmall: expected under 2 hours of work
    app/aggregatorPackage/app: aggregator (pm-stack in this repo)
    app/pm-stackpm-stack (Pad/Grist) in developing-today/code
    on Nov 3, 2026
  2. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    Triage — live, split: cap lands now, registry waits for #3317

    Verified at origin/main 048da81f1 (2026-11-03).

  3. added
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 3, 2026
  4. 28 remaining items

  5. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: task 8572 · repo-fleet-monitor run 2026-11-03 18:12 CST
    • Found via: monitor reconciliation
    • Task: Claim evaporated — task 8572 returned to queued and unclaimed in repo-health-code-pilot after the holding run ended without a terminal verb (checkpoint stage: handed_off). Labels reset to the truth: queue/queued + status/needs-triage. The task cap was also raised this run where it had sat dead-in-queue, so it is claimable again.
    • Expectation: next claimant picks up from the checkpoint stage named above.
  6. added
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 4, 2026
  7. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  8. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: picked_up
    agent: repo-worker-code
    lane: 1a180ae5-384f-4e71-8d77-08f7b1652c75
    task: 8572
    found_via: OpenChamber scheduled-lane queue claim
    revalidation: issue #4981 OPEN; linked PR #5163 OPEN, head d607022
    next: recheck outcome recorded; the PR is authored by dezren39 and the worker runbook forbids touching Drew-owned PRs.

  9. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: blocked
    agent: repo-worker-code
    lane: 1a180ae5-384f-4e71-8d77-08f7b1652c75
    task: 8572
    reason_class: escalated-to-user
    blocker: Owner action required: PR #5163 is authored by dezren39, and the worker protocol forbids touching or merging Drew-owned PRs. At head d607022 the only check is CodeRabbit neutral/rate-limited; there are no Actions runs or commit statuses, so the basic PR-tier check remains absent. Owner must take over or explicitly reassign/authorize a non-Drew owner, then requeue; this lane will not edit or merge the PR.
    links: issue #4981; PR #5163

  10. added
    queue/blockedQueue or user escalation state
    status/blockedQueue or user escalation state
    user/escalatedQueue or user escalation state
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/aggregatorPackage/app: aggregator (pm-stack in this repo)app/pm-stackpm-stack (Pad/Grist) in developing-today/codeeffort/sSmall: expected under 2 hours of workkind/enhancementpriority/lowNice to have; do when convenientqueue/blockedQueue or user escalation statesource/creatorFiled by the new-issue-creator jobstatus/blockedQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemuser/escalatedQueue or user escalation state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions