Skip to main content

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/test12 wording to include test13 and Docker validator notes.
  • 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/gno for all host-side paths.
    • Use Docker Compose for gnoland commands.
    • Use host gnokey after make -C gno.land install.gnoland install.gnokey.
    • Avoid explicit placeholder labels such as VALIDATOR_NAME, DETAILS, and ADDRESS; 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.
  • Create: /Users/conan/blocknth/blocknth-docs/docs/tools/monitor/gnomonitor.md
    • Add a monitor guide for /Users/conan/blocknth/aiops/gnomonitor and https://github.com/ronnynth/gnomonitor.git.
  • Create: /Users/conan/blocknth/blocknth-docs/docs/tools/img/gnomonitor.png
    • Copy from /Users/conan/blocknth/aiops/gnomonitor/grafana/img/grafana.png.

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

ComponentRecommended
CPU4+ cores
Memory8GB+ RAM
Storage200GB+ NVMe SSD
OSUbuntu 22.04/24.04 LTS
NetworkPublic 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_status
  • gno_node_endpoint_response_time_milliseconds
  • gno_node_rpc_requests_total
  • gno_node_latest_block_height
  • gno_node_latest_block_timestamp_seconds
  • gno_node_block_delay_seconds
  • gno_node_catching_up
  • gno_node_peer_count
  • gno_node_validator_count
  • gno_node_total_voting_power

Latest block gas:

  • gno_node_block_txs
  • gno_node_total_txs
  • gno_node_gas_wanted
  • gno_node_gas_used
  • gno_node_gas_fee_amount
  • gno_node_block_results_available

Validator signing:

  • gno_validator_in_set
  • gno_validator_signing_window_count
  • gno_validator_signing_uptime_ratio
  • gno_validator_last_signed_timestamp_seconds
  • gno_validator_last_proposed_timestamp_seconds
  • gno_validator_signing_window_slot

Alert Starting Points

AlertPromQLStarting Threshold
Endpoint downmin_over_time(gno_node_health_status[2m]) == 0Page after 5m
Node catching upmax_over_time(gno_node_catching_up[5m]) == 1Investigate after 10m
Block delay highgno_node_block_delay_seconds > 60Investigate after 5m
Validator not in setgno_validator_in_set == 0Page after 15m for active validators
Signing uptime lowgno_validator_signing_uptime_ratio < 0.90Page after 10m
No recent signaturetime() - gno_validator_last_signed_timestamp_seconds > 300Page 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.md and ITRocket references are included in Task 2 and Task 3.
  • Local /Users/conan/blocknth/aiops/gnoland Docker Compose and config behavior is reflected in Task 2.
  • /data/gno install root and centralized variables are included in Task 2.
  • Required Docker commands for config init and secrets init are included exactly in Task 2.
  • Host-side gnokey and required make -C gno.land install.gnoland install.gnokey are included in Task 2.
  • Avoiding explicit VALIDATOR_NAME, DETAILS, and ADDRESS labels is checked in Task 2.
  • Gno monitor documentation for /Users/conan/blocknth/aiops/gnomonitor and ronnynth/gnomonitor.git is 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, and GNO_KEY_NAME are defined before use.
  • Docker paths consistently map host ${GNO_DATA} to container /gnoland-data.
  • gnokey commands are host commands; gnoland config and gnoland secrets commands run through Docker Compose.