|
1 | 1 | --- |
2 | 2 | subject: targets |
3 | | -status: active |
| 3 | +status: landed |
4 | 4 | --- |
5 | 5 |
|
6 | 6 | # A UI framework on Android, iOS and Web: where each item of #622 lands, and the three it does not list |
7 | 7 |
|
8 | | -**Status:** implemented in mcpp (engine items A1 to A7, A10, A11; the version |
| 8 | +**Status:** landed. Engine in mcpp 2026.9.12.3 and 2026.9.12.4; payloads and runner programs in openxlings/xim-pkgindex (#825, #827); `mcpp:plugins` 0.8.0; the published form verified in a sandbox (§9). |
9 | 9 | is assigned at release); ecosystem changes follow. Every "measured" statement |
10 | 10 | below was checked against `main` at `85df514a` (mcpp 2026.9.12.2), |
11 | 11 | `mcpp-plugins` at `9064107` (0.6.0) and `openxlings/xim-pkgindex` at `571f845`, |
@@ -999,3 +999,103 @@ directory. Both become packages, found the way every other payload is found. |
999 | 999 |
|
1000 | 1000 | Each is a reading a sub-issue takes before its criterion is written down as |
1001 | 1001 | met; none changes a shape above. |
| 1002 | + |
| 1003 | +## 9. What landed, and where each claim was measured |
| 1004 | + |
| 1005 | +Written after the fact, 2026-09-12. The plan's waves ran as ten subagent tasks |
| 1006 | +in their own worktrees and merged without conflict; the corrections the |
| 1007 | +implementation forced on this record are in §2.3, §2.5, §2.6 and §2.10. |
| 1008 | + |
| 1009 | +| repository | change | measured on the published form | |
| 1010 | +|---|---|---| |
| 1011 | +| mcpp | #623 (`c765c8cd`), the engine half: A1 to A7, A10, A11; docs/04, 10, 21, 22, 30, 31 and their zh mirrors; CHANGELOG; version 2026.9.12.3 | 39 of 40 checks green on the PR head (the iOS probe job is manual by design); an independent review of the diff found one missed `is_program` site, fixed before merge; main's own run on `22cedfa9` was 10 of 10 | |
| 1012 | +| mcpp | #624 (`22cedfa9`): the distributable is the terminal artifact, and a library-form application stages its runtime files | found by the first `dist-apk` build against #623: `adb-run` received the unsigned `base.apk`, and the Android staged tree carried no `assets/` | |
| 1013 | +| mcpp | #625 (`5260dec4`): e2e 658, a program on an attached Android device through `adb-run`; the verification script | PASS in 18 s on a 2211133C (arm64-v8a) over USB, exit status crossing the session in both directions | |
| 1014 | +| mcpp | #626 (`fe3a008a`) and #628: the bootstrap pin, to 2026.9.12.3 and then 2026.9.12.4 | each moved after its release was indexed and the sandbox reading was green | |
| 1015 | +| mcpp | #627 (`13f5a8a9`), 2026.9.12.4: the build program's host toolchain under a cross target resolves the native default when the row's pin replaced nothing, and carries the host's C-library payload paths | found by the sandbox's section J on 2026.9.12.3 (`features.h: No such file` while compiling the `mcpp` module for a Web project's build program in a fresh home); reproduced in the sandbox with the released binary and green with the fix; the development machine had masked it through a subos sysroot leaked into the shared-store gcc's search path | |
| 1016 | +| mcpp | tags `v2026.9.12.3` at `22cedfa9` and `v2026.9.12.4` at `13f5a8a9` | `release.yml` six jobs green; four platform archives GET 200 on both `xlings-res` hosts with the upstream sizes; no manual GitCode repair was needed | |
| 1017 | +| openxlings/xim-pkgindex | #825 (`2cd3a6a`): `android-build-tools`, `android-platform`, `adb-run`, `simctl-run` 0.2.0, `android-debug-keystore` | installed from the local checkout; the keystore's sha256 matched through both mirrors; the asset is on both `xlings-res` hosts, GET-verified | |
| 1018 | +| openxlings/xim-pkgindex | #827 (`2d94ff2`): `adb-run` returns when the activity finishes; the emulator finds its SDK root | both defects were met by the first real run and measured again after the fix: the emulator boots to `sys.boot_completed=1` with no environment set by hand | |
| 1019 | +| openxlings/xim-pkgindex | #828 (`f9a2761`) and #831 (`6d60234`), the bot's bumps to 2026.9.12.3 and 2026.9.12.4 | `xlings install mcpp@<ver>` in the shared store; the sandbox binary reports the version | |
| 1020 | +| openxlings/xlings | #590 | the resolver's alias-key defect, found by the build-tools recipe and worked around with an exact pin and a run-time fallback | |
| 1021 | +| mcpp-plugins | #19 (`db16e277`), 0.8.0, tag `v0.8.0`: `dist-apk`, `dist-web`, the iOS row of `dist-apple`, `dist-wix` through `xim:wix` | Linux: the APK is signed (`CN=Android Debug`), lists the library, `libc++_shared.so`, the deploy'd asset and the run sidecar, `minSdkVersion:'24'`; macOS: the simulator installed the bundle through `simctl-run` and the program printed `1-2-3`; Windows: the MSI carries the program with no host `wix` on PATH | |
| 1022 | +| mcpplibs/mcpp-index | #404 (`92a1ba6`): `mcpp:plugins` 0.8.0, CI pin 2026.9.12.3 | the GitHub tag archive and the `mcpp-res` asset are byte-identical (250406 bytes); `mcpp index update` on the released engine carries the entry | |
| 1023 | + |
| 1024 | +Off the repositories: `mcpp run --format apk` printed the program's line on the |
| 1025 | +x86_64 emulator and on an arm64 phone; `mcpp run --format app` printed it on |
| 1026 | +the macos-15 simulator. A local, unpublished set of `localtest:` recipes |
| 1027 | +stands up an Intel macOS guest under QEMU/KVM for the `x86_64-ios-sim` row; |
| 1028 | +it stops at the installer, and mcpp ships no Intel macOS binary, so it is a |
| 1029 | +path for a future measurement and not one taken here. |
| 1030 | + |
| 1031 | +The sandbox reading of the published binary (`2026-09-12-622-verify.sh`, |
| 1032 | +`xlings subos use verify-622 --sandbox`, CN mirror set inside): |
| 1033 | + |
| 1034 | + |
| 1035 | +``` |
| 1036 | +== A. the published mcpp answers for itself, with the CN mirror configured == |
| 1037 | +ok: mcpp --version says mcpp 2026.9.12.4 |
| 1038 | +ok: mcpp self config --mirror CN |
| 1039 | +== B. the wasm row: bin/<name>.js, the .wasm sibling, the staged family, shared refused == |
| 1040 | +ok: launcher is bin/w.js |
| 1041 | +ok: bin/w.wasm beside it |
| 1042 | +ok: no bare bin/w |
| 1043 | +ok: mcpp run prints 1-2-3 through the payload's runner |
| 1044 | +ok: pack --format dir stages w.js and w.wasm |
| 1045 | +ok: shared refused naming -sSIDE_MODULE |
| 1046 | +== C. a build program deploys what it generated (mcpp::deploy), and the copy survives a cache hit == |
| 1047 | +ok: bin/dep.resources/res.bin carries the generated content |
| 1048 | +ok: restored after bin/ was deleted (replay on a cache hit) |
| 1049 | +ok: pack --format dir stages it |
| 1050 | +== D. kind = app: a program on the host, a shared library on Android, run refused without --format == |
| 1051 | +ok: an app is a program on the host |
| 1052 | +ok: libmyapp.so on Android |
| 1053 | +ok: bin keeps meaning binary on Android |
| 1054 | +ok: run refused naming --format |
| 1055 | +== E. requires_abi on the target axis, and the two-member abi table == |
| 1056 | +ok: refused naming the member and the selector |
| 1057 | +ok: satisfied by the root's table |
| 1058 | +ok: unknown member refused naming both members |
| 1059 | +== F. frameworks per target: a Linux build renders no framework and its graph is unchanged == |
| 1060 | +ok: build.ninja identical on Linux up to the fingerprint segment |
| 1061 | +ok: no -framework on Linux |
| 1062 | +ok: frameworks accepted under [target.<sel>.runtime] |
| 1063 | +== G. platforms names the rows that exist == |
| 1064 | +ok: the six-word vocabulary is accepted |
| 1065 | +ok: 'web' refused naming the six |
| 1066 | +== H. mcpp run --format hands the distributable to the runner == |
| 1067 | +ok: run --format blob ran the blob through the runner |
| 1068 | +ok: plain run hands the link output |
| 1069 | +ok: unknown format refused naming blob |
| 1070 | +ok: --format with --no-runner refused |
| 1071 | +== I. abi.exceptions on the Web row == |
| 1072 | +ok: throw and catch under node with exceptions = true |
| 1073 | +ok: -fexceptions in build.ninja |
| 1074 | +ok: without the table the run does not print the marker |
| 1075 | +== J. mcpp:plugins dist-web through the index == |
| 1076 | +ok: dist-web wrote index.html, web.js, web.wasm |
| 1077 | +fails=0 |
| 1078 | +``` |
| 1079 | + |
| 1080 | +fails=0 over 31 assertions, sections A to J, on the released 2026.9.12.4 |
| 1081 | +installed through the index (three retries of `xlings update` until the pointer |
| 1082 | +named the new artifact). The reading of 2026.9.12.3 the day before was fails=0 |
| 1083 | +over sections A to I and one failure in J, which is the defect the last row of |
| 1084 | +the table records. |
| 1085 | + |
| 1086 | +The first run of that script reported four failures, all in the probes and |
| 1087 | +none in the engine: an action input named by a path relative to the manifest |
| 1088 | +while an action runs in the build directory, a `build.ninja` comparison that |
| 1089 | +did not normalise the fingerprint segment, and a key written under the wrong |
| 1090 | +table. Each is the class §1 rule 8 names, and each was visible on the |
| 1091 | +development machine before the sandbox; the script now clears its probe |
| 1092 | +directories and names the object each assertion selected. |
| 1093 | + |
| 1094 | +What remains unmeasured is the list in §8, minus the items the runs above |
| 1095 | +closed: `-fexceptions` built its libc++ variant inside the payload store (I); |
| 1096 | +`libc++_shared.so` is `NEEDED` on NDK r30 and is bundled; `simctl launch |
| 1097 | +--console-pty` returned the program's output and status; the build-tools and |
| 1098 | +platform archives' `NOTICE` files were read and recorded in the recipes; |
| 1099 | +`xim:wix` produced the MSI on the Windows runner without a step installing |
| 1100 | +.NET. The published debug key installed over nothing on the devices used, so |
| 1101 | +the last bullet of §8 stands as written. |
0 commit comments