Files
soleprint/rig/docs/notes/check.md

2.8 KiB

ctrl/check.sh

Purpose

Readiness check: is this machine ready to run rig?

It reports and instructs; it never silently fixes anything. Everything it finds is either already fine, or something a human has to decide on.

Runs ctrl/deps.sh host detection in a container when Docker is the only thing installed, or directly when the toolchain is already present. Then adds the checks that need this repo's config: profile sanity, CA trust, port clashes.

memory

A profile on a box that is already full is the most common first failure, and it presents as pods stuck Pending rather than anything that says "memory". The check warns; it never blocks. Whether to try anyway is the user's call.

mb_of

MEMINFO and OVERCOMMIT_FILE exist only so the tight and does-not-fit branches can be exercised against another machine's real numbers; in normal use they are the kernel's own files.

NODE_MB

NODE_MB (what one node costs) comes from load_config (lib/config.sh), where its measurement is recorded. It lives there, not here, because the memory tool and every standalone kit need the same number: a copy of it is how rigmini.sh came to say 2 GB per node long after rig had measured 800 MB.

container_mb

Every running container's working set in MB, tagged with the kind cluster it belongs to ('-' when it is not kind). docker stats reports usage minus page cache, which is what actually competes: cache is handed back under pressure. Counting only kind would hide the usual culprit on a managed workspace, where the memory is held by other containers entirely.

ours_mb / still_mb

Once this environment's own cluster is running, its real footprint is already out of MemAvailable and the per-node estimate stops being relevant. Subtracting the measurement from the estimate would count the same memory twice, and a running cluster that happens to sit under 800 MB would still "need" the gap.

ports: our own cluster

A port held by THIS environment's own cluster is not a clash; it is the thing working. Reporting it as a problem every time the cluster is up would train people to ignore this section, which is the opposite of the point.

The ports are extracted with a second grep rather than tr -d ':->': in tr, ':->' is the character RANGE ':' to '>', which does not contain '-', so the trailing dash survives and nothing ever matches.

Compact by default

make check prints one line per question — host, toolchain, and for this rig: cluster, memory, ports, registry, addons — and adds detail only where something needs attention (! lines, the "held elsewhere" list when memory is tight, the clashing port). make check all prints every fact, as the full report did before 2026-09-17. deps.sh detect all is the same switch for the host part, so the standalone rigdeps.sh detect is short too. Changed because the long report buried the few lines that mattered.