Skip to content

aggregator: Phase 3 of #2576 — extractor and mapper boundaries on the shared primitives #2579

Closed

Description

@dezren39

Phase 3 of design #2576 (aggregator ingest, fail-closed). Design doc: files/designs/code-aggregator-ingest-contract.md in the keep-the-four-repos-healthy goal workspace. Gated on Phase 1 (the validate.ts primitives) — status/blocked until it lands. Independent of Phase 2.

Scope

Put the extractor and mapper boundaries on the shared primitives from Phase 1 of #2576:

Named scope rule (from the design)

For each of #2383 #2470 #2492 #2508 #2551 #2553 #2568 #2571 #2493 #2531 #2539 #2543 #2574: if still open when this phase starts, this phase closes it with evidence; if already closed per-site, verify its guard uses validate.ts (convert if it hand-rolled) — never re-fix a landed fix.

Acceptance criteria

  • Every function named above validates via validate.ts primitives; malformed input yields the contract outcome for its boundary (retain / drop-and-count / refuse), never a throw, a fabricated row, or live out-of-range data.
  • An impossible date in any extractor marks only its own entry unparseable; sibling pools' reads are unaffected.
  • Probe-matrix tests cover each converted boundary with its issue's repro shape.
  • Verification runs in CI per fleet policy (no builds on the sandbox).

🤖 Design-architect pass 18 — agent note: phase of design #2576; the decisions are recorded there and in the design doc. Do not re-derive them in triage; flag genuine blockers on #2576 instead.

Activity

  1. added
    task/triageQueue packet kind: verify, reproduce, and route this item
    status/blockedQueue or user escalation state
    priority/normalOrdinary priority (the default)
    queue/queuedHas a queued task in the Supabase agent queue
    effort/mMedium: expected under 1 day of work
    app/aggregatorPackage/app: aggregator (pm-stack in this repo)
    app/pm-stackpm-stack (Pad/Grist) in developing-today/code
    on Oct 30, 2026
  2. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    🤖 agent-note:v1 — design-architect pass 18 (2026-10-30): Phase 3 of design #2576, gated on Phase 1 (#2577), independent of Phase 2 (#2578) — status/blocked + queue/queued reflect the gate; when #2577 lands, triage confirms scope against current main (checking each named issue: still open → this phase closes it; already closed per-site → verify/convert its guard), settles what it can, and enqueues the implementation follow-up. Do not implement in the triage task.

  3. added
    queue/claimedQueue worker lifecycle state
    and removed on Oct 30, 2026
  4. 85 remaining items

  5. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 4, 2026
  6. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: parked
    task: 6900
    lane: bf419306-c4ef-470f-a553-beabf93239de (openchamber scheduled lane)
    worker: repo-worker-code
    issue: #2579
    kind: small_fix
    state_checked: 2026-11-04T14:22Z — #2579 OPEN; no held, user/owned, do-not-merge, do-not-auto-edit labels; no PR exists for this branch.
    branch: queue/6900-2579-implement-2579-aggregator-phas
    worktree: /home/user/git/fleet/6900-task (laptop)
    head: 1594f0e (merge of origin/main eb3e71c into the task branch)
    verified: bun test test/phase3-boundaries.test.ts → 16 pass / 0 fail on the merged branch.
    remaining: (1) audit which named boundaries already landed on main — src/sources/github-billing.ts already imports isIsoDate/isNonNegative from validate.ts; jules.ts no longer exists under sources/; Cloudflare exporter is pm-stack/cloudflare-export/ (separate mjs boundary, task 5387/#4902 merged). (2) close or convert the remaining named issues with evidence per #2576's named-scope rule. (3) open the PR only once the full named scope is covered.
    park_reason: openchamber scheduled lane run budget (~30 min) elapsed before the remaining boundary audit; no CI wait in progress.
    resume: claim 6900, git -C ~/git/fleet/6900-task pull --ff-only, audit the remaining boundaries, run the aggregator suite, then open the PR.

  7. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  8. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  9. removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 4, 2026
  10. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done (PR opened)

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/mMedium: expected under 1 day of workpriority/normalOrdinary priority (the default)source/design-architectFiled by the repo design architect jobtask/small-fixQueue packet kind: bounded fix with reproduction and targeted tests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions