qa(#285): live-proof harness + L285 indexer invariants #799
No reviewers
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:implement
agent:implement
agent:open_issues
agent:ready
agent:research
agent:security_audit
agent:verify
architecture
backend
blocker:hybrid
blocker:launch
blocker:limit-orders
blocker:v2
block:log_only
block:security
bug
ci
contracts
correctness
deploy
dev
devops
docs
documentation
duplicate
e2e
enhancement
epic
feature
frontend
functional-completion
gas
good first issue
governance
help wanted
high-risk
hooks
hybrid
indexer
infra
infrastructure
integrators
invalid
launch-blocker
limit-orders
localnet
localterra
low priority
missing-implementation
needs-design
ops
performance
priority
high
priority
medium
product
qa
QA
question
ready
ready
research
scripts
security
security-hardening
smartcontracts
tech-debt
testing
ux
UX
v2
verification
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-dex-terraclassic!799
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "cursor/gitlab-issue-verification-cd8d"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Verification QA for GitLab #285 — confirms the parser fix on
main(runtime_contract_addressonly) meets all acceptance criteria, including the live positive control requested by @PlasticDigits.Parser fix is already on
main— this MR adds guardrails only:scripts/qa/verify-issue-285.sh+make verify-issue-285docs/indexer-invariants.md— L285 lifecycle emitter scoping rowskills/AGENTS_INDEXER_LIFECYCLE_EMITTER_SCOPING.mdsg docker) so live leg runs without manual wrapperSupersedes !787.
Acceptance criteria checklist
origin/main(Makefile + swarm targets)git merge origin/mainoncursor/gitlab-issue-verification-cd8d65c07c1)cargo test --lib forged_contract_address_contract_addressscopes lifecyclelimit_order_parked_lifecyclemake verify-issue-285retainssg dockerfallbackMakefiletargetmake verify-issue-285live legCommand:
make setup-cloud-localterra && make verify-issue-285→ 12 passed, 0 failed (2026-06-05).Direction 3 (factory provenance) remains tracked on #279/#286/#287 — out of scope.
Closes #285
changed the description
mentioned in issue #285
changed the description
Security review
Commit reviewed:
09612440778ccaa0c997b3b946d9c6d7fd5bd97eScope: 7 files —
Makefile(verify-issue-285),scripts/qa/verify-issue-285.sh,scripts/lib/localterra-host-curl.sh(Cloud Agentsg dockerfallback),scripts/e2e-provision-dev-wallet.sh,scripts/e2e-seed-hybrid-book.sh,docs/indexer-invariants.md,skills/AGENTS_INDEXER_LIFECYCLE_EMITTER_SCOPING.mdOutcome:
FINDINGS: 0medium+Security review: no medium+ findings on this diff.
What was reviewed
main; this MR adds QA guardrails and documentation only.verify-issue-285.sh, E2E helpers,localterra_container_idsg dockerfallback): traced inputs (REPO_ROOT,LCD_URLS,API_PORT,PAIR_ADDR,txhash) to sinks (docker compose,curl,terrad tx,jq). All are local-dev/CI paths with no external attacker-controlled entry point.curltargets are built from deploy-time.envfiles (127.0.0.1defaults) or on-chain LocalTerra responses filtered toterra1…addresses;jq --argis used for tx construction. No plausible remote exploitation path.Prior threads
No prior security-review comments on this MR; nothing to re-report.
Inline findings
None — no inline threads opened.
Stale Security Review comment
Stale Security Review comment
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is ON. A cloud agent has been kicked off to fix the reported issues.
Reviewed by Cursor Bugbot for commit
0961244077. Configure here.Docker exec lacks sg fallback
Medium Severity
localterra_container_idcan resolve the LocalTerra container viasg docker, bute2e_terrad_txstill calls plaindocker exec, so running QA scripts outside the Makefilesg dockerwrapper can enter the live leg and then fail every on-chain step.Reviewed by Cursor Bugbot for commit
0961244077. Configure here.Pipefail aborts verify script
High Severity
With
set -o pipefail, assigningSWAP_TXfromterrad_tx … | tx_hash_from_jsonexits the whole script whenterrad_txfails, so the empty-txhashbad()path and final results summary never run.Reviewed by Cursor Bugbot for commit
0961244077. Configure here.changed this line in version 2 of the diff
added 1 commit
527512c0- Fix verify-issue-285 pipefail abort and sg docker exec fallbackCompare with previous version
changed the description
resolved all threads
Stale Security Review comment
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is ON. A cloud agent has been kicked off to fix the reported issue.
Reviewed by Cursor Bugbot for commit
527512c004. Configure here.LCD tx query skips curl fallback
Medium Severity
The live leg’s
query_tx_lcduses bare hostcurlagainstLCDfor/cosmos/tx/v1beta1/txs/…, withoutlocalterra_lcd_curlor the shared connect/max timeouts. On hosts where published:1317hangs (documented userland-proxy case), the harness can stall or time out while other steps already use in-container LCD access.Reviewed by Cursor Bugbot for commit
527512c004. Configure here.added 1 commit
0d294636- fix(qa): use localterra_lcd_curl for tx queries in verify-issue-285Compare with previous version
changed the description
resolved all threads
Security review
Commit reviewed:
0d294636039a2716e4c97d849a61818098a6fab8Scope: 8 files —
Makefile(verify-issue-285),scripts/qa/verify-issue-285.sh,scripts/lib/localterra-host-curl.sh(sg dockerfallback +localterra_docker_exec),scripts/lib/e2e-terrad-tx.sh,scripts/e2e-provision-dev-wallet.sh,scripts/e2e-seed-hybrid-book.sh,docs/indexer-invariants.md,skills/AGENTS_INDEXER_LIFECYCLE_EMITTER_SCOPING.mdOutcome:
FINDINGS: 0medium+Security review: no medium+ findings on this diff.
What was reviewed
main; this MR adds QA guardrails and documentation only.0961244):527512c(pipefail-safe swap broadcast,localterra_docker_execviasg dockerwithprintf '%q'quoting) and0d29463(LCD tx queries routed throughlocalterra_lcd_curlfor docker-exec fallback). Both remain local-dev/CI plumbing with no new external attack surface.REPO_ROOT,LCD_URLS,API_PORT,PAIR_ADDR,txhash,VERIFY285_*) to sinks (docker compose,sg docker,curl,terrad tx,jq). All require shell access on a developer/CI host; no remote caller can drive these paths.curl/localterra_lcd_curltargets come from deploy-time.envfiles (defaults127.0.0.1) or on-chain LocalTerra responses filtered toterra1…addresses;jq --arg/--argjsonused for tx JSON construction;localterra_docker_execuses%qshell-quoting. No plausible remote exploitation path.Prior threads
Prior review on
0961244reported zero medium+ findings; the two follow-up commits do not introduce new security concerns. Nothing to re-report.Inline findings
None — no inline threads opened.
Security review
Commit reviewed:
0d294636039a2716e4c97d849a61818098a6fab8Scope: 8 files —
Makefile(verify-issue-285),scripts/qa/verify-issue-285.sh,scripts/lib/localterra-host-curl.sh(localterra_container_id/localterra_docker_exec+sg dockerfallback),scripts/lib/e2e-terrad-tx.sh,scripts/e2e-provision-dev-wallet.sh,scripts/e2e-seed-hybrid-book.sh,docs/indexer-invariants.md,skills/AGENTS_INDEXER_LIFECYCLE_EMITTER_SCOPING.mdOutcome:
FINDINGS: 0medium+Security review: no medium+ findings on this diff.
What was reviewed
main; this MR adds QA guardrails and documentation only.0d29463) —query_tx_lcdnow useslocalterra_lcd_curl(connect/max timeouts + docker exec fallback), consistent with other LCD calls in the script. Dev/CI reliability only; no new attacker-controlled sink.REPO_ROOT,.envLCD_URLS/API_PORT, on-chainterra1…addresses,txhash) to sinks (docker compose/sg docker,docker execviaprintf '%q',curl,terrad tx,jq --arg). All are local-dev/CI paths with no remote exploitation surface.127.0.0.1) or chain responses filtered toterra1…; JSON/tx construction usesjq --arg. No plausible path for an external attacker to steer requests.Prior threads
0961244…(also 0 medium+); conclusions unchanged after0d29463.localterra_docker_exec+_e2e_docker_exec); that was a QA reliability issue, not a security boundary.Inline findings
None — no inline threads opened.
added 21 commits
main65c07c13- merge: resolve main Makefile conflicts for MR !799 (#285)Compare with previous version
mentioned in commit
65c07c1385changed the description
changed the description
Security review
Commit reviewed:
65c07c1385a976ba1aef5e4098b7dd8d72476a52Scope: 7 files in MR diff —
Makefile(verify-issue-285+ main merge union for swarm targets),scripts/qa/verify-issue-285.sh,scripts/lib/localterra-host-curl.sh(localterra_container_id/localterra_docker_exec+sg dockerfallback),scripts/lib/e2e-terrad-tx.sh,scripts/e2e-provision-dev-wallet.sh,scripts/e2e-seed-hybrid-book.sh,frontend-dapp/src/utils/__tests__/indexerErrors.test.ts(import formatting only)Outcome:
FINDINGS: 0medium+Security review: no medium+ findings on this diff.
What was reviewed
main; this MR adds QA guardrails and dev-script plumbing only.65c07c13) — merge ofmaininto the MR branch; only Makefile delta vs prior review is union of swarm-liquidity.PHONY/targets frommainalongside the existingverify-issue-285sg dockerwrapper. QA scripts (verify-issue-285.sh,localterra-host-curl.sh,e2e-terrad-tx.sh, E2E seed helpers) are unchanged since0d29463.REPO_ROOT, deploy-time.envLCD_URLS/API_PORT, on-chainterra1…addresses,txhashfromterradJSON) to sinks (docker compose/sg docker,docker execviaprintf '%q',curl/localterra_lcd_curl,terrad tx,jq --arg). All require shell access on a developer/CI host; no remote caller can drive these paths.127.0.0.1) or chain responses filtered toterra1…; JSON/tx construction usesjq --arg/--argjson;localterra_docker_execshell-quotes container id and argv. No plausible path for an external attacker to steer requests or execute arbitrary commands.Prior threads
0961244…and0d29463…(both 0 medium+); conclusions unchanged after merge commit65c07c13.localterra_docker_exec+_e2e_docker_exec); that was a QA reliability issue, not a security boundary.Inline findings
None — no inline threads opened.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is ON. A cloud agent has been kicked off to fix the reported issue.
Reviewed by Cursor Bugbot for commit
65c07c1385. Configure here.sg docker flag cleared before exec
Medium Severity
These scripts call
localterra_container_id(which setsLOCALTERRA_DOCKER_VIA_SGwhen the container id is resolved viasg docker) and then sourcelcd-smart-query.sh, which re-sourceslocalterra-host-curl.shand resetsLOCALTERRA_DOCKER_VIA_SGto empty. Latere2e_terrad_txuses plaindocker execinstead of thesg dockerwrapper, so terrad broadcasts fail on hosts that need the sg fallback.Additional Locations (1)
scripts/e2e-seed-hybrid-book.sh#L35-L47Reviewed by Cursor Bugbot for commit
65c07c1385. Configure here.added 1 commit
03e183a9- Preserve LOCALTERRA_DOCKER_VIA_SG when localterra-host-curl is re-sourcedCompare with previous version
changed the description
changed the description
resolved all threads
Security review
Commit reviewed:
03e183a99a687fe1508e196954045e1de938375cScope: 7 files in MR diff —
Makefile(verify-issue-285+sg dockerwrapper),scripts/qa/verify-issue-285.sh,scripts/lib/localterra-host-curl.sh(localterra_container_id/localterra_docker_exec+LOCALTERRA_DOCKER_VIA_SGpreservation),scripts/lib/e2e-terrad-tx.sh(_e2e_docker_exec),scripts/e2e-provision-dev-wallet.sh,scripts/e2e-seed-hybrid-book.sh,frontend-dapp/src/utils/__tests__/indexerErrors.test.ts(import formatting only)Outcome:
FINDINGS: 0medium+Security review: no medium+ findings on this diff.
What was reviewed
main; this MR adds QA guardrails and dev-script plumbing only.03e183a) — preservesLOCALTERRA_DOCKER_VIA_SGacross re-source oflocalterra-host-curl.sh(Cloud Agentsg dockerexec path). Dev/CI reliability only; no new attacker-controlled sink.REPO_ROOT, deploy-time.envLCD_URLS/API_PORT, on-chainterra1…addresses,txhashfromterradJSON) to sinks (docker compose/sg docker,docker execviaprintf '%q',curl/localterra_lcd_curl,terrad tx,jq --arg). All require shell access on a developer/CI host; no remote caller can drive these paths.127.0.0.1) or chain responses filtered toterra1…; JSON/tx construction usesjq --arg/--argjson;localterra_docker_execshell-quotes container id and argv. No plausible path for an external attacker to steer requests or execute arbitrary commands.Prior threads
0961244…,0d29463…, and65c07c13…(all 0 medium+); conclusions unchanged after03e183a.Inline findings
None — no inline threads opened.
mentioned in commit
1d644f99d8mentioned in commit
48baa914d4