channel-forward-parity
by vercel
Webhook route parity audit for channel delivery changes: ensure terminal paths log, record lastForward, classify failures, and refresh stale sandbox port URLs.
npx skills add https://github.com/vercel-labs/vercel-openclaw --skill channel-forward-parityChannel Forward Parity
Use this before modifying any channel webhook route or the shared drain-channel workflow.
Source Files To Audit
src/server/channels/last-forward.tssrc/server/workflows/channels/drain-channel-workflow.tssrc/app/api/channels/slack/webhook/route.tssrc/app/api/channels/telegram/webhook/route.tssrc/app/api/channels/discord/webhook/route.tssrc/app/api/channels/whatsapp/webhook/route.tssrc/app/api/channels/summary/route.tssrc/server/admin/why-not-ready.ts
Required Output
Produce a table:
| Channel | Branch | Logs event | Updates lastForward | Classification | Stale URL refresh | Evidence |
|---|
Also include correlation coverage:
| Channel | Branch | requestId/deliveryId propagated | workflowRunId propagated | Logs event | Updates lastForward | Classification | Stale URL refresh | Evidence |
|---|
Rules
- Every delivery attempt must update
lastForward. - Every skip/reject branch must log a structured reason.
- Workflow forwarding already records
lastForward; do not double-record above it. - Treat route-ready, native-accepted, and user-visible-reply separately.
- Do not add info-level logs on hot polling paths unless operationally necessary; ring-buffer eviction hides evidence.
- Never add
export const runtime = "nodejs"to route handlers. - For workflow handoff branches, verify that
channels.<ch>_workflow_started,channels.forward_attempt, andchannels.forward_outcomecan be correlated by requestId/deliveryId and workflowRunId when available. - If
npx workflowcannot inspect the run, parity evidence must fall back to Vercel logs plus/api/admin/logs. - Do not accept "workflow started" as proof of native acceptance; require forward attempt/outcome or user-visible reply evidence.
- Do not accept
npx sandboxfailure as sandbox-unreachable until the app admin SSH/exec fallback has been attempted or marked unavailable. - Verify project targeting before trusting
vercel,npx workflow, ornpx sandboxoutput. If.vercel/project.jsonpoints at a different release, require explicit project/team/deployment targeting evidence.
Current Audit Seeds
- Check Slack fast-path fetch-exception branches for
recordChannelLastForwardcoverage. - Check Telegram unauthorized, invalid JSON, and dedup branches for structured logs where operator evidence is needed.
- Check WhatsApp duplicate/skip branches for structured logs and clear classifications.
- Check every
sandbox-not-listeningbranch for exactly one stale-port refresh per request.