Commit 66f27f1
committed
docs: reconcile rule 8 with the System::Linq surface, and correct a claim the header could not support
Both queues empty, so this turn audited the mechanically checkable rules in
CLAUDE.md. Three came back clean and one exposed an apparent contradiction.
CLEAN: rule 4 (SPDX) -- 1,273 production files, 0 missing. Rule 6 (C++17 nested
namespace form) -- 0 old-form sites. And the porting checklist's "no bare
NotImplementedException stub" -- 6 production throw sites, every one carrying an
explanatory comment. (A looser first count said 9; the extra three are
doc-comments saying @throws, not code.)
THE CONTRADICTION: rule 8 read "No LINQ. Use std::ranges in ported code
instead", unqualified -- while modules/core/include/System/Linq.hpp is a
508-line System::Linq with Where, Select, FirstOrDefault and ~17 more. Read
alone, the rule says the tree violates it.
It does not: the rule governs code THIS project writes, and the header is a
compatibility surface for ported C#/XNA call sites. That reconciliation existed
only in the header, so it is now in CLAUDE.md too, where it is loaded every
session.
AND THE HEADER'S OWN JUSTIFICATION WAS TOO STRONG. It said the class "exists
only to support already-ported C#/XNA call sites that use these operators",
which implies such sites exist. Measured with a strict search for
`System::Linq::`: ZERO uses in this repository's production code, ZERO in cna,
ZERO in mobile-eggbert. Its only users are its own two test files. A first,
looser grep suggested four production sites; all four were Xml::Linq, a
different namespace.
So it is a capability offered IN ADVANCE of a caller rather than a response to
one. Both the header and rule 8 now say that, and both record that removing it
would be a public-surface decision rather than a cleanup -- which is why this
change corrects the wording and touches no code.
Comment and documentation only; the full build is clean and the gate is
unaffected at 17,585.1 parent 67ae1dd commit 66f27f1
2 files changed
Lines changed: 28 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
22 | 31 | | |
23 | 32 | | |
24 | 33 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
35 | | - | |
36 | | - | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
37 | 52 | | |
38 | 53 | | |
39 | 54 | | |
| |||
0 commit comments