theres a distinction Dusk's own docs make explicitly that most rollup builders gloss right over. inclusion and settlement are not the same event, and DuskEVM's lifecycle keeps that gap visible instead of hiding it behind a friendly confirmation screen.
heres the actual sequence. a transaction gets submitted to the DuskEVM sequencer first. the execution layer includes it in an L2 block almost immediately, thats the part that feels instant, the part wallets show as "confirmed" the moment it happens. but that block isnt settled yet, not in the way that matters for cross-layer value movement. the actual settlement and data availability layer underneath. only after that does DuskDS produce state commitments and fault proofs connecting DuskEVM's resulting state back to something anchored on the base layer.
so theres a real window, sometimes small, sometimes not, where a transaction is included but not yet settled in the sense finality actually requires. the docs are direct about this, they explicitly warn that applications moving value between DuskEVM and the Dusk L1 should check protocol or wallet status instead of assuming finality just because a few seconds passed and nothing looked wrong.
what i actually respect here is the honesty of drawing that line instead of papering over it. plenty of rollups blur inclusion and finality together in their UX, letting users assume theyre the same thing because most of the time nothing goes wrong. Dusk names the gap directly instead of quietly hoping nobody notices until it matters.
but naming a gap doesnt close it automatically. if youre building something that bridges value or triggers logic off a DuskEVM transaction, you now carry the responsibility of checking real settlement status yourself instead of trusting the fast confirmation you saw first.
so is that extra step going to get built correctly by every integrator who touches this, or does the honest disclosure just quietly shift the risk onto whoever assumes speed means done.
#dusk @Dusk
$DUSK