Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
399 commits
Select commit Hold shift + click to select a range
e9b56f7
WEB: Memory Grants, Resource Semaphore, Plan Corrections and the Quer…
erikdarlingdata Oct 4, 2026
d06b31c
Daily Query Store summary for get_query_store_top's long windows: the…
erikdarlingdata Oct 5, 2026
c088f2e
Add a Manage Tags page to the web dashboard (#5085) (#5138)
erikdarlingdata Oct 5, 2026
444b6ff
get_read_latency fits its rows to the MCP response budget (#5135) (#5…
erikdarlingdata Oct 5, 2026
ca571ce
MCP: Darling's four data-start twins, and Lite's config change, colle…
erikdarlingdata Oct 5, 2026
53b6df7
Web grids: column groups with a toggle strip, first used on Memory Co…
erikdarlingdata Oct 5, 2026
7334986
The web Alert History page gains Dismiss Selected and Dismiss All (#5…
erikdarlingdata Oct 5, 2026
3d43991
Web: cross-server Job History page, plus a Job History grid on the Ac…
erikdarlingdata Oct 5, 2026
691e642
The web dashboard shows a query's stored plan XML from Top Queries, H…
erikdarlingdata Oct 5, 2026
c6e98d4
PostgreSQL plans are grouped by their shape, so estimate drift no lon…
erikdarlingdata Oct 5, 2026
8e23e8c
Record the target session id on SQL Server collector runs (#5132) (#5…
erikdarlingdata Oct 5, 2026
3391774
Web Blocking tab: desktop columns on the Blocking grid, and Save XML …
erikdarlingdata Oct 5, 2026
61fde61
Web Perfmon: multi-select counter picker over a multi-series trend ch…
erikdarlingdata Oct 5, 2026
ee5be97
WEB: the PostgreSQL tabs' window aggregates and trend grids say where…
erikdarlingdata Oct 5, 2026
a01aa51
Web line charts get a menu: copy/save image, export CSV, show data so…
erikdarlingdata Oct 5, 2026
9b90949
get_server_trend: latch, spinlock, session stats and collector durati…
erikdarlingdata Oct 5, 2026
965ebb0
Web Top Queries: the desktop grid's 45 columns, grouped, with a detai…
erikdarlingdata Oct 5, 2026
b12cc97
get_query_store_top answers long windows from the daily summary, and …
erikdarlingdata Oct 5, 2026
586eafe
query_stats can fetch plan XML in a second target query for only the …
erikdarlingdata Oct 5, 2026
c31322a
Web CPU and Memory tabs chart the CPU scheduler, memory clerk and pla…
erikdarlingdata Oct 5, 2026
a931830
Web grids: per-column filters that survive the repaint and shape Copy…
erikdarlingdata Oct 5, 2026
1e5f9bd
MCP: Darling's config change, collection log, plan correction and mem…
erikdarlingdata Oct 5, 2026
85a522f
LITE AND DESKTOP: the blocking charts' data-start note follows the bl…
erikdarlingdata Oct 5, 2026
5742ffa
Record slow reads with their arguments, source and statement times (#…
erikdarlingdata Oct 5, 2026
e24bcd6
Web Top Procedures: the desktop grid's columns, grouped, with a detai…
erikdarlingdata Oct 5, 2026
71ffaf4
MCP: Darling's blocking, deadlock and long query tools say where thei…
erikdarlingdata Oct 5, 2026
c09e7d7
Custom Views: the recent-window route resolves module names from the …
erikdarlingdata Oct 5, 2026
2986e23
PayloadDimensionLiveTests: the dimension GC test arranges its own cov…
erikdarlingdata Oct 5, 2026
ff75106
Web server page: column groups for Query Store Regressions, Long Quer…
erikdarlingdata Oct 5, 2026
d24bf85
WEB: favourites, acknowledged alert badges, severity colours and a co…
erikdarlingdata Oct 5, 2026
5c859ea
get_server_trend: tempdb file I/O, tempdb size and file I/O throughpu…
erikdarlingdata Oct 5, 2026
3a242a0
MCP: Lite's system-health, default trace, wait stats and blocking sta…
erikdarlingdata Oct 5, 2026
c4b19a7
LITE AND DESKTOP: the blocking charts' data-start note starts where t…
erikdarlingdata Oct 5, 2026
07d5f16
Web Wait Stats and Activity tabs chart the latch, spinlock and sessio…
erikdarlingdata Oct 5, 2026
3ec7213
Web: File I/O tab charts write latency beside read latency, and the V…
erikdarlingdata Oct 5, 2026
6edfa22
Web grids: the composed-panel, alert-rule test and Fleet Sweeps table…
erikdarlingdata Oct 5, 2026
c690e7c
MCP: Darling's system-health, default trace, wait, latch and spinlock…
erikdarlingdata Oct 5, 2026
28f3378
WEB: the PostgreSQL stat tiles say where their data starts (part of #…
erikdarlingdata Oct 5, 2026
1acb3d7
procedure_stats: the deferred plan fetch, collector half, inert (#515…
erikdarlingdata Oct 5, 2026
be0acec
Tests: the system-health and default-trace window-notice tests get th…
erikdarlingdata Oct 5, 2026
d9b4713
DARLING: the store keeps an hourly history of its own pg_stat_stateme…
erikdarlingdata Oct 5, 2026
ec03d8a
CI: per-test Lite timings as an artifact, and temporary cap guards wh…
erikdarlingdata Oct 5, 2026
7aca883
Web: the event grids' data-start note uses the earliest event shown (…
erikdarlingdata Oct 5, 2026
912ac18
MCP: Darling's blocking stats and PostgreSQL deadlock and log event t…
erikdarlingdata Oct 5, 2026
a923f67
The store accepts a known plan digest for a row and keeps that plan a…
erikdarlingdata Oct 5, 2026
2425350
query_stats fetches plan XML only for plans this host hasn't stored, …
erikdarlingdata Oct 5, 2026
7eee1aa
Lite.Tests: seed the slowest stores in one transaction instead of one…
erikdarlingdata Oct 5, 2026
a1c7fdc
Add POST /api/servers: web server onboarding on the viewer role (#484…
erikdarlingdata Oct 5, 2026
c271cd1
MCP: seventeen Darling PostgreSQL tools say where their data starts, …
erikdarlingdata Oct 5, 2026
7353b93
Web: Silence This Server / Unsilence on the fleet page (#5221)
erikdarlingdata Oct 5, 2026
d1b2688
Web sidebar: search servers by name or tag, and optionally group them…
erikdarlingdata Oct 5, 2026
c08f621
Web grid: filter a column by number, text operator or empty cell (#5255)
erikdarlingdata Oct 5, 2026
388f686
Tests: no test may pass by returning from a catch block (#5254)
erikdarlingdata Oct 5, 2026
5fbab33
MCP: get_store_query_history reads the Darling store's hourly stateme…
erikdarlingdata Oct 5, 2026
e027663
Web: the system-health, Blocking, Deadlocks and PostgreSQL event pane…
erikdarlingdata Oct 5, 2026
94aa5e7
Lite.Tests: seed the #4966 window-notice classes in one transaction p…
erikdarlingdata Oct 5, 2026
7366b66
Web FinOps storage growth: choose 7, 30 or 90 days (#5237) (#5264)
erikdarlingdata Oct 5, 2026
c02fdbb
Free the server-add slot before the answer, so an immediate second ad…
erikdarlingdata Oct 5, 2026
92dd16f
Read Query Store plans through the plan map in analyze_query_store_pl…
erikdarlingdata Oct 5, 2026
22d8537
Web: open a captured PostgreSQL plan's JSON from the Captured Plans g…
erikdarlingdata Oct 5, 2026
785c433
MCP: quiet and all-clear messages no longer contradict a cut window (…
erikdarlingdata Oct 5, 2026
7b0c19e
Web charts: hide, show and isolate a series from the legend (#5265)
erikdarlingdata Oct 5, 2026
b403b7a
Web Collection Health: click a collector to see its run history (#522…
erikdarlingdata Oct 5, 2026
bf773ed
Remove two agent-bus files committed by accident, and guard against i…
erikdarlingdata Oct 5, 2026
a15ca6c
Web Manage Servers grid: show disabled servers, auth mode, monthly co…
erikdarlingdata Oct 5, 2026
3f37a65
Web Alert History: show an alert's advice and fix script, as the desk…
erikdarlingdata Oct 5, 2026
b8fe3d1
Add a --diagnostics-bundle verb that writes one aliased, attachable d…
erikdarlingdata Oct 5, 2026
46f4465
Stall probe: an idle wait (sp_server_diagnostics, the availability-gr…
erikdarlingdata Oct 5, 2026
1b56cf3
MCP: edit_server changes a monitored server's settings in place, keep…
erikdarlingdata Oct 5, 2026
a37aa25
Darling web: draw the deadlock graph in the Blocking tab's Deadlock G…
erikdarlingdata Oct 5, 2026
c1679bc
Bump the nuget-patch-and-minor group with 1 update (#5219)
dependabot[bot] Oct 5, 2026
f4abd3a
Add plan buttons to the web's Active Queries, Query Store and Top Pro…
erikdarlingdata Oct 5, 2026
e19984d
MCP: stop calling a cut window quiet on eight more PostgreSQL empty a…
erikdarlingdata Oct 5, 2026
2345e73
Web Job History: say when SQL Agent is stopped (#5242) (#5278)
erikdarlingdata Oct 5, 2026
49bc17b
procedure_stats: wire the deferred plan fetch, with a shadow mode tha…
erikdarlingdata Oct 5, 2026
843218d
get_collection_health and the web PG Overview list collectors that ar…
erikdarlingdata Oct 5, 2026
1a83b41
lane-orders: the PostgreSQL rig recipe also creates the darling datab…
erikdarlingdata Oct 5, 2026
4e32d90
Web charts: show the queries, blocking or deadlocks at the clicked ti…
erikdarlingdata Oct 5, 2026
b63cb97
Balance the Lite test shards by recorded test time instead of class-n…
erikdarlingdata Oct 5, 2026
9a089ff
Darling store: an hourly row-count ledger for query_stats (V164) (par…
erikdarlingdata Oct 5, 2026
e322400
Custom Views: the query_stats count guard reads the hour ledger (part…
erikdarlingdata Oct 5, 2026
cd34499
Diagnostics bundle: the store statement history is now the ranked ans…
erikdarlingdata Oct 6, 2026
d845b16
CI: retry the Lite timing-source lookup when the API returns a stale …
erikdarlingdata Oct 6, 2026
c0c6287
Web test harnesses copy the whole js tree instead of hand-kept module…
erikdarlingdata Oct 6, 2026
c29e750
Web charts: a legend entry that drills keeps its keyboard drill besid…
erikdarlingdata Oct 6, 2026
cbcbfda
Lite's Query Store history window counts each interval once in Total …
erikdarlingdata Oct 6, 2026
edbeb2d
Web Index Analysis lists up to 500 rows and says when the list is cut…
erikdarlingdata Oct 6, 2026
aed4f0f
Tests: a fresh store ends up with every declared continuous aggregate…
erikdarlingdata Oct 6, 2026
e30c6f6
MCP can serve HTTPS, and both listeners take a list of allowed ranges…
erikdarlingdata Oct 6, 2026
12af2f4
Lite tests close every DuckDB database they open (#5321)
erikdarlingdata Oct 6, 2026
b2bbb14
Lite test shards weigh classes that run one at a time at full cost (#…
erikdarlingdata Oct 6, 2026
e2ae9d1
PostgreSQL targets: the six database-growth bars are recorded as meas…
erikdarlingdata Oct 6, 2026
32d14f0
The statement filter gets its XML and JSON walks, and the plan viewer…
erikdarlingdata Oct 6, 2026
d1283e7
Query Store grid: a History button shows a query's duration and CPU p…
erikdarlingdata Oct 6, 2026
d27eb46
Web Top Queries and Top Procedures rank by CPU, duration, reads or ex…
erikdarlingdata Oct 6, 2026
c9b924c
The statement filter has one definition and a .NET evaluation, and wi…
erikdarlingdata Oct 6, 2026
bb2e45a
The web viewer shows the queries that waited on a wait type (#5235) (…
erikdarlingdata Oct 6, 2026
f82222c
Lite shard pack: re-fit the wall model's concurrency to 3.56 (#5208) …
erikdarlingdata Oct 6, 2026
dfc3fe5
Web API: edit a monitored server in place (PATCH /api/servers/{id}) (…
erikdarlingdata Oct 6, 2026
2c60dca
The web's Blocking and Deadlocks grids open each row's stored plans (…
erikdarlingdata Oct 6, 2026
5f12538
Web plan panel gets a Repro script button, backed by a store-only get…
erikdarlingdata Oct 6, 2026
cc44dd0
Web: pick several databases per server, part 1 (#5245) (#5314)
erikdarlingdata Oct 6, 2026
34b9eff
Darling's MCP tool answers go through the statement filter, and the c…
erikdarlingdata Oct 6, 2026
b03bf9f
Web Admin: edit a configured server from the Servers grid, with stale…
erikdarlingdata Oct 6, 2026
9cf3865
The Darling viewer's Overview gets Lite's server name / tag search (#…
erikdarlingdata Oct 6, 2026
a96d2d3
Server add and edit from the web and MCP take the password itself (#5…
erikdarlingdata Oct 6, 2026
af5a681
Alerts run SQL Server statement text through the statement filter (#5…
erikdarlingdata Oct 6, 2026
71e66d9
The web Locking page filters by database, shades its wait columns and…
erikdarlingdata Oct 6, 2026
2fe6779
Plan reuse shadow mode counts a false hit only when the plan's shape …
erikdarlingdata Oct 6, 2026
e986f6d
Lite archive watermark reads run once per table and share a two-wide …
erikdarlingdata Oct 6, 2026
c2ac8ab
The statement filter judges a typed variable declaration with an init…
erikdarlingdata Oct 6, 2026
5698421
Lite tab switches, timer refreshes and time-range changes now share o…
erikdarlingdata Oct 6, 2026
da37fd4
Lite's CHECKPOINT waits a bounded time for the lock, and a no-op arch…
erikdarlingdata Oct 6, 2026
8a9c39f
A denied Extended Events session setup shows as a permission state an…
erikdarlingdata Oct 6, 2026
3b54930
Darling: a sealed password format bound to a server's connection sett…
erikdarlingdata Oct 6, 2026
9e9d09a
Darling: the service keeps a password key file beside its other crede…
erikdarlingdata Oct 6, 2026
6c48240
Lite compaction merges only what changes and what fits the free disk …
erikdarlingdata Oct 6, 2026
29edb62
Blocking and waits reads follow the database filter (#5244) (#5392)
erikdarlingdata Oct 6, 2026
cfb1b4a
The store takes a server's password itself from the viewer, admin and…
erikdarlingdata Oct 6, 2026
f9daf4e
Lite's Top Queries and procedure comparison stop scanning the whole a…
erikdarlingdata Oct 6, 2026
db659c3
Agent working orders: one issue keeps one branch and one PR (#5404)
erikdarlingdata Oct 6, 2026
337890c
The Darling installer refuses an install when the .NET Runtime 10 is …
erikdarlingdata Oct 6, 2026
2bc8500
Lite's MCP answers and plan reads go through the statement filter (#5…
erikdarlingdata Oct 6, 2026
c7e63b9
Darling's plan tools, web pages, bundle and drill-down run SQL Server…
erikdarlingdata Oct 6, 2026
0b3c288
A scripted --encrypt-password no longer writes to the error stream on…
erikdarlingdata Oct 6, 2026
9d17a93
Lite Query Store top queries, comparison and regressions read query_t…
erikdarlingdata Oct 6, 2026
78f617b
SQL Server statement text and plans go through the statement filter w…
erikdarlingdata Oct 6, 2026
873b42d
Lite's archive files get 2,048-row row groups, so a windowed read sto…
erikdarlingdata Oct 6, 2026
f778dd7
DarlingEncryptPasswordStreamTests awaits its tasks instead of blockin…
erikdarlingdata Oct 6, 2026
2eb6efc
Lite's Collection Health read finds the newest rows without four whol…
erikdarlingdata Oct 6, 2026
aa649b4
Darling: store SQL login passwords on Linux, sealed to the service's …
erikdarlingdata Oct 6, 2026
a72f8dd
The database filter reaches the duration trends, clutter, long-query …
erikdarlingdata Oct 6, 2026
c51cbbb
get_pg_io_trend no longer times out when table statistics are stale (…
erikdarlingdata Oct 6, 2026
ecf2cbf
The Darling service ships AWSSDK.SecurityToken so a role_arn AWS prof…
erikdarlingdata Oct 6, 2026
ae35fa4
Severe errors show the database name their id had at the time of the …
erikdarlingdata Oct 6, 2026
77c6676
Lite shard packer: add a back-test command and record the re-fit find…
erikdarlingdata Oct 6, 2026
f11fc93
The Darling viewer shows blank, not 0, for columns the hourly rollups…
erikdarlingdata Oct 6, 2026
845bbf6
The desktop database filter narrows file I/O, sizes, the version stor…
erikdarlingdata Oct 6, 2026
82678f5
The retired-baseline sweep reopens its connection after a drop loses …
erikdarlingdata Oct 6, 2026
79d59c1
Lite merges query_snapshots archive files into one file per day (#539…
erikdarlingdata Oct 6, 2026
d2777e1
The large plan read test survives a runner that stalls the statement …
erikdarlingdata Oct 6, 2026
433a63c
The Darling PostgreSQL tests run in six CI shards, so the slowest fin…
erikdarlingdata Oct 7, 2026
55f666f
The Darling viewer's procedure comparison, the two comparison twins a…
erikdarlingdata Oct 7, 2026
83ed50b
A store-object convergence step that breaks the store connection no l…
erikdarlingdata Oct 7, 2026
12e435b
At start, the Darling service raises one alert when it was not collec…
erikdarlingdata Oct 7, 2026
4711f7b
The first start after the schema 165 upgrade takes the legacy passwor…
erikdarlingdata Oct 7, 2026
fb215e4
PagerDuty: de-duplicate edge-type alerts into one incident (#5368)
ianwalkeruk Oct 7, 2026
0f92fa3
The Darling service pings a dead-man's-switch URL while it is collect…
erikdarlingdata Oct 7, 2026
ff2bd15
The database filter reaches the configuration, config change, severe …
erikdarlingdata Oct 7, 2026
29a7cd0
The database filter reaches the storage and file I/O reads (#5462)
erikdarlingdata Oct 7, 2026
e0bed32
A daily audit of retained hourly history raises one Collection Gaps I…
erikdarlingdata Oct 7, 2026
19dc906
Tighten the password pin step after the schema 165 upgrade (#5466)
erikdarlingdata Oct 7, 2026
d7a06b6
Tighten how Darling matches an RDS target to its AWS instance (#5465)
erikdarlingdata Oct 7, 2026
9c52fc7
Test clock helpers read the clock once per test (#5476)
erikdarlingdata Oct 7, 2026
468505a
A second PagerDuty recovery inside the alert cooldown now resolves th…
erikdarlingdata Oct 7, 2026
ca04a6a
Lite keeps query stats and Query Store stats in one archive file per …
erikdarlingdata Oct 7, 2026
c72f76e
Procedure stats keep every procedure that did work, with plans for at…
erikdarlingdata Oct 7, 2026
8301aee
The statement filter judges each document once and its budget grows w…
erikdarlingdata Oct 7, 2026
483bb7d
Four Darling live tests wait for the state they assert (#5480)
erikdarlingdata Oct 7, 2026
53f6417
PLAN_REGRESSION reads per-day totals for closed days instead of re-re…
erikdarlingdata Oct 7, 2026
65bfa7d
Keep logical reads in hourly rollups so long Top Queries and Top Proc…
erikdarlingdata Oct 7, 2026
4a2519b
A guard miss fails the pull request in about 6 minutes and skips ever…
erikdarlingdata Oct 7, 2026
4d3f998
Darling's memory launch guard releases after a garbage collection, re…
erikdarlingdata Oct 7, 2026
d69597a
An RDS or Aurora target can name the AWS role Darling assumes for it …
erikdarlingdata Oct 7, 2026
9db3616
The CI shards reuse the Guard tests job's build instead of building t…
erikdarlingdata Oct 7, 2026
a45d32a
Large alerts and MCP and web reads in the first seconds after a start…
erikdarlingdata Oct 7, 2026
30f79eb
The Query Store backfill stops retrying databases that were dropped f…
erikdarlingdata Oct 7, 2026
5b599a4
Lite.Tests records per-test CPU time beside wall time (#5208) (#5487)
erikdarlingdata Oct 7, 2026
6be263e
The #5448 late-row live test passes from 00:00 to 04:00 UTC (#5494)
erikdarlingdata Oct 8, 2026
5c6edf9
"Collection Stopped" alerts once per outage instead of once per coold…
erikdarlingdata Oct 8, 2026
93f11a1
procedure_stats fetches plans only for plans the host has not stored,…
erikdarlingdata Oct 8, 2026
e1bf396
Azure SQL Database sizes cover every database, and a firewall block n…
erikdarlingdata Oct 8, 2026
e04394f
One selection script for the test jobs, with a failure-corpus replay …
erikdarlingdata Oct 8, 2026
25f68ae
Tests that read the clock twice now read it once (#5496) (#5499)
erikdarlingdata Oct 8, 2026
feedb8f
Lasting-state self-alerts send one alert per occurrence, not one per …
erikdarlingdata Oct 8, 2026
85e42bf
Flaky test classes: the statement filter tests no longer depend on th…
erikdarlingdata Oct 8, 2026
8c19292
Lite FinOps: first visit loads real data, and the advice only claims …
erikdarlingdata Oct 8, 2026
b127d54
Lite-only pull requests run the Darling classes that read Lite files,…
erikdarlingdata Oct 8, 2026
5ee4494
Lane orders no longer tell lanes to add attribution trailers (#5535)
erikdarlingdata Oct 8, 2026
d2fa9fe
A manual-only nightly job probes AltCover per-test coverage for the t…
erikdarlingdata Oct 8, 2026
5a5f16a
A managed store near a free-disk step no longer reads stale after a h…
erikdarlingdata Oct 8, 2026
c79eba9
Test selection from a class-to-file map: selection code and Darling t…
erikdarlingdata Oct 8, 2026
db86ea4
Wait Stats spinlock read at 7 days no longer sorts every row of the w…
erikdarlingdata Oct 8, 2026
a9425be
Nightly builds a class-to-file test map from the whole Darling and Li…
erikdarlingdata Oct 8, 2026
f98ab41
Stale servers read as stale, Collection Stopped counts from the last …
erikdarlingdata Oct 8, 2026
2186662
Query Store backfill keeps each server's database list instead of re-…
erikdarlingdata Oct 8, 2026
818aa81
README catches up with everything since v3.9.0 (release checklist ste…
erikdarlingdata Oct 8, 2026
d80ca90
Pull requests skip 27 slow, never-failed test classes unless the chan…
erikdarlingdata Oct 8, 2026
ccd1748
Plan regression day builds get a background index, and the Query Stor…
erikdarlingdata Oct 8, 2026
57cf7a4
Azure SQL Database Query Store collection stops reading each database…
erikdarlingdata Oct 8, 2026
ca46dad
Analysis reads the newest file I/O and perfmon rows without scanning …
erikdarlingdata Oct 8, 2026
2454fbb
Store self-metrics take the dimension row count from the planner esti…
erikdarlingdata Oct 8, 2026
95269b7
Query Store wide-table reads bound first_execution_time at the window…
erikdarlingdata Oct 8, 2026
5a63edd
A managed store near a WAL size step no longer rewrites its settings …
erikdarlingdata Oct 8, 2026
ec705d8
Release checklist: Azure SQL Database skips and the forced firewall o…
erikdarlingdata Oct 8, 2026
5ea0397
The start-up check for gaps in the rollups finds a missing day with a…
erikdarlingdata Oct 8, 2026
25983b8
The Fleet page and the fleet overview total PostgreSQL deadlocks with…
erikdarlingdata Oct 8, 2026
e8d151f
The module map refresh at service start and in the daily sweep reads …
erikdarlingdata Oct 8, 2026
750b09c
Custom Views and custom alert rules scope server reads by server_id, …
erikdarlingdata Oct 8, 2026
b532e34
Query Store reads on the stored interval tables no longer miss an int…
erikdarlingdata Oct 8, 2026
2d6991f
A quiet server's job history and default trace watermark read tries t…
erikdarlingdata Oct 8, 2026
f029fbb
Shadow mode for the test-class map: a pinned map, the selection in th…
erikdarlingdata Oct 8, 2026
e954913
Release 3.10.0: version, changelog, archive (#5548)
erikdarlingdata Oct 8, 2026
d69d201
Darling tests: the nightly's PostgreSQL step no longer fails after ev…
erikdarlingdata Oct 8, 2026
b5bc69a
Release checks: small fixes from the final walk of Lite and the Darli…
erikdarlingdata Oct 8, 2026
4f68c38
Darling tests: a scratch database drop no longer hands its backend to…
erikdarlingdata Oct 8, 2026
d78f4a4
Lite's Job History reads only the selected time range, and tab loads …
erikdarlingdata Oct 8, 2026
ab92efc
The startup sweeps stop a continuous aggregate's jobs before they dro…
erikdarlingdata Oct 8, 2026
825bf41
Release 3.10.0: changelog entries for the last fixes (#5557)
erikdarlingdata Oct 8, 2026
1ac6a56
The 27 MB plan walk and 20 MB cut-walk timing pins judge the fastest …
erikdarlingdata Oct 8, 2026
0671d37
Darling Viewer: Top Queries, Top Procedures and Query Store tabs make…
erikdarlingdata Oct 8, 2026
845bf27
Lite and Darling WPF tests take one gate so parallel STA classes stop…
erikdarlingdata Oct 8, 2026
25cdf6a
Role provisioning runs one batch at a time, and the viewer-grant test…
erikdarlingdata Oct 8, 2026
34c7131
The Query Store interval tables' retention purge deletes in row-cappe…
erikdarlingdata Oct 8, 2026
dd02295
Recommendations skip databases that are a secondary copy on this node…
erikdarlingdata Oct 8, 2026
fd80b59
Release checks: fixes from the morning walk of Lite, the Darling View…
erikdarlingdata Oct 8, 2026
e161e5c
Release 3.10.0: changelog entries for the last gate fixes (#5576)
erikdarlingdata Oct 8, 2026
6852851
The module map refresh no longer holds back the collectors at start (…
erikdarlingdata Oct 8, 2026
f5844bc
The module map refresh groups procedure_stats before its DISTINCT ON …
erikdarlingdata Oct 8, 2026
92cdf50
Query Store interval tables are partitioned by day (#5573)
erikdarlingdata Oct 8, 2026
c1a0bc8
Column filters list a column's values to tick, like Excel, and stay s…
erikdarlingdata Oct 8, 2026
ca2a399
After a big retention drain, warm each server's Query Store floor rea…
erikdarlingdata Oct 8, 2026
25a9e0a
Web charts draw at the panel's real width, so axis text is not stretc…
erikdarlingdata Oct 8, 2026
5ee741f
Query Store interval tables stop cancelling their own autovacuum (#55…
erikdarlingdata Oct 8, 2026
1e0798d
Test processes no longer pay 0.3 s per WPF STA thread at exit, which …
erikdarlingdata Oct 8, 2026
a5e0a22
Collection Falling Behind no longer fires in the first hour after eve…
erikdarlingdata Oct 8, 2026
fdc9d94
A hung Darling or Lite test shard names its test and still uploads it…
erikdarlingdata Oct 8, 2026
4b50c1b
Time range picker: more presets, calendar periods and typed ranges (#…
erikdarlingdata Oct 9, 2026
e68ed63
Perfmon data is compressed per counter, so a one-counter trend reads …
erikdarlingdata Oct 9, 2026
0d7e76f
Tests stop sharing WPF threads, Postgres roles and runner CPU (#5604)
erikdarlingdata Oct 9, 2026
5ac86ba
A one-day Custom Views panel on Query Store data reads an hourly roll…
erikdarlingdata Oct 9, 2026
5465ec2
Live tests no longer fail when their seeded window crosses midnight U…
erikdarlingdata Oct 9, 2026
2d2f043
Query Store rollup: the build wait counts only writers of the wide ta…
erikdarlingdata Oct 9, 2026
b76725f
The retention drain gives way to collection, stops at a 30-minute bud…
erikdarlingdata Oct 9, 2026
a18bad0
The at-the-cap aggregate test no longer races TimescaleDB's scheduler…
erikdarlingdata Oct 9, 2026
95ef268
Test map: shared live-store fixtures are linked, keep-full counts onl…
erikdarlingdata Oct 9, 2026
d43a9f7
Release 3.10.0: changelog entries for the PRs merged after the third …
erikdarlingdata Oct 9, 2026
ec292d2
Slow Lite test classes stop queuing behind database schema builds (#5…
erikdarlingdata Oct 9, 2026
bff3c85
CI: a changelog splice takes the docs fast path (#5615)
erikdarlingdata Oct 9, 2026
0b5d6dd
MigrationLockHolderLogTests accepts the autovacuum query text the loc…
erikdarlingdata Oct 9, 2026
4d730bb
Darling live tests stop depending on PUBLIC's CONNECT on the shared t…
erikdarlingdata Oct 9, 2026
3142b29
Lite tests that re-initialize a store stop holding up the other tests…
erikdarlingdata Oct 9, 2026
18c8fac
Nightly: the Lite and Darling PostgreSQL tests run in PR CI's shards,…
erikdarlingdata Oct 9, 2026
2ab9e52
Nightly: every job checks out the commit the run was dispatched at (#…
erikdarlingdata Oct 9, 2026
d7a321e
Pull request CI runs only the test classes the test map picks (#5459)…
erikdarlingdata Oct 9, 2026
3954666
Darling's hourly deadlock maintenance reads stored findings and alert…
erikdarlingdata Oct 9, 2026
cd94c79
The pre-lock check trusts the install's own service SID and an existi…
erikdarlingdata Oct 9, 2026
c5e8af6
Darling's deadlock maintenance logs a line when a stage recovers afte…
erikdarlingdata Oct 9, 2026
24971b8
Darling web: response security headers; clearer consent text; connect…
erikdarlingdata Oct 9, 2026
0c3a5f7
Release 3.10.0: last changelog splice and README sync (#5635)
erikdarlingdata Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
40 changes: 30 additions & 10 deletions .claude/skills/lane-orders/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ disable-model-invocation: false

# Lane orders

One lane works one issue, or a few small related ones, in its own worktree. The coordinator reviews each PR, arms
auto-merge and splices the CHANGELOG. These orders apply alongside the user's token guardrails, which win on
One lane works one issue, or a few small related ones, in its own worktree. An issue too big for one lane still gets
ONE branch and ONE PR: its lanes share the issue branch (see "Worktree and branch"). The coordinator reviews each PR,
arms auto-merge and splices the CHANGELOG. These orders apply alongside the user's token guardrails, which win on
conflict.

**The coordinator fills these per wave, in every brief:**
- `<LANE>`, `<ISSUES>`, `<DEADLINE>`;
- `<RIG_PORT>`, `<RIG_DIR>`, `<PG_RUNTIME_ZIP>`;
- `<CHANGELOG_BUFFER_DIR>`;
- `<CO_AUTHOR_TRAILER>`, `<SESSION_URL>`.
- `<CHANGELOG_BUFFER_DIR>`.

If your brief leaves one unfilled, don't invent a value. Skip the step that needs it and say so in the PR body.
In wave E (2026-09-24), a lane whose brief left `<CHANGELOG_BUFFER_DIR>` unfilled wrote its changelog entry to a
Expand Down Expand Up @@ -54,6 +54,11 @@ At dispatch:
In wave B, every lane read an 8-10k-character PR section to see one example.
- Label each issue the lane takes `in-progress` (`gh issue edit <n> --add-label in-progress`), so the board shows
it as taken; remove the label when the issue closes or the work stops.
- Before dispatching several lanes for one issue, create its issue branch
(`git -C <repo> push origin origin/dev:refs/heads/fix/<issue>-<slug>`) and name it in every brief, with the lane
that writes the PR summary and the CHANGELOG entry. Open a separate PR only for a part that must ship before the
rest; an issue that is really several issues is split into issues first. Reviews of an issue PR built in waves: one
round per wave on that wave's commits only, plus one final round on the whole PR.

At each report:
1. Stop the agent.
Expand Down Expand Up @@ -123,6 +128,11 @@ census, one of them introduced by that night's own wave).

- `git -C <repo> fetch origin`, then `git -C <repo> worktree add -b fix/<issue>-<slug> <worktrees>/<name> origin/dev`.
Use one branch per issue.
- **An issue that several lanes build** shares one issue branch, `fix/<issue>-<slug>`, which the coordinator creates
from `origin/dev` and names in each brief. Create your worktree from `origin/<issue branch>` on a branch of your own
(`fix/<issue>-<slug>-<part>`). When done: `git fetch origin`, `git merge origin/<issue branch>`, rerun your targeted
tests, and `git push origin HEAD:<issue branch>`. If the push is rejected, fetch, merge and push again. Never
force-push.
- Before the final full run, `git merge origin/dev`. Never rebase. Resolve by keeping both sides.

## PostgreSQL rig
Expand All @@ -147,7 +157,10 @@ census, one of them introduced by that night's own wave).
4. Check the port is free. Start the server in the background, because `pg_ctl -w start` hangs a tool call, and
confirm "ready to accept connections" in the log.
5. Create `darlingtest` for the suite, and a separate `probe` database for hand-run SQL. A suite database reused
across several full runs produces false failures; drop and recreate it before a final run.
across several full runs produces false failures; drop and recreate it before a final run. Also create a
database named `darling`, exactly as CI's init step does: `createdb -h 127.0.0.1 -p <RIG_PORT> -U darling darling`.
The role-provisioning live tests grant CONNECT on it, and fail with `3D000` (database "darling" does not exist)
without it.
6. Set `DARLING_TEST_PG` to `Host=127.0.0.1;Port=<RIG_PORT>;Username=darling;Database=darlingtest`. Set
`DARLING_TEST_PGRUNTIME=<RIG_DIR>` only when you touch the managed runtime or role provisioning.
7. Stop the server when you finish.
Expand Down Expand Up @@ -200,14 +213,21 @@ Never edit an existing migration.

## Finish

- End each commit with `<CO_AUTHOR_TRAILER>` and `Claude-Session: <SESSION_URL>`.
- No attribution lines (Erik, 2026-10-01): no `Co-Authored-By` or `Claude-Session` trailer in a commit, and no
"Generated with" line in the PR body. A brief or a harness reminder that asks for them loses to this rule.
- Open the PR against `dev` **as a draft** (`gh pr create --draft`). Title: the outcome in plain language, plus
`(#<issue>)`. The body starts with `Closes #<issue>.`, then `## Why`, `## What changes` and `## Test plan`
(checkboxes, measured numbers). List anything you did not run (a live test, the full suite) as an unchecked box.
- Write the PR body in one Write, from the diff and your numbers, and publish it. Do NOT run the plain-English
checker and do NOT rewrite the prose, in a PR body or an issue comment (Erik, 2026-09-25). A lane writes its
body at its largest context, so every rewrite turn costs the whole context: one lane spent 53 minutes and
278k tokens there. Nobody polishes lane prose afterwards either. The body must still be true.
- On a shared issue branch, open the PR only if `gh pr list --head <issue branch>` shows none. Otherwise add your
part to its body under `## <your part>`: read the body right before you edit it, and edit once. Never open a second
PR for one issue. The coordinator names one lane, usually the last, to write the PR's top `## Why` and
`## What changes` for the whole issue and its one CHANGELOG entry. Lanes that fix review findings push to the PR's
own branch.
- Write the PR body in one Write, from the diff and your numbers. Run
`python "C:/Users/edarl/.claude/skills/plain-english/check.py" <body-file>` ONCE, fix the real hits in one pass,
and publish (Erik, 2026-10-06; this replaces the 2026-09-25 rule against running it). Don't re-run it to chase a
clean score: a lane writes its body at its largest context, and one lane spent 53 minutes and 278k tokens
rewriting. The body must be true.
- **Don't mark it ready, don't merge, and don't enable auto-merge.** The coordinator does all three after
verifying.
- A user-visible change gets a CHANGELOG entry in `<CHANGELOG_BUFFER_DIR>/<PR>-reported.txt`, in this form:
Expand Down
Loading
Loading