Skip to content

Commit 1b573fc

Browse files
authored
docs: record verified v0.50.1 release and companion sync (#326)
1 parent b3cc859 commit 1b573fc

4 files changed

Lines changed: 153 additions & 21 deletions

File tree

‎docs/BACKLOG.md‎

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@ used the published v0.49.0 archive.
1717

1818
| Order | ID | Scope/status | Dependency |
1919
| --- | --- | --- | --- |
20-
| 1 | #122 | Existing: managed-policy-aware setup | #155; one pinned host/native policy fixture set |
21-
| 2 | #156 | New: local skill/plugin change-review receipt; experiment | #141; one consumer; fixed file/host scope |
22-
| 3 | #157 | New: pinned external-report ingestion; conditional | #156 or a concrete multi-tool support case |
23-
| 4 | #140 | Existing: remaining Skills manifest/byte verification | Actual consumer; pinned beta revision |
24-
| 5 | #158 | New: native artifact activation/drift measurement; conditional | #156 demand; disposable profile/host access |
20+
| 1 | #156 | New: local skill/plugin change-review receipt; experiment | #141; one consumer; fixed file/host scope |
21+
| 2 | #157 | New: pinned external-report ingestion; conditional | #156 or a concrete multi-tool support case |
22+
| 3 | #140 | Existing: remaining Skills manifest/byte verification | Actual consumer; pinned beta revision |
23+
| 4 | #158 | New: native artifact activation/drift measurement; conditional | #156 demand; disposable profile/host access |
2524
| Later | #159 | New: offline ACP v1 evidence spike; demand-gated | One real trace consumer; stable interpretation |
2625
| Later | #95 | Existing: hook confinement GO/NO-GO experiment | Measured cohort and restrictive policy |
2726

@@ -65,7 +64,7 @@ writes, recursive whole-home discovery or native policy reimplementation.
6564

6665
## #122 — Managed-policy-aware setup and wrap plan
6766

68-
**Status:** built by Sol and reviewed/fixed by Astra; merged in PR #324 but not released. The pre-follow-up candidate passed 19 native cases and 87 protocol comparisons. The home-ancestor and empty-current-config follow-up candidate is verified and Astra reviewed: 22 native cases, three packed initialization cases and 87 protocol checks passed. PR/CI, merge and release are pending. See [projection and limits](MANAGED-POLICY-VALIDATION.md). **User/problem:** changing the command to a
67+
**Status:** bounded Claude Code MVP shipped in [v0.50.1](RELEASE-2026-11-06-v0.50.1.md), after #324/#325 and Astra review/fixes. Actual published archive passed 22 native policy cases, three initialization cases and 87 protocol checks. Whole-host coverage and legacy-wrapper migration limits remain explicit in the [projection record](MANAGED-POLICY-VALIDATION.md). **User/problem:** changing the command to a
6968
wrapper can change a client's allow/deny decision. **MVP:** read one supported,
7069
versioned policy source set and compare current/proposed launches before writes.
7170
Report exact reason and uncertainty; preserve native restrictions.

‎docs/MAINTAINER-WORKFLOW.md‎

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@
22

33
## Current checkpoint — 2026-11-06
44

5-
Current published CLI: **v0.50.0**. The bounded Claude Code scope inventory from
6-
project backlog #141 shipped; broader host/project coverage remains open.
7-
**#122 managed-policy-aware setup** merged in PR #324 but remains unreleased.
8-
The compatibility follow-up candidate is verified and Astra reviewed; PR/CI,
9-
merge and release are pending. Its [candidate validation](MANAGED-POLICY-VALIDATION.md)
10-
separates the earlier archive checkpoint from the verified follow-up and records
11-
the bounded profile and limits.
12-
See the [active backlog](BACKLOG.md) and
13-
[v0.50.0 release evidence](RELEASE-2026-11-06-v0.50.0.md) for the actual source,
14-
companion matrix, archive verification and proof limits. Historical native
15-
measurements belong to their named versions; this checkpoint is not a new run.
5+
Current published CLI: **v0.50.1**. The bounded Claude Code managed-policy slice
6+
from #122 shipped after #324/#325 and Astra review/fixes. Exact published archive,
7+
protocol/native evidence and companion synchronization state are in the
8+
[v0.50.1 release record](RELEASE-2026-11-06-v0.50.1.md). The
9+
[policy profile](MANAGED-POLICY-VALIDATION.md) retains whole-host uncertainty and
10+
legacy-wrapper migration limits. #156 remains next in the queue; it was not
11+
started during this release-first closeout. Conditional #157/#159 retain their
12+
consumer/demand stop rules. Broader #141 host coverage remains open.
13+
See the [active backlog](BACKLOG.md). Historical native measurements belong to
14+
their named versions; this checkpoint does not extend them to another archive.
1615

1716
## Instruction and skill loading
1817

‎docs/MANAGED-POLICY-VALIDATION.md‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
# Claude Code managed-policy preflight — candidate #122
1+
# Claude Code managed-policy preflight — bounded #122
22

3-
This candidate adds the `claude-code-2.1.296-stdio-files` projection before
3+
Available in [v0.50.1](RELEASE-2026-11-06-v0.50.1.md), after #324/#325 and
4+
Astra review/fixes. Published archive verification is in that release record;
5+
earlier candidate checkpoints below retain their own identities.
6+
7+
This release adds the `claude-code-2.1.296-stdio-files` projection before
48
Claude Code user-global stdio configuration writes. It addresses a measured
59
failure in the published 0.50.0 baseline: replacing a denied server command with
610
a relay command can bypass native exact-command denial, while replacing an
@@ -171,9 +175,9 @@ These are candidate observations, separate from the vulnerable published 0.50.0
171175
baseline and any later actual-published artifact verification. No model/provider
172176
turn, full host-policy coverage or macOS native-client result is claimed.
173177

174-
### Compatibility follow-up — release pending
178+
### Reviewed compatibility follow-up checkpoint — 2026-11-06
175179

176-
PR #324 merged the reviewed implementation, but no release was published. A later
180+
At this candidate checkpoint, PR #324 had merged and publication was held. A later
177181
review found two compatibility regressions: projects below home misclassified
178182
user settings as an unsupported ancestor, and empty current-config initialization
179183
was rejected. Both have shared-adapter regressions and narrowly scoped fixes. Node 24.20.0

‎docs/RELEASE-2026-11-06-v0.50.1.md‎

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
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

Comments
 (0)