TOKN / field guide

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

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