Skip to content

Commit 268be05

Browse files
committed
docs(plan): the closure section, with the four probe defects the sandbox found
1 parent 7f608f8 commit 268be05

1 file changed

Lines changed: 53 additions & 1 deletion

File tree

‎.agents/docs/2026-09-16-646-649-implementation-plan.md‎

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -544,4 +544,56 @@ its `target/` after its branch is merged.
544544

545545
## 9. Closure
546546

547-
(written when the rows of §0 are closed)
547+
### 9.1 What shipped
548+
549+
| repository | pull request | published as |
550+
|---|---|---|
551+
| mcpp-community/mcpp | #650 (`f4529b2a`), #651 (`2f925d48`) | 2026.9.16.1 |
552+
| mcpp-community/mcpp | #652 (`074d87b3`) | the bootstrap pin |
553+
| mcpp-community/mcpp-plugins | #28 (`dea1f09`) | 0.12.0 |
554+
| openxlings/xim-pkgindex | #845 (`1c951f0b`) | mcpp 2026.9.16.1 as `latest` |
555+
| mcpplibs/mcpp-index | #432 (`0cbac960`), #433 | the reproducible artifact; mcpp:plugins 0.12.0 |
556+
| openxlings/xlings | #597 (`4ea4eac9`) | the `compat.*` spelling |
557+
558+
The engine is one pull request as the goal requires, and #651 is the exception
559+
it allows: the review before the release found that #650 refuses a manifest
560+
2026.9.15.2 builds, and the release was cancelled to carry the fix rather than
561+
ship the cliff and repair it in a second version (§1.10 item 19).
562+
563+
The release is mirrored: each of the four archives was downloaded from GitCode
564+
and compared with its published `sha256`, and all four match. The plugins
565+
source archive was compared with `cmp` against the GitHub archive of the tag
566+
and is byte-identical; `90a70689b090be72` names both, and the index descriptor
567+
carries that digest.
568+
569+
### 9.2 What the sandbox verified
570+
571+
`.agents/docs/2026-09-16-646-649-verify.sh` in SubOS `v646`, with
572+
`xlings config --mirror CN` and `mcpp self config --mirror CN` inside it,
573+
against the PUBLISHED engine addressed by its store path.
574+
575+
The control against 2026.9.15.2 reads `fails=10`: every change detector fails
576+
and every guard passes, which is what makes the run against 2026.9.16.1
577+
evidence rather than decoration.
578+
579+
### 9.3 Four probe defects, and the shape they share
580+
581+
The first three runs against the published engine read `fails=4`, `fails=2` and
582+
`fails=1`. Not one was an engine defect.
583+
584+
1. Sections E and F wrote `std::println` into a build program whose fixture
585+
states `standard = "c++20"`, where it does not exist. The build program
586+
failed to compile, and the section reported the engine.
587+
2. Section G printed its reading to standard output. mcpp discards a build
588+
program's output when it exits 0, so the reading was never seen and the
589+
section reported the engine. Both now use `mcpp::warning`, which is what
590+
every e2e script that reads a build program already used.
591+
3. Section I then failed where it had passed: the sandbox's `$HOME` persists
592+
between runs, a build program is cached by its source, and a cache hit does
593+
not re-run it or replay its warnings, so the probe measured the previous
594+
run. Every build program the script writes now carries a per-run token.
595+
596+
The third defect is the one worth keeping. Sections E and G passed on the run
597+
where their sources had just changed, and would have failed on the next run for
598+
the reason section I failed on that one. A probe that reads a build program has
599+
to make the build program new, or it measures the run before it.

0 commit comments

Comments
 (0)