You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Routing is the demo payoff: a detected policy violation should create concrete actions, fire a real Slack webhook, and persist typed records for the mocked destinations. This issue owns only Slack rendering/delivery and typed Action persistence.
Acceptance Criteria
Render Slack Block Kit message for a ChangeReport with vendor, policy, severity, impact, citation, and action links
Deliver Slack messages through SLACK_WEBHOOK_URL when route is slack:@vendorOwner or demo channel route
Resolve slack:@vendorOwner through vendor.ownerId -> user.slackUserId
Persist typed Action rows for Slack, Jira, Email, and Calendar routes
Track delivery status, external ids, and provider errors without throwing away the ChangeReport
Emit action.delivered SSE event when a route completes or fails
/plan
Implement the Redline Slack routing and typed Action persistence slice from the handoff. Build Slack Block Kit rendering, webhook delivery, `slack:@vendorOwner` resolution, typed Action rows for Slack/Jira/Email/Calendar, delivery status tracking, and `action.delivered` SSE events. This branch must stand alone from other issue branches.
Test Plan
Run Slack provider tests with mocked webhook responses
Run action persistence tests for Slack, Jira, Email, and Calendar payloads
Verify slack:@vendorOwner resolves from seeded vendor and user data
Verify provider failure persists a failed Action instead of crashing the run
Verify action.delivered event is emitted for success and failure
Redline Handoff Adherence
Routing rules from handoff/Product Decisions.html
External Slack contract from handoff/API.html
Action shape from handoff/Data Model.html
This issue has no dependency on Add Vendor, Stripe, evidence brief, lifecycle routes, or the SSE endpoint branch beyond using the event contract locally
Per-Issue PR Workflow (REQUIRED)
Branch from main: d3v07/slack-routing-actions
Implement without waiting on any other issue branch
PR to main: Closes this issue
Review pass for route resolution, typed payloads, and provider failure behavior
Context
Routing is the demo payoff: a detected policy violation should create concrete actions, fire a real Slack webhook, and persist typed records for the mocked destinations. This issue owns only Slack rendering/delivery and typed Action persistence.
Acceptance Criteria
SLACK_WEBHOOK_URLwhen route isslack:@vendorOwneror demo channel routeslack:@vendorOwnerthroughvendor.ownerId -> user.slackUserIdActionrows for Slack, Jira, Email, and Calendar routesaction.deliveredSSE event when a route completes or failsFiles to Touch
apps/api/src/agent/router.tsapps/api/src/providers/slack.tsapps/api/src/db/actions.tsapps/api/src/stream/events.tspackages/shared/src/types.tspackages/shared/src/schemas.tstests/api/slack.test.tstests/api/actions.test.tsPrompt
Test Plan
slack:@vendorOwnerresolves from seeded vendor and user dataaction.deliveredevent is emitted for success and failureRedline Handoff Adherence
handoff/Product Decisions.htmlhandoff/API.htmlhandoff/Data Model.htmlPer-Issue PR Workflow (REQUIRED)
main:d3v07/slack-routing-actionsmain:Closes this issuemainfor the ownerDefinition of Done
d3v07/slack-routing-actionsmain