|
3 | 3 |
|
4 | 4 | # NEXT.md |
5 | 5 |
|
6 | | -> **ACTIVE — #2419, 2026-08-22: restore the warning-clean Clang production build.** An |
7 | | -> independent Clang 17 build found four bounded `-Werror` regressions after the GCC-only final |
8 | | -> gate: one potentially evaluated `typeid`, two unused compression constants and one unused |
9 | | -> WebSocket private field. The local reproducer is Clang 19.1.7. #2419 repairs those sites and |
10 | | -> adds a production-only Clang CI gate so ticket #37's GCC/Clang warning-policy invariant is |
11 | | -> measured continuously. The 364-row correctness audit remains fully dispositioned; maintenance |
12 | | -> mode is withheld only until this portability gate is green and the full supported gate is |
13 | | -> reverified. |
| 6 | +> **#2419 CLOSED — CLANG GATE GREEN, 2026-08-22.** An independent Clang 17 build found four |
| 7 | +> bounded `-Werror` regressions after the GCC-only final gate: one potentially evaluated `typeid`, |
| 8 | +> two unused compression constants and one unused WebSocket private field. They are repaired |
| 9 | +> without behavior changes. The permanent production-only gate builds **219/219** first-party |
| 10 | +> translation units with Clang 19.1.7 and `-Werror`: **0 warnings, 0 errors**. Six contract tests |
| 11 | +> pin compiler selection, all-components/no-tests scope, `-Werror`, warning detection, the |
| 12 | +> two-job ceiling, missing-compiler failure and local/CI wiring. |
14 | 13 | > |
15 | 14 | > **Test-count floor, 2026-08-22 — 17,840 / 38, AND THE GATE IS GREEN.** The complete |
16 | 15 | > 38-executable gate reads **17,840 run: 17,840 passed, 0 failed, 0 skipped**, zero build warnings |
17 | | -> at `--parallel 2` over a cache-disabled full repository build. Graph **41 / 96**, seams **5 / 22**, |
18 | | -> negative fixtures **55 / 284**. |
| 16 | +> at `--parallel 2` over the GCC repository build. The same end-to-end local/CI gate now also |
| 17 | +> includes the fresh Clang production build above. Graph **41 / 96**, seams **5 / 22**, negative |
| 18 | +> fixtures **55 / 284**. |
19 | 19 | > |
20 | 20 | > **+59** on the 17,781 final-audit closure, all from #2418's post-`DateTimeKind` consumer audit: |
21 | 21 | > `Core_Base` 6,156 → 6,178, `Globalization` 704 → 705, `IO` 700 → 705, `Net` 340 → 346, |
|
53 | 53 | > |
54 | 54 | > --- |
55 | 55 | > |
56 | | -> ## MAINTENANCE-READY FOR THE DECLARED SCOPE — #2418 CLOSED |
| 56 | +> ## MAINTENANCE-READY FOR THE DECLARED SCOPE — #2419 CLOSED |
57 | 57 | > |
58 | | -> Measured 2026-08-22: `ticket` is **2,408 done, 0 doing, 0 todo, 3 blocked, 5 wontfix**, and |
| 58 | +> Measured 2026-08-22: `ticket` is **2,409 done, 0 doing, 0 todo, 3 blocked, 5 wontfix**, and |
59 | 59 | > `task` is fully classified (**1,087 ported, 140 ignore, 14,980 ignored**). Ticket #2417 remains a |
60 | 60 | > truthful closure of the 364 historical audit findings; #2418 separately closes the later |
61 | | -> post-#1941 `DateTimeKind` ripple discovered outside that audit. A bounded final scan found no |
62 | | -> remaining actionable correctness work inside the declared practical subset. |
| 61 | +> post-#1941 `DateTimeKind` ripple discovered outside that audit; #2419 restores ticket #37's |
| 62 | +> cross-compiler warning invariant and makes it a permanent gate. A bounded final scan found no |
| 63 | +> remaining actionable internal work inside the declared practical subset. |
63 | 64 | > |
64 | 65 | > The other three incomplete tickets depend on external prerequisites this container lacks, as |
65 | 66 | > measured rather than assumed: |
|
71 | 72 | > |
72 | 73 | > The five `wontfix` entries are recorded decisions with their reasons, not oversights. |
73 | 74 | > |
| 75 | +> ## 2026-08-22 — #2419: warning-clean Clang production build |
| 76 | +> |
| 77 | +> Clang-specific warnings are repaired at their source: Delegate RTTI still observes the dynamic |
| 78 | +> invocation-list entry type without hiding a call in `typeid`'s polymorphic operand; two dead |
| 79 | +> compression constants are removed; and `CancellationScope` no longer stores a redundant raw |
| 80 | +> owner pointer that its callback never read. No public API, behavior, test count, layout exposed |
| 81 | +> to consumers, or module edge changed. |
| 82 | +> |
| 83 | +> `scripts/check_clang_production_build.sh` creates a fresh tree only under `build-tmp`, selects |
| 84 | +> Clang for C and C++, disables tests and benchmarks, builds `All` at most two jobs, and verifies |
| 85 | +> every first-party production command carries `-Werror`. It runs from `local_ci_check.sh` and |
| 86 | +> therefore the GitHub full job. Final evidence: Clang 19.1.7 **219/219 translation units, 0 |
| 87 | +> warnings, 0 errors**; GCC **17,840/17,840**; selective matrix **10/10**; Doxygen **2,675/2,675**; |
| 88 | +> Python validator tests **124/124**; ASan+UBSan **6,399** targeted tests and TSan **108/108** |
| 89 | +> Net.WebSockets tests. |
| 90 | +> |
74 | 91 | > ## 2026-08-22 — #2418: post-#1941 `DateTimeKind` consumer audit |
75 | 92 | > |
76 | 93 | > The ripple audit repaired local `DateTime::Now`/`Today`, UTC `UnixEpoch`, Kind-preserving |
|
108 | 125 | > ## HOW THE LAST STRETCH WENT, AND WHAT IS WORTH CARRYING FORWARD |
109 | 126 | > |
110 | 127 | > The queue was emptied by the date/time chain rooted at **#1940**, the #2417 audit close-out and |
111 | | -> #2418's post-feature ripple audit, plus three findings made **while working on something else**. |
112 | | -> That last category is worth naming, because none of the three was on any list: |
| 128 | +> #2418's post-feature ripple audit, plus four findings made **while working on something else**. |
| 129 | +> That last category is worth naming, because none of the four was on any list: |
113 | 130 | > |
114 | 131 | > * **#2415 — a gate had been RED for a day behind a green test count.** |
115 | 132 | > `scripts/check_selective_components.sh` failed on a fixture #1889 had legitimately invalidated, |
|
125 | 142 | > * **A limitation found by a test of mine FAILING** (#1945): `RoundtripKind` could not carry a kind |
126 | 143 | > across a string, because nothing wrote a marker and nothing read one. It was declared and |
127 | 144 | > pinned, and SA-16.3 later closed it — with the pin **inverted rather than deleted**. |
| 145 | +> * **#2419 — “warning-clean” meant GCC-only.** An independent Clang 17 build found four warnings |
| 146 | +> promoted to errors even though ticket #37 explicitly named GCC and Clang. The fixes are small, |
| 147 | +> but the durable repair is the fresh 219-translation-unit Clang gate now run locally and in CI. |
128 | 148 | > |
129 | 149 | > **Three recurring process lessons, each of which cost real time this stretch:** |
130 | 150 | > |
|
0 commit comments