qa(#285): live-proof harness + L285 indexer invariants #787
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!787
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "cursor/gitlab-issue-verification-4494"
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 (runtime
_contract_addressonly) meets acceptance criteria and adds a repeatable live-proof harness.Changes (guardrails only — parser fix already on
main):scripts/qa/verify-issue-285.sh+make verify-issue-285docs/indexer-invariants.md— L285 lifecycle emitter scoping rowskills/AGENTS_INDEXER_LIFECYCLE_EMITTER_SCOPING.mdMerge with
main(2026-06-05): ResolvedMakefileconflicts — keptverify-issue-285alongsidemainverify targets (309,313,295,setup-cloud-localterra). MR is mergeable (no remaining conflicts).Acceptance criteria checklist
contract_address = victim_pair+limit_order_filldoes not attribute fill to victimcargo test --lib forged_contract_address(via harness)is_wasm_contract_addr_key+ integration fixtureslimit_order_parked_lifecyclemake verify-issue-285(Postgres up)make verify-issue-285live legAgent VM run:
docker compose up -d postgres+make verify-issue-285→ 2 passed, 0 failed, live skipped.Full live proof (QA host):
make start && make wait-healthy && make deploy-local && make verify-issue-285Direction 3 (factory provenance) remains tracked on #279/#286/#287 — out of scope for this MR.
Does not close #285 until live leg passes on a host with LocalTerra + deploy env.
changed the description
mentioned in issue #285
changed the description
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
e342cdf5e6. Configure here.Live leg after pair failure
Medium Severity
After
badfor missing dual-CW20 pair resolution, the live block still buildsSEND_MSGand runsterrad_tx wasm executewith an emptyTOKEN0and a stalePAIR_ADDRfrom the last factory row scanned, instead of skipping the on-chain steps.Reviewed by Cursor Bugbot for commit
e342cdf5e6. Configure here.Cargo filter skips unit tests
High Severity
The parser
run_steppasses a singlecargo test --libfilter containing a pipe, but Cargo matches test names by substring only, not regex OR. No test name includes that full literal string, so zero L285 unit tests run whilecargo teststill exits successfully and the step is marked PASS.Reviewed by Cursor Bugbot for commit
e342cdf5e6. Configure here.changed this line in version 2 of the diff
added 1 commit
ff15bf4c- fix(verify-issue-285): run L285 unit tests and skip live swap without pairCompare with previous version
changed the description
resolved all threads
resolved all threads
Security review
Commit reviewed:
ff15bf4Scope:
scripts/qa/verify-issue-285.sh,make verify-issue-285,docs/indexer-invariants.md(L285 row),skills/AGENTS_INDEXER_LIFECYCLE_EMITTER_SCOPING.md.Outcome:
FINDINGS: 0medium+ — no medium+ findings on this diff.Summary
This MR adds local QA automation and documentation for GitLab #285 (limit-order lifecycle emitter scoping). It does not modify production indexer, API, contract, or frontend runtime code; the
_contract_address-only parser behavior is already onmain.Review traced attacker-controlled inputs in the new bash harness:
.env(LCD_URLS,API_PORT)curlto LocalTerra / local indexerverify-issue-*scripts; not exposed to untrusted users in productionterra1…)terrad_tx,GET …/pairs/{pair}/limit-fillsjq --argterradJSON outputNo injection, authz bypass, secret leakage, SSRF against production services, or unsafe deserialization paths were identified in added/modified code. Doc/skill changes are informational only.
Prior threads (non-security)
Bugbot notes on the earlier commit (cargo test filter false-PASS, live leg continuing after pair-resolution failure) are QA reliability issues in the harness, not production vulnerabilities; both are addressed in
ff15bf4(separatecargo testfilters; swap broadcast gated inside successful pair-resolution branch).Inline findings: none (0 threads).
Security review
Commit reviewed:
ff15bf4Scope: MR diff vs
main—scripts/qa/verify-issue-285.sh,make verify-issue-285,docs/indexer-invariants.md(L285 row),skills/AGENTS_INDEXER_LIFECYCLE_EMITTER_SCOPING.md.Outcome:
FINDINGS: 0medium+ — Security review: no medium+ findings on this diff.Summary
This MR adds local QA automation and documentation for GitLab #285 (limit-order lifecycle emitter scoping). It does not modify production indexer, API, contract, or frontend runtime code; the
_contract_address-only parser behavior is already onmain.Attacker-controlled inputs in the new bash harness were traced to sinks:
indexer/.env(LCD_URLS,API_PORT)curlto LocalTerra / local indexerverify-issue-*scripts); not exposed to untrusted users in productionterra1…)terrad_tx,GET …/pairs/{pair}/limit-fillsjq --arg/--argjson(no shell interpolation)terradJSON outputNo injection, authn/authz bypass, secret leakage, SSRF against production services, or unsafe deserialization paths were identified in added/modified code. Doc/skill changes are informational only.
Prior threads
ff15bf4(separatecargo testfilters; swap broadcast gated inside successful pair-resolution branch).Inline findings: none (0 threads).
resolved all threads
added 60 commits
main0711f26b- Merge origin/main into cursor/gitlab-issue-verification-4494Compare with previous version
mentioned in commit
50f4417551changed the description
changed the description
Security review
Commit reviewed:
0711f26(mergeorigin/maininto MR branch)Scope: MR diff vs
main(c0d8ad6):scripts/qa/verify-issue-285.sh,make verify-issue-285,docs/indexer-invariants.md(L285 row),skills/AGENTS_INDEXER_LIFECYCLE_EMITTER_SCOPING.md. Merge also carries whitespace-only churn inPoolPage.tsx/blacklist.ts(no logic change).Outcome:
FINDINGS: 0medium+ — Security review: no medium+ findings on this diff.Summary
This MR adds local QA automation and documentation for GitLab #285 (limit-order lifecycle emitter scoping). It does not modify production indexer, API, contract, or frontend runtime behavior;
_contract_address-only scoping inparser.rsis already onmain.Attacker-controlled inputs in the new bash harness were traced to sinks:
indexer/.env(LCD_URLS,API_PORT)curlto LocalTerra / local indexerverify-issue-*scripts); not exposed to untrusted users in productionterra1…)terrad_tx,GET …/pairs/{pair}/limit-fillsjq --arg/--argjson(no shell interpolation)terradJSON outputNo injection, authn/authz bypass, secret leakage, SSRF against production services, or unsafe deserialization in added/modified code. Doc/skill changes are informational only.
Prior threads (re-checked at
0711f26)ff15bf4(separatecargo testfilters; hybrid swap gated inside successful pair-resolutionelseat lines 176–252).Inline findings: none (0 threads).
added 12 commits
mainfec1c254- Merge origin/main into cursor/gitlab-issue-verification-4494Compare with previous version
changed the description
changed the description
Security review
Commit reviewed:
fec1c254Scope: MR diff vs
main(c179fa9) —scripts/qa/verify-issue-285.sh,make verify-issue-285,docs/indexer-invariants.md(L285 row),skills/AGENTS_INDEXER_LIFECYCLE_EMITTER_SCOPING.md.Outcome:
FINDINGS: 0medium+ — Security review: no medium+ findings on this diff.Summary
This MR adds local QA automation and documentation for GitLab #285 (limit-order lifecycle emitter scoping). It does not modify production indexer, API, contract, or frontend runtime code;
_contract_address-only scoping inparser.rsis already onmain.Attacker-controlled inputs in the new bash harness were traced to sinks:
indexer/.env(LCD_URLS,API_PORT)curlto LocalTerra / local indexerverify-issue-*scripts); not exposed to untrusted users in productionterra1…)terrad_tx,GET …/pairs/{pair}/limit-fillsjq --arg/--argjson(no shell interpolation)terradJSON outputjq-builtSEND_MSGe2e_terrad_tx→docker exec terrad txterrad; no evalNo injection, authn/authz bypass, secret leakage, SSRF against production services, or unsafe deserialization in added/modified code. Doc/skill changes are informational only.
Prior threads (re-checked at
fec1c254)ff15bf4(separatecargo testfilters at lines 47–48; hybrid swap gated inside successful pair-resolutionelseat lines 176–252).fec1c254adds no new executable attack surface beyond prior HEAD.Inline findings: none (0 threads).
mentioned in commit
856f024255Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is ON, but it could not run because the branch was deleted or merged before autofix could start.
Reviewed by Cursor Bugbot for commit
fec1c254a7. Configure here.LCD tx query lacks fallback
Medium Severity
The live leg loads factory pair data through
lcd_smart_query_raw, which useslocalterra_lcd_curland the documented docker exec fallback when host LCD curls hang.query_tx_lcduses plaincurlagainst the sameLCDbase URL, so on those hosts the swap can succeed while tx lookup always times out and the harness reports a false failure.Reviewed by Cursor Bugbot for commit
fec1c254a7. Configure here.mentioned in merge request !799