* fix(diagnostics): align Relational structured-log sort and ListSources with InMemory
Include SourceId in the Relational ORDER BY tie-break chain, MarkSeen on the durable write path, and prefer the in-process source registry for ListSources so heartbeat and identity metadata survive Sqlite persistence.
Fixes#8117
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
* fix(diagnostics): keep MarkSeen monotonic and ListSources IDs distinct
Do not regress LastSeen when a delayed older flush replays MarkSeen. Use Ordinal keys when merging registry sources so case-distinct IDs stay distinct.
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* fix(diagnostics): honor MaxRecentLogQuerySize for relational Take
Relational recent-log queries used a hard-coded null→100 default and
1000 clamp, so enabling Sqlite silently dropped the page size from the
InMemory contract of StructuredLogsOptions.MaxRecentLogQuerySize.
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
* test(diagnostics): disambiguate Options.Create in SQL builder tests
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
* fix(diagnostics): normalize negative MaxRecentLogQuerySize before Clamp
Math.Clamp throws when the configured ceiling is negative. Both
InMemory and Relational now share ClampRecentLogQueryTake, which treats
a negative max as zero so query construction cannot fail.
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>