A chat bot that routes — one listener, several voices

A chat bot that routes — one listener, several voices An architecture diagram generated by Archify. Chat rooms · family · friends · ops · 22 rooms · Architecture component Chat rooms family · friends · ops · 22 rooms Code forge · issues · runs · @-mentions · Architecture component · self-hosted Code forge issues · runs · @-mentions self-hosted Matthew · 👍 · 👎 · 🚀 — the only approver · Architecture component Matthew 👍 · 👎 · 🚀 — the only approver Chat + lookup lane · her own model · cards · web · home server — the always-on half Chat + lookup lane her own model · cards · web Ember · the one listener · the router · home server — the always-on half · one face Ember the one listener · the router one face Dev queue · one JSON file per task · home server — the always-on half Dev queue one JSON file per task Package ledger · diff · tests · 3-day deadline · home server — the always-on half · silence is a no Package ledger diff · tests · 3-day deadline silence is a no Worker · a workstation · branch · tests · Architecture component · polls every 30 s Worker a workstation · branch · tests polls every 30 s Deploy · ask → 👍 → runner → ff-merge · Architecture component · refuses a dirty tree Deploy ask → 👍 → runner → ff-merge refuses a dirty tree every message @ember on an issue ⇄ replies answers herself dev task · reply-to poll · 30 s package · diff · tests card in ops · one reaction 🚀 → deploy-ask home server — the always-on half Legend Backend Database Cloud External

The lie the room believed

  • • A voice (a script posts as it) + a dot (a tray says it is there) + no ears
  • • A delivered message with no reader has no error path — it reads as “ignored”
  • • A 🚀 on a lookalike message: two addresses to the ledger, one with ears

One listener, several voices

  • • The daemon holds every voice's credential and hears for all of them
  • • The worker never holds a chat credential; it speaks through one HTTP endpoint
  • • The dot = a heartbeat in the last 10 min, set by the reader, lapsing by itself

Every address gets ears

  • • Any message naming a pending package is an alias of its card (up to 8)
  • • A mention on the code forge: author checked, queued with a reply-to, answered there
  • • Ask at design time: before a name is announced, what hears it?