ci: add consensus determinism gate and PR coverage for system tests#111
ci: add consensus determinism gate and PR coverage for system tests#111mateeullahmalik wants to merge 9 commits intomasterfrom
Conversation
- run test + systemtests workflows on pull requests to master - add consensus-determinism workflow (6-validator canary, app-hash camp check) - add map-consensus-inventory workflow and script to inventory map-bearing proto/state paths and surface determinism risks
All 3 issues from the previous review have been fixed in 375fcea. No new issues found.
Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
| done | ||
| curl -sf http://127.0.0.1:26657/status >/dev/null | ||
|
|
||
| SUBJECT=$("$BIN" keys show node1 -a --home "$OUT" --keyring-backend test) |
There was a problem hiding this comment.
--home "$OUT" points to the testnet output root (.ci-determinism/testnet), but the keyring for node1 lives at $OUT/node1/lumerad (the testnet init-files command creates per-node keyrings under $OUT/<nodeDirPrefix><i>/<nodeDaemonHome>/). This will fail at runtime with a "key not found" error because there is no keyring at $OUT.
| SUBJECT=$("$BIN" keys show node1 -a --home "$OUT" --keyring-backend test) | |
| SUBJECT=$("$BIN" keys show node1 -a --home "$OUT/node1/lumerad" --keyring-backend test) |
Fix it with Roo Code or mention @roomote and request a fix.
| "$BIN" tx audit submit-evidence "$SUBJECT" cascade-client-failure "$action_id" "$meta_json" \ | ||
| --from node0 \ | ||
| --home "$OUT" \ | ||
| --keyring-backend test \ | ||
| --chain-id "$CHAIN_ID" \ | ||
| --node tcp://127.0.0.1:26657 \ | ||
| --fees 1ulume \ | ||
| --broadcast-mode sync \ | ||
| --yes -o json > "$WORK/${action_id}.json" |
There was a problem hiding this comment.
Same --home issue as the keys show call above: $OUT is the testnet root, but the keyring for node0 is at $OUT/node0/lumerad. The --from node0 lookup will fail because there is no keyring at $OUT.
| "$BIN" tx audit submit-evidence "$SUBJECT" cascade-client-failure "$action_id" "$meta_json" \ | |
| --from node0 \ | |
| --home "$OUT" \ | |
| --keyring-backend test \ | |
| --chain-id "$CHAIN_ID" \ | |
| --node tcp://127.0.0.1:26657 \ | |
| --fees 1ulume \ | |
| --broadcast-mode sync \ | |
| --yes -o json > "$WORK/${action_id}.json" | |
| "$BIN" tx audit submit-evidence "$SUBJECT" cascade-client-failure "$action_id" "$meta_json" \ | |
| --from node0 \ | |
| --home "$OUT/node0/lumerad" \ | |
| --keyring-backend test \ | |
| --chain-id "$CHAIN_ID" \ | |
| --node tcp://127.0.0.1:26657 \ | |
| --fees 1ulume \ | |
| --broadcast-mode sync \ | |
| --yes -o json > "$WORK/${action_id}.json" |
Fix it with Roo Code or mention @roomote and request a fix.
| submit_tx ci-canary-1 "$META1" | ||
| submit_tx ci-canary-2 "$META2" |
There was a problem hiding this comment.
Both transactions are submitted back-to-back with --broadcast-mode sync. The CLI auto-detects the account sequence from committed state, so if the first tx hasn't landed in a block yet, the second tx will be signed with the same sequence number and rejected with an account sequence mismatch. Adding a short sleep (or switching to --broadcast-mode block for the first tx, or using --sequence explicitly) would prevent this race.
| submit_tx ci-canary-1 "$META1" | |
| submit_tx ci-canary-2 "$META2" | |
| submit_tx ci-canary-1 "$META1" | |
| sleep 6 | |
| submit_tx ci-canary-2 "$META2" |
Fix it with Roo Code or mention @roomote and request a fix.
- use per-node home paths for key lookup and tx signing - switch canary tx broadcast mode to block to avoid account sequence race between back-to-back submissions
Summary
This PR strengthens pre-merge safety for consensus determinism regressions.
Changes
Validation
Notes