|
| 1 | +# Artifact-review candidate evidence — 2026-11-06 |
| 2 | + |
| 3 | +This record describes project backlog #156 before merge/publication. Current |
| 4 | +published CLI remains v0.50.1; no v0.51.0 publication is claimed here. The |
| 5 | +[command/profile contract](ARTIFACT-REVIEW.md) defines the supported archive and |
| 6 | +declaration subset. Source checks, historical and final candidate execution, and |
| 7 | +the real consumer decision below have separate identities. The 0.51.0 changelog |
| 8 | +section is prepared for release; this does not assert publication. |
| 9 | + |
| 10 | +## Reviewed source checkpoint |
| 11 | + |
| 12 | +Implementation base: `1b573fc3568c42dcb1a08149da05eb3c702f32b3`. Sol implemented |
| 13 | +the command; Astra independently reproduced and fixed archive/declaration, |
| 14 | +reference, pointer and coverage edge cases, then reproduced a Markdown parsing |
| 15 | +CPU regression and replaced the backtracking scan with a bounded linear scan. |
| 16 | +The latest source receipt is |
| 17 | +`/private/tmp/mcpm-156-astra-source-freeze-v2-20261106.json`. |
| 18 | + |
| 19 | +That source checkpoint records Node 24.20.0 typecheck (main/tooling), build, |
| 20 | +62 focused tests, whitespace checks and all 163 test files passing: **3,846 tests |
| 21 | +passed, three skipped**. It supersedes the first Astra source freeze. These are |
| 22 | +source results; fresh packed-candidate execution is recorded separately below. The |
| 23 | +placeholder package version remains `0.15.0`; no dependency/lockfile or override |
| 24 | +change is part of #156. Documentation additions after the source freeze are |
| 25 | +tracked separately and do not change runtime bytes. |
| 26 | + |
| 27 | +## Final latest-source candidate |
| 28 | + |
| 29 | +The fresh candidate archive is |
| 30 | +`/private/tmp/mcpm-156-final-candidate-20261106/getmcpm-cli-0.15.0.tgz`, SHA-256 |
| 31 | +`9a39064a617c76b843e9241b8324a3fc7e09842bc986dce0760b696e7a4805e4`. |
| 32 | +Its consumer binding receipt names the latest Astra source-freeze SHA-256 |
| 33 | +`aa42dbbe48d0e16ee73e29e32f007121e4cfd46a6a33bfc18bc936438f3b8b25`. |
| 34 | +The actual isolated image identity is |
| 35 | +`sha256:c32866659f49450a1e74f6e7dd13a06670b36a3f2068e01ccbfe5fd3352392a6`. |
| 36 | + |
| 37 | +Independent read-back matched all **66 installed JavaScript files**, the three |
| 38 | +input archive hashes below, and every reported member hash, size and mode. |
| 39 | +Both newly executed consumer reports matched the previously reviewed reports: |
| 40 | +31 old-to-capture and eight tag-to-capture changed/unknown records, with exit 1 |
| 41 | +and both coverage flags false. The maintainer's retain-source/no-rollback |
| 42 | +decision was reaffirmed; no global mutation, native activation or safety |
| 43 | +approval followed. The isolated execution used UID 1000, no network, a |
| 44 | +read-only root and no host bind mounts. Home/project directories were checked |
| 45 | +empty after execution, not traced for absence of transient writes. The temporary |
| 46 | +read-back container was removed after its evidence was retained. |
| 47 | + |
| 48 | +| Check | Final candidate/source result | Local receipt | |
| 49 | +| --- | --- | --- | |
| 50 | +| Clean installation and public CLI smoke | Passed against the exact candidate archive | `/private/tmp/mcpm-156-final-smoke.log` | |
| 51 | +| Modern/legacy direct/guarded stdio protocol | 87 passed, zero failures, two expected unsupported combinations, four exclusions; independent actual-image/runtime/input binding passed | `/private/tmp/mcpm-156-final-protocol-20261106/{report,verified-binding}.json` | |
| 52 | +| Real macOS confinement dogfood | Passed control access, denied synthetic-secret read, intact relay, tamper refusal and event logging | `/private/tmp/mcpm-156-final-confine.log` | |
| 53 | +| Source coverage | Passed: 90.15% statements, 86.64% branches, 87.20% functions, 91.92% lines | Maintainer coverage run | |
| 54 | +| Negative coverage-threshold probe | Passed; failing thresholds were rejected | `/private/tmp/mcpm-156-final-negative.log` | |
| 55 | +| Real consumer and member/runtime binding | Passed receipt bindings; both product reports intentionally incomplete, retention reaffirmed | `/private/tmp/mcpm-156-final-candidate-20261106/consumer/run-final/verified-binding.json` | |
| 56 | + |
| 57 | +These are candidate/static/protocol/confinement observations for their named |
| 58 | +surfaces. They do not prove native artifact loading, default approvals, provider |
| 59 | +behavior, universal host coverage or a published package. Published-byte |
| 60 | +authentication and companion synchronization remain release gates. |
| 61 | + |
| 62 | +## Historical real-consumer inputs |
| 63 | + |
| 64 | +The maintainer prepared inert uncompressed USTAR snapshots outside the product. |
| 65 | +The separate preparation record names the two upstream commits and the explicit |
| 66 | +captured source root; the mcpm receipt itself authenticates neither provenance |
| 67 | +nor host cache/activation state. Preparation normalized owner/time and retained |
| 68 | +member content/modes. Only `.git` metadata was omitted from the captured source; |
| 69 | +no vendor or `node_modules` directory was present or omitted. An earlier generic |
| 70 | +omission description was corrected while preserving the original record and |
| 71 | +unchanged archive bytes. |
| 72 | + |
| 73 | +| Snapshot | Regular files | Archive SHA-256 | |
| 74 | +| --- | --- | --- | |
| 75 | +| Ponytail tag 5.3.2, upstream commit `16352ac229eb08a9598dcae48fe9f2b342567d86` | 213 | `fead09d7275d23ca5713e92873ec4ab10cf1fa177090b4bb5d18d3e1f929e10f` | |
| 76 | +| Ponytail tag 5.3.3, upstream commit `7801d061243d7b753bad0e0b3c057cd250b11755` | 214 | `032b3aa5083a19bec10a8539b9033fdb6f4b5f61a606204073129ae3eb67c544` | |
| 77 | +| Explicit local 5.3.3 source capture | 216 | `3ab7882f3a3251aa890c78e095258b52a5dd2715635ed74415855e4a37c35bb2` | |
| 78 | + |
| 79 | +Inputs, preparation script/proof and consumer decision are retained temporarily |
| 80 | +under `/private/tmp/mcpm-156-consumer-v2-20261106/`. Both comparisons used |
| 81 | +`--profile claude-plugin-2026-11-06 --withhold .git --json`. |
| 82 | + |
| 83 | +## Historical candidate execution and decision |
| 84 | + |
| 85 | +The earlier candidate npm archive SHA-256 was |
| 86 | +`0456b014efb655a4037c3127c7579010d4399711b2a911f3b9942df9e26717e5`, bound to the |
| 87 | +first Astra source-freeze receipt SHA-256 |
| 88 | +`ed7d58f54b9549911253b3c0cdd12429f127a2889f0378827dc6ba34757f7c1c`. |
| 89 | +This **predates the latest Markdown CPU fix**. The `run-v2` directory name below |
| 90 | +identifies a consumer-run revision, not the newer source-freeze v2. |
| 91 | +The first `run-v1` consumer attempt failed on input-file permissions before |
| 92 | +producing reports and is excluded. Its receipt is retained. The original CPU |
| 93 | +regression and source-capture metadata-pack limit failure are also excluded from |
| 94 | +passing evidence; no failed capture archive was produced. The final candidate |
| 95 | +above was freshly executed after the fixes. |
| 96 | + |
| 97 | +Retained container inspection and binding receipts matched that archive, all |
| 98 | +66 installed JavaScript files and the three input hashes. The execution used |
| 99 | +UID 1000, no network, read-only root, dropped capabilities, no-new-privileges |
| 100 | +and no host bind mounts/credentials. Home/project directories were checked empty |
| 101 | +after execution; this is not a syscall-level assertion that no write occurred. |
| 102 | +No artifact hooks/scripts, native validators, installers or provider/model calls |
| 103 | +were executed. |
| 104 | + |
| 105 | +| Comparison | Result | Evidence used by the maintainer | |
| 106 | +| --- | --- | --- | |
| 107 | +| 5.3.2 tag → captured 5.3.3 source | Exit 1; byte and declaration coverage incomplete; 31 changed/unknown records | Changed executable/source files, declared shared-hook source/timeouts, literal references and explicit coverage gaps | |
| 108 | +| 5.3.3 tag → captured 5.3.3 source | Exit 1; byte and declaration coverage incomplete; eight changed/unknown records | 208 matching known content/mode pairs; five README/translation modifications, two SVG unknown additions, one withheld `.env.example` | |
| 109 | + |
| 110 | +Dynamic `node -e`, opaque Claude-band modules, unsupported manifest fields and |
| 111 | +nine other-host manifests remained interpretation gaps. The default-withheld |
| 112 | +`.env.example` member and prepackaging `.git` omission remained byte-coverage |
| 113 | +gaps. Archive buffering still read packaged member bytes; hashing was not |
| 114 | +redaction. Other-host declarations, including Codex, were not evaluated as loaded |
| 115 | +components. Configured/cached/loaded/enforced host states remained unknown. |
| 116 | + |
| 117 | +The actual maintainer decision was to **retain the reviewed 5.3.3 source update |
| 118 | +without requesting a rollback**. No global changes or native install/activation |
| 119 | +approval followed. Manual semantic review separately checked hook timeout |
| 120 | +5→15 seconds, activation subprocess timeout 1→3 seconds, Git-list buffer |
| 121 | +1→64 MiB with the existing line-count cap, and the opaque band's transcript |
| 122 | +lookup across Claude project folders. SVG XML was inspected separately; the |
| 123 | +receipt's file-role heuristic did not establish executable status or safety. |
| 124 | + |
| 125 | +The one-consumer gate is met for this bounded experiment: the receipt combined |
| 126 | +captured byte/mode identity with component/reference/coverage mapping instead of |
| 127 | +requiring that inventory to be assembled manually. Public-tag diff alone did not |
| 128 | +bind the captured local bytes. This is not a measured time saving, evidence of |
| 129 | +general demand, superiority over native/Git/APM workflows, or a safety verdict. |
| 130 | + |
| 131 | +Historical local receipts: |
| 132 | + |
| 133 | +- `/private/tmp/mcpm-156-consumer-sandbox-20261106/run-v2/{consumer,old-to-cache,tag-to-cache,verified-binding}.json` |
| 134 | +- `/private/tmp/mcpm-156-consumer-v2-20261106/consumer-decision.json` |
| 135 | +- `/private/tmp/mcpm-156-consumer-v2-20261106/preparation-proof.json` |
| 136 | + |
| 137 | +## Remaining delivery gates |
| 138 | + |
| 139 | +The latest-source repack, consumer bindings, smoke, protocol, confinement and |
| 140 | +coverage and negative-threshold checks are complete as described above. |
| 141 | +Final artifact/documentation review, hosted checks, |
| 142 | +merge, publication, published-byte authentication and companion synchronization |
| 143 | +remain pending in this record. The prepared 0.51.0 changelog section is not |
| 144 | +publication evidence. The one-consumer result does not authorize #157/#158 or another host |
| 145 | +dialect; those retain their own scope and evidence gates. |
0 commit comments