Skip to content

aggregator(alerts): remove the now-projected GET /api/push/subscriptions (#3702 seam check) #4983

Open

Description

@dezren39

Seam-check finding from design #3702 Phase 3 (audit task 5613, 2026-11-03). Design decision 1 recorded the unused subscriptions GET as removed, not projected (the issue allowed either). #3693 as landed (PR #4413) chose projection: GET /api/push/subscriptions now returns toPublicSubscription rows (pm-stack/aggregator/src/server.ts:1616-1621), so p256dh/auth no longer leak — the contract's secrecy clause holds.

What remains is the enumeration: the projected GET still lists every subscription's endpoint, and the endpoint is exactly the input DELETE /api/push/subscriptions needs (and the page already exposes it for the unsubscribe button). No in-repo client uses the GET (assets/push-client.js POST/DELETE only, /alerts is server-rendered, the engine reads in-process), so removing the handler costs nothing and shrinks the surface the auth posture issue has to defend.

Acceptance: GET handler removed (405/404) with a sentinel test that no subscriptions response contains p256dh/auth/endpoint; POST projection unchanged. If Drew prefers to keep a read, the alternative is a response that omits endpoint, which breaks the DELETE-by-endpoint flow — call that explicitly.

Filed from #3702 Phase 3 audit; the audit landed only the contract statement.

Activity

  1. added
    kind/securitySecurity issue or security hardening
    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. added
    queue/queuedHas a queued task in the Supabase agent queue
    source/creatorFiled by the new-issue-creator job
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  3. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    agent-note:v1
    state: reviewed (coverage loop-back)
    Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 8565 (triage, claimed, priority 30) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
    Found via: coverage loop-back 2026-11-03

  4. added
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    status/blockedQueue or user escalation state
    queue/blockedQueue or user escalation state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 3, 2026
  5. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: blocked
    task: 8565 (repo-health-code-pilot; openchamber-scheduled-lane 9aca43b4-5439-4939-9f71-323f5d32521b)
    reason_class: packet_defect
    state: blocked. Not triaged this run, and no change to the issue.
    defect: the queue packet title reads "Triage #1004: id(web): unused link reference definitions…", but the payload issue URL, dedupe key and body all name #4983. The two titles are different issues. I did not work #1004. Fix the packet title (or re-enqueue for #4983) before this is re-claimed.
    next: the packet owner corrects the title, then the task can be re-queued. Issue stays open.

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/securitySecurity issue or security hardeningpriority/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 item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions