chore(indexer): Tempo (chain 42431) config for the live 0.19 deploy#208
Conversation
Indexes the 6 contracts deployed on Tempo (Tangle, MultiAssetDelegation, OperatorStatusRegistry, RewardVaults, InflationPool, Credits); the 4 not deployed (MBSM, ValidatorPodManager, LiquidDelegation*) use address:[] to keep codegen/handlers intact. Drops the input tx-field (Tempo system tx type 0x76 has no input; envio treats a requested-missing field as fatal). Proven: synced 25563852->head, materialized StakingAsset/RewardVault/RoleGranted/Upgraded.
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — 3b60cb13
This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.
tangletools · auto-approval · reason: drewstone_author · 2026-07-08T16:34:54Z
tangletools
left a comment
There was a problem hiding this comment.
🟡 Value Audit — sound-with-nits
| Verdict | sound-with-nits |
| Concerns | 1 (1 weak-concern) |
| Heuristic | 0.0s |
| Duplication | 0.0s |
| Interrogation | 134.5s (2 bridge agents) |
| Total | 134.5s |
💰 Value — sound-with-nits
Adds a third Envio per-chain config (Tempo/42431) mirroring the exact base-sepolia/local pattern, with all addresses verified against the deploy manifest; sound, with one maintenance nit around the existing sync script.
- What it does: Adds indexer/config.tempo.yaml — an Envio indexer config for the live tnt-core 0.19 deployment on Tempo Moderato (chain 42431), starting at block 25563852 against https://rpc.moderato.tempo.xyz. It indexes 6 deployed contracts (Tangle, MultiAssetDelegation, OperatorStatusRegistry, RewardVaults, InflationPool, Credits) and declares 4 undeployed contracts (MasterBlueprintServiceManager, ValidatorPod
- Goals it achieves: Make the indexer able to follow the real 0.19 mainnet-like deployment on Tempo without dying on Tempo-specific RPC quirks. Concretely: (1) point at the right chain/RPC/start-block, (2) avoid envio's fatal 'requested field missing' abort on Tempo's native 0x76 system transactions (which carry no
input), and (3) keep the single shared src/EventHandlers.ts handler file compiling even though 4 contr - Assessment: Good change, in the grain of the codebase. It is a near-exact structural clone of config.yaml (base-sepolia): same contract ordering, same event signatures, same
address: []convention for undeployed beacon/liquid contracts — config.yaml:131-158 already does exactly this for ValidatorPodManager/LiquidDelegationFactory/LiquidDelegationVault. All 6 addresses match deployments/tempo/latest.json:9-1 - Better / existing approach: Mostly none — Envio requires a concrete per-chain config file (codegen is per-config), so a third file is unavoidable and the event-list duplication across config.yaml/config.local.yaml/config.tempo.yaml is a pre-existing Envio limitation, not something this PR introduces. One small available improvement exists: indexer/scripts/sync-config-from-manifest.ts already automates address-sync from a dep
- Model: opencode/zai-coding-plan/glm-5.2
- Bridge attempts: 2
- Bridge warning: opencode/kimi-for-coding/k2p7: bridge stream ended without value-audit content
🎯 Usefulness — error
usefulness agent produced no parseable value-audit JSON.
- Model: opencode/zai-coding-plan/glm-5.2
- Bridge attempts: 1
- Bridge error: no parseable JSON response
💰 Value Audit
🟡 Sync script can't maintain the new Tempo config — its addresses will drift on Tempo redeploy [maintenance] ``
indexer/scripts/sync-config-from-manifest.ts:100-106 throws if no MBSM address is supplied (--mbsm or manifest.mbsm). Tempo's latest.json has no mbsm key, so the script refuses to run against config.tempo.yaml. Consequently the 6 Tempo addresses are hand-maintained and will silently go stale if contracts are redeployed on Tempo — exactly the drift the script exists to prevent for config.yaml. Minor available improvement: relax the MBSM check to emit
address: []when the manifest genuinely lack
What this audit checks
It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.
| Pass | What it asks |
|---|---|
| Heuristic | Vague title? Whitespace-only or cruft-bearing diff? (content signals only) |
| Duplication | Do added function/class names already exist elsewhere in the repo? |
| Value Audit | What does it do? What goal does it achieve? Is it good? Better architecture or already-exists? |
| Usefulness Audit | Does it integrate and fit? Will it hold up in real use and actually get used? |
Findings are concerns, not blocks — the human reviewer decides what to do with them.
✅ No Blockers —
|
| deepseek | kimi-code | aggregate | |
|---|---|---|---|
| Readiness | 95 | 92 | 92 |
| Confidence | 65 | 65 | 65 |
| Correctness | 95 | 92 | 92 |
| Security | 95 | 92 | 92 |
| Testing | 95 | 92 | 92 |
| Architecture | 95 | 92 | 92 |
Reviewer score is advisory once the run is complete and the verdict has no blockers.
Full multi-shot audit completed 1/1 planned shots over 1 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 1/1 planned shots over 1 changed files. Global verifier still owns final merge decision.
🟡 LOW Incomplete comment about transaction.input consumers — indexer/config.tempo.yaml
The comment claims 'The only handler that reads event.transaction?.input decodes ServiceRequested metadata', but src/handlers/tangle.ts lines 554 and 582 both call extractServiceRequestMetadataFromInput(event.transaction?.input) — in the ServiceRequested handler AND the ServiceRequestedWithSecurity handler. Update the comment to mention both handlers so future maintainers don't mistakenly believe only one code path is affected when deciding whether to re-add the input field.
tangletools · 2026-07-08T16:43:53Z · trace
tangletools
left a comment
There was a problem hiding this comment.
✅ Approved — 1 non-blocking finding — 3b60cb13
Full multi-shot audit completed 1/1 planned shots over 1 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 1/1 planned shots over 1 changed files. Global verifier still owns final merge decision.
Full immutable report for this review: trace
Summary comment for this run: full summary
tangletools · 2026-07-08T16:43:53Z · immutable trace
Envio config to index the live tnt-core 0.19 deployment on Tempo Moderato (chain 42431). Proven end-to-end: synced from the deploy block (25563852) to head, decoded real 0.19 events (StakingAsset/RewardVault/RoleGranted/Upgraded). Indexes the 6 deployed contracts; the 4 not on Tempo use
address:[]to keep codegen/handlers intact. Drops theinputtx-field because Tempo system tx type 0x76 has noinput(envio treats a requested-missing field as fatal) — a Tempo-RPC tx-shape note, not an ABI mismatch.