From 87ce8e6fb1083637f5fa3b7171cbcefe9cec5796 Mon Sep 17 00:00:00 2001 From: kaikisegfault <133794518+kaikisegfault@users.noreply.github.com> Date: Mon, 17 Aug 2026 16:36:45 +0200 Subject: [PATCH 1/2] docs(project): record the M3.10c delivery, its margin, and a rule about guards M3.10c merged by rebase across `0563dab` through `5f6f70a`. PR run 32038739390 on head `ea7f916` passed the complete hosted matrix. The margin is about eleven minutes: the slowest job moved from 9m21s to 8m48s while the slice removed six translation units and added ten plus a fuzz target, which is inside the run-to-run variance and says the exchange was roughly even. `docs/engineering/verification.md` gains a Guards section, because this slice found the same defect M3.7a found and one block later in the same file. A guard's subject is the gate rather than the protocol, so the failure it catches is silent and nothing notices when the guard itself stops working. Two rules: run a guard against the omission it exists to catch and see it fail, because the repository passed before the guard was written; and assert what a CMake parse reached, because both defects so far are a pattern that ran past a block nested inside `if(...)` and found the name it was asked to notice was missing. The next action is M3.10d, the fourteen transitions. --- docs/engineering/verification.md | 20 ++++++++++++++++++++ docs/project/current-state.md | 28 +++++++++++++++++++++++++--- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/docs/engineering/verification.md b/docs/engineering/verification.md index 0d4de24..d7bb8aa 100644 --- a/docs/engineering/verification.md +++ b/docs/engineering/verification.md @@ -135,3 +135,23 @@ construction, records `true` forever and detects nothing. Where a third source exists — an accepted vector file from an earlier version — compare against it, so a formula that a model and its independent derivation got wrong the same way still fails. + +## Guards + +A guard is a check whose subject is the gate rather than the protocol: that a +test is registered, that a target carries the project's build rules, that a +vector file has a verifier. It exists because the failure it catches is silent, +which means **nothing else will notice when the guard itself stops working**. + +**A guard must be run against the omission it exists to catch, and be seen to +fail.** Adding it and observing that the repository passes establishes nothing; +the repository passed before it was written. Introduce each omission the guard +claims to catch, one at a time, and record that each fails. + +**A guard that parses `CMakeLists.txt` must assert what its pattern reached.** +Both defects found so far are the same one: a pattern anchored to a closing +paren in column zero does not terminate at a block nested inside `if(...)`, so +the match runs on into unrelated blocks and finds the name it was asked to +notice was missing. M3.7a found it in the `add_test` parser and M3.10c found it +one block later in the target-list parser. Assert the number of blocks or entries +the parse found, so a pattern that swallowed the file fails rather than passes. diff --git a/docs/project/current-state.md b/docs/project/current-state.md index 08a2b38..2ae0453 100644 --- a/docs/project/current-state.md +++ b/docs/project/current-state.md @@ -77,7 +77,10 @@ translation units over a shared fixture header, and `tests/fuzz/economy_v6_fuzz.cpp`; it removed `include/protocol/v4/economy.hpp`, the six sources under `src/v4/`, and `tests/kernel/economy_v4_test.cpp`. The CTest entry `economy-transition-v4-cpp` became `economy-transition-v6-cpp` and -gained `economy-transition-v6-fuzz-smoke`. +gained `economy-transition-v6-fuzz-smoke`. It merged by rebase across commits +`0563dab` through `5f6f70a`. PR run 32038739390 on the final head `ea7f916` +passed the complete hosted matrix — scope classification `full`, GCC and Clang +debug, both sanitizers, and the aggregate required check. **Version four's codec is removed rather than kept beside version six's, and the reason is what version four is.** The kernel was compiling exactly one economy @@ -165,6 +168,15 @@ block is nested inside `if(PROTOCOL_STACK_ENABLE_FUZZING)` and closes on an block later in the same file, and the guard now asserts that its own list parse finds exactly two blocks. +**Twice is a rule, and `docs/engineering/verification.md` gained a Guards +section.** A guard's subject is the gate rather than the protocol, so the failure +it catches is silent and nothing else notices when the guard stops working. Two +rules: a guard must be run against the omission it exists to catch and be seen to +fail, because adding it and observing that the repository passes establishes +nothing — the repository passed before it was written; and a guard that parses +`CMakeLists.txt` must assert what its pattern reached, because both defects found +so far are a pattern that ran past a block nested inside `if(...)`. + **The test file was split by subject because one file reached 1,430 lines**, more than twice the largest test in the repository. It is now four check units over a shared fixture header, mirroring the Python verifier's own @@ -1985,8 +1997,18 @@ behavior. 8m17s, `clang-sanitizers` 8m50s, `gcc-sanitizers` 9m20s. The slice adds no translation unit and two fast Python entries that `ctest --parallel` absorbs, so the spread sits inside the roughly 12% run-to-run variance M3.7a measured - on identical code. **M3.10c is the one to watch**: it is C++, and build time is - the larger half of each job. + on identical code. **M3.10c was the one to watch**, and the figure below is + the answer. +- **M3.10c's margin is about eleven minutes, and replacing a codec cost nothing + measurable.** Per-job durations on the candidate `ea7f916` against the + 20-minute per-job timeout: `gcc-sanitizers` 7m38s, `clang-debug` 8m07s, + `gcc-debug` 8m22s, `clang-sanitizers` 8m48s. The slice removed six translation + units and added ten, plus five test units in one executable and one fuzz + target, and the slowest job moved from 9m21s to 8m48s — inside the roughly 12% + run-to-run variance M3.7a measured on identical code, and in the direction that + says the exchange was roughly even. **`clang-sanitizers` remains the slowest** + and is the only preset that builds the fuzz targets at all, so it is where + M3.10d's transitions will show first. - Issue #153's scope has been rebound twice. It was opened as M3.9b against version four, renumbered M3.9e and rebound to version five when version four's kind-11 defect pushed three slices in front of it, and finally rebound to From 95af3b3d36a5f05c839c4452f448a30d62f77244 Mon Sep 17 00:00:00 2001 From: kaikisegfault <133794518+kaikisegfault@users.noreply.github.com> Date: Mon, 17 Aug 2026 16:43:54 +0200 Subject: [PATCH 2/2] docs(project): record the M3.10c post-merge matrix result --- docs/project/current-state.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/project/current-state.md b/docs/project/current-state.md index 2ae0453..9363e7d 100644 --- a/docs/project/current-state.md +++ b/docs/project/current-state.md @@ -80,7 +80,9 @@ CTest entry `economy-transition-v4-cpp` became `economy-transition-v6-cpp` and gained `economy-transition-v6-fuzz-smoke`. It merged by rebase across commits `0563dab` through `5f6f70a`. PR run 32038739390 on the final head `ea7f916` passed the complete hosted matrix — scope classification `full`, GCC and Clang -debug, both sanitizers, and the aggregate required check. +debug, both sanitizers, and the aggregate required check — and post-merge run +32039379092 on `5f6f70a` passed the same matrix. One earlier candidate run +failed and one was cancelled as obsolete; both are described above. **Version four's codec is removed rather than kept beside version six's, and the reason is what version four is.** The kernel was compiling exactly one economy