Repository navigation
Two V137 pins met the rungs that landed around them: the v62→v63 DuckDB climb asserted the ladder's top was 63 forever, and the eight-column no-reader census read #3797's null-placeholder query_capture_mode key as a reader — dev red since #3813 (V137 residue) - #3821
Merged
Merged
Conversation
erikdarlingdata
enabled auto-merge (squash)
September 20, 2026 18:00
…kDB climb asserted the ladder's top was 63 forever (a re-initialized database climbs to CurrentSchemaVersion, 64 since v64), and the eight-column no-reader census read #3797's null-placeholder query_capture_mode key as a reader — dev red on f2e1816 and next on 20215a4 (#3813 residue) (1) Lite.Tests.TimeHonestyRungReadTests.AV62Database_ClimbsToV63_AndItsOldRowsReadNull stamped a real DuckDB back to 62, re-initialized it, and asserted MAX(version) == 63. InitializeAsync runs every block above the stamp in one pass, so the top it lands on is whatever the newest rung is - 64 since #3813's Lite twin - and the literal was a "there is no rung above me" claim hiding inside a test about v63's two columns. The v63 half is unchanged; the pin now reads CurrentSchemaVersion (the PerfmonCounterTypeTests v61->v62 idiom) and asserts >= 63. (2) QsCaptureModeRouteKnobToastRungTests.NoReaderNamesAnyOfTheEightColumnsYet scans product code, comments stripped, for the eight column names. #3797's get_query_store_clutter (4492479, merged 40 minutes after #3813) publishes `query_capture_mode = (string?)null` beside `capture_mode_known = false` and a note that the column lands with V137 - the payload KEY, so a caller's shape is stable, never a value read from the store - and DarlingMcpInstructions names the key in prose. Both are pointers, the V136 shape's PgTargetToolRecommendations exclusion; the census now excludes the two files and holds the clutter tool POSITIVELY to that state (null placeholder present, no wait_stats_capture_mode, no SELECT of the capture mode from the health table), so the moment it reads the column the arm reds and is retired deliberately. Red-then-green on this Mac against dev + #3797. The V137 lane ran TimeHonestyRungTests (the sibling class) and not the WPF-hosted Read class; the full Lite sweep had (1) and was not read before push.
erikdarlingdata
force-pushed
the
fix/v137-lite-v63-climb-pin
branch
from
September 20, 2026 18:02
a75e166 to
482d5e4
Compare
This was referenced Sep 20, 2026
erikdarlingdata
added a commit
that referenced
this pull request
Sep 20, 2026
…which holds no SQL: the reader and judgment files — where a capture-mode READ would land — are now held to naming neither column (#3797 lane 6, after #3821) #3821 allowed get_query_store_clutter's null-placeholder query_capture_mode key in the tool file and the instructions row, and fenced the read with a regex over SELECT ... FROM v_query_store_health in the tool file. The tool file has no SELECT in it — the clutter view's statements live in DarlingQueryStoreClutterReader (ConfigSql names the health row's columns) and its judgment in QueryStoreClutter — so that fence matches nothing and a reader wiring the column would pass it. This adds the fence where the read would land: both files are asserted to name neither capture-mode column, with the message saying which arm to retire. Test roster only, one file, twenty lines.
4 tasks done
erikdarlingdata
added a commit
that referenced
this pull request
Sep 20, 2026
…which holds no SQL: the reader and judgment files — where a capture-mode READ would land — are now held to naming neither column (#3797 lane 6, after #3821) (#3822) #3821 allowed get_query_store_clutter's null-placeholder query_capture_mode key in the tool file and the instructions row, and fenced the read with a regex over SELECT ... FROM v_query_store_health in the tool file. The tool file has no SELECT in it — the clutter view's statements live in DarlingQueryStoreClutterReader (ConfigSql names the health row's columns) and its judgment in QueryStoreClutter — so that fence matches nothing and a reader wiring the column would pass it. This adds the fence where the read would land: both files are asserted to name neither capture-mode column, with the message saying which arm to retire. Test roster only, one file, twenty lines.
erikdarlingdata
added a commit
that referenced
this pull request
Sep 20, 2026
…: the V137 eight-column no-reader census is retired whole rather than exempted file by file — #3814 released the clause forty minutes after the rung, #3821 bought one merge by name, and #3796, #3712 and #3783 were each about to red the same method and race to edit it (follow-up to #3813) QsCaptureModeRouteKnobToastRungTests.NoReaderNamesAnyOfTheEightColumnsYet scanned the five product projects, comments stripped, for the eight V137 column names and threw on the first hit. Dev red at 20215a4: DarlingMcpInstructions.cs names query_capture_mode capture_mode_known = false — a pointer, not a read — and the census cannot tell the two apart. #3821 exempted the two files and added a positive arm; green, but the three code halves the rung exists for name the columns in product source outside any exemption (measured: #3796's pushed branch, edit to the method. Three lanes editing one test body whose only job left is to be edited is the race, not the fix. The method and its summary go; the class doc records the history in the file's voice; every other fact stays byte-for-byte, including the (d) no-WRITER arm on StoreSelfMetrics.cs inside the dimension-sweep fact (one file, one lane, #3783 retires it with the row). WithoutComments stays for that arm. No product file touched. Lite.Tests/QsCaptureModeRungTests has no reader-roster fact to retire. Darling.Tests -c Release -p:EnableWindowsTargeting=true: 0 warnings. In-process on this Mac: the class 6/6; the 20215a4 version of the class in the same harness fails exactly the quoted fact; RepoFileAdoptionTests, DocCommentHygieneTests, CommentFilterAdoptionTests and the census list green.
erikdarlingdata
added a commit
that referenced
this pull request
Sep 20, 2026
…: the V137 eight-column no-reader census is retired whole rather than exempted file by file — #3814 released the clause forty minutes after the rung, #3821 bought one merge by name, and #3796, #3712 and #3783 were each about to red the same method and race to edit it (follow-up to #3813) (#3825) QsCaptureModeRouteKnobToastRungTests.NoReaderNamesAnyOfTheEightColumnsYet scanned the five product projects, comments stripped, for the eight V137 column names and threw on the first hit. Dev red at 20215a4: DarlingMcpInstructions.cs names query_capture_mode capture_mode_known = false — a pointer, not a read — and the census cannot tell the two apart. #3821 exempted the two files and added a positive arm; green, but the three code halves the rung exists for name the columns in product source outside any exemption (measured: #3796's pushed branch, edit to the method. Three lanes editing one test body whose only job left is to be edited is the race, not the fix. The method and its summary go; the class doc records the history in the file's voice; every other fact stays byte-for-byte, including the (d) no-WRITER arm on StoreSelfMetrics.cs inside the dimension-sweep fact (one file, one lane, #3783 retires it with the row). WithoutComments stays for that arm. No product file touched. Lite.Tests/QsCaptureModeRungTests has no reader-roster fact to retire. Darling.Tests -c Release -p:EnableWindowsTargeting=true: 0 warnings. In-process on this Mac: the class 6/6; the 20215a4 version of the class in the same harness fails exactly the quoted fact; RepoFileAdoptionTests, DocCommentHygieneTests, CommentFilterAdoptionTests and the census list green.
This was referenced Sep 21, 2026
Merged
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.
Two V137 pins met the rungs that landed around them — one said "63" meaning "nothing above me", one read a null placeholder as a reader
(1)
Lite.Tests.TimeHonestyRungReadTests.AV62Database_ClimbsToV63_AndItsOldRowsReadNull— dev red on f2e1816Mechanism. The test stamps a real DuckDB file back to 62, re-initializes it, and asserted
MAX(version) == 63.DuckDbInitializer.InitializeAsyncruns every block above the stamp in one pass, so the version a re-initialized database lands on is the CURRENT top — 64 since #3813 (V137 / Lite v64, the Query Store capture modes) — and the literal was a top-rung claim hiding inside a test about v63's two columns.Evidence. Dev run 35526527790 at f2e1816 (the #3813 merge):
buildred on exactly this one test —Expected: 63, Actual: 64— withDarling PostgreSQL testsand the whole-tree guards green.Why this shape. The pin now reads
(long)DuckDbInitializer.CurrentSchemaVersion— the idiomPerfmonCounterTypeTests' v61→v62 climb already uses — and additionally assertsCurrentSchemaVersion >= 63so the rung's own floor stays stated. The v63 half the test owns (both columns back, nullable, trailing; the pre-rung rows NULL through the re-expandedv_views; post-rung rows landing) is untouched; the literal top belongs to the newest Lite rung's own test (QsCaptureModeRungTests.AV63Database_ClimbsToV64_AndItsOldRowsReadNull), where it will move again when v65 lands.(2)
QsCaptureModeRouteKnobToastRungTests.NoReaderNamesAnyOfTheEightColumnsYet— would red on 20215a4Mechanism. The census scans product code (comments stripped, string constants kept) for the eight V137 column names, so a consumer lane has to retire its arm deliberately. #3797's
get_query_store_clutter(4492479, merged 40 minutes after #3813) publishesquery_capture_mode = (string?)nullbesidecapture_mode_known = falseand a note saying the column lands with V137 — the payload KEY so a caller's shape is stable, never a value read from the store — andDarlingMcpInstructionsnames the key in the prose that tells an agent what the tool will say. Pointers, not readers: the V136 shape'sPgTargetToolRecommendationsexclusion.Why this shape. The two files are excluded from the eight-name scan, and the clutter tool is held POSITIVELY to its pointer state — the null placeholder present, no
wait_stats_capture_mode, and noSELECT … FROM [v_]query_store_healthspan of its namingquery_capture_mode— so the moment #3797's reader half lands the arm reds and is retired on purpose, which is what the census is for. Red-then-green on this Mac: the original pin reds against dev + #3797 namingDarlingMcpInstructions.cs; the edited pin passes 7/7.What this does NOT do
No product code. No other pin moves: a scan of
Lite.Testsfor literal schema-version equalities finds no other, and the V136 handoff pins inPgDatabaseSizeStatsAndHostMemoryRungTestsare green as merged (lane 32's positive-census reshaping and this lane's top-arm handoff landed in different regions of the same file within eight seconds and both survived).Tests
Executed on this Mac:
TimeHonestyRungReadTests5/5,TimeHonestyRungTests6/6,QsCaptureModeRungTests3/3,PerfmonCounterTypeTests17/17,WatermarkFrameReadTests3/3 (Lite);QsCaptureModeRouteKnobToastRungTests7/7 red-then-green,PgDatabaseSizeStatsAndHostMemoryRungTests6/6,RepoFileAdoptionTests2/2 (Darling). The V137 lane ran the siblingTimeHonestyRungTestsclass by name and not this WPF-hosted one; the full Lite sweep had (1) and was not read before push — stated so the census habit is the lesson, not the pin.Fixes the dev red left by #3813 (partial #3796, partial #3712, partial #3783).