Index OmniBridge payout transfers in balance transfers#47
Conversation
Delivery Evidence SummaryChange:
Objective Evidence:
Visual Evidence:
Reviewer:
Risks / Not Covered:
Generated at: 2026-06-04T15:56:32.555Z |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Fix OmniBridge transfer indexing runtime and backfill deployment path DescriptionIssue #46 added the core logic to index OmniBridge payout records into The schema migration succeeded and the new columns exist: However, the historical bridge row for the known example was not inserted automatically after deployment: balance_transfers.id = 971637600003 Example account: 46Rgiboa28dB2VbUiwuUAWvQVMBd4cArsnp7nhPP7zF751WD Decoded AccountId with Heima SS58 prefix 31: 00f160c0e8fff2d4f00ab03e18dced9f2ac52a6b865cda497a33aee5b3fe335b Expected bridge row: id: 971637600003
plugins/balance/dao/script.go plugin balance InitTransfer
map[string]interface{}{ type T struct { type T struct {
subscan-essentials-subscan-api-1 Required changes
ExtrinsicIndex string ExtrinsicIndex string internal/observer/go-worker.go Either: add a dedicated command, for example: document and execute the existing command safely: The command should: scan historical chain_events* tables At minimum, document the required rollout steps. Preferably update the deployment script to restart/recreate: subscan-observer
select * category = bridge_in POST /api/plugin/balance/transfer { Acceptance criteria |
|
Follow-up to request changes:
Delivery Evidence SummaryChange:
Objective Evidence:
Visual Evidence:
Reviewer:
Risks / Not Covered:
Generated at: 2026-06-05T16:24:29.226Z |
|
@libai0610 CrossAgent has completed the follow-up work for your request-changes comment.
|
|
Fix plugin-extrinsic worker argument field DescriptionThe
map[string]interface{}{
"extrinsic_index": extrinsic.ExtrinsicIndex,
"plugin_name": pluginName,
}
But internal/observer/go-worker.go currently reads the field as event_index:
type T struct {
ExtrinsicIndex string `json:"event_index"`
PluginName string `json:"plugin_name"`
}
This means args.ExtrinsicIndex may be empty when processing plugin-extrinsic jobs.
This breaks plugins that rely on ProcessExtrinsic, including the OmniBridge payout indexing added in PR #47.
Required Change
In internal/observer/go-worker.go, change:
ExtrinsicIndex string `json:"event_index"`
to:
ExtrinsicIndex string `json:"extrinsic_index"`
Acceptance Criteria
plugin-extrinsic worker correctly reads extrinsic_index.
args.ExtrinsicIndex is populated for plugin-extrinsic jobs.
ProcessExtrinsic receives the correct extrinsic index.
Existing plugin event/block processing still works.
Add or update a test if there is an existing test pattern for worker message parsing. |


Closes #46
Summary
Verification
Delivery Evidence Summary
Change:
Objective Evidence:
git diff --checkexited 0.npm --prefix ui-react run lintexited 0 with one pre-existing Footer.test.tsx image warning.npm --prefix ui-react run buildexited 0.node --input-type=module -e "import { chromium } from 'playwright'; ..."exited 0 and asserted Bridge In, OmniBridge, and 10 HEI on the account Transfers tab.Visual Evidence:
Reviewer:
CrossAgent pre-PR draft reviewer
Risks / Not Covered: