Skip to content

Commit 7f608f8

Browse files
committed
docs(plan): the plugin rows and X2 close with their readings
1 parent 561a236 commit 7f608f8

2 files changed

Lines changed: 26 additions & 9 deletions

File tree

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,18 +62,18 @@ the parallel work trees of §8. Triage sections are cited as `T§`.
6262

6363
| id | task | owner | depends on | status |
6464
|---|---|---|---|---|
65-
| P1 | `dist-apple` `options::omit_keys` over the defaulted keys (T§8) | lead | - | branch: `b5f759e`, plan checks on Linux; the bundle on macos-15 CI |
66-
| P2 | `dist-web` `options::page`, default `index.html` (T§8) | lead | - | branch: `c804312`, `check-web-plan.sh` with a named-page leg |
67-
| P3 | `dist-apk` follows `mcpp::pack_strip()` and `mcpp::pack_debug_symbols_dir()` when the engine provides them, and keeps its own strip otherwise | lead | S3 released | branch: `ad7a3dd`; unset and simulated variables verified; legs (m) and (n) run once the CI pin is 2026.9.16.1 |
68-
| P4 | `rules-swift`: one package's Swift sources compile through an `object` action, a generated header through a `source` action, and the runtime link flags through `link_flag`; a macos-15 consumer runs (T§5.2) | lead | - | branch: `38ac2ba`, `all-rules-compile` on Linux; build, run and the header on macos-15 CI |
69-
| P5 | `dist-apk` and `dist-apple` collect library contributions from `[package.metadata.dist-apk]` and `[package.metadata.dist-apple]` through `mcpp::graph_file()` when present | lead | S1 released | todo |
65+
| P1 | `dist-apple` `options::omit_keys` over the defaulted keys (T§8) | lead | - | done (#28, 0.12.0): plan checks on Linux; the bundle on macos-15 CI |
66+
| P2 | `dist-web` `options::page`, default `index.html` (T§8) | lead | - | done (#28, 0.12.0): `check-web-plan.sh` with a named-page leg |
67+
| P3 | `dist-apk` follows `mcpp::pack_strip()` and `mcpp::pack_debug_symbols_dir()` when the engine provides them, and keeps its own strip otherwise | lead | S3 released | branch: `ad7a3dd`; unset and simulated variables verified; legs (m) and (n) ran in CI once the pin moved to 2026.9.16.1: `--no-strip packs the library with its symbol table` and `--debug-symbols: the packed library is the engine's stripped copy` |
68+
| P4 | `rules-swift`: one package's Swift sources compile through an `object` action, a generated header through a `source` action, and the runtime link flags through `link_flag`; a macos-15 consumer runs (T§5.2) | lead | - | done (#28, 0.12.0): `all-rules-compile` on Linux; build, run and the header on macos-15 CI |
69+
| P5 | `dist-apk` and `dist-apple` collect library contributions from `[package.metadata.dist-apk]` and `[package.metadata.dist-apple]` through `mcpp::graph_file()` when present | lead | S1 released | done (#28, 0.12.0): `tests/apk-consumer-graph` five legs, including the precedence between two contributors (§1.10 item 21); `tests/ios-app-consumer` two-dependency plist merge |
7070

7171
### 0.3 Index, payloads and projects
7272

7373
| id | task | owner | depends on | status |
7474
|---|---|---|---|---|
7575
| X1 | mcpplibs/mcpp-index: the artifact is byte-reproducible, and a version whose GitCode asset differs is republished under a new name (T§7.6 step 1) | lead | - | done: mcpplibs/mcpp-index#432 (`0cbac960`); the publish of `0cbac96` verified both forges itself, and the probe reads pointer, GitHub and GitCode all `02a437110017` (547679 bytes) |
76-
| X2 | openxlings/xim-pkgindex: the release bot's `mcpp` bump merged | lead | release | todo |
76+
| X2 | openxlings/xim-pkgindex: the release bot's `mcpp` bump merged | lead | release | done: openxlings/xim-pkgindex#845 (`1c951f0b`), 16 of 16 checks; the index artifact republished as `v1c951f0` and a consumer resolves `xim@artifact:1c951f0` |
7777
| X3 | mcpplibs/mcpp-index: the plugins descriptor 0.12.0; the index CI's `MCPP_VERSION` moves to 2026.9.16.1 | lead | X2, P1-P5 | todo |
7878
| X4 | openxlings/xlings: `compat.ftxui` and `compat.gtest` spelled with their namespace (T§7.0) | lead | - | done: openxlings/xlings#597 (`4ea4eac9`), CI 9 of 9 |
7979

‎.agents/docs/2026-09-16-646-649-verify.sh‎

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ has_text() { grep -qF -- "$2" "$1"; }
3333
reading() { printf 'READING %s\n' "$*"; }
3434
unset XLINGS_ACTIVE_SUBOS
3535

36+
# A BUILD PROGRAM MUST BE NEW EVERY RUN. The sandbox's $HOME persists between
37+
# runs, and a build program is cached by its source; a cache hit does not re-run
38+
# it, and mcpp replays neither its output nor its warnings. A probe that reads a
39+
# build program would then measure the previous run. Every build program this
40+
# script writes carries this token, so each run compiles and runs its own.
41+
RUNID="$(date +%s)-$$"
42+
3643
root="$HOME/verify-646"
3744
rm -rf "$root"; mkdir -p "$root"
3845

@@ -156,10 +163,16 @@ import mcpp;
156163
int main() {
157164
const char* a = mcpp::dep_bin("fw-installer", "fw-installer");
158165
const char* b = mcpp::dep_bin("spike.fw-installer", "fw-installer");
159-
std::println("SPIKE short=[{}] qualified=[{}]", a ? a : "", b ? b : "");
166+
// `mcpp::warning`, not `std::println`: the fixture states c++20, where
167+
// `std::println` does not exist, and mcpp discards a build program's
168+
// standard output when it exits 0, so a reading printed there is never
169+
// seen. Every e2e script that reads a build program takes this route.
170+
mcpp::warning((std::string("SPIKE short=[") + (a ? a : "") + "] qualified=["
171+
+ (b ? b : "") + "]").c_str());
160172
return 0;
161173
}
162174
EOF
175+
printf '// run %s\n' "$RUNID" >> "$d/app/build.mcpp"
163176
printf 'int fw_answer() { return 42; }\n' > "$d/fw/src/fw.cpp"
164177
printf 'int fw_answer();\n#include <cstdio>\nint main() { std::printf("fw-installer ran %%d\\n", fw_answer()); return 0; }\n' > "$d/fw/tool/src/main.cpp"
165178
printf 'int fw_answer();\nint main() { return fw_answer() == 42 ? 0 : 1; }\n' > "$d/app/src/main.cpp"
@@ -200,11 +213,14 @@ int main() {
200213
const auto doc = text.str();
201214
const auto posA = doc.find("\"spike.a@");
202215
const auto posB = doc.find("\"spike.b@");
203-
std::println("GRAPH b-before-a={} metadata={}", posB < posA,
204-
doc.find("\"resources\"") != std::string::npos);
216+
// See section E on why this is a warning rather than standard output.
217+
mcpp::warning((std::string("GRAPH b-before-a=")
218+
+ (posB < posA ? "true" : "false") + " metadata="
219+
+ (doc.find("\"resources\"") != std::string::npos ? "true" : "false")).c_str());
205220
return 0;
206221
}
207222
EOF
223+
printf '// run %s\n' "$RUNID" >> "$d/app/build.mcpp"
208224
( cd "$d/app" && timeout 1200 "$STORE" build > build.log 2>&1 ); rc=$?
209225
reading "E1 exit=$rc: $(grep -m1 -E 'GRAPH|graph_file' "$d/app/build.log")"
210226
if grep -q 'GRAPH b-before-a=true metadata=true' "$d/app/build.log"; then
@@ -269,6 +285,7 @@ int main() {
269285
return 0;
270286
}
271287
EOF
288+
printf '// run %s\n' "$RUNID" >> "$d2/build.mcpp"
272289
( cd "$d2" && MCPP_OFFLINE=1 timeout 600 "$STORE" emit build-database --format json 2>/dev/null \
273290
| { readlink /proc/self/fd/0 > "$d2/reader.txt"; cat > /dev/null; } )
274291
pipe=$(cat "$d2/reader.txt" 2>/dev/null)

0 commit comments

Comments
 (0)