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.
import 'overscan'
import 'overscan/overscan.css'
<ov-continuity
id="live-continuity"
style="max-inline-size:640px"
></ov-continuity>import { OvContinuity } from 'overscan/react'
<OvContinuity
id="live-continuity"
style="max-inline-size:640px"
/>import { OvContinuity } from 'overscan/vue'
<OvContinuity
id="live-continuity"
style="max-inline-size:640px"
/>import OvContinuity from 'overscan/svelte/OvContinuity.svelte'
<OvContinuity
id="live-continuity"
style="max-inline-size:640px"
/>import 'overscan'
import 'overscan/overscan.css'
<ov-continuity src="models/continuity-downlink.json"></ov-continuity>import { OvContinuity } from 'overscan/react'
<OvContinuity src="models/continuity-downlink.json" />import { OvContinuity } from 'overscan/vue'
<OvContinuity src="models/continuity-downlink.json" />import OvContinuity from 'overscan/svelte/OvContinuity.svelte'
<OvContinuity src="models/continuity-downlink.json" />import 'overscan'
import 'overscan/overscan.css'
<ov-continuity src="models/continuity-clean.json"></ov-continuity>import { OvContinuity } from 'overscan/react'
<OvContinuity src="models/continuity-clean.json" />import { OvContinuity } from 'overscan/vue'
<OvContinuity src="models/continuity-clean.json" />import OvContinuity from 'overscan/svelte/OvContinuity.svelte'
<OvContinuity src="models/continuity-clean.json" />import 'overscan'
import 'overscan/overscan.css'
<ov-continuity
src="models/continuity-themes.json"
style="max-inline-size:640px"
></ov-continuity>import { OvContinuity } from 'overscan/react'
<OvContinuity
src="models/continuity-themes.json"
style="max-inline-size:640px"
/>import { OvContinuity } from 'overscan/vue'
<OvContinuity
src="models/continuity-themes.json"
style="max-inline-size:640px"
/>import OvContinuity from 'overscan/svelte/OvContinuity.svelte'
<OvContinuity
src="models/continuity-themes.json"
style="max-inline-size:640px"
/>