diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index da8b62e2fc..9fa7aeec0d 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -88,6 +88,32 @@ jobs: "./integration_test/contracts/verify_cross_validator_flatkv_digest.sh" ] }, + { + # Trimmed subset of Chain Operation Test: only the validator-side + # checks. Under Autobahn a non-validator full-node (sei-rpc-node) + # has no way to keep up with the chain — there's no + # subscriber/observer mode for non-validators in the Autobahn + # P2P protocol, and the CometBFT statesync reactor is gated by + # !gigaEnabled in sei-tendermint/node/node.go. So everything + # that asserts on the rpc-node syncing (statesync_operation.yaml, + # verify_statesync_flatkv_digest.sh, the rpc-node `seid status` + # readiness loop) is skipped here. The cross-validator FlatKV + # digest check is kept because validators commit blocks normally + # under Autobahn, so the comparison is still meaningful and + # catches silent FlatKV drift. + # + # TODO(CON-256): once Autobahn supports non-validator + # subscribers (block/QC streaming from validators) and the + # statesync reactor is unblocked under giga, re-add the + # rpc-node readiness loop, statesync_operation.yaml, and + # verify_statesync_flatkv_digest.sh to this entry. + name: "Autobahn Chain Operation Test", + env: "AUTOBAHN=true GIGA_EXECUTOR=true GIGA_STORAGE=true GIGA_OCC=true", + scripts: [ + "python3 integration_test/scripts/runner.py integration_test/chain_operation/snapshot_operation.yaml", + "./integration_test/contracts/verify_cross_validator_flatkv_digest.sh" + ] + }, { name: "Distribution Module", scripts: [ diff --git a/integration_test/contracts/verify_cross_validator_flatkv_digest.sh b/integration_test/contracts/verify_cross_validator_flatkv_digest.sh index 3cf9000af8..431db015e6 100755 --- a/integration_test/contracts/verify_cross_validator_flatkv_digest.sh +++ b/integration_test/contracts/verify_cross_validator_flatkv_digest.sh @@ -72,9 +72,18 @@ ensure_seidb() { } node_height() { + # Read last_block_height from /abci_info, the canonical "app committed + # height" source (env.App.Info() returns the cosmos-sdk BaseApp's + # cms.LastCommitID().Version), which is populated identically under + # both CometBFT and Autobahn consensus. + # + # Tendermint's REST-style GET endpoints return the bare result struct + # ({"response": {...}}), NOT the JSON-RPC envelope ({"result": {...}}) + # that POST / to the root would yield — hence the path is .response, + # not .result.response. local node=$1 - docker exec "$node" build/seid status 2>/dev/null \ - | jq -r '.SyncInfo.latest_block_height // "0"' 2>/dev/null \ + docker exec "$node" curl -s http://localhost:26657/abci_info 2>/dev/null \ + | jq -r '.response.last_block_height // "0"' 2>/dev/null \ || echo 0 }