# FSP Test Map ## Operator Tests - Historical output schema, dtype, units, and source timestamp alignment. - Realtime update equivalence with the final row of a batch recomputation. - Warm-up, NaN, zero, gap, duplicate, and out-of-order behavior. - Session reset and elapsed-time behavior. - Parameter and source identity isolation. ## Engine Tests - Equal absolute source/destination bounds. - Normal one-step destination lag. - Destination lead and lag greater than one step. - Source prepend by one, two, and a full provider frame. - In-place gap repair with unchanged source bounds. - Equal lengths with shifted absolute bounds. - Source change during historical recomputation and convergence afterward. - Cancellation while the quote stream, sample stream, or compute generator is blocked. - Foreign FQME and timeframe backfill broadcasts. ## Graph and Actor Tests - Dependency startup before downstream operator lookup. - Actor-local flow registry isolation. - One destination writer and multiple readers. - Consumer cancellation without orphaned cascade or worker tasks. - Worker failure propagation and SHM cleanup. - Feed-like fan-out with a slow or disconnected consumer. ## UI Tests - An `fsp_update` redraws every field visualization sharing its destination token and no unrelated market, OHLC, or FSP visualization. - A prepend outside the visible range does not move or re-range the live view. - A revised value inside the visible range invalidates only required formatter and graphics caches. - Hidden charts defer rendering without stopping compute correctness. ## Performance Tests - Historical bootstrap across realistic SHM capacities. - O(1) realtime recurrence cost under bursty quotes. - Consecutive provider-frame prepends with two or more cascades. - Multi-market sampler broadcasts and targeted wakeups. - Visible-range redraw cost at several units-per-pixel levels. Prefer deterministic local arrays and controlled Trio task interleavings. Use live providers only as a separate integration layer because credentials, rate limits, sessions, and changing history make poor regression oracles.