Tranche Redeem — call flow (sourcing starts on request) Agreed design (docs/multichain-plan.md, 'redeem') — shares locked in escrow · which settlement prices the payout is a per-round setting (previous or next — still open) · local sourcing starts at once · hub planWithdraw then starts the hub share and WITHDRAW to other spokes. Burn and payout wait for settlement TX 1spoke · user signs TX 2hub · relayer (record + source + propagate) TX 3target spoke · relayer (starts sourcing) dashed= Socket event (colour = originating tx) · ✂ = tx boundary SPOKE chain (intake) TX 1 — user signs · redeem intake + local sourcing starts ShareToken S/Jescrowed — burned on approval 👤user (owner) TrancheVault S/JERC-7540/7575 facade TrancheManager (Spoke) escrow · state machine · share mint/burn CCCP handler directly (ICCCP_Receiver) sizes the payout · sends REDEEM_REQ CCCP V2 (Spoke) Hooks · Vault · Socket, collectively bridging + messaging · runs poll hands to receiveMessage 1-1 requestRedeem 1-2 requestRedeem onlyVault · locks shares in escrow 1-5 request sends REDEEM_REQ — asset 0 MultichainAdapter (Spoke) LocalAllocation cache · starts local sourcing 1-3 local sourcing starts sized against the payout (pricing setting) Adapter_1IAdapter interface Adapter_2IAdapter interface Adapter_3IAdapter interface 1-4 requestWithdraw ×N spoke-local yield sources — ASYNC ones issue a requestWithdraw ticket · receive once isReady, held locally to fund the payout Msg — redeem request (asset 0) asset 0 — shares stay escrowed on intake REDEEM_REQ · requestId · tranche · shares · owner · localInitiated reported Relayers watches Socket events → ⅔+ signatures → submits Poll_Submit{msg, sigs, option} off-chain (tx boundary ✂) HUB chain (Bifrost) TX 2 — relayer signs · record + hub sourcing + propagate to other spokes Investment Pallet ledger — Product · request · NAV · adapter detail recorded Investments Precompile 0x…0201 — called by Valuation only Valuation (Hub) builds the sourcing plan (fixed or adjusted per pricing setting) Orchestrator (Hub) CCCP handler (ICCCP_Receiver) one global — routes and sends CCCP V2 (Hub) Hooks · Vault · Socket, collectively poll → hands to receiveMessage 2-2 receiveMessage(REDEEM_REQ) 2-3 planWithdraw(payout − sourced locally) — the plan 2-4 record_investment_request order_type=0(redeem) · settlement_id recorded 2-5 hub sourcing starts 2-7 sends WITHDRAW instructs other spokes · asset 0 (per spoke) MultichainAdapter (Hub) hub sourcing starts · valuation aggregated Adapter_1IAdapter interface Adapter_2IAdapter interface Adapter_3IAdapter interface 2-6 requestWithdraw ×N Sourcing flow: local, hub and other spokes all start on request (TX 1–3) → proceeds gather at the hub via NET_BRIDGE — burn and payout wait for settle (Redeem Approval) other SPOKE chains ×N TX 3 — relayer signs receiveMessage(WITHDRAW) → per the named adapter and amount requestWithdraw starts at once proceeds gather via NET_BRIDGE Socket(REDEEM_REQ) event ✂ 2-1 poll Socket(WITHDRAW) ✂