|
| 1 | +# v0.50.1 publication and managed-policy compatibility — 2026-11-06 |
| 2 | + |
| 3 | +Dates use Asia/Hong_Kong; raw receipts retain UTC timestamps. |
| 4 | +[Release](https://github.com/getmcpm/cli/releases/tag/v0.50.1) source: |
| 5 | +`b3cc859d083cf684a5bf82cffa6a79ceb3f0ff61`. Annotated tag |
| 6 | +`26144765049c08f901d63e779f427a2fe14667dd` was read back with the same peeled source. |
| 7 | + |
| 8 | +## Reviewed scope |
| 9 | + |
| 10 | +Sol built project backlog #122; Astra independently reproduced and fixed policy |
| 11 | +matching, preview, exact-wrapper and bounded-read issues. [PR #324](https://github.com/getmcpm/cli/pull/324) |
| 12 | +merged the main slice. Late automatic review found home/project-layout and blank |
| 13 | +current-config compatibility regressions; the release tag was held until Astra |
| 14 | +reproduced/fixed them and [PR #325](https://github.com/getmcpm/cli/pull/325) passed |
| 15 | +all ten checks. Its reviewed head `21a921b0987cfabd425afb22ce2503c82c2197f5` |
| 16 | +and merged release source have identical trees. Both PRs shipped in this PATCH. |
| 17 | + |
| 18 | +The bounded `claude-code-2.1.296-stdio-files` projection compares current/proposed |
| 19 | +launchers and recognized underlying commands before user-global stdio writes. |
| 20 | +Denied or unsupported local policy refuses with exit 1; overall host-policy |
| 21 | +coverage stays unknown. Shared gates cover install/update/up/setup/guard/toggles, |
| 22 | +with preview before backups/profiles/secret persistence. Existing wrappers are |
| 23 | +audited; exact authorized teardown can restore native denial. Explicit blank |
| 24 | +current-config initialization preserves original-byte backups; policy/settings |
| 25 | +and scope reads remain strict. See [profile and migration limits](MANAGED-POLICY-VALIDATION.md). |
| 26 | +Public mcpm skill 1.2.2 documents this consumer behavior; npm still ships `dist` |
| 27 | +only, and tracked package version stays the intentional `0.15.0` placeholder. |
| 28 | + |
| 29 | +Node 24.20.0 typecheck/tooling/build and 161 test files passed: **3,793 tests, |
| 30 | +three skipped**. Coverage passed at 91.56% lines, 86.72% branches, 90.28% |
| 31 | +statements and 86.75% functions; the negative-threshold gate passed. Hosted |
| 32 | +Node 22/24/26, security, protocol and macOS confinement checks passed before |
| 33 | +merge. Real local Seatbelt dogfood also passed positive-control access, denied |
| 34 | +synthetic-secret read, intact stdio, tampered-profile refusal and event logging. |
| 35 | +These source/candidate confinement results are separate from published native |
| 36 | +Linux observations below. |
| 37 | + |
| 38 | +## Authenticated publication |
| 39 | + |
| 40 | +All five [publish jobs](https://github.com/getmcpm/cli/actions/runs/42170778579) |
| 41 | +succeeded: three Node clean-install gates, npm/GitHub publication and official |
| 42 | +MCP registry listing. The exact npm version and official registry record were |
| 43 | +read back. Initial npm reads returned 404 while the listing job waited; visibility |
| 44 | +resolved without republishing. |
| 45 | + |
| 46 | +The actual downloaded archive is **737,031 bytes**: |
| 47 | + |
| 48 | +```text |
| 49 | +sha512-2ddRvViZNcJakVzcXNXMn/8qKXAGaN/ZBHedS3xYcNZi1JJCOb3WfUx++gBCpCfLlEV6O3DMs9KG+tkmXpOHfg== |
| 50 | +SHA-256 423866f3c8ce91e494ea66744f86053f868f59b9e2abaae96acc3d4d093e0e63 |
| 51 | +``` |
| 52 | + |
| 53 | +Existing Sigstore libraries and the vendored trusted root authenticated the SLSA |
| 54 | +archive subject, resolved source commit, workflow SAN |
| 55 | +`https://github.com/getmcpm/cli/.github/workflows/publish.yml@refs/tags/v0.50.1` |
| 56 | +and issuer `https://token.actions.githubusercontent.com`. |
| 57 | +The signed SBOM verified and altered bytes were rejected. This authenticates |
| 58 | +build/artifact identity, not code safety or complete SBOM coverage. |
| 59 | + |
| 60 | +## Actual published archive execution |
| 61 | + |
| 62 | +Clean-install smoke passed under Node 24.20.0 with a disposable HOME: version, |
| 63 | +help, completions, doctor, signature catalog, bundled trust material and the |
| 64 | +public blocking `guard inspect --json` seam. |
| 65 | + |
| 66 | +The same archive passed **87 modern/legacy direct/guarded protocol checks, zero |
| 67 | +failures, two expected unsupported combinations and four exclusions**. Independent |
| 68 | +read-back matched archive SRI, all 66 installed JavaScript files, raw dependency |
| 69 | +lock, tagged harness/public skill and actual container boundaries. The exact |
| 70 | +protocol install-lock SHA-256 is |
| 71 | +`cfe11040ef155097ecf8f3b2de9aea2f66233e3e5fd9bc8947e0465439a2fd93`. |
| 72 | + |
| 73 | +**22 native policy cases and three explicit-initialization CLI cases passed** on |
| 74 | +Linux arm64 / Node 26.11.1 / Claude Code 2.1.296. Native cases cover seven enable |
| 75 | +states, three legacy teardowns, two previews, five independently reproduced |
| 76 | +matching gaps, two existing-wrapper audits and three realistic home/repo layouts. |
| 77 | +The three initialization cases cover empty/whitespace current config with exact |
| 78 | +backup preservation and strict empty-policy refusal. They do not claim native |
| 79 | +activation. A separate pinned-native probe observed blank JSON corruption recovery, |
| 80 | +not clean native acceptance; mcpm's explicit initialization is a separate contract. |
| 81 | + |
| 82 | +Native connection claims include synthetic peer `initialize`/`tools/list` traffic. |
| 83 | +Product configuration operations neither executed that peer nor exposed its |
| 84 | +synthetic secret. Containers were offline, read-only, UID 1000, capability-free, |
| 85 | +no-new-privileges and without host binds/credentials. Independent image read-back |
| 86 | +matched the archive, every installed JS file and actual harness/peer/loader bytes; |
| 87 | +case inputs and container identity were retained. Published validation containers and their temporary volumes were |
| 88 | +removed after receipts were copied; the independent read-back is retained in |
| 89 | +`/private/tmp/mcpm-release-0501-20261106/cleanup-proof.json`. |
| 90 | + |
| 91 | +A first published protocol attempt omitted the pinned fixture copy and failed |
| 92 | +before starting a container; it is excluded. The corrected fresh evidence root |
| 93 | +passed. Earlier source-coverage timeout and native-harness precondition failures |
| 94 | +remain excluded under their original candidate identities. |
| 95 | + |
| 96 | +Temporary maintainer receipts: `/private/tmp/mcpm-release-0501-20261106`, |
| 97 | +`/private/tmp/mcpm-policy-122-published-0501-native-20261106/verified-final.json`, |
| 98 | +`/private/tmp/mcpm-policy-122-published-0501-protocol-v2-20261106/verified-binding.json`. |
| 99 | +Reproduce protocol checks using the [documented harness](PROTOCOL-VALIDATION.md) |
| 100 | +and integrity-verified exact npm archive. Historical candidate archives retain |
| 101 | +their own attribution in the [policy validation record](MANAGED-POLICY-VALIDATION.md). |
| 102 | + |
| 103 | +## Companion completion matrix |
| 104 | + |
| 105 | +| Repository | Target/source | Validation | Merge/publication/deployment | |
| 106 | +| --- | --- | --- | --- | |
| 107 | +| cli | v0.50.1 / `b3cc859d083cf684a5bf82cffa6a79ceb3f0ff61` | Authenticated archive/SBOM, smoke, 87 protocol, 22 native + 3 initialization cases passed | #324/#325 merged; npm/GitHub/official registry published | |
| 108 | +| guard-playground | Exact CLI 0.50.1, engine source `b3cc859`, corpus pin `329e4e14` | Sol build/sync/check, 63 tests and Chromium action/signature/UI parity passed; generated engine/corpus bytes unchanged | Astra review clear; [#32](https://github.com/getmcpm/guard-playground/pull/32) merged as `0ab8f55a6e79ba053f58f29925cffeab00b3584d`; [Pages 42172527092](https://github.com/getmcpm/guard-playground/actions/runs/42172527092) succeeded; all seven public assets read back byte-identical | |
| 109 | +| mcp-guardbench | Exact published 0.50.1, corpus `ba18d3deb4e4836920735a6fd97ca96ad836679e` | Fresh 57/57 score: recall 86.5%, FP 0%, precision 100%, exact 87.7%; zero errors/anomalies/unsupported; second clean install reproduced every verdict | Astra review clear; [#21](https://github.com/getmcpm/mcp-guardbench/pull/21) merged as `5315197b01379b1a2c5050cf1848f64c81c2b499` after scoring CI passed | |
| 110 | + |
| 111 | +Both companion PRs passed CI before merge. The |
| 112 | +[public playground](https://getmcpm.github.io/guard-playground/) serves version |
| 113 | +0.50.1 metadata/source `b3cc859` and engine SHA-256 |
| 114 | +`376e77f182351c0826f12163ba334f31914de13ba923fc8c572e1efe1072ba3a`. |
| 115 | +Metadata, engine, corpus and all four UI assets match the tested commit exactly; |
| 116 | +public receipt `/private/tmp/mcpm-playground-0501-public-20261106/verified-public.json`. |
| 117 | +Benchmark [versioned results](https://github.com/getmcpm/mcp-guardbench/tree/main/results/mcpm-0.50.1-2026-11-06) |
| 118 | +retain the exact npm integrity/archive, installed-file manifest, input/adapter/ |
| 119 | +runner/Node hashes and reproducible install lock. Corpus and historical scores |
| 120 | +were preserved. Companion synchronization is complete. Detector parity/benchmarking does not establish |
| 121 | +relay, native activation or OS enforcement. No fresh macOS/Windows native editor |
| 122 | +or real provider/model suite was run for this archive. Overall policy, session, |
| 123 | +remote/MDM/registry/other-project selection remain unknown, and snapshots are not |
| 124 | +a concurrent policy-tree transaction. Upgrading does not repair existing wrappers |
| 125 | +or stop already-running servers. |
| 126 | + |
| 127 | +The bounded Claude Code #122 MVP shipped; broader #141 host coverage remains |
| 128 | +open. #156 remains next in the queue; it was not started during this release-first |
| 129 | +closeout. Conditional #157/#159 retain the research backlog's consumer/demand |
| 130 | +stop rules. |
0 commit comments