Story video · drop assets/video/story-eew.mp4
Field notes · October 16, 2026

What JMA's cancelled "M9.9" warning taught us about relaying alerts.

Eight minutes of a nationwide warning that should not have existed — and the three changes it forced in SHINDO.

At 12:40 on Friday, the Japan Meteorological Agency warned the whole country about an earthquake of magnitude 9.9.

The real event was a magnitude 6.9 quake near the Kamchatka Peninsula, about 160 kilometres deep, that produced a maximum intensity of 1 in Hakodate. JMA's system assigned the wrong magnitude, issued an Earthquake Early Warning for 100 forecast areas — up to intensity 7 in Hokkaido, 5-lower in Tokyo's 23 wards — and cancelled it at 12:48. JMA later explained that the magnitude had been grossly over-estimated.

Phones across Japan screamed. Then they went quiet. Nothing arrived.

SHINDO stayed silent. That was the right outcome, for the wrong reason.

Our server received the warning three seconds after JMA released it. Our own attenuation model looked at a 1,800-kilometre distance and a magnitude it was never designed for, rated Tokyo at intensity 0, and suppressed the push. Meanwhile the app's live connection failed to decode the warning message at all, because early warnings use a different time field from ordinary earthquake reports and we had never seen a real one on the socket.

So no SHINDO user was woken for a phantom earthquake. But if JMA had been right about intensity 5-lower in Tokyo, SHINDO would have been just as silent. A relay that ignores the agency's own per-area forecast is not a relay. And a cancellation that nobody passes on is a warning that never ends.

Three changes, shipped the same day.

1 · JMA's forecast wins. For every device, the alert level is now the higher of our own estimate and JMA's forecast intensity for that device's area — the prefecture, or the island group or Hokkaido region where JMA splits them. Replaying Friday's messages: a device in Setagaya receives a full alarm on the first message, no second siren when the forecast is revised, and a cancellation at 12:48. A device in Osaka, which JMA did not list, stays silent. A device in Houston gets a quiet banner.

2 · Cancellations travel. A cancellation now reaches every device that was warned, under the same notification so the original alert is replaced, and ends the Lock Screen countdown. The in-app connection decodes early-warning messages correctly, so the open app behaves exactly like the push.

3 · Say what was observed. Our post-event summary used to be written from magnitude alone. It now leads with the intensity JMA actually observed and the depth, uses the USGS magnitude classes, reads "offshore" from JMA's region name rather than a crude coordinate rule, and no longer invents an aftershock percentage. The epicentre map frames the epicentre, even when it is in the Pacific.

What we still owe you.

JMA forecasts early-warning intensity for 細分区域 — sub-prefecture zones. We currently apply the maximum for your prefecture, which can over-warn the quieter half of a large one. Mapping municipalities to those zones is the next step, and we will write about it here when it ships.

If you felt Friday's phones and wondered why SHINDO said nothing, now you know. If you want to know everything SHINDO shows about an earthquake comes from JMA and nowhere else, that part has not changed.

Video · drop assets/video/making-nazu.mp4

Why a catfish?

The making of Nazu.

Video · drop assets/video/node-mesh.mp4

SHINDO Node

A mesh that outlives the network.