Repository navigation
Show the store's collection caveats on the web Collection Health tabs - #5123
Merged
Merged
Conversation
… key, and seed a second server in the isolation test (#4843)
…s test, and let the harness copy modules other PRs add to server-tabs.js
erikdarlingdata
marked this pull request as ready for review
October 4, 2026 21:44
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.
Part of #4843
What users see change
Each web Collection Health tab (the SQL Server tab, and the PostgreSQL Overview tab where collection health lives) now has an "Analysis could not read these data families" grid. It has the desktop Viewer's four columns: Family, Reason, Since, Last seen. It lists the rows
collect.analysis_collection_caveats(V141, #3691) holds for the server. When there are none, the grid is not drawn at all, as in the desktop.What changed
get_collection_healthalready feeds the tab's panels in one read, so it now carries astored_caveatsarray (family,reason,first_seen_utc,last_seen_utc, ordered by family). The array is omitted when the store records none, so a clean server's payload is byte-identical to before. The tool's description is unchanged, so the tools/list budget, tool count, guide heads and payload census pins did not move (the budget, guide and census classes pass).DarlingCollectionCaveatReader(Service/Mcp): one schema-qualified read with the MCP deadline, the key spliced into the serialized payload. A store below V141 has no table: 42P01 answers "no caveats" and the health read still succeeds. A role without SELECT (42501) answers none with one warning. The same pattern the run-time reader uses. Any other failure still fails the health read, like the reads beside it.server-tabs.js, Collection Health region only: a sharedCOLLECTION_CAVEATS_PANELused by both tabs, and ahideWhenNoRowsoption onfanoutthat keeps a panel hidden until rows arrive (a failed or empty read leaves it hidden). The shell is built hidden, so a clean server never shows the card or its loading strip, and a last-had-rows memory at module scope, keyed by read, params and title, keeps the card up across the 60 s rebuild for a server that has caveats.Not changed
No new tool, no migration, no Storage reader, no CSS. The in-memory
analysis_caveatsblock is untouched; this is the store's current answer, which survives a restart.Verified at the head (0d2e77f)
stored_caveats, becausecollection_caveatsis already an object onanalyze_server; the tool description is unchanged (McpToolsListBudgetTests 5/5).CollectionCaveatsWebTests: 8/8 on a throwaway TimescaleDB container (removed afterwards):get_collection_health?server=…, no caveat tool anywhere;CollectionCaveatStorecome back through the real tool with Since/Last seen kept; the table dropped (pre-V141) gives no key and collectors still answer.server-tabs.jsshows the panel absent for every arm, and the C# class does not compile on dev (no reader). Both fail there.CollectionCaveatLedgerParityTests,PgIndexBloatGridReachTests,WebServerPageRangeTests,WebRangeKeptHistoryBehaviourTests,WebModuleLoadTests,ServerPageTabsTests,CollectionHealthRunTimeFieldsLiveTests,CollectionHealthPayloadBudgetLiveTests,DarlingMcpHealthToolsLivePostgresTests,CollectionCaveatStoreLiveTests,ViewerCollectionCaveatsLivePostgresTests,PgTargetCollectionCaveatsLiveTests.DocCommentHygieneTests,McpToolsListBudget*,McpToolGuide*,StorageCommandTimeoutTests,StartupCommandTimeoutTests,McpReadCommandTimeoutTests,TsqlConventionGuardTests,FleetIdentifierScrubTests,QueryStoreSliceTieBreakSourceTests): no failures.CollectionCaveatLedgerParityTests,PgIndexBloatGridReachTests) were my change and are fixed.node --checkclean onserver-tabs.js;fanoutandhidesPaneleach declared once; module-load harness passes.scrubcheckon the diff: 0 hits. Commit author is Erik. Build: 0 errors,--no-incremental, no analyzer warnings.CHANGELOG entry
SECTION: Added
ENTRY: - Collection caveats on the web Collection Health tabs ([#5123]) - the SQL Server and PostgreSQL Collection Health tabs now list the data families the analysis pass could not read, with the reason and when it started, hidden when there are none.
REF: [#5123]: #5123