diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc index 471f0b67dc..e6b5b02dd8 100644 --- a/.markdownlint-cli2.jsonc +++ b/.markdownlint-cli2.jsonc @@ -132,6 +132,10 @@ // MD051: Link fragments should be valid "MD051": true, + // MD060: Table column style - disabled. Purely cosmetic pipe padding, added in + // markdownlint v0.41, that no existing table in the repository follows. + "MD060": false, + // proper-names: Enforce proper capitalization of names "proper-names": { "code_blocks": false, diff --git a/docs/RFCs/016-JUnit-Report.md b/docs/RFCs/016-JUnit-Report.md index 56c5cec2fb..deaa027158 100644 --- a/docs/RFCs/016-JUnit-Report.md +++ b/docs/RFCs/016-JUnit-Report.md @@ -158,7 +158,7 @@ Writing the stack trace alone would **not** be equivalent to Java's output: .NET The `message` and `type` attributes are still written, so consumers that read them directly are unaffected. The resulting duplication between the `message` attribute and the body is exactly what every Maven/Surefire report already exhibits, so consumers that render both have long handled it. -Each part degrades gracefully: a missing exception type drops the header prefix, a missing message drops the `: ` separator, and a missing stack trace yields a header-only body. +Each part degrades gracefully: a missing exception type drops the header prefix, a missing message drops the colon-space separator, and a missing stack trace yields a header-only body. ### The `type` attribute diff --git a/docs/RFCs/017-TestHost-Launcher.md b/docs/RFCs/017-TestHost-Launcher.md index 365388e739..549ed0d835 100644 --- a/docs/RFCs/017-TestHost-Launcher.md +++ b/docs/RFCs/017-TestHost-Launcher.md @@ -289,6 +289,7 @@ Loopback exemptions (`CheckNetIsolation LoopbackExempt`) are explicitly *not* pa apply to network loopback sockets, not to named-pipe DACLs, and would not help here. ### Contract requirements on the launcher + - The launched host **must** end up with the values in `context.EnvironmentVariables` (so it connects back on the controller pipe) and **must** receive `context.Arguments`. *How* those values reach the host is left to the launcher — they can be inherited from the environment, passed as activation diff --git a/docs/RFCs/020-Resource-Lock-Attribute.md b/docs/RFCs/020-Resource-Lock-Attribute.md index 18d92c167c..6b64c22ccb 100644 --- a/docs/RFCs/020-Resource-Lock-Attribute.md +++ b/docs/RFCs/020-Resource-Lock-Attribute.md @@ -256,7 +256,7 @@ it. With `Workers = 4`, four dequeued chunks contending on one exclusive key lea parked and the rest of the queue stalled — even though those queued chunks declare no locks and could otherwise run. So `[ResourceLock]` guarantees *correct mutual exclusion*, not that unrelated tests always keep running; heavy contention still reduces effective parallelism. Keep locked tests a -small fraction of the suite (see the speedup math under [Granularity guidance](#granularity-guidance)). +small fraction of the suite (see the speedup math under [Granularity guidance](#guidance-granularity)). Lock-aware dispatch — skipping over a chunk whose locks are unavailable and taking the next one — is [Future work](#future-work); it is deliberately not attempted in v1 because a naive version can livelock without a bounded retry policy. diff --git a/docs/RFCs/021-Per-Test-Temporary-Directory.md b/docs/RFCs/021-Per-Test-Temporary-Directory.md index 2afa15fab0..a6929c3309 100644 --- a/docs/RFCs/021-Per-Test-Temporary-Directory.md +++ b/docs/RFCs/021-Per-Test-Temporary-Directory.md @@ -283,10 +283,10 @@ contain characters illegal in paths and can be very long. Scheme: are cryptographically negligible — a full 128-bit GUID makes two contexts choosing the same suffix effectively impossible even at very large scales (millions of contexts). 5. **Create with collision retry**: attempt `Directory.CreateDirectory` for the candidate; if the - directory already exists, regenerate the suffix and retry a bounded number of times. `Directory.Exists` - + `CreateDirectory` is not an atomic exclusive create, so the retry is only a belt-and-braces - guard — the actual uniqueness guarantee comes from the 128-bit suffix, whose birthday-collision - probability is negligible, not from the pre-check. + directory already exists, regenerate the suffix and retry a bounded number of times. + `Directory.Exists` + `CreateDirectory` is not an atomic exclusive create, so the retry is only a + belt-and-braces guard — the actual uniqueness guarantee comes from the 128-bit suffix, whose + birthday-collision probability is negligible, not from the pre-check. If the test name is empty, whitespace-only, made up entirely of invalid characters, or the adaptive budget has collapsed to zero, the sanitized prefix is empty and the directory name is **just the