starknet_transaction_prover: add deployment smoke script and guide - #14052
starknet_transaction_prover: add deployment smoke script and guide#14052avi-starkware wants to merge 1 commit into
Conversation
PR SummaryLow Risk Overview The script exercises Operational safeguards in the script include redacted URL logging, numeric env validation before bash arithmetic, explicit skips (not silent passes) for TLS/OHTTP preconditions, Reviewed by Cursor Bugbot for commit 583f17f. Bugbot is set up for automated code reviews on this repo. Configure here. |
5ea83ee to
3457808
Compare
49aebc4 to
0d65f02
Compare
3457808 to
ac2d30f
Compare
0d65f02 to
5f72fc7
Compare
ac2d30f to
cb3ebef
Compare
5f72fc7 to
8161746
Compare
cb3ebef to
93accf4
Compare
8161746 to
e2aec91
Compare
93accf4 to
7a48fbc
Compare
e2aec91 to
649e3c3
Compare
|
There hasn't been any activity on this pull request recently, and in order to prioritize active work, it has been marked as stale. |
7a48fbc to
b0918fa
Compare
649e3c3 to
8b1a523
Compare
b0918fa to
ad88f40
Compare
8b1a523 to
81756c3
Compare
| fi | ||
| else | ||
| fail_step "No content-encoding header in response (compression layer may not be active)" | ||
| fi |
There was a problem hiding this comment.
Compression check false failures
High Severity
check_compression treats a missing content-encoding header on a starknet_specVersion call as failure, but CompressionLayer only compresses responses above tower-http’s size threshold. That RPC response is tiny, so a healthy deployment often passes uncompressed and the smoke run fails check 3.3 anyway.
Reviewed by Cursor Bugbot for commit 81756c3. Configure here.
81756c3 to
dc8880f
Compare
ad88f40 to
5ed8f8a
Compare
dc8880f to
8c6ff4f
Compare
5ed8f8a to
663bac2
Compare
8c6ff4f to
b00c1d4
Compare
663bac2 to
7229c36
Compare
b00c1d4 to
6c56049
Compare
7229c36 to
0d54229
Compare
| echo "Using pre-set TX_HASH=$TX_HASH (skipping block scan)" | ||
| echo " Fetching tx receipt for block number..." | ||
| TX_BLOCK=$(rpc_call_chain "{\"jsonrpc\":\"2.0\",\"id\":4,\"method\":\"starknet_getTransactionReceipt\",\"params\":[\"$TX_HASH\"]}" \ | ||
| | jq -r '.result.block_number') |
There was a problem hiding this comment.
Invalid receipt JSON aborts run
Medium Severity
When TX_HASH is preset, parsing the receipt with jq has no guard under set -e, so empty or non-JSON chain RPC output aborts the script instead of emitting a FAIL summary.
Reviewed by Cursor Bugbot for commit 6c56049. Configure here.
6c56049 to
7678bbf
Compare
0d54229 to
9ec7826
Compare
7678bbf to
583f17f
Compare
9ec7826 to
9b3f384
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 3 total unresolved issues (including 2 from previous reviews).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 583f17f. Configure here.
| -H 'content-type: application/json' \ | ||
| -H 'accept-encoding: gzip' \ | ||
| -d '{"jsonrpc":"2.0","id":2,"method":"starknet_specVersion","params":[]}' \ | ||
| -o "$TMP_DIR/compressed_resp.json" 2>&1 || true) |
There was a problem hiding this comment.
Compression check can hang forever
Medium Severity
check_compression issues a curl probe without --max-time, unlike every other HTTP/RPC call in the script. If the prover endpoint hangs or filters stall the connection, the smoke run blocks indefinitely and never reaches the PASS/FAIL summary.
Reviewed by Cursor Bugbot for commit 583f17f. Configure here.



Adds a per-deploy smoke script and its guide:
deployment_smoke.sh— runs the checks in the guide against a live endpointand prints a PASS/FAIL/SKIP summary.
TX_HASH,LOOKBACK_BLOCKSandKEEP_ARTIFACTSare supported for debugging a failing run.DEPLOYMENT_SMOKE_TESTING_GUIDE.md— the per-deploy checklist, mapping eachcheck to its pass criteria and to the
MANUAL_TESTING_GUIDE.mdsection thatreproduces it manually.
The deep-dive manual guide it references is #14404.
Worth a reviewer's attention:
check_body_size_limit(no python3),
check_ohttp_keys(OHTTP_SMOKEunset) andcheck_tls_certificate(non-HTTPS URL) each returned without touching acounter, so a run that tested none of them printed
Overall result: PASSindistinguishably from a clean one.
SKIPis explicitly not a pass.jqrather thanpython3, which drops theinterpreter dependency and with it the skip path above.
build_valid_prove_requestnow checks.result != nullbefore reportingsuccess.
delon a null.resultreturns null and exits 0, so a chain RPCanswering with a JSON-RPC error produced a request built around
params[1]: null, a spurious PASS, and downstream failures that blamed theprover.
exit 2paths, which previouslyleaked it.
/ohttp-keysmax-agecheck is anchored to thecache-controlline. Anunanchored match is satisfied by an ingress-added
strict-transport-security: max-age=...whilecache-controlsaysmax-age=0.-32602rather than any error, so the check can nolonger pass on
-32601(method missing) or-32603(handler threw).evaluates command substitution.