deemwar
Messaging and browser automation that fails silently โ and how to catch it. Working capabilities you can run, pulled from real production problems in WhatsApp / Telegram automation, browser automation, and the workflow plumbing that connects real systems to each other. Each one leads with the job it does for you, ships as self-contained code you run locally in a sitting, and drops into your own stack. Free, MIT. Engineering-first โ no slideware.
WhatsApp restricts accounts that send through unofficial clients, and it does it quietly: an established chat already carries a tctoken so it keeps working, and only new conversations are refused with error 463. Your existing customers still get their messages; every new lead silently gets nothing. In the demo, overall new-chat success still reads 63% — while every new chat since the first refusal got through to nobody. Runnable — node check.js sends.ndjson tells RESTRICTED, BANNED and ordinary network noise apart. Zero deps, no credentials.
Opsgenie end of support is 2027-04-05, and Atlassian’s automated migration takes across schedules, escalation policies and incident workflows — not your chat integrations, not your Edge Connector actions, not your heartbeats, policies or API keys. Land on Standard to control the price increase and you also lose two-way integrations, the outgoing half of your integrations, and your stakeholders. Runnable — node check.js integrations.json reads your own export and tells you per integration whether it survives, needs hands, or is gone. Every rule cited, and community reports are labelled as community reports rather than quietly promoted to fact. No credentials, nothing leaves your machine.
Exchange Online EWS is fully and permanently disabled on 2027-04-01, and tenant admins lose the switch. Microsoft says public folder CRUD, Microsoft 365 Group mailbox CRUD and Discovery mailbox access won't be added to Microsoft Graph, and the eDiscovery replacement needs E5 for app-only use. A zero-dependency scanner that finds EWS calls in your code and flags the ones with no Graph path.
AWS ends support for Amazon WorkMail on 2027-03-31 and ships no migration tool. Its export moves email and calendar but not contacts, tasks or notes; aliases, groups, resources and SES inbound rules have to be rebuilt; and Microsoft 365 Business Basic now costs $7 against WorkMail's $4. A read-only script that counts what your organization will have to rebuild.
Azure Cloud Services (extended support) retires on 2027-03-31 and Microsoft can't grant extensions. There is no one-click migration: every web and worker role has to be re-hosted, and a Service Fabric managed cluster needs at least 3 nodes (Basic, no zone redundancy) or 5 (Standard). A zero-dependency checker over your Resource Graph export shows roles, certificates, extensions and the node minimums.
Azure Lab Services retires on 2027-06-28 and Microsoft ships no lab migration tool. Per-learner hour quotas, Teams integration and core limits do not carry over, only specialized images export, and the named alternative Windows 365 costs $41 or $66 per user per month flat. A zero-dependency checker over your Resource Graph export.
Azure Front Door (classic) retires 2027-03-31, and classic endpoints "might stop functioning" after 2028-03-31. The one-way migration does not move diagnostic logs or metrics, drops Azure Policy for WAF, needs WAF policies recreated when scripted, renames rules engines, and forces Premium ($330/month per profile, no downgrade) when a managed WAF rule set is attached. Runnable — node check.js fd-*.json --waf waf-*.json reads your own az export and tells you the forced tier and what needs hands, per profile. Every rule cited. No credentials, nothing leaves your machine.
This happened to us, today: our own WhatsApp bridge was 7 releases stale and WhatsApp rejected every send with "Client outdated (405)" โ while every health surface we had kept reporting ok:true. The owner got nothing for hours; nothing we monitored told us. Try it live โ two real endpoints, one genuinely healthy, one silently broken exactly like ours was, or paste your own status URL and watch it get checked for real: deliverymon-deemwar.pages.dev. One monitored bot or webhook, set up within the hour; ask io@deemwar.com.
A session-based channel (WhatsApp Web, a paired device, an OAuth API) can go dark while the process stays up: /health checks liveness, not whether the session can still deliver. Runnable โ node check.js --demo reproduces the false green in ten lines, or point it at your own health endpoint. No network by default, zero deps.
A shared store's exclusive lock is correct locking โ but a maintenance job left running holds it the whole time, and every other write silently queues or fails. Runnable โ node check.js --demo spawns a real child process to reproduce the block, or point it at your own store. Zero deps.
A reconnect loop that resolves the hostname once, before the retry loop starts, retries the same dead IP forever โ even after a DNS failover already fixed the record. Runnable โ node check.js --demo reproduces the class in a dozen lines, or point it at a real hostname. No network by default, zero deps.
WhatsApp's LID migration means some contacts now arrive under a different identifier shape than phone number โ a phone-keyed lookup misses them silently, no error, just "not found." Runnable โ node check.js --demo reproduces it in a dozen lines, or classify your own exported JIDs. No network, zero deps.
Many protocols ack twice: a fast queued ack, then a later terminal ack that actually says delivered or rejected. A send() that resolves on the first ack reports success for messages that were rejected. Runnable โ node check.js --demo reproduces it with a real event stream. No network, zero deps.
A send rejection that reads like a payload bug is often account-class policy โ stricter enforcement for new/low-reputation accounts, indistinguishable from a client bug in the error message alone. Runnable โ node check.js --demo runs the control experiment that tells them apart. No network, zero deps.
A GitHub Actions run that fails at startup, in 0 seconds, with zero jobs run, on every single push โ GitHub's own message blames the workflow file, but this exact shape is usually exhausted Actions billing. Runnable โ node check.js owner/repo tells the two apart. No network beyond the `gh` CLI, zero deps.
More examples land here as we hit the problems worth writing up. Each is judged on one thing: does the code run and hold up.
"Our WhatsApp integration says it's connected. Messages stopped going out three days ago and we found out from a customer." The examples above are the shape of why: dashboards and health checks stay green while delivery quietly stops.
A fixed-scope, one-week delivery audit of your WhatsApp / Telegram / browser automation: we find the paths where a send can fail silently, each with a written reproduction like the ones above, ship a real deliverability probe in place of a liveness-only health check, and hand over the fixes as PRs against your repo โ plus a short handover doc so your team can diagnose the next one without us.
Pricing: fixed-scope, staged โ ask us for the number.
We build and run the automation these examples come from โ WhatsApp and Telegram integrations, browser automation, and the workflow plumbing that connects real systems to each other โ as fixed-scope engagements. Mail us what you're building or what broke; you'll get an engineer's answer, not a deck.