Repository navigation
fix(telemetry): normalize log severity queries - #19
Merged
Merged
Conversation
Apply the backend severity fix proposed in #12 while leaving its UI redesign out of scope. Match stored casing variants and normalize stats and facets without changing returned or persisted severity text. Add regression coverage at the telemetry store seam and a matching NOCASE index to retain direct severity lookups on large databases.
This was referenced Sep 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Logs stored with severity text such as
Infoappear in unfiltered results but disappear when filtering forINFO. Stats and facets also split casing variants into separate buckets.What Changes
Apply the isolated backend severity fix proposed in #12: compare severities case-insensitively and normalize severity groups and facets.
INFOoverInfo,INFO,infoINFObucket, count 3Add a matching
NOCASEseverity/time index to preserve direct indexed lookups. An in-memory probe with one million synthetic logs measured approximately 140 ms without the matching index versus 0.08 ms with it. The additive index used approximately 19 MiB and took 298 ms to construct in that probe; disk construction varies.Scope
Backend only. This does not include #12's UI redesign or badge changes, and does not alter trace permalink routing. Existing log text and the old index are not rewritten or removed.
Related #12.
Verification
Seven new regressions were verified red/green; the telemetry suite passes all 60 tests. Server/web typechecks, web build, and clean-consumer release validation pass. Release validation used isolated temporary storage and port 32386.
The initial full suite had three TUI setup failures because the global
tuistoryinstallation could not loadnode-pty's native binary. Installingtuistory@0.0.9andnode-pty@1.0.0with its native build in an isolated$TOOLSdirectory resolved the environment issue without changing global tools. With that owned relay running, the full suite passes 211 tests, zero failures, including all 11 real-TUI tests, with no exclusions.An isolated smoke test verified persisted rows through a fresh read-only service and HTTP search, stats, and facets without changing original severity text.
Independent SQL probes also verified empty/default severity values, aggregate limits, same-timestamp pagination, read-only databases without the new index, and reopening a writer on populated storage.