Gno.land Docker Validator and Monitor Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Add a Docker-based Gno.land test13 validator installation guide and a gnomonitor monitoring guide to the BlockNth docs site.
Architecture: Keep all Gno validator operations under docs/testnet-networks/gno/ and all monitor documentation under docs/tools/monitor/. The validator guide will use /data/gno as the single install root, Docker Compose for gnoland, and host-installed gnokey for wallet and transaction commands. The monitor guide will document the existing ronnynth/gnomonitor repository and reuse its Grafana screenshot.
Tech Stack: Docusaurus 3, Markdown/MDX docs, Docker Compose, Go, Gno chain/test13, gnoland, gnokey, Prometheus, Grafana.
File Structure
- Modify:
/Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/introduction.md- Update network overview from older
gnoland1/test12wording to include test13 and Docker validator notes.
- Update network overview from older
- Modify:
/Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/fullnode-setup.mdx- Replace the current short generic setup with a Docker-based test13 validator/fullnode guide.
- Keep variables centralized at the top.
- Use
/data/gnofor all host-side paths. - Use Docker Compose for
gnolandcommands. - Use host
gnokeyaftermake -C gno.land install.gnoland install.gnokey. - Avoid explicit placeholder labels such as
VALIDATOR_NAME,DETAILS, andADDRESS; use readable examples inside commands instead.
- Modify:
/Users/conan/blocknth/blocknth-docs/docs/network-version-reference.md- Add or replace the old Gno testnet row with Gno Test13,
chain/test13, Docker image build from source, and official references.
- Add or replace the old Gno testnet row with Gno Test13,
- Create:
/Users/conan/blocknth/blocknth-docs/docs/tools/monitor/gnomonitor.md- Add a monitor guide for
/Users/conan/blocknth/aiops/gnomonitorandhttps://github.com/ronnynth/gnomonitor.git.
- Add a monitor guide for
- Create:
/Users/conan/blocknth/blocknth-docs/docs/tools/img/gnomonitor.png- Copy from
/Users/conan/blocknth/aiops/gnomonitor/grafana/img/grafana.png.
- Copy from
Existing dirty worktree items to preserve:
/Users/conan/blocknth/blocknth-docs/docs/testnet-networks/nexus/node-setup.md/Users/conan/blocknth/blocknth-docs/docs/network-version-reference.md/Users/conan/blocknth/blocknth-docs/docs/testnet-networks/canton/
The version reference file already has unrelated Canton edits. When modifying it, keep those lines intact.
Sources Checked
- Official Gno validator guide:
https://github.com/gnolang/gno/blob/chain/test13/misc/deployments/test13.gno.land/VALIDATOR.md - ITRocket Gno installation page:
https://itrocket.net/services/testnet/gnoland/installation - Local Docker reference:
/Users/conan/blocknth/aiops/gnoland/docker-compose.yaml - Local config reference:
/Users/conan/blocknth/aiops/gnoland/config.toml - Local monitor reference:
/Users/conan/blocknth/aiops/gnomonitor/README.md - Monitor repository:
https://github.com/ronnynth/gnomonitor.git
Task 1: Update Gno Introduction
Files:
-
Modify:
/Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/introduction.md -
Step 1: Inspect the current page
Run:
sed -n '1,220p' /Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/introduction.md
Expected: the page still mentions gnoland1 and test12 and does not yet describe test13 Docker deployment.
- Step 2: Replace the introduction content
Use apply_patch to replace the body after the front matter with this content:
# Introduction to Gno.land
Gno.land is a smart contract platform built around Gnolang, a deterministic language inspired by Go. It is designed for readable on-chain packages, realms, and applications that can be reviewed and interacted with directly from the network.
This section focuses on the Gno test13 network and a Docker-based node deployment. The `gnoland` service runs inside Docker Compose, while `gnokey` is installed on the host and used for wallet, query, and transaction commands.
## Network Overview
| Network | Chain ID | RPC Endpoint | Notes |
| --- | --- | --- | --- |
| Gno Test13 | `test-13` | `https://rpc.test13.testnets.gno.land:443` | Current validator onboarding target used by the official `chain/test13` deployment notes |
| Gno.land release line | `gnoland1` | `https://rpc.gno.land:443` | Public release line; do not reuse test13 genesis or peer files |
:::warning
Gno testnet parameters change across releases. Confirm branch, genesis, peers, and registration flow from the official `chain/test13` deployment notes before starting or upgrading a validator.
:::
## Docker Deployment Model
- Build `gnoland:test13` locally from the `gnolang/gno` repository.
- Mount `/data/gno/gnoland-data` on the host to `/gnoland-data` in the container.
- Run `gnoland config` and `gnoland secrets` commands through Docker Compose.
- Run `gnokey` on the host after building the binary with `make -C gno.land install.gnoland install.gnokey`.
## Useful Links
- Official site: [https://gno.land](https://gno.land)
- Documentation: [https://docs.gno.land](https://docs.gno.land)
- Test13 validator guide: [VALIDATOR.md](https://github.com/gnolang/gno/blob/chain/test13/misc/deployments/test13.gno.land/VALIDATOR.md)
- Gno GitHub repository: [https://github.com/gnolang/gno](https://github.com/gnolang/gno)
- gnomonitor: [https://github.com/ronnynth/gnomonitor](https://github.com/ronnynth/gnomonitor)
- Step 3: Verify no stale test12 wording remains on this page
Run:
rg -n "test12|chain/gnoland1.1|gnoland1.1" /Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/introduction.md
Expected: no output.
- Step 4: Commit this task
Run:
git add /Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/introduction.md
git commit -m "docs: update gno test13 introduction"
Expected: commit succeeds. If unrelated files are already staged, unstage them first with git restore --staged <path> and only stage this file.
Task 2: Add Docker-Based Gno Test13 Validator Setup
Files:
-
Modify:
/Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/fullnode-setup.mdx -
Step 1: Inspect local Docker references
Run:
sed -n '1,220p' /Users/conan/blocknth/aiops/gnoland/docker-compose.yaml
sed -n '1,260p' /Users/conan/blocknth/aiops/gnoland/config.toml
Expected: Docker Compose uses gnoland:test13, container path /gnoland-data, ports 26656/26657, and the local config includes db_backend = "pebbledb", seeds, persistent_peers, and RPC/P2P listen addresses.
- Step 2: Replace the setup page with the Docker guide
Use apply_patch to replace /Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/fullnode-setup.mdx with this complete content:
---
title: Docker Validator Setup
sidebar_position: 2
---
# Gno.land Test13 Docker Validator Setup
This guide deploys a Gno test13 node with Docker Compose. `gnoland` runs in a container and stores chain data under `/data/gno/gnoland-data` on the host. `gnokey` runs on the host, so the source build still installs both `gnoland` and `gnokey`.
:::tip
The commands below assume a root shell. If you use a non-root user, prefix system package and firewall commands with `sudo`.
:::
## Variables
Set all operator-specific values once before running the guide:
```bash
export GNO_HOME=/data/gno
export GNO_REPO=${GNO_HOME}/gno
export GNO_DATA=${GNO_HOME}/gnoland-data
export GNO_CHAIN_ID=test-13
export GNO_IMAGE=gnoland:test13
export GNO_BRANCH=chain/test13
export GNO_GENESIS_URL=https://github.com/gnolang/gno/releases/download/chain/test13/genesis.json
export GNO_RPC=https://rpc.test13.testnets.gno.land:443
export GNO_P2P_PORT=26656
export GNO_RPC_PORT=26657
export GNO_KEY_NAME=operator
export GNO_PUBLIC_IP=$(curl -s https://ipinfo.io/ip)
The example key name operator is only a local keyring label. Choose a label that helps you recognize the wallet on the server.
System Requirements
| Component | Recommended |
|---|---|
| CPU | 4+ cores |
| Memory | 8GB+ RAM |
| Storage | 200GB+ NVMe SSD |
| OS | Ubuntu 22.04/24.04 LTS |
| Network | Public TCP 26656 for P2P; restrict RPC 26657 unless you intentionally expose it |
Install Dependencies
apt update
apt install -y git make build-essential curl wget jq lz4 ufw ca-certificates
Install Go if it is not already available:
go version
Gno test13 builds with a recent Go toolchain. If go version is missing or too old, install Go from the official Go downloads page before continuing.
Build Gno and Host Binaries
mkdir -pv ${GNO_HOME}
cd ${GNO_HOME}
git clone https://github.com/gnolang/gno.git
cd ${GNO_REPO}
git checkout ${GNO_BRANCH}
make -C gno.land install.gnoland install.gnokey
docker build --target gnoland -t ${GNO_IMAGE} .
gnoland version
gnokey version
gnoland is built for the Docker image, while gnokey is used directly on the host for keys and transactions.
Create Data Directories and Genesis
mkdir -pv ${GNO_DATA}/config ${GNO_DATA}/secrets
cd ${GNO_HOME}
wget -O ${GNO_DATA}/genesis.json ${GNO_GENESIS_URL}
shasum -a 256 ${GNO_DATA}/genesis.json
Compare the hash with the checksum published by the official test13 release notes before starting the node.
Create Docker Compose File
cat > ${GNO_HOME}/docker-compose.yaml << EOF
services:
gnoland:
image: ${GNO_IMAGE}
container_name: gnoland-test13
restart: unless-stopped
ports:
- "${GNO_P2P_PORT}:26656"
- "127.0.0.1:${GNO_RPC_PORT}:26657"
volumes:
- ${GNO_DATA}:/gnoland-data
command: >
start
-chainid ${GNO_CHAIN_ID}
-data-dir /gnoland-data
-genesis /gnoland-data/genesis.json
-skip-genesis-sig-verification=true
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "5"
EOF
RPC is bound to 127.0.0.1 in this example. Put a reverse proxy and access control in front of it if remote RPC access is required.
Initialize Config and Secrets
Run gnoland configuration commands through Docker Compose:
cd ${GNO_HOME}
docker compose run --rm gnoland config init -config-path /gnoland-data/config/config.toml
docker compose run --rm gnoland secrets init -data-dir /gnoland-data/secrets
Update the generated config with test13 networking values:
python3 - <<'PY'
from pathlib import Path
path = Path("/data/gno/gnoland-data/config/config.toml")
text = path.read_text()
replacements = {
'db_backend = "lmdbdb"': 'db_backend = "pebbledb"',
'moniker = ""': 'moniker = "gno-test13-node"',
'laddr = "tcp://127.0.0.1:26657"': 'laddr = "tcp://0.0.0.0:26657"',
'laddr = "tcp://127.0.0.1:26656"': 'laddr = "tcp://0.0.0.0:26656"',
'external_address = ""': 'external_address = "' + "${GNO_PUBLIC_IP}" + ':26656"',
'seeds = ""': 'seeds = "g1rrj6gvxp7ph8d4rsy9vegrhp8nx4lyxzgmc4ad@gnoland-testnet-seed.itrocket.net:54656"',
}
for old, new in replacements.items():
text = text.replace(old, new)
path.write_text(text)
PY
Review peer settings before startup:
rg -n "moniker|external_address|seeds|persistent_peers|db_backend|laddr" ${GNO_DATA}/config/config.toml
Open P2P Port
ufw allow ${GNO_P2P_PORT}/tcp
ufw status
If your cloud provider has a separate firewall, allow TCP 26656 there as well.
Optional: Restore Snapshot
If you use a trusted snapshot, stop the node first and extract the snapshot into the mounted data directory:
cd ${GNO_HOME}
docker compose down
curl -L http://146.19.24.32:8000/gno_test13/gno-test13-snapshot.tar.lz4 \
| lz4 -c -d - \
| tar -x -C ${GNO_DATA}
Only restore snapshots from sources you trust. Keep config/, secrets/, and genesis.json intact.
Start the Node
cd ${GNO_HOME}
docker compose up -d
docker compose ps
docker compose logs -f
Check node status from the host:
curl -s http://127.0.0.1:${GNO_RPC_PORT}/status | jq
Wait until catching_up is false before sending validator registration transactions.
Create a Host Wallet
Run gnokey on the host:
gnokey add ${GNO_KEY_NAME}
gnokey list
Back up the mnemonic immediately. Fund the resulting Gno address with enough ugnot for registration and later operations.
Confirm the account is visible on test13:
gnokey query -remote "${GNO_RPC}" auth/accounts/$(gnokey list | awk '/address:/ {print $2; exit}')
Read Validator Key from the Container Data
The validator private key lives under the mounted /gnoland-data/secrets directory and is read through Docker Compose:
docker compose run --rm gnoland secrets get validator_key -data-dir /gnoland-data/secrets
Use the returned validator address and public key in the registration command below. Keep the key files under ${GNO_DATA}/secrets backed up and private.
Register the Validator
The registration transaction is a gnokey transaction from the host. The example below avoids separate placeholder variables for the public profile fields; replace the human-readable example strings inline.
gnokey maketx call \
--pkgpath gno.land/r/gnops/valopers \
--func Register \
--args "sunrise-lab" \
--args "Independent Gno test13 validator running Docker Compose, host gnokey operations, and Prometheus monitoring." \
--args "data-center" \
--args "g1examplevalidatoraddressxxxxxxxxxxxxxxxxxx" \
--args "gpub1examplevalidatorpublickeyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
--gas-fee 1000000ugnot \
--gas-wanted 50000000 \
--chainid ${GNO_CHAIN_ID} \
--remote ${GNO_RPC} \
--broadcast \
${GNO_KEY_NAME}
The first two --args are examples for the public profile shown in the valopers registry. The validator address and public key come from docker compose run --rm gnoland secrets get validator_key -data-dir /gnoland-data/secrets.
Maintenance Commands
cd ${GNO_HOME}
docker compose ps
docker compose logs --tail=100 gnoland
docker compose logs -f gnoland
docker compose restart gnoland
docker compose down
docker compose up -d
Check disk usage:
du -sh ${GNO_HOME} ${GNO_DATA} ${GNO_DATA}/*
df -h
Backup
Back up the key material and config before upgrades:
tar -czf ${GNO_HOME}/gno-test13-config-secrets-$(date +%Y%m%d).tar.gz \
-C ${GNO_DATA} \
config secrets genesis.json
Store the archive outside the validator host. Never publish secrets/ or wallet mnemonics.
References
- [ ] **Step 3: Verify required Docker commands are present**
Run:
```bash
rg -n "docker compose run --rm gnoland config init -config-path /gnoland-data/config/config.toml|docker compose run --rm gnoland secrets init -data-dir /gnoland-data/secrets|make -C gno.land install.gnoland install.gnokey|GNO_HOME=/data/gno|gnokey maketx call" /Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/fullnode-setup.mdx
Expected: all five required patterns are found.
- Step 4: Verify disallowed explicit labels are absent
Run:
rg -n "VALIDATOR_NAME|VALIDATOR_DETAIL|VALIDATOR_DETAILS|VALIDATOR_ADDRESS|VAL_ADDRESS=|DETAILS=" /Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/fullnode-setup.mdx
Expected: no output.
- Step 5: Commit this task
Run:
git add /Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/fullnode-setup.mdx
git commit -m "docs: add gno test13 docker validator setup"
Expected: commit succeeds with only the Gno setup page staged.
Task 3: Update Network Version Reference
Files:
-
Modify:
/Users/conan/blocknth/blocknth-docs/docs/network-version-reference.md -
Step 1: Inspect existing Gno rows
Run:
rg -n "Gno" /Users/conan/blocknth/blocknth-docs/docs/network-version-reference.md
Expected: existing rows include Gno.land and Gno Test12 Labnet.
- Step 2: Update the table
Use apply_patch to replace the two existing Gno rows:
| Gno.land | `gnoland1` | `chain/gnoland1.1` | Docker images or source build | [Gno releases](https://github.com/gnolang/gno/releases/tag/chain/gnoland1.1) |
| Gno Test12 Labnet | `test12` | `chain/test12` | Release deployment config | [Gno test12 release](https://github.com/gnolang/gno/releases/tag/chain/test12) |
with these rows:
| Gno.land | `gnoland1` | `chain/gnoland1.1` | Docker images or source build | [Gno releases](https://github.com/gnolang/gno/releases/tag/chain/gnoland1.1) |
| Gno Test13 | `test-13` | `chain/test13` | Locally built `gnoland:test13` Docker image plus host `gnokey` | [Gno test13 validator guide](https://github.com/gnolang/gno/blob/chain/test13/misc/deployments/test13.gno.land/VALIDATOR.md), [Gno releases](https://github.com/gnolang/gno/releases/tag/chain/test13) |
Keep all existing Canton and Nexus rows exactly as they are.
- Step 3: Verify test13 is listed
Run:
rg -n "Gno Test13|chain/test13|test-13" /Users/conan/blocknth/blocknth-docs/docs/network-version-reference.md
Expected: the new Gno Test13 row is found.
- Step 4: Commit this task
Run:
git add /Users/conan/blocknth/blocknth-docs/docs/network-version-reference.md
git commit -m "docs: record gno test13 version reference"
Expected: commit succeeds. If the file contains pre-existing Canton edits that are not part of this task, confirm with the user before committing them or use partial staging.
Task 4: Add Gno Monitor Documentation
Files:
-
Create:
/Users/conan/blocknth/blocknth-docs/docs/tools/monitor/gnomonitor.md -
Create:
/Users/conan/blocknth/blocknth-docs/docs/tools/img/gnomonitor.png -
Step 1: Copy the Grafana screenshot
Run:
cp /Users/conan/blocknth/aiops/gnomonitor/grafana/img/grafana.png /Users/conan/blocknth/blocknth-docs/docs/tools/img/gnomonitor.png
ls -lh /Users/conan/blocknth/blocknth-docs/docs/tools/img/gnomonitor.png
Expected: gnomonitor.png exists under docs/tools/img/.
- Step 2: Create the monitor page
Use apply_patch to add /Users/conan/blocknth/blocknth-docs/docs/tools/monitor/gnomonitor.md with this content:
---
sidebar_position: 3
title: Gno Monitor
---
# Gno Monitor
`gnomonitor` is a lightweight Prometheus exporter for Gno/TM2 RPC nodes. It polls Gno RPC endpoints and exposes node health, latest block status, peer count, validator set status, gas metrics, and in-memory validator signing-window metrics.
Repository: [ronnynth/gnomonitor](https://github.com/ronnynth/gnomonitor.git)
## Features
- Gno/TM2 RPC health checks
- Latest block height and timestamp metrics
- Catching-up and peer count metrics
- Validator set and voting power metrics
- Latest block gas metrics
- Optional validator auto-discovery from `/status.validator_info.address`
- Prometheus `/metrics` and HTTP `/health` endpoints
- Grafana dashboard JSON under `grafana/dashboards/gnomonitor.json`
## Build
```bash
git clone https://github.com/ronnynth/gnomonitor.git
cd gnomonitor
go mod download
go build -o gnomonitor main.go
Cross-compile for Linux amd64:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
-trimpath \
-ldflags='-s -w' \
-o dist/gnomonitor-linux-amd64 \
main.go
Configure
Create config.yaml:
gno:
- hostname: "gno-test13-rpc"
http_url: "http://127.0.0.1:26657"
chain_name: "gno-test13"
chain_id: "test-13"
node_version: ""
protocol_name: "gno"
check_second: 5
signing_window: 50
auto_discover_validator: true
validator_addresses: []
For a remote public endpoint, use:
gno:
- hostname: "gno-test13-public"
http_url: "https://rpc.test13.testnets.gno.land"
chain_name: "gno-test13"
chain_id: "test-13"
node_version: ""
protocol_name: "gno"
check_second: 5
signing_window: 50
auto_discover_validator: true
validator_addresses: []
validator_addresses accepts multiple Gno validator addresses. If auto_discover_validator is true, the monitor also adds the validator address reported by the RPC status response when available.
Run
./gnomonitor \
-conf ./config.yaml \
-listen.addr :3002 \
-pprof.addr localhost:6062 \
-logtostderr=true \
-v=5
Common server mode:
./gnomonitor \
-conf ./config.yaml \
-listen.addr :9108 \
-pprof.addr "" \
-logtostderr=true \
-v=2
Endpoints:
- Metrics:
http://localhost:9108/metrics - Health:
http://localhost:9108/health - pprof, when enabled:
http://localhost:6062/debug/pprof/
Prometheus
scrape_configs:
- job_name: "gno-nodes"
static_configs:
- targets: ["localhost:9108"]
scrape_interval: 15s
metrics_path: /metrics
Grafana Dashboard
Import grafana/dashboards/gnomonitor.json from the repository.
Gno Monitor dashboard image path: ../img/gnomonitor.png
The dashboard focuses on live operator views: node status, RPC health and latency, validator signing, and latest block gas.
Metrics
Node health:
gno_node_health_statusgno_node_endpoint_response_time_millisecondsgno_node_rpc_requests_totalgno_node_latest_block_heightgno_node_latest_block_timestamp_secondsgno_node_block_delay_secondsgno_node_catching_upgno_node_peer_countgno_node_validator_countgno_node_total_voting_power
Latest block gas:
gno_node_block_txsgno_node_total_txsgno_node_gas_wantedgno_node_gas_usedgno_node_gas_fee_amountgno_node_block_results_available
Validator signing:
gno_validator_in_setgno_validator_signing_window_countgno_validator_signing_uptime_ratiogno_validator_last_signed_timestamp_secondsgno_validator_last_proposed_timestamp_secondsgno_validator_signing_window_slot
Alert Starting Points
| Alert | PromQL | Starting Threshold |
|---|---|---|
| Endpoint down | min_over_time(gno_node_health_status[2m]) == 0 | Page after 5m |
| Node catching up | max_over_time(gno_node_catching_up[5m]) == 1 | Investigate after 10m |
| Block delay high | gno_node_block_delay_seconds > 60 | Investigate after 5m |
| Validator not in set | gno_validator_in_set == 0 | Page after 15m for active validators |
| Signing uptime low | gno_validator_signing_uptime_ratio < 0.90 | Page after 10m |
| No recent signature | time() - gno_validator_last_signed_timestamp_seconds > 300 | Page for active validators |
Signing-window metrics are in memory only. They start empty after process restart and become useful as new blocks are observed.
- [ ] **Step 3: Verify monitor docs reference the repository and image**
Run:
```bash
rg -n "ronnynth/gnomonitor|gnomonitor.png|gno_validator_signing_uptime_ratio" /Users/conan/blocknth/blocknth-docs/docs/tools/monitor/gnomonitor.md
test -f /Users/conan/blocknth/blocknth-docs/docs/tools/img/gnomonitor.png
Expected: all search patterns are found and test -f exits successfully.
- Step 4: Commit this task
Run:
git add /Users/conan/blocknth/blocknth-docs/docs/tools/monitor/gnomonitor.md /Users/conan/blocknth/blocknth-docs/docs/tools/img/gnomonitor.png
git commit -m "docs: add gno monitor guide"
Expected: commit succeeds with only the monitor page and screenshot staged.
Task 5: Validate the Docs Site
Files:
-
Verify:
/Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/introduction.md -
Verify:
/Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/fullnode-setup.mdx -
Verify:
/Users/conan/blocknth/blocknth-docs/docs/tools/monitor/gnomonitor.md -
Verify:
/Users/conan/blocknth/blocknth-docs/docs/network-version-reference.md -
Step 1: Run typecheck
Run:
cd /Users/conan/blocknth/blocknth-docs
yarn typecheck
Expected: exits 0 and prints Done.
- Step 2: Run production build
Run:
cd /Users/conan/blocknth/blocknth-docs
yarn build
Expected: exits 0 and prints Generated static files in "build".
- Step 3: Inspect final diff
Run:
cd /Users/conan/blocknth/blocknth-docs
git status --short
git diff --stat HEAD
Expected: only intentional docs changes remain uncommitted. Existing unrelated Nexus/Canton work should not be reverted.
- Step 4: Final commit for validation fixes only
If validation required typo or link fixes, commit those fixes:
git add /Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/introduction.md \
/Users/conan/blocknth/blocknth-docs/docs/testnet-networks/gno/fullnode-setup.mdx \
/Users/conan/blocknth/blocknth-docs/docs/tools/monitor/gnomonitor.md \
/Users/conan/blocknth/blocknth-docs/docs/tools/img/gnomonitor.png \
/Users/conan/blocknth/blocknth-docs/docs/network-version-reference.md
git commit -m "docs: polish gno validator and monitor docs"
Expected: commit succeeds only if Step 1 or Step 2 revealed issues that needed fixes. If no fixes were needed, skip this commit.
Self-Review
Spec coverage:
- Docker-based Gno.land installation is covered in Task 2.
- Official
VALIDATOR.mdand ITRocket references are included in Task 2 and Task 3. - Local
/Users/conan/blocknth/aiops/gnolandDocker Compose and config behavior is reflected in Task 2. /data/gnoinstall root and centralized variables are included in Task 2.- Required Docker commands for
config initandsecrets initare included exactly in Task 2. - Host-side
gnokeyand requiredmake -C gno.land install.gnoland install.gnokeyare included in Task 2. - Avoiding explicit
VALIDATOR_NAME,DETAILS, andADDRESSlabels is checked in Task 2. - Gno monitor documentation for
/Users/conan/blocknth/aiops/gnomonitorandronnynth/gnomonitor.gitis covered in Task 4. - Build and typecheck validation are covered in Task 5.
Placeholder scan:
- The plan contains no forbidden placeholder markers or empty steps.
- Example values are concrete examples, not required variable placeholders.
Type and command consistency:
GNO_HOME,GNO_REPO,GNO_DATA,GNO_CHAIN_ID,GNO_IMAGE,GNO_BRANCH,GNO_GENESIS_URL,GNO_RPC,GNO_P2P_PORT,GNO_RPC_PORT, andGNO_KEY_NAMEare defined before use.- Docker paths consistently map host
${GNO_DATA}to container/gnoland-data. gnokeycommands are host commands;gnoland configandgnoland secretscommands run through Docker Compose.