You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: source/d4050-failure-modes.md
+11-5Lines changed: 11 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,7 +37,7 @@ The chair walks into a session with a paper, a room full of people, and a time s
37
37
38
38
A decision that sets aside years of work gets the same process as a decision to add `[[nodiscard]]` to a function. The consequence varies by orders of magnitude. The process does not scale. The chair has no tools to scale it.
39
39
40
-
The executor and networking arc is the case study. Over a decade, four locally reasonable decisions - each made by experienced practitioners under real constraints - produced twenty-one years without networking in the C++ standard. The failure modes extracted from that arc are general. The proposals in this paper are tools for the chair.
40
+
The executor and networking arc is the case study. Over a decade, four locally reasonable decisions - each made by experienced practitioners under real constraints - produced twenty-one years without networking in the C++ standard, counting from [N1925](https://wg21.link/n1925)<sup>[15]</sup> (2005). The failure modes extracted from that arc are general. The proposals in this paper are tools for the chair.
41
41
42
42
---
43
43
@@ -59,7 +59,7 @@ Five retrospective papers ([P4094R0](https://wg21.link/p4094r0)<sup>[1]</sup>, [
59
59
60
60
**A2. Assertions supported by hypothetical code only.** Six rationale assertions for unification were supported by one hypothetical code snippet as the only code-level evidence in the entire published record. *Source:*[P4094R0](https://wg21.link/p4094r0)<sup>[1]</sup> Section 4.
61
61
62
-
**A3. Consensus poll on a claim without domain-specific evidence.** The October 2021 poll "including networking" achieved consensus. At the time, the published record contained no sender-based networking deployment, no prototype, and one hypothetical example. Published voter comments included "can't judge its suitability for networking" from voters who voted Weakly Favor. [P2430R0](https://wg21.link/p2430r0)<sup>[11]</sup>, documenting that compound I/O results cannot use `set_error` without information loss, was published two months before the poll. *Source:*[P4097R0](https://wg21.link/p4097r0)<sup>[4]</sup> Sections 2-3.
62
+
**A3. Consensus poll on a claim without domain-specific evidence.** The October 2021 poll "including networking" achieved consensus ([P2453R0](https://wg21.link/p2453r0)<sup>[25]</sup>). At the time, the published record contained no sender-based networking deployment, no prototype, and one hypothetical example. Published voter comments included "can't judge its suitability for networking" from voters who voted Weakly Favor. [P2430R0](https://wg21.link/p2430r0)<sup>[11]</sup>, documenting that compound I/O results cannot use `set_error` without information loss, was published two months before the poll. *Source:*[P4097R0](https://wg21.link/p4097r0)<sup>[4]</sup> Sections 2-3.
63
63
64
64
**A4. Predictions without follow-up.**[P2464R0](https://wg21.link/p2464r0)<sup>[12]</sup> stated "I don't know" whether Networking TS compositions scale. Five years later, no sender-based networking has shipped either. The constraint applied to one model was not applied symmetrically to the replacement. *Source:*[P4096R0](https://wg21.link/p4096r0)<sup>[3]</sup> Section 9.1.
65
65
@@ -79,7 +79,7 @@ Five retrospective papers ([P4094R0](https://wg21.link/p4094r0)<sup>[1]</sup>, [
79
79
80
80
**D1. Pivotal analysis under one framing only.**[P1525R0](https://wg21.link/p1525r0)<sup>[16]</sup> identified four deficiencies in `execute(F&&)`. The analysis was under the work framing only. Under the continuation framing, three deficiencies do not arise and the fourth addresses a different question. *Source:*[P4095R0](https://wg21.link/p4095r0)<sup>[2]</sup> Section 4.
81
81
82
-
**D2. Pivoting without evaluating cost to the blocked domain.** The Cologne pivot (July 2019) eliminated all interface-changing properties. No paper at Cologne analyzed the diagnosis under the continuation framing. No paper asked what networking loses. *Source:*[P4095R0](https://wg21.link/p4095r0)<sup>[2]</sup> Section 5.2.
82
+
**D2. Pivoting without evaluating cost to the blocked domain.** The Cologne pivot (July 2019), driven by [P1658R0](https://wg21.link/p1658r0)<sup>[17]</sup> and [P1660R0](https://wg21.link/p1660r0)<sup>[18]</sup>, eliminated all interface-changing properties. No paper at Cologne analyzed the diagnosis under the continuation framing. No paper asked what networking loses. *Source:*[P4095R0](https://wg21.link/p4095r0)<sup>[2]</sup> Section 5.2.
83
83
84
84
**D3. Absence of the blocked domain's use cases from the pivotal analysis.**[P1525R0](https://wg21.link/p1525r0)<sup>[16]</sup>'s examples are thread pools, deadline executors, GPU contexts, and `when_all`. No example involves an I/O reactor or sockets. *Source:*[P4095R0](https://wg21.link/p4095r0)<sup>[2]</sup> Section 3.3.
85
85
@@ -141,11 +141,13 @@ The documentation requirement must scale with the consequence. Scaling requires
141
141
| Reversibility | Can the decision be undone in a future standard? | Irreversible decisions need more scrutiny |
142
142
| Domain breadth | Number of distinct domains affected | More domains = more stakeholders to consult |
143
143
144
+
These criteria combine into four tiers, each with its own documentation requirement.
145
+
144
146
| Tier | Name | Criteria | Required artifacts | Example |
| 1 | Routine | One paper, no deployed code, reversible, single domain | The paper itself | Adding `[[nodiscard]]` to a function |
147
149
| 2 | Significant | Multiple papers or one deployed codebase, single domain | Stakeholder brief + evidence summary + reflector discussion | Adopting a new library feature with deployment history |
148
-
| 3 | Major | Years of prior work, multiple deployed codebases, or multiple domains; partially reversible | Full artifact set (5.3); domain coverage report (Section 6) | Adopting `std::execution` for C++26 |
150
+
| 3 | Major | Years of prior work, multiple deployed codebases, or multiple domains; partially reversible | Full artifact set (5.3); domain coverage report (Section 6) | Adopting `std::execution` for C++26 ([N4985](https://wg21.link/n4985)<sup>[27]</sup>)|
149
151
| 4 | Structural | Sets aside or replaces years of prior work; multiple domains; effectively irreversible | Full artifact set + mandatory stakeholder presence or written position + decision rationale + follow-up criteria with revisit date | Setting aside the Networking TS; the Cologne pivot |
150
152
151
153
Four design choices keep the sizing system from becoming a political instrument.
@@ -167,6 +169,8 @@ By the time the meeting starts, the chair already knows the decision's size, the
167
169
168
170
### 5.3 The Missing Artifacts
169
171
172
+
**F1. Missing artifacts disproportionate to the decision.** A Tier 4 decision proceeds with the same documentation as a Tier 1 decision. The artifacts that would have surfaced objections, alternatives, or gaps in evidence do not exist because nobody was required to produce them.
173
+
170
174
Eight artifacts WG21 does not systematically produce. The table maps each artifact to the tier at which it becomes required.
171
175
172
176
| Artifact | What it contains | When produced | Who produces it | WG21 today | Required at tier |
@@ -197,7 +201,7 @@ Decision sizing: 13 years of prior work (Tier 4). 100+ papers in the chain (Tier
197
201
198
202
### 5.5 Hypothetical: Sofia Task Adoption (P3552R3)
199
203
200
-
Decision sizing: P3552R3 is new (Tier 1-2 on prior work). But it affects `std::execution` (years of prior work, Tier 3). Multiple domains (Tier 3). Partially reversible via NB comments (Tier 2-3). **Tier 3 by highest criterion.**
204
+
Decision sizing: [P3552R3](https://wg21.link/p3552r3)<sup>[28]</sup> is new (Tier 1-2 on prior work). But it affects `std::execution` (years of prior work, Tier 3). Multiple domains (Tier 3). Partially reversible via NB comments (Tier 2-3). **Tier 3 by highest criterion.**
201
205
202
206
Jonathan Müller's [P3801R0](https://wg21.link/p3801r0)<sup>[24]</sup> arrived after the Sofia vote. Under Tier 3 requirements, his concerns would have been a stakeholder brief before the vote. The 29 abstentions might have been fewer - people who abstained because they did not understand the issues would have had written briefs to read. The plenary vote passed 77-11. The record does not document why 29 members abstained.
203
207
@@ -419,3 +423,5 @@ The author thanks Christopher Kohlhoff for the executor model, [N3747](https://w
419
423
26.[P4100R0](https://wg21.link/p4100r0) - "The Network Endeavor: Coroutine-Native I/O for C++29" (Vinnie Falco, Steve Gerbino, Michael Vandeberg, Mungo Gill, Mohammad Nejati, 2026). https://wg21.link/p4100r0
420
424
421
425
27.[N4985](https://wg21.link/n4985) - "WG21 2024-06 St Louis Minutes of Meeting" (Nina Ranns, 2024). https://wg21.link/n4985
0 commit comments