Bootstrap storage observation
scripts/pilot-storage-observation.py measures allocated data blocks on the existing local TEST TOKN bootstrap host. It does not start a node, sign a transaction, or change data.
Requirements: the running project compose.pilot.yaml node, its local TEST gateway on 127.0.0.1:28080, Docker Compose, GNU du, and uv on the host. Run from this checkout:
UV_CACHE_DIR="$PWD/.cache/uv" UV_PYTHON_INSTALL_DIR="$PWD/.cache/uv-python" \
uv run --no-project --no-config --no-cache python \
scripts/pilot-storage-observation.py \
--receipt state/private/storage-observation-unique.jsonThe command verifies the node's bind mount, records host allocated bytes with du -s -B1, waits for at least ten new TEST blocks, and records a second sample. The same running container must survive the observation. Receipts are created exclusively: an existing filename is never overwritten. Failed runs are marked state: failed; they are not successful observations. The default deadline is 180 seconds. Data and receipts must remain below this checkout.
The JSON includes chain ID, sampled block hashes/heights, times, allocated bytes, and their signed difference. Block observations bracket each du scan because the database remains live. Compaction can produce a negative difference, and a short observation can produce zero even while later allocation grows. This is neither a quota/free-space reading, a catch-up benchmark, a future disk budget, nor proof of independent control. Do not extrapolate a short idle sample to full synchronization or a workload of one job per minute.
Before claiming a resource requirement, gather multiple idle, catch-up and declared-workload samples with the node version, storage/filesystem and workload recorded. Keep a forecast distinct from the samples used to construct it and evaluate it on a later holdout window. Full independent M0 participation remains a separate gate.