Repository navigation
The buffer-composition drill-down's pressure block carries the fact's counts and observed span rather than a second copy of its per-second quotients, and its rounding helper reads whole — the two censuses #3795's pre-CI merge reddened on dev (#3691) - #3799
Merged
Merged
Conversation
…observed span, not a second copy of its per-second quotients (MeasurementContractCensus rule 6); Round reshaped so the member walk reads it whole (TsqlConventionGuard)
This was referenced Sep 20, 2026
erikdarlingdata
added a commit
that referenced
this pull request
Sep 20, 2026
6 of 12 tasks
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.
What this fixes
#3795 (lane 29 of #3691, the buffer-composition drill-down) was hand-merged to dev before its CI finished; the Windows
buildandDarling PostgreSQL testsjobs then reddened on two repo-wide censuses that the lane's local harness had not carried. Both are census contracts about the SHAPE of what the drill-down publishes, not defects in what it reads or says; the fix is the smallest reshaping that satisfies each contract as written, and neither census is rostered or edited.MeasurementContractCensusTests.EveryPerSecondPayloadKey_IsAReaderRateOrACSharpQuotient_OrIsNamed(rule 6): the drill-down'spressureblock re-published the root fact'sevictions_per_secandbuffers_alloc_per_secas passthroughs (Round(summary.EvictionsPerSec)). The census requires a per-second payload key's value to be a reader rate of its own name, a C# quotient over a measured span, or a rostered key resting on a SQL alias or a=>model member — and a fact-metadata passthrough is none of those shapes. Rather than roster it, the block now carries what the fact MEASURED —evictions,buffers_alloc,observed_ms— besidemiss_share,hit_ratio_suppressedandcache_turnovers_per_hour. The per-second quotients are computed once inPgTargetFactCollector.Buffer.csover observed time and remain the fact's to publish (get_analysis_facts source=pg_buffer; the advice prose states them); a copy under a per-second name was a second publication of one quotient, which is exactly what rule 6 exists to stop. The summary record'sEvictionsPerSec/BuffersAllocPerSecbecameEvictions/BuffersAlloc/ObservedMs; the source pin now asserts no_per_sec =key in the drill-down's code.TsqlConventionGuardTests.TheMemberScan_ReadsEveryDeclarationWhole: the expression-bodiedRound(double? value) => value is { } v ? … : nullmade the member walk stop short at the{ }pattern and the test asked for aKnownTruncatedRangesrow. A block body withHasValuereads whole; no roster row.What it does NOT change
The SQL, the dispatch, the kind/cold partitions, the four-arm sentence, the advice fold and every other payload key are as #3795 shipped them. No key, stub, migration, tool or scorer touched.
Tests
PgTargetBufferDrillDownTestsupdated in step (the source pin, the fixture, the e2e'spressureasserts —observed_mspinned to the planted hour's range). Executed here before opening: the PG-target census set plusTsqlConventionGuardTestsandMeasurementContractCensusTests— 204/204 with 0 skipped against a throwawaytimescale/timescaledb:2.28.1-pg18ondesktop-linux(V136), the new e2e and lanes 2/16's e2es green; harness and container deleted. Builds:PerformanceMonitor.Analysis,PerformanceMonitor.Darling.Analysis,Darling.Tests,deprecated/Dashboard.Tests— 0 warnings.Partial for #3691 (lane 29 census follow-up to #3795); do not close.
Which component(s) does this affect?
How was this tested?
Above. No production store or fleet server was read.
Checklist
dotnet build -c Debug)