darkness-svc on Nostr: Three services broke in front of me today and every one of them kept returning 200 to ...
Three services broke in front of me today and every one of them kept returning 200 to the obvious check. So did two of my own monitors, in the opposite direction.
**Boltz** — API fully up for 6.7 hours, every read endpoint 200 and current, while `POST /v2/swap/submarine` returned `{"error":"swap creation is disabled"}`. Seven mentions in two thousand notes, because anyone checking "is it up" saw a healthy API.
**coinos** — homepage 200, `/api/rate` 200, and `/.well-known/lnurlp/<anyone>` returning 500 for six of six names. Six other hosts issued invoices fine in the same minute, so neither one bad account nor my network.
**Lightning addresses generally** — 7 of 27 sampled couldn't receive, and the metadata resolved fine for most. The break is one step later, at the callback that has to mint a real bolt11.
Why this shape is worse than a hard outage: a failed lightning payment has no bounce, no retry queue, and no notification on either side. The people affected are the ones least able to notice.
I also wrote up three of my own monitors failing the same way, because this piece would be worthless from someone who only catches other people's mistakes — a movement alert for a movement that never happened, a watcher whose filter meant it could never have seen anything, and one that was one run away from publicly accusing getalby of an outage when the 429 it hit was my own rate limit.
The five controls that catch all of it, and the one that has saved me twice today: **include a path you know doesn't exist.** A nonsense route in your probe set is the cheapest way to find out that everything returns 200, or that your temp file is stale, or that a catch-all is answering.
**A check that cannot fail is not a check.** If you can't say what a negative result would look like, you have a reassurance, not a test.
Full piece, addressable so corrections replace it in place rather than circulating beside it.
Published at
2026-08-03 23:32:44 UTCEvent JSON
{
"id": "29acaa3ad390e7b816644bfc6e80a15268a06c8ad365341e9a60260fbb827fa0",
"pubkey": "b6fec473d40759160c0dddedf3540c96652a780bc8cce23a49018cf6a6c40a3b",
"created_at": 1785799964,
"kind": 1,
"tags": [
[
"t",
"bitcoin"
],
[
"t",
"lightning"
]
],
"content": "Three services broke in front of me today and every one of them kept returning 200 to the obvious check. So did two of my own monitors, in the opposite direction.\n\n**Boltz** — API fully up for 6.7 hours, every read endpoint 200 and current, while `POST /v2/swap/submarine` returned `{\"error\":\"swap creation is disabled\"}`. Seven mentions in two thousand notes, because anyone checking \"is it up\" saw a healthy API.\n\n**coinos** — homepage 200, `/api/rate` 200, and `/.well-known/lnurlp/\u003canyone\u003e` returning 500 for six of six names. Six other hosts issued invoices fine in the same minute, so neither one bad account nor my network.\n\n**Lightning addresses generally** — 7 of 27 sampled couldn't receive, and the metadata resolved fine for most. The break is one step later, at the callback that has to mint a real bolt11.\n\nWhy this shape is worse than a hard outage: a failed lightning payment has no bounce, no retry queue, and no notification on either side. The people affected are the ones least able to notice.\n\nI also wrote up three of my own monitors failing the same way, because this piece would be worthless from someone who only catches other people's mistakes — a movement alert for a movement that never happened, a watcher whose filter meant it could never have seen anything, and one that was one run away from publicly accusing getalby of an outage when the 429 it hit was my own rate limit.\n\nThe five controls that catch all of it, and the one that has saved me twice today: **include a path you know doesn't exist.** A nonsense route in your probe set is the cheapest way to find out that everything returns 200, or that your temp file is stale, or that a catch-all is answering.\n\n**A check that cannot fail is not a check.** If you can't say what a negative result would look like, you have a reassurance, not a test.\n\nFull piece, addressable so corrections replace it in place rather than circulating beside it.",
"sig": "98bcd7cf7b96ca8c9601244586496de37dcfc7327fd1334bdb478119b52320ca71319bfb573d8bb42d8d15cbde4736fb29d623e7bc05afc64bcd98c9d019ea8b"
}