Repository navigation
Lite's get_query_trend carries the same source/effective_start/truncated block its Darling twin has had since #2353, so the last cross-SKU envelope mismatch in the trend family closes (#3541 A2 follow-up) - #3599
Conversation
…has had since #2353 (review parity note)
There was a problem hiding this comment.
LGTM — verified the disclosure block wiring in McpQueryTools.GetQueryTrend matches Darling's field order/semantics (source, effective_start, effective_hours_back, truncated, bucket, aggregate_note), confirmed the empty branch correctly stays bare (matching Darling's empty branch), checked rows[0] is safe since the empty-count path returns early, verified rows are ordered ascending by collection_time so effective_start is computed from the true first point, and confirmed the new test's truncation assertion is consistent with TruncationSlack. No other Lite call sites needed updating (McpAnalysisTools/McpInstructions only reference the tool name in text). No Darling changes needed since Darling already had this block since #2353.
…spliced once Fifty-nine PRs merged to dev today across the coordinator's lanes and the wave-2 worker's; each lane returned its entry to a buffer instead of touching this file, so that fifty-plus PRs did not each rebase the same twenty lines. This is the one splice. Every entry is one line (the archiver's compact() and the pins read them that way); riders fold into their parent's entry (#3599 under #3590, #3619 under #3611, #3623 under #3616, #3640 under #3633; #3617 test-only and #3661 re-cut as #3666 carry none); #3657's entry is in because it MERGED to dev - the twin to main is what is still pending. [Unreleased] gains a `### Added` above `### Fixed` (Keep-a-Changelog order) for the six new capabilities: per-user theme colours (#3606 / #3577 arm B), routed alert families (#3668 / #3598), the PostgreSQL logging audit tool (#3643 / #3607), the service-side wait sampler (#3645 / #3604), and the log-event classifier with its temp-file / autovacuum parser families (#3646 / #3601, #3664 / #3602 #3603). The other forty-eight are honesty fixes to existing surfaces and append to `### Fixed` after the wave-1 bullets, in PR-number order. Thirty-six reference definitions added for the issues the new entries cite and the index did not yet define; the [Unreleased] group is one ascending run again, which moves [#3557] into its slot (the one deleted line). Nothing under ## [3.8.0] or older is touched; the archive script was not run. One editorial touch: the #3585 entry ended in a dangling "Darling" and now reads "Darling only." (the tool exists only in the Darling MCP host). tools/changelog/changelog_archive.py verify: all PASS (1420 bold entries, floor 1,329; 1,358 distinct refs resolve; CRLF throughout; 356,539 bytes under the 750 KiB ceiling). ChangelogIndexAndArchiveTests: 5/5 pass via a net10.0 harness.
…spliced once (#3672) Fifty-nine PRs merged to dev today across the coordinator's lanes and the wave-2 worker's; each lane returned its entry to a buffer instead of touching this file, so that fifty-plus PRs did not each rebase the same twenty lines. This is the one splice. Every entry is one line (the archiver's compact() and the pins read them that way); riders fold into their parent's entry (#3599 under #3590, #3619 under #3611, #3623 under #3616, #3640 under #3633; #3617 test-only and #3661 re-cut as #3666 carry none); #3657's entry is in because it MERGED to dev - the twin to main is what is still pending. [Unreleased] gains a `### Added` above `### Fixed` (Keep-a-Changelog order) for the six new capabilities: per-user theme colours (#3606 / #3577 arm B), routed alert families (#3668 / #3598), the PostgreSQL logging audit tool (#3643 / #3607), the service-side wait sampler (#3645 / #3604), and the log-event classifier with its temp-file / autovacuum parser families (#3646 / #3601, #3664 / #3602 #3603). The other forty-eight are honesty fixes to existing surfaces and append to `### Fixed` after the wave-1 bullets, in PR-number order. Thirty-six reference definitions added for the issues the new entries cite and the index did not yet define; the [Unreleased] group is one ascending run again, which moves [#3557] into its slot (the one deleted line). Nothing under ## [3.8.0] or older is touched; the archive script was not run. One editorial touch: the #3585 entry ended in a dangling "Darling" and now reads "Darling only." (the tool exists only in the Darling MCP host). tools/changelog/changelog_archive.py verify: all PASS (1420 bold entries, floor 1,329; 1,358 distinct refs resolve; CRLF throughout; 356,539 bytes under the 750 KiB ceiling). ChangelogIndexAndArchiveTests: 5/5 pass via a net10.0 harness.
Lite's
get_query_trendcarries the disclosure block its Darling twin has had since #2353#3590 gave the duration-trend trio one six-key disclosure block —
source,effective_start,effective_hours_back,truncated,bucket,aggregate_note— on both SKUs. The bot review of that PR pointed at the one tool left where the SKUs' envelopes still disagreed: Darling'sget_query_trendhas published the block since #2353, Lite's returned the bare{server, database_name, query_hash, hours_back, data_points, trend}. This is that fix, taken in-lane rather than filed. It was pushed to #3590's branch as its fifth commit, but auto-merge fired on the fourth commit's green checks a minute earlier, so it rides here on its own.What changes
Lite
McpQueryTools.GetQueryTrend's DATA envelope writes the same block betweenhours_backanddata_points, through theWriteDisclosurehelper #3590 added one screen up:sourcealwaysraw(Lite has one tier),bucketper-collection,effective_startthe first point the store held,truncatedby the shared 90-minute slack. Its empty branch stays a bare status, exactly like Darling'sget_query_trendempty branch, so the twins now match on both paths. The Lite instructions row says so.What it does NOT do
Nothing on Darling; nothing to any reader. No
CHANGELOGentry of its own — it belongs under #3590's entry (partial #3541, A2).Test plan
Compile-verified here (Lite + Lite.Tests, zero warnings); first executed in CI.
TrendEmptyParityToolTests.QueryDurationTrend_NeverCollected_AndAQuietWindow_AreDifferentAnswersnow also readsget_query_trendover the same seeded query and assertssource,bucket,effective_start= the first point'scollection_time,truncated(a series beginning ten minutes ago in a four-hour window starts past the slack) anddata_points.Which component(s) does this affect?
How was this tested?
Compile-verified on Lite and Lite.Tests with zero warnings; the assertion above is the same shape the sibling tools' assertions in the same file already use over the same DuckDB fixture.
Checklist
dotnet build -c Debug)