igneum/tools/community/fixtures/discord/stats.json
igneum-labs 1a6c88631b Discord webhooks: the bot's pulse, digest, weekly, release and incident embeds, a watcher, a timer on the box
tools/community/discord-hooks.mjs (Node 22, standard library): one ember embed per post to #numbers, #announcements and
#incidents. Network pulse every 6 h (03/09/15/21 UK) from /api/stats, /api/live, /api/supply with the 6 h window from its
own snapshot and a Devnet 2 line that uses the fleet file's numbers and gate word only; a 24 h digest and the reddit kit's
weekly template at 09:00 UK; a release subcommand for the shipper (three downloads with sha256, node commit, digest, up to
five plain "what changed" lines read from the release plan); incident open and resolve by hand; a watcher that opens one
incident per condition (finality paused 5 min, median proof lag 15 min, observer silent 3 min) and resolves after 2 clear
minutes, and never opens on a condition already firing when it first looks (the pulse says "finality paused since" instead).

Guards before every post: the founder's name and logins, hosts, machine ids, paths, IP addresses, standalone 32-hex
tokens, dl.igneum.network outside /public/, webhook URLs, mentions, the tools/ci/forbidden-strings.txt patterns; Discord's
limits refused rather than cut; idempotency keys per slot in a state file; exponential backoff on 429; dry run by default
with a Discord-like preview in tools/community/out/preview.html. 30 tests on fixtures cut from the live API.

infra/build-server/discord-hooks: a tick every minute on igneum-build-1 (the Mac sleeps). install.sh copies the webhook file
to /srv/discord-hooks/env (mode 600, over ssh stdin) and refuses without IGNEUM_SECRET_ON_BOX_OK=1; the recorded exception
to rule R6 is in docs/plans/build-server.md (main's ruling, 6 October 2026).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 19:02:05 +00:00

58 lines
No EOL
1.8 KiB
JSON

{
"ok": true,
"now": "2026-10-06T18:44:46.965Z",
"network": "igneum-devnet",
"chain_id": 4463,
"node_version": "2.1.0",
"algorithm": "Igneum lottery hash: random-program GPU hash, new program every hour, generator v2 (docs/spec/01-lottery-hash.md)",
"stale": false,
"age_s": 1.2,
"height": 141642,
"block_count": 120745,
"header_count": 120745,
"daa": 209508,
"blue_score": 205566,
"difficulty": 1247142070.3541756,
"hashrate": 2562646398,
"hashrate_unit": "H/s",
"hashrate_source": "the node's estimateNetworkHashesPerSecond over a 1,000-block window; blue work added per second over 10 min when the node refuses the window",
"block_time_target_s": 1,
"block_time_measured_s": 1.429,
"blocks_per_day_target": 86400,
"blocks_per_day_measured": 70872,
"block_reward": {
"sompi": "547398513",
"ign": "5.47398513",
"miner_ign": "4.37918811",
"proving_pool_ign": "1.09479702",
"split": "80% block producer, 20% proving pool",
"daa_used": 209508,
"ramp_factor": 0.172746,
"halving_period": 0,
"next_halving_daa": 63115200,
"next_halving_in_s": 62905692
},
"last_block": {
"hash": "6b02375e3ed60d3c896d354d77dc76d3706cbe055bbd8bcda5a4087160132718",
"time": "2026-10-06T18:44:45.474Z",
"ts_ms": 1791312285474,
"age_s": 1.5,
"blue_score": 205568,
"daa": 209508,
"miner": "igneumdev:qqrhqjeufh77cd50tdyycnq80vdwgp6av0nd5knkatazfc0mg50gj4ca46t8c",
"miner_id": "9fe4048a",
"tx_count": 0,
"chain": true
},
"finality": {
"active": true,
"latest_locked_index": 6842,
"latest_locked_blue_score": 205262,
"chain_id": "igneum-devnet"
},
"peers": 5,
"mempool": 0,
"miners_10m": 56,
"observer_updated_at": "2026-10-06T18:44:45.798072+00:00",
"source": "tools/observer reading one node every 2 s; reward from docs/spec/02-consensus.md 2.5 at the node's DAA score"
}