mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-10 10:06:15 -08:00
* docs(performance): plan Xtream benchmark * feat(xtream-mock-server): add deterministic 100k fixture * style(xtream-mock-server): apply repository formatting * fix(xtream-mock-server): harden performance fixture data * feat(xtream-mock-server): add performance control plane * docs(performance): correct Xtream capture plan * fix(xtream-mock-server): harden performance controls * fix(xtream-mock-server): harden control lifecycle * feat(performance): add Xtream preload markers * feat(performance): trace Xtream main phases * feat(performance): mark Xtream store publications * feat(performance): trace Xtream database phases * feat(performance): trace Xtream delete cancellation * feat(performance): capture Xtream phase attribution * feat(performance): mark Sources Xtream refresh * test(performance): define Xtream benchmark evidence contracts * test(performance): add Xtream benchmark runner * test(performance): surface failure evidence writes * test(performance): align database read clock * test(performance): preserve capture failure contracts
19 lines
617 B
TypeScript
19 lines
617 B
TypeScript
/**
|
|
* Phase duration and epoch endpoints are read from separate clocks in separate
|
|
* calls. The enclosing request/operation window is the causal upper bound.
|
|
*/
|
|
export function fitsPerformanceDurationEnvelope(
|
|
durationMs: number,
|
|
envelopeStartEpochMs: number,
|
|
envelopeEndEpochMs: number
|
|
): boolean {
|
|
return (
|
|
Number.isFinite(durationMs) &&
|
|
durationMs >= 0 &&
|
|
Number.isFinite(envelopeStartEpochMs) &&
|
|
Number.isFinite(envelopeEndEpochMs) &&
|
|
envelopeEndEpochMs >= envelopeStartEpochMs &&
|
|
durationMs <= envelopeEndEpochMs - envelopeStartEpochMs
|
|
);
|
|
}
|