- Share-page kind filter on the related-briefs drill-down (close named rev-45 follow-up)Rev 45's running state explicitly named 'share-page kind/status filtering' as the next-sprint candidate. Rev 45 shipped tag drill-down on /share/<token>; rev 46 lets external stakeholders narrow the drill-down to a single artifact kind (brief / draft / decision / watchlist / note). New kind chip row inside the open panel. The /api/share/{token}/related endpoint accepts an optional kind query param; getRelatedSharedArtifactsByTag validates against the artifactKindEnum exactly so an attacker can't smuggle SQL or unknown values. A procurement reviewer auditing 'decisions tagged #q3-launch' is no longer forced to read every draft tagged the same way to find them.
- GET /api/v1/decisions (close 37-rev v1 parity gap)The rev-9 dashboard 'Decisions log' sidebar panel โ last 10 approved/archived non-brief artifacts in a 30-day window โ has been dashboard-only for 37 revs, the longest-outstanding v1-vs-dashboard parity gap. Rev 46 mirrors it on the v1 surface as a single bearer-auth call: GET /api/v1/decisions?windowDays=30&limit=10. Both surfaces now route through the same getRecentDecisions helper, so the dashboard and v1 return identical shapes. As a small fix-along-the-way, the dashboard surface now also explicitly excludes briefs (matching the rev-9 documented intent โ the spec said 'non-brief' but the implementation didn't enforce it). Pairs with rev-13 /api/v1/runs, rev-18 /api/v1/stats, rev-20 /api/v1/activity, rev-43 /api/v1/workspace/summary, and rev-45 /api/v1/workspace/today as the six-axis 'how is this desk doing' instrument cluster on the protocol-bound surface.
- GET /api/v1/outbound/deliveries + POST /api/v1/outbound/deliveries/{id}/retry (close 27-rev v1 parity gap)Rev 19 turned outbound delivery into a real router (per-event subscriptions + delivery log + one-click retry). Until rev 46 the delivery log + retry button were dashboard-only โ an MCP host monitoring an integration couldn't answer 'did the artifact.ready event fire on this artifact?' or 'which downstream URL is 502'ing?' or 'retry that one that just failed' without opening a browser. Rev 46 mirrors both endpoints on the v1 surface. Reuses the existing listOutboundDeliveries / retryDelivery helpers so the two surfaces share one server-side implementation. Pairs with rev-19 outbound subscriptions to close the integration debugging loop on the protocol-bound surface โ an MCP-host integration-monitor agent can now both detect failures and recover from transient downstream blips programmatically.
- Activity keyword search on /api/v1/activity (close v1 parity gap on rev-38 dashboard primitive)Rev 38 shipped the dashboard inline activity-log search; rev 46 mirrors it on v1 with an optional q query param. Runs a SQL-level case-insensitive ILIKE across detail AND kind, capped at 200-char input length so the LIKE pattern stays bounded. Composable with the existing since and kind filters โ all three must match for a row to surface. Until rev 46 an MCP host driving the desk could read the activity log paginated by since/kind but had no way to answer 'when did we last get a Slack send error?' or 'did we have a cost spike last week?' without pulling everything and filtering client-side. The full audit trail story on the v1 surface (cycles + signals + outputs + activity + decisions + outbound deliveries) is now keyword-searchable end-to-end.