Month One on Monad

a plain operator account from Japan.

About a month running a Monad testnet full node as a validator candidate. Plain operator report: what happened, what broke, what we did about it, what we shipped. Operator-honest accounts of month one are useful for the community even when nothing dramatic happens.

Operator-honest reportMONAD TESTNET / JAPAN HOSTValidator CandidateTestnet OperationsOperator Hygiene
SetupNumbersUpgradesIssues caught and fixedCompliance and securityWhat we shipped publiclyThings we got wrongGoing into month twoHonest summary
Host uptime
38d
Unplanned restarts
0
Clean upgrades
3
Current client
v0.14.4
Node identity

full_proofline-jp-01
Monad testnet, chain id 10143
SECP 03187d85...41966b7

Public surfaces: Monad Sentinel, VDP Tracker, MonadBeaconBot.

Setup

The Japan deployment replaced an earlier Polish host (retired on 2026-04-17) so identity, monitoring, and the public Sentinel surface continued cleanly across the move.

Operational results — month one in numbers

At the time of writing:

Five health audits were produced during the month (2026-04-21, 2026-04-26, 2026-04-30, 2026-05-04, plus a 2026-05-07 v0.14.3 health pass). Each one looked for unplanned reboots, crash loops, OOM, thermal, NVMe faults, journal error patterns, and active alerts. Every audit came back clean except for planned upgrade restarts.

Upgrades performed

All three upgrades used the package path rather than manual binary replacement. The cadence settled into "regular operation" rather than "exception".

What broke and what we did about it

We had a small number of real operational issues during the month. None of them resulted in extended downtime, but they are worth naming.

1. SMT-disable post-reboot TrieDB device mismatch (2026-04-16)

After disabling SMT in BIOS on the Ryzen 9 7950X-class host, a post-reboot device-mapping path change broke TrieDB access. We diagnosed the device-access permission issue, applied a persistent root:monad + 0660 layout via a dedicated monad-triedb-prepare.service unit, and wired the Monad services to wait for it via systemd drop-in ordering. The node recovered to healthy in-sync operation on the same hardware.

2. Pre-emptive set-hugepages.service ordering fix (2026-05-18)

A community operator (kamunagi) reported on 2026-05-17 that some Monad nodes fail to start on every reboot because set-hugepages is not explicitly ordered before the Monad services. We had not hit this because the Japan host has not been rebooted in over a month, but the bug is reproducible by design. We extended the existing systemd drop-ins for monad-bft, monad-execution, and monad-rpc to add After=set-hugepages.service and Wants=set-hugepages.service, verified the dependency chain via systemctl show, and kept all five relevant services active through the change. Future reboots are now ordered correctly without waiting for the upstream package to ship the fix.

3. CVE-2026-31431 mitigation

Applied the official interim mitigation for the announced CVE by blacklisting algif_aead via /etc/modprobe.d/disable-algif.conf, unloaded the module, and verified the blocked state.

4. Validator metrics push enabled (2026-05-21)

After the Validator Bi-Weekly Sync, we ran the official otel-validator-setup.sh with SHA-256 verification, replacing our prior local-only otelcol config with the Foundation config that pushes to otel-external.monadinfra.com:443 and adds a secp_key resource attribute. Local :8889 Prometheus endpoint preserved, so existing dashboards continue to work. Foundation now sees Prooflines as compliant on the metrics-reporting requirement.

Compliance and security

What we shipped publicly during the same month

Operating the node was only half of the work. The same month was used to ship public, operator-honest surfaces:

Things we got wrong this month

In the interest of operator-honest framing rather than self-promotion:

What we are watching going into month two

Honest summary

Month one on Monad testnet looked like this: one clean cutover, three clean upgrades, five clean health audits, three small operational items handled without extended downtime, one pre-emptive fix from community signal, validator metrics push brought into Foundation-compliant shape, and a public surface stack that did not exist on day one. No incidents, no slashing (non-applicable on testnet), no surprise reboots.

We will keep posting these.