piker/.agents/skills/piker-fsp-expert/test-map.md

53 lines
2.1 KiB
Markdown

# 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.