- Per-tag cost trajectory primitive (closes named rev-66 next-sprint candidate)New `getTagCostTrajectory()` helper + extended `getCostByTag()` with optional `trajectoryDays` so each row carries a `trajectory7d` cents array. The rev-66 dashboard panel now renders an inline sparkline beside the cumulative bar on every tag row โ same visual vocabulary as the rev-60 by-source + rev-61 by-assignee sparklines so the four cost panels (per-task / per-source / per-assignee / per-tag) read with one consistent vocabulary. New `GET /api/cost/by-tag/{tag}/trajectory` viewer-auth endpoint + matching `GET /api/v1/cost/by-tag/{tag}/trajectory` bearer-auth mirror in lockstep. **Strategic significance**: closes the trajectory dimension on every cost axis โ workspace (rev 53) โ per-task (rev 54) โ per-source (rev 60) โ per-assignee (rev 61) โ per-tag (rev 67). Operators answering 'is this workstream steadily expensive or just spiking today?' no longer have to drill into per-task cost rows.
- Per-tag cost spike alarm + outbound `tag.cost_spike` eventNew `detectTagCostSpikes()` helper aggregates `task.dailyCostHistory` per-tag using the rev-66 'task contributes its full cost to every tag it carries' methodology. Surfaces tags whose today spend in workspace TZ is >= 2ร the trailing 7-day daily average AND >= $0.50 absolute AND >= 3 historical non-zero days (matches the rev-32/55/58/62 detector thresholds). Daily Slack push from `runDailyDigest()` via the new `pingTagCostSpikes()` sweep โ rate-limited via `tag_cost_spike` activity-log entry to once per workspace per 24h with the same dead-Slack-webhook auto-clear path. New `OutboundEvent` value `tag.cost_spike` + `dispatchTagCostSpikeWebhook()` so external integrations can route the alarm by workstream (CRM tagged by project, FinOps board sliced by initiative, board-status digest grouped by goal). New bearer-auth `GET /api/v1/cost/by-tag/spikes` endpoint. The synthetic `untagged` bucket is excluded โ flagging 'untagged work is spiking' isn't actionable. **Strategic significance**: closes the alarm cluster's fifth axis (workspace rev 32 / per-task rev 55 / per-source rev 58 / per-assignee rev 62 / per-tag rev 67) so the cost-spike push cluster is now functionally complete on every meaningful axis. The strongest possible operator-facing answer to 'this initiative is going off the rails on AI cost' because it names the workstream, not just the workspace.
- Inline โก pill + spike banner + spiking-row accent on the rev-66 cost-by-tag panelEvery spiking row on the rev-66 panel now gets a brand-red โก Nร pill alongside the rev-66 cost amount + percent + bar (with tooltip carrying today vs avg detail). Spiking rows wear a left-border accent + tinted amount color matching the rev-58 source spike + rev-62 assignee spike treatment so the alarm vocabulary reads consistent across all five panels. Banner above the row list summarises the loudest spike inline so operators see the alarm without reading every row. **Strategic significance**: the rev-66 panel went from cumulative-only (one read) to three-level (cumulative + trajectory + alarm). Closes the visual-hierarchy gap on the cost-by-tag axis โ operators now scan the panel and triage by alarm state without leaving the dashboard sidebar.
- Activity log glyph + tint for `tag_cost_spike` + cumulative micro-polishNew `tag_cost_spike` entry in the rev-35 activity log glyph + per-kind tint maps so the new daily push reads with the same โก visual vocabulary as the rev-32/55/58/62 spike kinds. Filter chip now offers 'Tag cost spike' as a one-click scope. The five cost-spike kinds (cost_spike / task_cost_spike / source_cost_spike / assignee_cost_spike / tag_cost_spike) all wear the same brand-amber tint so the operator's eye reads them as one alarm cluster. Plus subtle visual polish on the rev-66 panel: cleaner row-head spacing accommodates the new sparkline + pill alongside the cumulative amount without crushing on narrow viewports. Cumulative micro-polish โ every rev 22+ has carried one. **Strategic significance**: closes the per-kind-tint symmetry gap that's been growing since rev 35 introduced the glyph map but never received the per-recipient (rev 62) or per-task (rev 55) variants. The activity log now scans visually for every alarm kind in the cost-spike cluster.