- Per-source cost-spike auto-pause toggleCloses the named rev-58 next-sprint candidate. New `workspace.sourceCostSpikeAction` column controls what happens when the rev-58 detector flags a spiking feed: `none`/null (rev-58 alarm-only default β no behavioural change) or `pause` (rev-59 auto-pause β the RSS poller skips spiking feeds for the rest of today's workspace-TZ day until the operator acknowledges). Mirrors the rev-56 per-task auto-pause pattern at the per-source axis. Closes the descriptive β defensive loop on the per-source cost story: rev 57 attribution + rev 58 spike alarm + rev 59 defensive auto-action. Operators with a runaway feed (noisy LinkedIn bridge, RSS broker that flooded one Friday) no longer have to manually intervene β opt-in once and the queue self-heals.
- Per-source cost-spike acknowledgment + inline 'Ack' buttonNew `source.costSpikeAckedAt` timestamp + `acknowledgeSourceCostSpike()` helper + `POST /api/sources/{id}/cost-spike-ack` route + `SourceCostSpikeAckButton` client component mounted directly beside the rev-58 β‘ pill on every spiking row of the rev-57 cost-by-source panel. The rev-58 detector now skips sources acked in the current workspace-TZ day, so the β‘ pill, daily Slack push, outbound `source.cost_spike` event, and rev-59 auto-pause filter all agree on what 'acked' means. Distinct from rev-6 source pause (permanent until resumed) and rev-26 keyword filters (per-item gating). Ack = 'I see this source spike, stop alarming today, but watch for tomorrow.' Mirrors the rev-56 task ack primitive at the per-source axis exactly.
- POST /api/v1/sources/{id}/cost-spike-ack + GET/PUT /api/v1/workspace/source-cost-spike-configBearer-auth mirrors of both rev-59 dashboard endpoints in the same cycle the dashboard primitives ship. The cost-axis MCP cluster now closes the **detect β triage β ack β reconfigure** loop on every axis (workspace rev 32 / per-task rev 55-56 / per-source rev 58-59) β eight cost axes deep with three control surfaces (auto-archive config + task cost-spike config + source cost-spike config) and three ack surfaces (task ack + bulk task ack + source ack). The upcoming MCP server has nothing left to design on the per-source cost surface. An MCP host can now opt the workspace into auto-pause programmatically AND acknowledge spikes on individual sources programmatically β pairs with `/api/v1/sources/cost-spikes` (rev 58 detector read) so a watcher agent can detect β triage β ack the alarm without operator input when the feed's spike is expected (e.g. a planned campaign-tracking RSS feed that bursts on launch day).
- Integrations panel 'Per-source cost spike action' section + visual polishNew section in the integrations panel under the rev-49 'Cost guardrails' grouping right below the rev-56 per-task action β two sibling controls that read as the descriptiveβdefensive layer for the cost-axis story across both per-task and per-source axes. Two buttons: 'Alarm only' (rev-58 default) and 'Auto-pause spiking feeds' (rev-59 opt-in). Active button rendered in brand-color primary; inactive ghost. The rev-58 spike banner copy adapts when auto-pause is on ('Auto-pause is on β these feeds skip the next poll until acked'). Plus quiet ld-cost-source-spike-ack chip styling: transparent background, brand-red border, subtle hover lift β deliberately quieter than the alarm pill itself. Cumulative micro-polish (every rev 22+ has carried at least one). The integrations panel's queue-hygiene cluster is now three primitives deep β rev-20 cost cap + rev-49 stale auto-archive + rev-56/59 cost-spike actions β every defensive control follows the opt-in toggle shape so operators tune the desk's autonomy gradient without ever feeling the desk is 'running away.'