Verification: #67 indexer buyViaKumbaya — live router ingestion + correlated buy E2E #75

Closed
opened 2026-04-27 04:03:41 +00:00 by Brouie · 7 comments
Brouie commented 2026-04-27 04:03:41 +00:00 (Migrated from gitlab.com)

Follow-up tracker for the live-stack items deferred from #67 source closure.

Background

#67 closed today on 5eaf345 with comprehensive source + real-Postgres verification:

  • Decoder ABI + signature dispatch + roundtrip test
  • Persist layer idempotent on (tx_hash, log_index)
  • Reorg rollback delete chain
  • Config supports optional empty router string
  • API schema bumped to 1.8.0 with entry_pay_asset / router_attested_gross_cl8y as Option
  • Migration applied to real yieldomega_indexer DB; table structure inspected via psql, PK + lookup index both present
  • 16/16 indexer tests passing including postgres_stage2_persist_all_events_and_rollback_after against real Postgres

#72 EIP-170 launch-blocker resolved today (1bdbda8 forge --code-size-limit fix), so the live stack is now available, but verification of the indexer ingestion path against deployed contracts wasn't completed before #67 closed at the source level. Tracking that here.

Scope

  • Run migrations on a fresh stack DB and confirm idx_timecurve_buy_router_kumbaya exists (migration auto-runs on indexer start now via 5eaf345)
  • Set TimeCurveBuyRouter in ADDRESS_REGISTRY_PATH from KUMBAYA_BUY_ROUTER (anvil_deploy_dev.sh L59 surface) → restart ingestion → confirm router logs appear in idx_timecurve_buy_router_kumbaya after a buyViaKumbaya tx
  • Confirm GET /v1/timecurve/buys with x-schema-version: 1.8.0 returns entry_pay_asset = 'eth' or 'stable' for buyViaKumbaya tx rows
  • Confirm same endpoint returns rows WITHOUT entry_pay_asset / router_attested_gross_cl8y for ordinary direct buy tx (legacy / CL8Y-only buy → fields omitted from JSON)
  • Confirm buyer column on idx_timecurve_buys rows correlates to participant address (not msg.sender = router) — invariant from buyFor wiring at TimeCurve.sol L334-340 + indexer mapping

