The Interactivity API on one block, measured

One block converted from bespoke script to directives, measured before deciding whether to convert the rest.

a carousel block, on a page with one instance:

  bespoke script          22.4 KB (gzipped 7.1)
  interactivity runtime   12.8 KB (gzipped 4.9)
  the block's own store    1.2 KB

one block: worse by nothing much.
four blocks: 89 KB → 18 KB, because the runtime is
shared and the per-block cost is a store.

and the thing that does not appear in the numbers: the
directive version works before hydration, and the
bespoke one did not.

The runtime is a fixed cost that only pays off across several blocks, so converting one is a loss and converting four is a large win — which means the decision is about the page rather than about the block. Progressive enhancement is the part that does not show up in a byte count and was the stronger argument.