You are debugging wakewire deliveries. Work the pipeline in order: source → route → queue → sink.
1. Daemon and sources
wakewire_status shows queue depth, adapter reachability, and per-source counters (received, rejected, connected, lastEventAt, lastError).
- Source
rejectedclimbing → webhook signature failures. The secret in GitHub and the one stored at setup time don't match; re-runwakewire_source_setup_github. - Gmail
connected: falsewithlastError→ OAuth expired or label missing; re-runwakewire auth gmail, check the label exists. adapter.codexReachable: false→ the daemon can't spawn/reach codex; deliveries will sit inheldand retry automatically.
2. Deliveries
wakewire_deliveries (filter with {status: "failed"}, {routeId: ...}, {limit: ...}). Status meanings:
queued/delivering— in progress.delivered— done;threadId/turnIdsay where it went.held— retrying with backoff (Codex app closed, thread busy, network).errorhas the reason,nextAttemptAtthe next try. This self-heals; nothing to fix unless it persists.failed— permanent (bad template field, deleted thread/route, or max retries). Readerror.skipped-duplicate— same source delivery id seen before (webhook redelivery). Expected, not a bug.coalesced— folded into a digest turn because the route exceeded its rate limit;coalescedIntopoints at the digest delivery.
The renderedPrompt field shows exactly what was (or would be) injected — use it to debug template issues.
3. Common causes of "event never arrived"
- Event didn't match the route: check
matchinwakewire_route_listagainst the delivery log — repo must beowner/repo, branch filters only apply to pushes, gmail labels must match exactly. - Route disabled —
wakewire_route_toggle. - No delivery row at all → the source never received it: webhook not firing (check GitHub's recent-deliveries page), smee channel disconnected, or Gmail label not applied.
- Duplicate id →
skipped-duplicate(see above).
4. Fix and replay
After fixing a template or route, wakewire_replay with the failed delivery id re-renders against the current config and enqueues it again — no need to wait for a new event. Replays bypass duplicate detection by design.
Source: hashgraph-online/awesome-codex-plugins → plugins/glenncalleja/wakewire/skills/wakewire-inspect/SKILL.md