mirror of
https://github.com/okieselbach/AutopilotMonitor.git
synced 2026-10-25 05:00:07 +00:00
50bb09eb92
Backend 1.5.1256 raised IngestTelemetry p50 from 66 to ~100 ms and RegisterSession from 90 to ~110 ms. Storage metrics per API located it: server latency of point reads unchanged, end-to-end latency of QueryEntity alone up from 3.7 to 6.4 ms, every other API flat. The excess times the point reads per upload is the whole regression, and the request histogram gained a second mode 46 ms above the first. The only point-read response that had changed was the Sessions row (~400 bytes of tracker state and twins), which every upload read twice in full. - SessionRowProjections: the guard row for the agent routes (Status, SerialNumber, owner columns) and the counter merge's slice (counters, anchor, index key, tracker state and twins, the fields non-terminal batches consume). The guard takes a select and adds its lock columns; the inventory reader gets a projected overload, the deletion flows keep their full reads. - The counter merge returns SessionIngestSnapshot, a narrow type instead of a SessionSummary built from a projected row. The processor reads the whole row only on terminal, diagnostics and transition batches or when the merge returned nothing, and derives the snapshot there. The SignalR delta and the control signals carry the same fields as before. - The signal-only upload reads the same slice; registration takes its lifecycle entry from the guard's row instead of a second read. - SessionRowProjectionTests: a select-strict harness pins each list. The merge's write, index mirror and snapshot, the slice mapper, the guard row's readers and the owner policy come out identical whole or projected; a dropped column fails there (verified by mutation). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>