Pre-conditions

  • Live Anvil stack on 1bdbda8+ (full deploy succeeds with --code-size-limit 524288 on both Anvil and forge)
  • TimeCurveBuyRouter address present in registry / address registry
  • A buyViaKumbaya tx submitted (likely via #74's browser walkthrough as the cleanest source)

Acceptance

All 5 rows produce evidence (log line, psql query result, or curl /v1/timecurve/buys response excerpt) and either PASS or have a filed sub-issue. cc @PlasticDigits

Follow-up tracker for the live-stack items deferred from #67 source closure. ## Background #67 closed today on 5eaf345 with comprehensive source + real-Postgres verification: - Decoder ABI + signature dispatch + roundtrip test - Persist layer idempotent on (tx_hash, log_index) - Reorg rollback delete chain - Config supports optional empty router string - API schema bumped to 1.8.0 with entry_pay_asset / router_attested_gross_cl8y as Option<String> - Migration applied to real yieldomega_indexer DB; table structure inspected via psql, PK + lookup index both present - 16/16 indexer tests passing including postgres_stage2_persist_all_events_and_rollback_after against real Postgres #72 EIP-170 launch-blocker resolved today (1bdbda8 forge --code-size-limit fix), so the live stack is now available, but verification of the indexer ingestion path against deployed contracts wasn't completed before #67 closed at the source level. Tracking that here. ## Scope - [ ] Run migrations on a fresh stack DB and confirm idx_timecurve_buy_router_kumbaya exists (migration auto-runs on indexer start now via 5eaf345) - [ ] Set TimeCurveBuyRouter in ADDRESS_REGISTRY_PATH from KUMBAYA_BUY_ROUTER (anvil_deploy_dev.sh L59 surface) → restart ingestion → confirm router logs appear in idx_timecurve_buy_router_kumbaya after a buyViaKumbaya tx - [ ] Confirm GET /v1/timecurve/buys with x-schema-version: 1.8.0 returns entry_pay_asset = 'eth' or 'stable' for buyViaKumbaya tx rows - [ ] Confirm same endpoint returns rows WITHOUT entry_pay_asset / router_attested_gross_cl8y for ordinary direct buy tx (legacy / CL8Y-only buy → fields omitted from JSON) - [ ] Confirm buyer column on idx_timecurve_buys rows correlates to participant address (not msg.sender = router) — invariant from buyFor wiring at TimeCurve.sol L334-340 + indexer mapping ## Pre-conditions - Live Anvil stack on 1bdbda8+ (full deploy succeeds with --code-size-limit 524288 on both Anvil and forge) - TimeCurveBuyRouter address present in registry / address registry - A buyViaKumbaya tx submitted (likely via #74's browser walkthrough as the cleanest source) ## Acceptance All 5 rows produce evidence (log line, psql query result, or curl /v1/timecurve/buys response excerpt) and either PASS or have a filed sub-issue. cc @PlasticDigits
Brouie commented 2026-04-27 04:04:03 +00:00 (Migrated from gitlab.com)

mentioned in issue #67

mentioned in issue #67
Brouie commented 2026-04-27 06:29:41 +00:00 (Migrated from gitlab.com)

mentioned in issue #74

mentioned in issue #74
PlasticDigits commented 2026-04-27 07:24:01 +00:00 (Migrated from gitlab.com)

mentioned in issue #83

mentioned in issue #83
Brouie commented 2026-04-28 02:45:24 +00:00 (Migrated from gitlab.com)

Verified end-to-end on a fresh SKIP_ANVIL_RICH_STATE=1 stack at e35bede with #83 fix landed (5dd20d8).

Live signed buyViaKumbaya

Setup: fresh stack, Kumbaya fixtures deployed via YIELDOMEGA_DEPLOY_KUMBAYA=1 verify-timecurve-buy-router-anvil.sh, VITE_KUMBAYA_* env mirrored into frontend/.env.local, browser ETH single-tx via Simple page, slider ~2.1 CHARM.

Tx 0x15982fc20c8bb57b8a49bfb6d0ca719388a3e6d75dfaf18b2e3648b8c88c5403:

  • Status: success
  • Block: 10
  • charm_wad: 2102278393093340646 (~2.102 CHARM)
  • gross_cl8y: 2103852668695576051 (~2.103 CL8Y)

UI confirmed: +120s timer extension, Recent Buys row 0xf39fd6...2266 / 2.103852668695576051 CHARM / +120s.

Indexer kumbaya table populated

idx_timecurve_buy_router_kumbaya row from the same tx:

  • block_number: 10
  • tx_hash: 0x15982fc2...c5403
  • buyer: 0xf39fd6...2266
  • charm_wad: 2102278393093340646
  • gross_cl8y: 2103852668695576051
  • pay_kind: 0

pay_kind = 0 (PAY_ETH) confirms the entry-pay-asset enrichment from #67 is wired and persisting correctly. Schema spot-check: PK on (tx_hash, log_index), lookup index on (tx_hash, buyer, charm_wad), all 9 columns present (block_number, block_hash, tx_hash, log_index, contract_address, buyer, charm_wad, gross_cl8y, pay_kind).

Small infra note for awareness

The default scripts/start-local-anvil-stack.sh writes contracts/deployments/local-anvil-registry.json with TimeCurve / RabbitTreasury / LeprechaunNFT / FeeRouter / PodiumPool / ReferralRegistry but NOT TimeCurveBuyRouter. So even after running verify-timecurve-buy-router-anvil.sh to deploy the router, the indexer (which reads ADDRESS_REGISTRY_PATH at startup) does not see it and BuyViaKumbaya events get dropped on the floor.

To complete this verification I had to manually patch the registry to add TimeCurveBuyRouter: 0x998abeb3...3613E and restart the indexer. Not blocking, but worth folding into either start-local-anvil-stack.sh or verify-timecurve-buy-router-anvil.sh so future QA sessions do not re-hit it. Same family as the VITE_KUMBAYA_* env mirror gap I flagged in the #83 closure.

Closing #75.

cc @PlasticDigits

Verified end-to-end on a fresh SKIP_ANVIL_RICH_STATE=1 stack at e35bede with #83 fix landed (5dd20d8). ## Live signed buyViaKumbaya Setup: fresh stack, Kumbaya fixtures deployed via YIELDOMEGA_DEPLOY_KUMBAYA=1 verify-timecurve-buy-router-anvil.sh, VITE_KUMBAYA_* env mirrored into frontend/.env.local, browser ETH single-tx via Simple page, slider ~2.1 CHARM. Tx 0x15982fc20c8bb57b8a49bfb6d0ca719388a3e6d75dfaf18b2e3648b8c88c5403: - Status: success - Block: 10 - charm_wad: 2102278393093340646 (~2.102 CHARM) - gross_cl8y: 2103852668695576051 (~2.103 CL8Y) UI confirmed: +120s timer extension, Recent Buys row 0xf39fd6...2266 / 2.103852668695576051 CHARM / +120s. ## Indexer kumbaya table populated idx_timecurve_buy_router_kumbaya row from the same tx: - block_number: 10 - tx_hash: 0x15982fc2...c5403 - buyer: 0xf39fd6...2266 - charm_wad: 2102278393093340646 - gross_cl8y: 2103852668695576051 - pay_kind: 0 pay_kind = 0 (PAY_ETH) confirms the entry-pay-asset enrichment from #67 is wired and persisting correctly. Schema spot-check: PK on (tx_hash, log_index), lookup index on (tx_hash, buyer, charm_wad), all 9 columns present (block_number, block_hash, tx_hash, log_index, contract_address, buyer, charm_wad, gross_cl8y, pay_kind). ## Small infra note for awareness The default scripts/start-local-anvil-stack.sh writes contracts/deployments/local-anvil-registry.json with TimeCurve / RabbitTreasury / LeprechaunNFT / FeeRouter / PodiumPool / ReferralRegistry but NOT TimeCurveBuyRouter. So even after running verify-timecurve-buy-router-anvil.sh to deploy the router, the indexer (which reads ADDRESS_REGISTRY_PATH at startup) does not see it and BuyViaKumbaya events get dropped on the floor. To complete this verification I had to manually patch the registry to add TimeCurveBuyRouter: 0x998abeb3...3613E and restart the indexer. Not blocking, but worth folding into either start-local-anvil-stack.sh or verify-timecurve-buy-router-anvil.sh so future QA sessions do not re-hit it. Same family as the VITE_KUMBAYA_* env mirror gap I flagged in the #83 closure. Closing #75. cc @PlasticDigits
Brouie (Migrated from gitlab.com) closed this issue 2026-04-28 02:45:49 +00:00
PlasticDigits commented 2026-04-28 03:21:55 +00:00 (Migrated from gitlab.com)

Registry / QA follow-up: start-local-anvil-stack.sh writes local-anvil-registry.json without TimeCurveBuyRouter, so after verify-timecurve-buy-router-anvil.sh deploys the router the indexer (startup ADDRESS_REGISTRY_PATH) still drops BuyViaKumbaya until the JSON is patched manually. Tracked in https://gitlab.com/PlasticDigits/yieldomega/-/issues/84 — same family as the VITE_KUMBAYA_* env mirror gap called out on #83. Leaving #75 closed.

Registry / QA follow-up: `start-local-anvil-stack.sh` writes `local-anvil-registry.json` without **TimeCurveBuyRouter**, so after `verify-timecurve-buy-router-anvil.sh` deploys the router the indexer (startup `ADDRESS_REGISTRY_PATH`) still drops **BuyViaKumbaya** until the JSON is patched manually. Tracked in https://gitlab.com/PlasticDigits/yieldomega/-/issues/84 — same family as the **VITE_KUMBAYA_*** env mirror gap called out on #83. Leaving #75 closed.
Brouie commented 2026-04-28 03:34:35 +00:00 (Migrated from gitlab.com)

mentioned in issue #58

mentioned in issue #58
Brouie commented 2026-04-28 08:08:46 +00:00 (Migrated from gitlab.com)

mentioned in issue #38

mentioned in issue #38
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
code/yieldomega#75
No description provided.