OVERSCANUI KIT
no button at all a worn bezel with weight channels do not converge zero depth instrumented, full of smoke a field of real characters a camera looking out additive, so no shadow hairlines, no new shader no raster, so no scanlines

Counted by number, not by clock. Every packet from a source carries a 14-bit sequence count, so a missing number is a missing packet whether or not there is any gap in time, and a long silence with no gap in the numbers is not loss. Missing numbers are counted in runs, a late packet is out of order and fills its gap, the same number twice is a duplicate, and 16383 then 0 is a wrap. Across a counter reset, completeness cannot be determined (CCSDS 133.0-B-2), so the strip breaks there and the source is never called complete; a jump that could be a reset or a loss is not guessed as either.

demo/continuity.html, from this page
import 'overscan'
import 'overscan/overscan.css'

<ov-continuity
  id="live-continuity"
  style="max-inline-size:640px"
></ov-continuity>
live: packets arriving, last 240 of each
variation: src="models/continuity-downlink.json"
import 'overscan'
import 'overscan/overscan.css'

<ov-continuity src="models/continuity-downlink.json"></ov-continuity>
six sources, one pass
every number present
variation: src="models/continuity-clean.json"
import 'overscan'
import 'overscan/overscan.css'

<ov-continuity src="models/continuity-clean.json"></ov-continuity>
terminal
variation: src="models/continuity-themes.json"
import 'overscan'
import 'overscan/overscan.css'

<ov-continuity
  src="models/continuity-themes.json"
  style="max-inline-size:640px"
></ov-continuity>
industrial
cyber
antiseptic
esper
neo
machina
holo
aegis
vector