Skip to content

Latest commit

 

History

History
48 lines (36 loc) · 1.84 KB

File metadata and controls

48 lines (36 loc) · 1.84 KB

Contributing

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.

Ground rules

  • 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.

Calibration data is the most useful contribution

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.

Development

make            # fmt-check + vet + test + build
make test       # race-enabled tests
make fmt        # format

CI enforces gofmt, go vet, and go test -race. Please run make before opening a PR.

Adding a probe

  1. Implement the probe.Probe interface in internal/probe/.
  2. Keep all numeric limits in thresholds.go with a provenance comment.
  3. Add the probe to the set in cmd/monad-preflight/main.go.
  4. Add unit tests for any pure logic (parsing, classification).
  5. Update the probe table in README.md and add a CHANGELOG.md entry.

Reporting issues

Include: OS and kernel (uname -a), CPU model, monad-preflight --json output, and what you expected versus what you saw.