Skip to content

Commit 4b65b33

Browse files
committed
docs: record the 2026-08-18 decisions (#2109, #2115, #2131, #2138, #2238, #2320)
Mint both CCF-021 and CCF-022: a cause spanning more than one namespace cannot be owned by any single namespace review, and 'the numbering is closed' was only ever scoped to namespace-local causes. XDG option B -- honour XDG_CONFIG_HOME and XDG_DATA_HOME when set and absolute, ignore a relative value per the spec. Full XDG declined because part of it has no .NET mapping and would cross from parity into invention. The second clause, whether a getter may verify or create directories, turns out not to be a user question at all: .NET answers it with SpecialFolderOption, so it is derivable. Lazy<T> PublicationOnly aligns with .NET. This REVERSES a deviation the class doc-comment has carried since the type was ported -- the factory may again run concurrently on several threads -- and that consequence was stated before the decision and accepted with it. Both inert JsonDocumentOptions flags become real, chosen over the cheaper option of making Validate() throw, because a switch that does nothing is worse than a switch that does not exist. TcpClient/UdpClient reject an IPv6 endpoint loudly now; dual-stack gets its own ticket.
1 parent aaa2bc2 commit 4b65b33

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

docs/StandingApprovals.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,40 @@ stay declined.
262262

263263
---
264264

265+
## 4h. SA-11 — five decisions taken on 2026-08-18
266+
267+
Not standing approvals but recorded here because each settles a ticket that repository evidence
268+
could not, and each must survive a context reset.
269+
270+
| Ticket | Question | Decision |
271+
|---|---|---|
272+
| **#2109 / #2131** | mint CCF-021 and CCF-022? | **mint both** — a cause spanning more than one namespace cannot be owned by any single namespace review, and "the numbering is closed" was only ever scoped to namespace-local causes |
273+
| **#2320** | should POSIX `GetFolderPath` follow XDG? | **option B** — honour `XDG_CONFIG_HOME` / `XDG_DATA_HOME` when set **and absolute**; a relative value is ignored per the spec. Full XDG declined: part of it has no .NET mapping, so it would cross from parity into invention |
274+
| **#2238** | may `Lazy<T>` `PublicationOnly` match .NET? | **yes** — factory outside the mutex, mutex only across publication, first writer wins |
275+
| **#2115** | two inert `JsonDocumentOptions` flags | **make both real** |
276+
| **#2138** | `TcpClient`/`UdpClient` are AF_INET only | **reject an IPv6 endpoint loudly now**; full dual-stack becomes its own ticket |
277+
278+
**Two of these have consequences that were stated before the decision and accepted with it, and
279+
must not be quietly softened later.**
280+
281+
*#2238 reverses a documented deviation.* This port's `PublicationOnly` has serialised the factory
282+
since the type was ported, and the class doc-comment says so. After the repair a factory may again
283+
run **concurrently on several threads** — which is what `PublicationOnly` means in .NET. The
284+
doc-comment is to be rewritten rather than amended, and the migration note must say plainly that a
285+
factory previously guaranteed to run once may now run several times.
286+
287+
*#2115 was chosen over a cheaper honest option.* `nlohmann/json` supports neither trailing commas
288+
nor duplicate-key detection natively, so the two flags are not equally cheap. The alternative
289+
offered was to make `Validate()` throw `NotSupportedException` for whichever could not be
290+
implemented. The answer was to implement both, because a switch that does nothing is worse than a
291+
switch that does not exist.
292+
293+
**#2320's second clause is not a user question after all.** Whether a getter may verify or create
294+
directories is answered by .NET itself — `SpecialFolderOption.Create` / `DoNotVerify` — so it is
295+
derivable under SA-5 and will be taken from the reference rather than asked.
296+
297+
---
298+
265299
## 4d. SA-7 — the `NotifyFilters` → inotify mapping (ticket #2346)
266300

267301
> Answer the five priced questions of `docs/SystemIONamespaceReviewPlan.md` §21.11 as

plan.sqlite3

4 KB
Binary file not shown.

0 commit comments

Comments
 (0)