Skip to content

aggregator(alerts): sanitize stored out-of-range quiet prefs at read time (#3702 disposition 1) #4978

Closed

Description

@dezren39

Disposition 1 of design #3702 Phase 3 (audit task 5613, 2026-11-03). mergeQuiet now rejects out-of-range clock times (#3686), so no new bad row can be stored, but rows written before that fix are still read raw:

  • inQuietHours (pm-stack/aggregator/src/alerts.ts:168) converts quiet.start/quiet.end with toMin() without validating them, so a stored 99:99 becomes minute 6039 and 24:60 becomes 1500 — the window silently becomes a different one (often suppressing almost the whole day).
  • The /alerts prefs form renders the stored string straight back (pm-stack/aggregator/src/render.ts formQuietStart/formQuietEnd).

Design decision 3 says stored rows are not silently rewritten, so the fix is a read-side sanitize (pass stored values through mergeQuiet before use, or clamp per field to the default) and/or a one-off data fix with the row ids recorded. Either way the audit wants the old rows' fate to be explicit rather than a silent reinterpretation.

Also covers the stored-invalid-tz half of disposition 3: an unknown stored zone makes inQuietHours fail open (return false, no suppression) — deliberate for delivery, but the read path should probably fall back to the default zone instead of disabling quiet hours.

Acceptance: a test that a stored 99:99/24:60/bad-tz row produces the default window (or a documented fail-open), and a note on #3702 saying whether production rows were found and fixed.

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

Activity

  1. added
    kind/bugSomething isn't working (prefixed form of the classic bug label)
    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
    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
  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. 40 remaining items

  4. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    agent-note:v1

  5. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  6. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  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
    task 8593 picked up by lane code-g; execution lane opencode with a bound claimant session already recorded (ses_e5e5cad3cadffemQ5io2NYBnVf) — handed off; the bound session drives task 8593 to its terminal state. Issue #4978 OPEN, PR #5169 OPEN (canonical), no hard-stop labels.

  9. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · bound

  10. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  11. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  12. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor
    No description provided.
  13. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  14. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

    • Agent: queue worker (repo-worker-code), lane code-a
    • Session / ID: task 8593
    • Found via: queue claim
    • Task: execution lane is opencode — handed to the opencode claimant, which launches a session bound to task 8593
    • Expectation: claimant session drives task 8593 to its terminal state
    • Links: queue task 8593
  15. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

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/bugSomething isn't working (prefixed form of the classic bug label)priority/lowNice to have; do when convenientqueue/claimedQueue worker lifecycle statesource/creatorFiled by the new-issue-creator jobstatus/in-progressQueue worker lifecycle statetask/triageQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions