diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6c7af009e..a6f26a8c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,8 +87,8 @@ jobs: run: bash tools/ci/no-secrets-check.sh --self-test && bash tools/ci/no-secrets-check.sh - name: faucet unit tests (validation, the daily limits, the signed transaction; keccak, RLP and secp256k1 vectors) run: node --test site/api/faucet.test.mjs - - name: explorer and public stats unit tests (search router, formatters, emission rule against the node's own test values, the documented API fields from a fixture) - run: node --test site/lib/explorer.test.mjs site/lib/emission.test.mjs site/api/public-stats.test.mjs + - name: explorer, proof and public stats unit tests (search router, formatters, emission rule against the node's own test values, the documented API fields from a fixture, the proof checks against a real proof tail, /api/verify, the observer's capture parsers) + run: node --test site/lib/explorer.test.mjs site/lib/emission.test.mjs site/api/public-stats.test.mjs site/lib/proof.test.mjs site/api/verify.test.mjs tools/observer/proof-capture.test.mjs - name: public stats API answers with the documented fields (the live site; master only, the endpoints exist there after the merge) if: github.ref == 'refs/heads/master' run: node tools/ci/public-api-check.mjs https://igneum.network diff --git a/docs/plans/explorer.md b/docs/plans/explorer.md index 785f63c02..fc7c3c976 100644 --- a/docs/plans/explorer.md +++ b/docs/plans/explorer.md @@ -217,5 +217,21 @@ cut), `tools/observer/proof-capture.test.mjs` (the host-output parsers against r fake node; on a Mac with the app, the native verifier refusing block 59199's pre-pin proof: "IS NOT OURS"), `site/api/public-stats.test.mjs` (C46). CI runs the first, second and fourth with the explorer tests. -Dry run: see the status below this section once it ran (the devnet's execution was reset for 0.3.13 at about -15:30 UTC and the pool was empty until the provers returned). +Dry run, 6 October 2026, 16:08 to 16:16 UTC. The devnet's execution was reset for 0.3.13 at about 15:48 UTC +and node 1's exec RPC (127.0.0.1:26790) came back at tip 135,933 by 16:12 with an EMPTY pool (the provers were +still off), so the live capture could not run; the fixture route was used instead, with the real verifier and +the real tables: + +| Step | Result | +|---|---| +| Pinned host (the Mac app bundle's `igneum-prove-host`) proves shard 0 of `proving/fixtures/block-56-transfers.json` on the CPU | 81.3 s beside another agent's cargo build (not a number); proof 1,272,897 bytes, statement `0x5a4d59f4...`, `--mode verify` 0.041 s, program id the pinned one | +| `captureProof()` on those bytes with a fake node handing them out, the native verifier on | SHA-256 ok, statement ok, fields ok; native VERIFIED in 29 ms, key setup 197 ms, process 240 ms; the whole capture 282 ms | +| A test observer (`LIVE_TABLE_PREFIX=vtest_`) against the live node for 5 minutes | schema created, `pow_epoch` written (class 3, next 3, epoch 55, activation 154,800), proving feed on 26790; RPC load 230 to 248 wRPC calls a minute against the live observer's 222 to 224, EVM 2,466 against 2,481 | +| `/proof/c47bacc8...` through `tools/site-serve.mjs` in the browser pane | VERDICT VERIFIED; 5.8 ms of checks and 139 ms of download in the browser, STARK 29 ms on the node; the three checks print got and want; the statement decodes to block 56, 3 transactions, gas 63,000, pgas 600 | +| `/block/c47bacc8...`, `/block/136508`, `/explorer` | the state chip and the note; height 136508 first resolved to a block that had left the chain (two blocks shared the number after a tip reorg), fixed: the height lookup prefers the chain block | +| The known-failed case | `tools/observer/proof-capture.test.mjs`: the pinned verifier refuses block 59199's pre-pin proof ("IS NOT OURS", 0x0559759b...), parsed and stored as native NOT VERIFIED with the note | + +Owed: the same run against a devnet pool proof once the provers are back (the test observer captures one within +`PROOF_CAPTURE_EVERY_MS` of seeing it; `grep "proof captured"` in its log), and the live observer's restart on +this code (autosync picks it up from master; until then `/api/verify` answers with empty shards and the stats +line says the class is unknown).