diff --git a/Darling/Darling.Tests/CommandDeadlineScanner.cs b/Darling/Darling.Tests/CommandDeadlineScanner.cs index eddd4374fc..d0192a2f40 100644 --- a/Darling/Darling.Tests/CommandDeadlineScanner.cs +++ b/Darling/Darling.Tests/CommandDeadlineScanner.cs @@ -12,13 +12,19 @@ namespace Darling.Tests; /// -/// Decides whether the command constructed at a given offset had its deadline chosen on purpose (#2874). -/// Five command-timeout pins ask that question - .Storage, .Viewer, .Analysis, -/// PgFactCollector and the alert pass - and they used to ask it five identical ways. This is the one -/// implementation they share, the same treatment gave the five copies of the -/// source walk in #2913 and IlCallSiteScanner gave the five copies of the IL walk in #2898. The walk -/// copies had already drifted by the time they were consolidated, and only one of them carried the hardening -/// the others needed; a judgement duplicated five ways would drift the same way. +/// Decides whether the command constructed at a given offset had its deadline chosen on purpose +/// (#2874). Every *CommandTimeoutTests pin that asks that question asks it here; each used to carry +/// its own identical copy of the rule. This is the one implementation they share, the same treatment +/// gave the five copies of the source walk in #2913 and +/// IlCallSiteScanner gave the five copies of the IL walk in #2898. Those copies had already drifted +/// by the time they were consolidated, and only one of them carried the hardening the others needed; a +/// judgement duplicated once per pin would drift the same way. +/// +/// Which pins ask it here, and which deliberately do not, is asserted rather than listed. +/// re-derives the adopting set from the tree and declares +/// the abstainers beside it, so a pin that quietly stops calling this - and a new pin that arrives with its +/// own private copy of the rule - both fail the build. It is the authoritative roster, and it carries the +/// reason a roster in prose is not: a list here would have nothing checking it. /// /// The question is asked in two halves, because there are two places a deadline can legitimately be /// written and each has a different neighbour problem. An initializer belongs to the construction it is @@ -77,8 +83,9 @@ initializer was the only place a deadline could have been written. */ /// and sibling.CommandTimeout = 10; spends both counted statements on the sibling, and the outer /// command reads as timed. Every fixture in this family used to exercise that sibling through an object /// INITIALIZER, which has no leading dot and so never reached this regex - while the assignment spelling - /// it missed is the dominant one, 112 of the MCP surface's 119 sites. Found in review, not by the - /// fixtures. + /// it missed is the dominant one on the read surfaces these pins scan. That surface's census lives on + /// , not here, for the same reason the adopter roster does. Found + /// in review, not by the fixtures. /// private static Regex Assigns(string bound) => new( @"(? +/// adopters found the pins named at extraction time and no hint that others had joined. So the set is +/// written down once, here, and the build re-derives it from the tree. /// /// Both halves are declared, and the second is what earns this test. Listing the adopters /// catches a pin that quietly STOPS calling the scanner. Listing the abstainers catches the likelier case: