Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:open_issues
agents
agent:security_audit
agent:verify
area
timecurve
arena
arena-v2
audit
block:feature_review
block:security
bug
contracts
design
devops
docs
documentation
enhancement
epic
feature
frontend
indexer
low priority
megaeth
operations
ops
performance
QA
qa checklist
referrals
removal
security
smart-contracts
tech-debt
testing
time-arena
timecurve
visual-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
code/yieldomega#146
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Parent: Split from #138 — Pre-deploy review pass 2 (Finding 8).
Severity: Low (aggregate coverage gap)
Problem
Several security-relevant behaviors called out in GitLab #131 and the #138 review lack negative / regression tests pinning current behavior. Without tests, future “fixes” may silently change economics or safety.
Proposed test list (from #138):
test_burn_drains_arbitrary_holder_via_secondary_minterRabbitTreasuryMINTER_ROLEburns another wallet’s DOUB — #131 finding 1test_warbow_steal_fresh_wallet_drains_high_bp_victim_for_one_cl8yabp=0test_warbow_revenge_overwritten_by_second_stealer_shields_firsttest_buy_fee_routing_freeze_after_buy_blocks_warbow_defensesetBuyFeeRoutingEnabledmid-sale — #131 finding 2test_excess_doub_above_total_allocated_is_unrecoverablestartVesting— #131 finding 7References
contracts/test/— add beside existing WarBow / Doubloon / vesting suitesindexer/tests/integration_stage2.rsdocs/testing/strategy.mddocs/testing/invariants-and-business-logic.md.cursor/skills/yieldomega-guardrails/SKILL.mdRecommended fix
Implement the six tests (a–f). Use descriptive revert/assert messages referencing intended economic or safety invariant so future readers know whether a failure is “bug” vs “documented behavior.”
For (f), coordinate with the transactional-ingestion issue: test may be skipped until the fix lands, or implemented first as expected-fail / feature-flagged — prefer implementing after Finding 2 fix to avoid flaky CI.
Acceptance criteria
forge testgreen in CI; indexer test passes when (f) included.Verification checklist
cd contracts && forge test --match-test <each>locally.mentioned in issue #138
mentioned in commit
d45b0069c1Landed on
main(d45b006) — @brouie please verifySummary
persist_decoded_log_conncalls for that block plusindexed_blocksupsert andchain_pointersave commit together or roll back together; failures bubble up (no silent log-only errors on that path). Helpers:persist_decoded_log_conn,save_chain_pointer_conn,upsert_indexed_block_conn.startVesting.INV-INDEXER-146indocs/testing/invariants-and-business-logic.md(anchor#indexer-block-ingest-transaction-gitlab-146),docs/indexer/design.md,docs/testing/strategy.md,skills/README.md,.cursor/skills/yieldomega-guardrails/SKILL.mditem 49.Checklist for verification
cd contracts && forge test --match-test 'test_burn_drains|test_buy_fee_routing_freeze|test_warbow_steal|test_warbow_revenge|test_excess_doub'— all pass.cd indexer && cargo test— unit tests pass; withYIELDOMEGA_PG_TEST_URLset,postgres_gitlab146_block_transaction_all_or_nothing_for_shared_tx_hashvalidates rollback vs commit on sharedtx_hash.indexer/src/ingestion.rs— singlepool.begin(), persist loop uses_connAPIs,commit/rollbackmatches described behavior.docs/testing/invariants-and-business-logic.md§ INV-INDEXER-146 and cross-links fromskills/README.md/ guardrails.Issue left open for your sign-off.
mentioned in commit
0f7b9a4e34mentioned in commit
15fc07617bmentioned in issue #139
mentioned in commit
a421ba1303mentioned in issue #140
@PlasticDigits — verification PASS on
d45b006. walked your checklist:forge test --match-test 'test_burn_drains|test_buy_fee_routing_freeze|test_warbow_steal|test_warbow_revenge|test_excess_doub'green: 14/14 PASS across 4 suites. all six regression items shipped:test_burn_drains_arbitrary_holder_via_secondary_minter✓ (Doubloon)test_warbow_steal_fresh_wallet_drains_high_bp_victim_for_one_cl8y✓test_warbow_revenge_overwritten_by_second_stealer_shields_first✓test_buy_fee_routing_freeze_after_buy_blocks_warbow_defense✓test_excess_doub_above_total_allocated_is_unrecoverable✓ (verified in #137, 32/32 PASS in DoubPresaleVestingTest)postgres_gitlab146_block_transaction_all_or_nothing_for_shared_tx_hashatintegration_stage2.rs:1264-1341(source-verified, Postgres-gated path skipped this round per #140 note).cargo testgreen from #140 run — 31/31 PASS, 0 failures. block-level transaction behavior verified at source.indexer/src/ingestion.rsL150-180 reviewed under #140: singlepool.begin(), per-eventpersist_decoded_log_conn(&mut *tx, ...),upsert_indexed_block_conn,save_chain_pointer_conn, all on same tx, commit/rollback matches described behavior.#indexer-block-ingest-transaction-gitlab-146anchor +INV-INDEXER-146invariant ininvariants-and-business-logic.mdread cleanly.docs/indexer/design.mdingestion bullet matches code paths. cross-links inskills/README.md+ guardrails item 49.the adversarial coverage matrix is now regression-pinned in CI. future 'fixes' can't silently change the economics or safety properties without one of these tests going red.
ready for close on your side.
mentioned in issue #149
mentioned in issue #148
mentioned in commit
d74e6e75b1