Skip to content

Commit bbe8fd5

Browse files
committed
Add redteam rule and paper updates
1 parent dbc672b commit bbe8fd5

File tree

8 files changed

+227
-126
lines changed

8 files changed

+227
-126
lines changed

.cursor/commands/redteam.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
description: Red-team a WG21 paper - report the single worst vulnerability
3+
---
4+
5+
Red-team `$ARGUMENTS` (or the currently open file if none specified).
6+
7+
## Setup
8+
9+
1. Read the target paper in full.
10+
2. Read `CLAUDE.md` in the repo root for style and tone rules.
11+
3. If the paper references source code via GitHub links, read the linked files to verify claims.
12+
4. If the paper quotes another WG21 paper by section number, verify the quote and section number are accurate when the source is accessible.
13+
14+
## Severity Taxonomy
15+
16+
- **CRITICAL** - Factually wrong. A spec reference that does not exist. A quote that is not exact. A code snippet that does not match the linked repo source. A causal logic break where step N does not follow from step N-1. A broken link. A citation number in the body that does not match the corresponding References entry. A cross-reference to a companion paper that states something the companion does not actually say.
17+
- **STRUCTURAL** - A competent hostile reader could use this to invalidate an entire section or the paper's core claim. An unstated assumption the argument depends on. An unaddressed counterargument that threatens the main thesis. A logical gap in the causal chain. An internal contradiction between two sections of the same paper.
18+
- **TONAL** - A sentence hotter than the paper's own disclosure promises. An implied accusation of bad faith. Words like "clearly" or "obviously" doing argumentative work the evidence has not earned. The attack instinct leaking through measured prose. A violation of CLAUDE.md tone rules 39 or 40.
19+
- **COSMETIC** - Awkward phrasing, slightly clunky transition, word choice that is fine but not perfect, minor style nit. **Below threshold. Never report cosmetic findings.**
20+
21+
## Procedure
22+
23+
1. Analyze the paper against all four severity levels.
24+
2. Report **ONLY the single highest-severity finding**. Format:
25+
26+
```
27+
**[SEVERITY]** Section X.Y / paragraph N / "quoted text..."
28+
29+
Problem: <one sentence>
30+
Fix: <one sentence>
31+
```
32+
33+
3. If multiple findings share the highest severity, report the one that is most damaging to the paper's credibility.
34+
4. If no CRITICAL, STRUCTURAL, or TONAL issues remain:
35+
36+
```
37+
**CLEAR** - paper is below threshold. Ship it.
38+
```
39+
40+
## Rules
41+
42+
- One finding per invocation. No lists. No "also consider." Just the single worst thing.
43+
- Do not suggest rewrites beyond the one-sentence fix direction.
44+
- Do not report cosmetic issues. Ever. They are below threshold.
45+
- Do not praise the paper. Do not summarize the paper. Just the finding or CLEAR.
46+
- Verify factual claims against linked sources when feasible rather than assuming correctness.

source/d4050-task-diversity.md

Lines changed: 63 additions & 59 deletions
Large diffs are not rendered by default.

source/d4053-net-comparison.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ This paper does not argue that the composition algebra is useless for networking
382382

383383
---
384384

385-
## 10. Qt Sender vs. Coroutine
385+
## 10. Qt Sender and Coroutine Side by Side
386386

387387
Ville Voutilainen's [libunifex-with-qt](https://git.qt.io/vivoutil/libunifex-with-qt)<sup>[16]</sup> contains a chunked HTTP downloader written as both a sender pipeline and a coroutine.
388388

@@ -474,7 +474,7 @@ capy::task<> timeout_a_worker()
474474
}
475475
```
476476

477-
Both models provide structured concurrency. In the sender model, the operation state protocol guarantees that child operation states are destroyed before the parent's receiver is called. In the coroutine model, `capy::when_all` and `capy::when_any` guarantee the same property through coroutine frame lifetimes: child coroutines complete and their frames are destroyed before the parent coroutine resumes. Stop tokens propagate through `io_env` at `await_suspend` time. The mechanism differs - operation state protocol vs. coroutine frame scoping - but the structured concurrency guarantees are equivalent: no child outlives its parent, cancellation propagates downward, and results are available only after all children complete. The sender `when_all` additionally provides compile-time work-graph visibility, static type checking of completion signatures, and heterogeneous child composition (GPU + network + timer in one expression) that the coroutine `when_all` does not.
477+
Both models provide structured concurrency. In the sender model, the operation state protocol - formalized by `async_scope` ([P3149R9](https://wg21.link/p3149r9)<sup>[6]</sup>) - guarantees that child operation states are destroyed before the parent's receiver is called. In the coroutine model, `capy::when_all` and `capy::when_any` guarantee the same property through coroutine frame lifetimes: child coroutines complete and their frames are destroyed before the parent coroutine resumes. Stop tokens propagate through `io_env` at `await_suspend` time. The mechanism differs - operation state protocol vs. coroutine frame scoping - but the structured concurrency guarantees are equivalent: no child outlives its parent, cancellation propagates downward, and results are available only after all children complete. The sender `when_all` additionally provides compile-time work-graph visibility, static type checking of completion signatures, and heterogeneous child composition (GPU + network + timer in one expression) that the coroutine `when_all` does not.
478478

479479
They differ in where the compound result is visible when the composition decision is made (Q8, Q10). The trade-off table (Section 9) applies at every I/O boundary inside a structured concurrency scope.
480480

@@ -627,4 +627,4 @@ Any person quoted in this paper who believes their words have been presented out
627627

628628
19. [D3980R0](https://wg21.link/d3980r0) - "Task's Allocator Use" (Dietmar K&uuml;hl, 2026). https://wg21.link/d3980r0
629629

630-
20. LEWG reflector (lib-ext), March 2026. Threads: "Complicated success at coroutine/sender composition boundaries" (http://lists.isocpp.org/lib-ext/2026/03/31375.php) and "std::execution - dynamically selecting a channel" (http://lists.isocpp.org/lib-ext/2026/03/31377.php).
630+
20. LEWG reflector (lib-ext), March 2026. Threads: "Complicated success at coroutine/sender composition boundaries" (http://lists.isocpp.org/lib-ext/2026/03/31375.php) and "std::execution - dynamically selecting a channel" (http://lists.isocpp.org/lib-ext/2026/03/31377.php). Compilable examples: Petersen's four sender implementations (https://godbolt.org/z/7W51hYE7c) and Voutilainen's channel ping-pong (https://godbolt.org/z/h5cv5fbTE).

0 commit comments

Comments
 (0)