Thanks for considering a contribution. This tool exists to help Monad operators catch a weak host before it earns demerits, and the most valuable contributions are ones that make its verdicts more accurate.
- The tool never modifies the host. Probes read
/proc,/sys, or write a temp file to a directory the user explicitly provides. A contribution that changes system state will not be accepted. - A probe that can't run must
SKIP, not fail. Missing root, absent device, container environment — all of these are skips. Never panic on a restricted host. - Thresholds are heuristics and must stay honest. See below.
The thresholds in internal/probe/thresholds.go
are engineering heuristics, not official Monad limits. If you operate a healthy
validator and can share real measurements — monad-preflight --json output
alongside your hardware and observed skip rate — open an issue. Data from
known-good and known-bad hosts is what lets us tighten the limits without
producing false positives.
make # fmt-check + vet + test + build
make test # race-enabled tests
make fmt # formatCI enforces gofmt, go vet, and go test -race. Please run make before
opening a PR.
- Implement the
probe.Probeinterface ininternal/probe/. - Keep all numeric limits in
thresholds.gowith a provenance comment. - Add the probe to the set in
cmd/monad-preflight/main.go. - Add unit tests for any pure logic (parsing, classification).
- Update the probe table in
README.mdand add aCHANGELOG.mdentry.
Include: OS and kernel (uname -a), CPU model, monad-preflight --json output,
and what you expected versus what you saw.