Repository navigation
Closed
Labels
app/aggregatorPackage/app: aggregator (pm-stack in this repo)Package/app: aggregator (pm-stack in this repo)app/pm-stackpm-stack (Pad/Grist) in developing-today/codepm-stack (Pad/Grist) in developing-today/codeeffort/xsTrivial: expected under 30 minutes of workTrivial: expected under 30 minutes of workkind/bugSomething isn't working (prefixed form of the classic bug label)Something isn't working (prefixed form of the classic bug label)meta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedpriority/highImportant and time-sensitiveImportant and time-sensitivesource/queue-workerFiled or worked by the queue/worker pilotFiled or worked by the queue/worker pilottask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Description
Found by queue task 5363 (lane C) while typechecking an unrelated change; verified identical on clean origin/main at 70c206250 — pre-existing, not caused by that change.
Evidence (pm-stack/aggregator/src/feed.ts):
export function isUnmatchedCharge(...)(~line 350) returnstypeof v.merchant === "string" && isFiniteNumber(v.amountUsd) && typeof v.at === "string";and the function is never closed — the next block comment +export function isChargeRowfollow inside its body.bun build src/feed.ts --no-bundle→error: Unexpected exportat line 358 (export function isChargeRow).bunx tsc --noEmit→src/feed.ts(552,1): error TS1005: '}' expected.bun test test/feed.test.ts→ 0 pass / 1 fail (parse error).- Introduced in
4d7f643e3"fix(aggregator): sanitize feed charges at loadFeed — isChargeRow drop-and-count… (aggregator(feed): isFleetFeed never checks charges — one malformed row crashes /quota, a non-array object silently empties the charges strip #2445)": the isChargeRow insertion landed inside/after isUnmatchedCharge and dropped its closing brace.
Fix: add the missing } closing isUnmatchedCharge before the isChargeRow comment block. Acceptance: bun build src/feed.ts parses, bun test test/feed.test.ts runs, bunx tsc --noEmit reports no feed.ts error. Note the aggregator test suite and typecheck are red on main until this lands, so other aggregator PRs cannot use them as a signal.
Acceptance criteria
-
bun build src/feed.tsparses with no error andbun test test/feed.test.tsruns (pass/fail on assertions, not on a parse error). -
bunx tsc --noEmitreports no error insrc/feed.ts. - The change is exactly the missing closing brace for
isUnmatchedCharge(plus, at most, formatting) — no behavior change to any feed function.
Metadata
Metadata
Assignees
Labels
app/aggregatorPackage/app: aggregator (pm-stack in this repo)Package/app: aggregator (pm-stack in this repo)app/pm-stackpm-stack (Pad/Grist) in developing-today/codepm-stack (Pad/Grist) in developing-today/codeeffort/xsTrivial: expected under 30 minutes of workTrivial: expected under 30 minutes of workkind/bugSomething isn't working (prefixed form of the classic bug label)Something isn't working (prefixed form of the classic bug label)meta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedpriority/highImportant and time-sensitiveImportant and time-sensitivesource/queue-workerFiled or worked by the queue/worker pilotFiled or worked by the queue/worker pilottask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Activity
developing-today commentedon Nov 1, 2026
CODE-1319
dezren39 commentedon Nov 1, 2026
Intake review
Related: introduced by 4d7f643 (#2445); noticed and filed by queue task 5363 while landing PR #3454 (#2551) — #3454's body explicitly lists this as pre-existing breakage it did not fix, and I verified #3454 touched only
token-adapter.ts, so this issue is still live on main.Notes: priority/high because the aggregator test suite and typecheck are red on main until this lands, which blinds every other aggregator PR's CI signal. The fix itself is one brace (effort/xs). Risk: minimal.
Suggested approach: add the brace, verify with the three commands in the acceptance criteria via CI.
🤖 Agent note · done
developing-today commentedon Nov 3, 2026
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 7396 (triage, queued, priority 50) 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
dezren39 commentedon Nov 4, 2026
🤖 Agent note · picked up
dezren39 commentedon Nov 4, 2026
🤖 Agent note · done (triage — closing with evidence)
Triage verdict — the parse error no longer exists at current main
Verified fresh 2026-11-04 ~00:20Z, two independent sources:
gh api, origin/main):isUnmatchedChargenow sits atpm-stack/aggregator/src/feed.ts:554 and is properly closed — and it is not the old body with a brace pasted on: the aggregator(feed): charge gates accept negative/zero amounts and non-date 'at' — isChargeRow and isUnmatchedCharge pass rows no producer can emit, falsifying the charges total and attention-flag severity #3458 follow-up work rewrote both charge guards wholesale (isRecordgate,amountUsd > 0,isIsoDate(v.at)), landing via PR aggregator(feed): reject impossible charge rows #4424 (merge5c49f480, 2026-11-02T17:06Z, branchqueue/6105-3458-charge-row-guard). The rewrite superseded the defective4d7f643e3shape entirely, closing brace included.bun build src/feed.ts --no-bundle→ exit 0, no error.bun test test/feed.test.ts→ 67 pass / 0 fail (runs on assertions, not parse errors).bunx tsc --noEmit→ 0 errors insrc/feed.ts. (One unrelated pre-existing error exists intest/overview.test.ts—HealthView.conflicts— a different file and concern, observed identically during queue task 8693's run.)All three acceptance criteria are met at current main, so this closes as
already_done: no brace-only PR is needed, and manufacturing one would churn a file that has since been deliberately rewritten.Side observation (already tracked, not filed again): the laptop primary clone
~/git/codecould not fast-forward during this check — it carries one local repo-keeper-style commit (a9a392d2f, 1 ahead / 24 behind) plus the untracked.opencode/service-local.json. That state is exactly what open issue #5209 (pm-git-sync failing every cycle on the untracked file) and closed #4464 (repo-keeper snapshot divergence) track; the acceptance runs above used the checkout as-is and were also confirmed against the origin/main source read.