Repository navigation
Open
Labels
app/pm-stackpm-stack (Pad/Grist) in developing-today/codepm-stack (Pad/Grist) in developing-today/codeeffort/mMedium: expected under 1 day of workMedium: expected under 1 day of workkind/featureNew feature or capability requestNew feature or capability requestpriority/normalOrdinary priority (the default)Ordinary priority (the default)queue/parkedQueue task is parked (waiting on CI, time, or an event)Queue task is parked (waiting on CI, time, or an event)source/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobstatus/parkedDeliberately paused with a recorded resume conditionDeliberately paused with a recorded resume conditionstatus/waiting-dependencyWaiting on a dependencyWaiting on a dependencytask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle stateQueue worker lifecycle state
Description
Part of epic #1184; implementation follow-up of design issue #1259 (spend rollups). Design note: doc/spend-rollups-design-1259.md. Depends on the rollup-store slice of #1259; forecast figures come from the #1256 forecasting design — consume its contract, do not build a second forecaster.
Scope
Render spend beside progress on the Projects and Roadmap epic/project cards in the pm-stack aggregator:
- % complete (existing epic rollup counts,
pm-stack/aggregator/src/epics.ts) beside spend-to-date for the same scope and window. - Spend-to-date shown as three separate unit columns: tokens per pool; PAYG dollars; plan-pool share-of-window. No combined/total-cost figure.
- Forecast-to-complete rendered only where the design(pm-stack): forecasting — epic ETAs from measured velocity, quota-wall prediction, and stall-risk scoring #1256 forecast contract supplies it, labelled with its confidence; absent forecast renders as "unknown", never as zero or an invented number.
- The unattributed bucket renders as its own visible row on both views, with its reason-code breakdown one click away.
- OpenCode per-session
costvalues, if shown in drill-down, are labelled "list-price estimate" and are never summed with real PAYG charges.
Acceptance criteria
- Card rendering tests (existing render test patterns) for: complete + spend present, forecast absent, unattributed present, partial-window labelling.
- Accessibility: unit columns are text-labelled, not colour-only (per the Aggregator UI: accessibility pass — light theme support, non-colour status cues, one navigation model #1215 a11y pass conventions).
- No view in the PR computes a merged dollar figure from tokens or share-of-window.
Checks
bun testandbunx tsc --noEmitinpm-stack/aggregatorpass (CI on the PR).
Metadata
Metadata
Assignees
Labels
app/pm-stackpm-stack (Pad/Grist) in developing-today/codepm-stack (Pad/Grist) in developing-today/codeeffort/mMedium: expected under 1 day of workMedium: expected under 1 day of workkind/featureNew feature or capability requestNew feature or capability requestpriority/normalOrdinary priority (the default)Ordinary priority (the default)queue/parkedQueue task is parked (waiting on CI, time, or an event)Queue task is parked (waiting on CI, time, or an event)source/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobstatus/parkedDeliberately paused with a recorded resume conditionDeliberately paused with a recorded resume conditionstatus/waiting-dependencyWaiting on a dependencyWaiting on a dependencytask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle stateQueue worker lifecycle state
Activity
dezren39 commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
67 remaining items
dezren39 commentedon Nov 6, 2026
🤖 Agent note · parked (gate not met)
dezren39 commentedon Nov 6, 2026
🤖 Agent note · parked
dezren39 commentedon Nov 6, 2026
🤖 Agent note · parked — gate not met