- coordinator.costBurndown() aggregates completed run cost (insights.costUsd) by UTC day over a window, returning a gap-free cumulative series + ceiling - repository.listRunsByProduct() cross-partition run query - GET /fleet/budgets/:productId/burndown?days=N route - fleet-client.getBudgetBurndown() + CostBurndown/BurndownPoint types - BurndownChart on the budget page: cumulative daily bars with a dashed ceiling overlay; bars turn red past the ceiling; degrades gracefully - Tests: +2 coordinator, +1 routes, +2 fleet-client (fleet 147, web 216) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| .data | ||
| scripts | ||
| src | ||
| .gitignore | ||
| Dockerfile | ||
| package.json | ||
| POSTAL_SMTP_SETUP.md | ||
| tsconfig.json | ||
| vitest.config.ts | ||