deadbyte-mcp 0.15.58 → 0.15.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MANIFEST.SHA256 +20 -19
- package/PROVENANCE.json +8 -8
- package/README.txt +18 -18
- package/RELEASE.json +7 -7
- package/SBOM.cdx.json +2 -2
- package/TEST-MATRIX.json +1 -1
- package/bridge/package.json +1 -1
- package/package.json +1 -1
- package/scripts/bootstrap-uac-migration-r153.ps1 +8 -2
- package/scripts/issue-uac-migration-r153.mjs +1 -1
- package/scripts/r153-prepublish-identity.mjs +3 -3
- package/src/clean-activation-recovery-r153.mjs +1 -1
- package/src/uac-approval-contract-r153.mjs +1 -1
- package/src/version.mjs +1 -1
- package/test/r130-release-security-contract.test.mjs +6 -6
- package/test/r132-release-identity.test.mjs +6 -6
- package/test/r153-clean-activation-recovery.test.mjs +2 -2
- package/test/r153-staging-leaf-acl.test.mjs +47 -0
- package/test/r153-uac-approval-contract.test.mjs +2 -2
- package/test/r153-uac-launch-parameter-contract.test.mjs +1 -1
- package/test/r59-tool-surface-compat.test.mjs +1 -1
package/MANIFEST.SHA256
CHANGED
|
@@ -30,7 +30,7 @@ c814771dddac8bfb184250b868ddb6ab9f5e0e43613c04c3ed8abe09324ec4db bin/deadbyte-n
|
|
|
30
30
|
daf9cfb371bee88cafbf5597eaa507fec504dbe0b0ddd40d0c3c2e02817f49e4 bin/deadbyte-process-host.exe
|
|
31
31
|
b55d2c4490dfb875d40f29a69df2addc5d579991cb7d094674c04d369dfcfac3 bin/deadbyte-tunnel-host.exe
|
|
32
32
|
f0ce7acb1e41325cef8b6789f95bd78b6a6107423773eace57a12b49faa55095 bin/WORKER-REGISTRY.txt
|
|
33
|
-
|
|
33
|
+
8ea4e87d8cea0dba53c13dd30077936155d437e45cf593f71cd4f3610f9b8516 bridge/package.json
|
|
34
34
|
f99413d82f84c808f52d5b8696c190a9142dd08f517f5ec3e442f0769402d189 bridge/src/bridge-health-r59.mjs
|
|
35
35
|
fa0dcc4cde9c03e978c9f9dd24b62afa83f49bdada1f42ead544a9a17edd332f bridge/src/bridge.mjs
|
|
36
36
|
471f41c84c5b339cd81a708a4f36d4470e614946817ad2f9fca295dde2c83fb6 bridge/src/canonical-json-r60.mjs
|
|
@@ -1393,8 +1393,8 @@ db605a698f917c4006462596e6526fe6a9c6eff9b8409e8472fe545d4b70027c node_modules/z
|
|
|
1393
1393
|
f67a25ded944912bd4621b68df17c7c70a52aae117278c076c0aabbc32a3abba node_modules/zod/v4/mini/schemas.d.ts
|
|
1394
1394
|
51b3a7869df2d3a1bd98acb9d5b6a61bbccc7653d7a3d8fca7f0e0db7e84e284 node_modules/zod/v4/mini/schemas.js
|
|
1395
1395
|
3e3125b5a537a24c3632c1c5c09640ce7bcb3935901b127ad8ae3c37a27f133f node_modules/zod/v4/package.json
|
|
1396
|
-
|
|
1397
|
-
|
|
1396
|
+
ece225d6a1c9a60ab260762428a5d06c77e38b431dad95c90e5fb0aa349a9699 package.json
|
|
1397
|
+
08ad6734ec8cbcda2c1d98957201553f6252902f454f0b5b577bb4ce8dbff8ec PROVENANCE.json
|
|
1398
1398
|
27ca0f3c9ee3a1b6374a9c8dd98008decdd0c7659c7a569c70ad7b9734c74655 R34-BASELINE.json
|
|
1399
1399
|
0b7ec5ee347ddfa6cca59740fc7a8fe3fc5d51406265bb12189e82fa106319d2 R41-PARENT.json
|
|
1400
1400
|
bd2a789b0aab5663f0d208af2ca8e4ec98179bc8c7b57e70a962d4e06a3dcfc4 R42-PARENT.json
|
|
@@ -1403,9 +1403,9 @@ f932ef78b7a72b1bb0d7aedb5fe42fbb9951c2492eb528b72442f46ddff81a6c R44-DONORS.jso
|
|
|
1403
1403
|
731b4c559fc0d25dea701e4474f02400b27e8e3f4cac9f230d5214497d4490a9 R44-PARENT.json
|
|
1404
1404
|
d33ec5d167dd44800ba4e68372b08db43deb8d01df2ef71dd435ff004ac66c8b R45-PARENT.json
|
|
1405
1405
|
3dc607603fea511e2f428e9546a875ab7e38b6a0bbd5e803e4510de082f30804 R49-PARENT.json
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1406
|
+
2f5d490e1c17b2c2cd1cd3d2ab7842e772c145ea570cf640af728ee4f269d7c9 README.txt
|
|
1407
|
+
f54e1bd692def7c884ca276dc2a954ca7a7acc752f64b9bbb2c99ed1ca00580b RELEASE.json
|
|
1408
|
+
bb45b4a1b2e2784388be32b334c519c535902312c2a13b3856254e6632652208 SBOM.cdx.json
|
|
1409
1409
|
7c86062c4f69db3179a129d65945ccfab1b1c1c5bcc29b91383eac097d50f2aa scripts/activate-skill-creator-1.1.1.mjs
|
|
1410
1410
|
bd138fe5a64088e8e1a7a5bf6104c5b17317bdc8cf3ad8191ea00ed82ace7d9b scripts/agent-eval-r42.mjs
|
|
1411
1411
|
8d90256a6863f3bbbff02e95cb12389fc6f9e8dbcb77bf1c20c902de371425e8 scripts/archive-source-zips.mjs
|
|
@@ -1413,7 +1413,7 @@ bd138fe5a64088e8e1a7a5bf6104c5b17317bdc8cf3ad8191ea00ed82ace7d9b scripts/agent-
|
|
|
1413
1413
|
34f9318b6f4afb29948fdc5ab973edca4dfc4fbd63c9a5105478b5e95812dabf scripts/autonomous-build.ps1
|
|
1414
1414
|
075acd7616740135973497d676dcd0431f0437bdba87e4eedba4751cb148ff02 scripts/autonomous-tests.ps1
|
|
1415
1415
|
f43c5e5064fb5863ce51aca156434d8b7c493ee954b8846f41625cd7130936d8 scripts/benchmark-l0-r71.mjs
|
|
1416
|
-
|
|
1416
|
+
deb0a47edfa72a17036c1a0a45b88f63405e009452120d673bfe008dc1b6d835 scripts/bootstrap-uac-migration-r153.ps1
|
|
1417
1417
|
5d8ce87ffbe55f4737ba1ee2fa6772a8157bfa92afec9101909c0f9bead27fcb scripts/bridge-benchmark-r58.mjs
|
|
1418
1418
|
7c3f2a157f64aef9e605b5fe84d75fbdd88312f09d0ad89effb33de82aa39ab8 scripts/build-advanced-pcb-skill.mjs
|
|
1419
1419
|
70bccc3572de7e26ac91154b9d87185feab0c2dbfc4cbd40f89660e5769f53b0 scripts/build-combined-skill.mjs
|
|
@@ -1530,7 +1530,7 @@ a9d10a04324cceafafa7edc1501e8e1f8a1ae4a094d0985c8309472512529d30 scripts/gate-w
|
|
|
1530
1530
|
1a771b5b8a62d57f26762d53472ed68a3e733674b1c91e08becf0dc2e4325039 scripts/inspect-active-release-r45.mjs
|
|
1531
1531
|
de6142bd5693cf4edb8725c9c43fc77e9bdc12f5b398a757006d778d3ee3f8ed scripts/inspect-r46-active.mjs
|
|
1532
1532
|
06425d2a4004cb0ad66383c10c30aaa91bb020be2926bc76f9681a8f0827ddfc scripts/inventory-reference-dist.mjs
|
|
1533
|
-
|
|
1533
|
+
4b1ce879a1c3076629d2d13cd0d30764f58b9701c57104020d7a52aa99a1481d scripts/issue-uac-migration-r153.mjs
|
|
1534
1534
|
7ea8cf6bf094a1612603bc716228a3753e5f06fca8a0684d2da15a04d0710c64 scripts/list-source-zips.mjs
|
|
1535
1535
|
4326526cbff265bb8ec2d38af1825b0bac227e3506437fff6e13f9cdb20dab33 scripts/npm-artifact-identity-r61.mjs
|
|
1536
1536
|
2598a67b08caaef2ff75fc52eca1e268c83b79c50048202e318904952379aa4a scripts/npm-prepublish-contract-r74.mjs
|
|
@@ -1561,7 +1561,7 @@ f682cb041e9dec3e4e99c87e9650e35c9f10d51cba458ec7040bbedc8b22f987 scripts/perfor
|
|
|
1561
1561
|
6767992de09ed6f95f74a14b743bb5e5660fa63cbd2d5a6cdc2a14be3531c8cc scripts/promote-local-d-generation.ps1
|
|
1562
1562
|
c4e081f95bc82e45a06993c34d47f10083640e794e2e3ccc26933fcf597b0c50 scripts/public-baseline-r58.mjs
|
|
1563
1563
|
615c670581ee3e8a30095c0af63c24edbec01db74c7370069e1a486c53989968 scripts/public-surface-r58.mjs
|
|
1564
|
-
|
|
1564
|
+
1f1bf8d98f7ab270cf390e21b2fce199fcb157ceb436755273241d436de0596e scripts/r153-prepublish-identity.mjs
|
|
1565
1565
|
e19a1d591ccd07af2e87d930ce23b0cc9b814bc2a395408045543847154097d7 scripts/r40-compact-ledger-probe.mjs
|
|
1566
1566
|
68b9a60aca3f3e3e9ec239710f8368594ef3c8a98fff0816d2e9a7950df48287 scripts/r47-core-failures.mjs
|
|
1567
1567
|
75f821cc44f8c31f67de0b28b64021d9fb160984a597e704b29c33f9f3a41dde scripts/r47-syntax-check.mjs
|
|
@@ -1713,7 +1713,7 @@ da5181cec30034ddf089baa5358becb5651da238a2e7cf0888007a4c60b4ea6b src/capability
|
|
|
1713
1713
|
8348e01ec8dcd3171dab02399a2aa48cf09db2d283da25bfdde721a5c3f44b03 src/capability-ledger.mjs
|
|
1714
1714
|
dd84aab65c73906037390b07f1d9e3e118511b21145e8ba914f98d6f2a153baf src/capability-resolver.mjs
|
|
1715
1715
|
b3a669da30bf2d99cd5a912bdacb234b66c90215183a2aeeb3c01c91f1a55c64 src/capability-snapshot.mjs
|
|
1716
|
-
|
|
1716
|
+
2c065a1d1d6b9e720073250e3e51db4d4b5b43b7e7276de370f04795a1fffb47 src/clean-activation-recovery-r153.mjs
|
|
1717
1717
|
94e5aeff2453cdc0239aee4d547dbbefee183c71933cb84e5e8a418fa99bc1e8 src/codex-app-server-r44.mjs
|
|
1718
1718
|
c4e07aa6818cd989c43ce8d027dc7d467e05c8e2fe96b5548eea291285d3bbb1 src/coding-mcp-tools.mjs
|
|
1719
1719
|
059b4bef2ae6a6c2d7a706c463bea6e49d364faeb619372a429ba36c53004ab7 src/coding-output-contracts.mjs
|
|
@@ -1890,16 +1890,16 @@ bac271c6f5218752ac5ff4decf5249e3893ddb35c63c092ce17238c27fc4d35b src/trust-init
|
|
|
1890
1890
|
4d934281a72922fabde7d6e988655a6d095eb3a89abf12e9b99fecc3046e3d62 src/trust.mjs
|
|
1891
1891
|
c99c2402fb0df4f68634fa906eb198c551c55dad9f0921a7b8ed6e33d503884e src/tunnel-stdio-compat-smoke.mjs
|
|
1892
1892
|
aa765e9a28c69ff58a5b5a0d29b49ea181af4db9076633b102dbca25861e708e src/tunnel-stdio-compat.mjs
|
|
1893
|
-
|
|
1893
|
+
866f61da7296f9a97e0cd6361c3d0cd19213ac5e3cd55c450047f35695074f86 src/uac-approval-contract-r153.mjs
|
|
1894
1894
|
642cb67d1854850e336ee73fbd71b329056bdcbdab35cea19c1a995a155ff5d9 src/verifier-cli.mjs
|
|
1895
1895
|
8f818a4852ce3be3a380cd4736c3073a7a3e0e45cd7c7ca90588a6b843d3d022 src/verifier.mjs
|
|
1896
|
-
|
|
1896
|
+
d3a013dc7456463ba443661428c8d09ba099d2a40501b0478fc3f3fbcf905527 src/version.mjs
|
|
1897
1897
|
acf5f5a57779bc0529f9db3d821f0ef1b53d22063aa237041348c1ca444ea677 src/windows-powershell-environment.mjs
|
|
1898
1898
|
7e09c57a97289360aabfaf3d531208e54872efbfb3182f3c18203d2cb88c46b5 src/worker-registry.mjs
|
|
1899
1899
|
76361d5ae9a710273cf64a7525082197b692236bf23689875e5fd1ef4aa96d2b src/worker-scheduler.mjs
|
|
1900
1900
|
4da1b32f5198bb089bc68b7eb6de21ea296678b5020018a73742bf0df57d62fa src/workload-substrate.mjs
|
|
1901
1901
|
1bd637e7634ca0259791c5108fcf324554f70b1db49e5eac3505287c04bbc3be STABILIZATION-PROGRESS.md
|
|
1902
|
-
|
|
1902
|
+
b5449638038a56ca4e34963ca526439a6308cc6e4f2834ef016a2de2116ec422 TEST-MATRIX.json
|
|
1903
1903
|
e4f1fb97545f23772ddff28ad3f9954a4714f9854062fca62e0e12c1cb2ec4ae test/agent-backend-r44.test.mjs
|
|
1904
1904
|
2a78c818058b25efdc143a3a97c832da231ccd6ff9d90c7796d681a0251b85c4 test/agent-crash-child.mjs
|
|
1905
1905
|
d9461ab7c118ee75d37a2d6f5e637d7e43505af6a9ad8c7ddafffc8ace185a5b test/agent-crash-worker.mjs
|
|
@@ -2153,9 +2153,9 @@ ce163ee9f288e30a213636e2267b8630016ef8a170f12286e8cdd44219bdab32 test/r124-live
|
|
|
2153
2153
|
17475b51e416ae678f959f8975fab8497eb7c57d13e36cac8656c0e1f7424c0c test/r126-restore-policy-envelope.test.mjs
|
|
2154
2154
|
1721d4bd3bb58c10ad9d86b69ad1d993ec5a1e6315c95b28fa50ab67d4ca302a test/r127-restore-append-policy-boundary.test.mjs
|
|
2155
2155
|
b3d3dda398c94d18e2e156bde65d1338000233407b435134ba0c16175d96620b test/r129-sdk-security-baseline.test.mjs
|
|
2156
|
-
|
|
2156
|
+
772b9c88cd1d2bbcdbbe3e4f671526315edbeb889f67981d9ec158ce9162124d test/r130-release-security-contract.test.mjs
|
|
2157
2157
|
bb7963baf412ec0f5aca183f6dd98eda9026fe763017f9af595581b521ae6cb7 test/r131-installed-manifest-boundary.test.mjs
|
|
2158
|
-
|
|
2158
|
+
fed899734017d1ff871c43b4ece957422bbfb94b4aeabbebc6548cf6f17e1345 test/r132-release-identity.test.mjs
|
|
2159
2159
|
acd236a4d8ba035007bde4166a521b8d4e6044f58c52c0bae9cb42fa75338533 test/r135-autonomous-scope.test.mjs
|
|
2160
2160
|
3fcf657aae1f8466abc5ab82bb5a619966ea9b8a33d4a95a5a5246df5bf3afa1 test/r136-scoped-command-rights.test.mjs
|
|
2161
2161
|
e0c466f25b35eb894166df792b71b23924610d32363756c75ff437dfdaa12a4c test/r136-scoped-observer.test.mjs
|
|
@@ -2178,12 +2178,13 @@ ef0665adaab2a2b2d6ca8611a6335ded96b8e65a9661840acd139d3c86710e62 test/r144-cont
|
|
|
2178
2178
|
b92f914455cac010b1468cd37a31651e7d423571d0edfeb29829d2281073e1e3 test/r146-legacy-offline-policy-proof.test.mjs
|
|
2179
2179
|
32f40b649033172384267bbe8f6009dededcba81afff1e3ca51331407197fe3b test/r146-livelog-backpressure.test.mjs
|
|
2180
2180
|
77b3bfcd6fa04e21c7a04206181f7b4cbd5321f799a145859d8e84d0b984d174 test/r147-remote-request-hash.test.mjs
|
|
2181
|
-
|
|
2181
|
+
ef36f10e2da43b720b8681550f95f5f1af4f1059d233122ed04861ecb3194d1a test/r153-clean-activation-recovery.test.mjs
|
|
2182
2182
|
b1c9d788a607e579d18a1be36e0837dcc34b343bb53d55f9fb51c202af13bacd test/r153-prepublish-identity.test.mjs
|
|
2183
2183
|
ce37fc59761ceddf43fd3844b34d57f64f1c8d191ca1d6cba13b643a5e2c02ce test/r153-restricted-reused-pid.test.mjs
|
|
2184
|
-
|
|
2184
|
+
3c8d2110e869d4a6f125c9a4978c049f54424893f2317312448813ba0f19860f test/r153-staging-leaf-acl.test.mjs
|
|
2185
|
+
4a77ad57c5f06f9740fe42dcceda49047c39466d040dc1965cc311996e4c54d3 test/r153-uac-approval-contract.test.mjs
|
|
2185
2186
|
3d6a76df732eaa52b7409aa26c933f9e4d8316b64ded5cfad4202fea51b74fcd test/r153-uac-installed-manifest-contract.test.mjs
|
|
2186
|
-
|
|
2187
|
+
f75d97eaa6c7b83550eab4f1278958942b53ae25706156fe4f3cc67c242bf77b test/r153-uac-launch-parameter-contract.test.mjs
|
|
2187
2188
|
3c5c3724bce89aa1fa59fe97cc346c40a5674bb5cd6dc3e2f31b86f2d62e75e4 test/r33-closeout-regression.test.mjs
|
|
2188
2189
|
5e3700ee610442dfd7b7ae5e380263f231438be0e32790597142c41362a53c9a test/r33-finalization.test.mjs
|
|
2189
2190
|
7e419d3c1caf79bfc7407207f50e5645298f9b19d91a7d6f595af185b92cd55e test/r36-finalization.test.mjs
|
|
@@ -2249,7 +2250,7 @@ ca8e23abc89f3eadeceb4b6fdad2cb4db5a7933029ece8e8beae2c6a158876b7 test/r58-owner
|
|
|
2249
2250
|
8fc5ed1d3088facf45f9578d9ff8514c3a633f7f342d15eec316e129e7a916c0 test/r58-stale-owner.test.mjs
|
|
2250
2251
|
84be7ee7d167eb06c9f9fc178930daaa81e53a91de40bad6d7df2060bd3dd165 test/r58-windows-gate.test.mjs
|
|
2251
2252
|
76db2a4009d76b86e1da57b91a96b0d6bfeb4063bec3301ede736e2fd5832f39 test/r59-release-contract.test.mjs
|
|
2252
|
-
|
|
2253
|
+
4547f13cc32fa1316fdce26086783e0c91dd48d8170fbe956cb5352a0fd2f3ad test/r59-tool-surface-compat.test.mjs
|
|
2253
2254
|
3befd5d4dc4d8ca9e1f6cbeb9c430671e676c5696d6ee5931c2cbe3244c558a4 test/r60-authority-coherence.test.mjs
|
|
2254
2255
|
60577e231c7d164f57a3960c574d3e369ca140d9dbc477b2444fa62dbf224e51 test/r60-authority-enforcement.test.mjs
|
|
2255
2256
|
a1fa0b1e529da05f3659a33be6d36dab02f93808638cf0f458d057e9c6d1e35b test/r60-bridge-dispatch.test.mjs
|
package/PROVENANCE.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "deadbyte.provenance.v1",
|
|
3
|
-
"version": "0.15.
|
|
4
|
-
"source_model": "published 0.15.
|
|
3
|
+
"version": "0.15.59",
|
|
4
|
+
"source_model": "published 0.15.58 tarball -> isolated R153 clean activation recovery successor",
|
|
5
5
|
"signing": "ed25519",
|
|
6
|
-
"parent_tarball_sha256": "
|
|
6
|
+
"parent_tarball_sha256": "4bc53cfa6b3890b5749066cb507e8773b36d6c255192a8973dadb8546a39822e",
|
|
7
7
|
"parent_activation_status": "PRODUCTION_ACTIVE",
|
|
8
8
|
"parent_rollback_receipt_sha256": null,
|
|
9
9
|
"runtime_predecessor": {
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"manifest_sha256": "34aa8d1241cfb8bf0b5ba303bf3c06e0e9e1bf01f64457bca659d6dd4d634fdc",
|
|
12
12
|
"generation_manifest_sha256": "ff2b73410062688651abd7bc2dd7b2b8c87810a28e3808bfe1f4352a25b0e6e4"
|
|
13
13
|
},
|
|
14
|
-
"source_predecessor_manifest_file_sha256": "
|
|
15
|
-
"reproducibility": "R153 isolated successor of published 0.15.
|
|
14
|
+
"source_predecessor_manifest_file_sha256": "ec621a8a16f264f8824aa4644c914aca8f6ce57cb3578f5bce8acf2ac77fcc18",
|
|
15
|
+
"reproducibility": "R153 isolated successor of published 0.15.58 tarball SHA-256 4bc53cfa6b3890b5749066cb507e8773b36d6c255192a8973dadb8546a39822e; production runtime 0.15.45 remains immutable until exact candidate gates pass; legacy migration is one-time Windows UAC, marker-bound, and may only narrow policy while retaining all authority disarmed",
|
|
16
16
|
"public_surface_evidence": {
|
|
17
17
|
"status": "PASS",
|
|
18
18
|
"baseline_release": "v0.15.35-1b5715b276facbc0",
|
|
@@ -80,8 +80,8 @@
|
|
|
80
80
|
"parent_release_id": "v0.15.45-34aa8d1241cfb8bf",
|
|
81
81
|
"parent_manifest_sha256": "34aa8d1241cfb8bf0b5ba303bf3c06e0e9e1bf01f64457bca659d6dd4d634fdc",
|
|
82
82
|
"parent_generation_manifest_sha256": "ff2b73410062688651abd7bc2dd7b2b8c87810a28e3808bfe1f4352a25b0e6e4",
|
|
83
|
-
"source_predecessor_version": "0.15.
|
|
84
|
-
"source_predecessor_tarball_sha256": "
|
|
83
|
+
"source_predecessor_version": "0.15.58",
|
|
84
|
+
"source_predecessor_tarball_sha256": "4bc53cfa6b3890b5749066cb507e8773b36d6c255192a8973dadb8546a39822e",
|
|
85
85
|
"operator_override": {
|
|
86
86
|
"four_hour_soak": "WAIVED_BY_OPERATOR",
|
|
87
87
|
"clean_machine": "WAIVED_BY_OPERATOR",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"package_registry_activation_rollback_restore": "PENDING",
|
|
126
126
|
"stable_final_claim": false
|
|
127
127
|
},
|
|
128
|
-
"parent_registry_tarball_sha1": "
|
|
128
|
+
"parent_registry_tarball_sha1": "04cc1a1e80bcb7062ac39eee6b7bab70edd5d8c3",
|
|
129
129
|
"r62": {
|
|
130
130
|
"transaction_inventory_default_max_entries": 1024,
|
|
131
131
|
"parent_state_records_observed": 341,
|
package/README.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
DEADBYTE MCP V0.15.
|
|
1
|
+
DEADBYTE MCP V0.15.59 / R153 CLEAN ACTIVATION RECOVERY
|
|
2
2
|
=========================
|
|
3
3
|
|
|
4
4
|
AUTHENTICATED MACHINE TRUTH + DURABLE AGENT + CODING + AUTONOMOUS PRODUCTION ENGINE
|
|
@@ -16,12 +16,12 @@ check `--version` before issuing a stateful command. The compatibility CMD
|
|
|
16
16
|
fails with an explanation when npm is detected rather than forwarding the
|
|
17
17
|
wrong command to the controller.
|
|
18
18
|
|
|
19
|
-
npx -y deadbyte-mcp@0.15.
|
|
20
|
-
npx -y deadbyte-mcp@0.15.
|
|
21
|
-
npx -y deadbyte-mcp@0.15.
|
|
22
|
-
npx -y deadbyte-mcp@0.15.
|
|
23
|
-
npx -y deadbyte-mcp@0.15.
|
|
24
|
-
npx -y deadbyte-mcp@0.15.
|
|
19
|
+
npx -y deadbyte-mcp@0.15.59 mcp
|
|
20
|
+
npx -y deadbyte-mcp@0.15.59 remote
|
|
21
|
+
npx -y deadbyte-mcp@0.15.59 remote status
|
|
22
|
+
npx -y deadbyte-mcp@0.15.59 remote restart
|
|
23
|
+
npx -y deadbyte-mcp@0.15.59 audit status
|
|
24
|
+
npx -y deadbyte-mcp@0.15.59 audit verify
|
|
25
25
|
|
|
26
26
|
MAJOR MCP CLIENT STDIO CONFIGS
|
|
27
27
|
-------------------------------
|
|
@@ -32,7 +32,7 @@ CLAUDE DESKTOP
|
|
|
32
32
|
"mcpServers": {
|
|
33
33
|
"deadbyte": {
|
|
34
34
|
"command": "npx",
|
|
35
|
-
"args": ["-y", "deadbyte-mcp@0.15.
|
|
35
|
+
"args": ["-y", "deadbyte-mcp@0.15.59", "mcp"]
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -44,7 +44,7 @@ Save as .cursor/mcp.json:
|
|
|
44
44
|
"mcpServers": {
|
|
45
45
|
"deadbyte": {
|
|
46
46
|
"command": "npx",
|
|
47
|
-
"args": ["-y", "deadbyte-mcp@0.15.
|
|
47
|
+
"args": ["-y", "deadbyte-mcp@0.15.59", "mcp"]
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -57,7 +57,7 @@ Save as .vscode/mcp.json:
|
|
|
57
57
|
"deadbyte": {
|
|
58
58
|
"type": "stdio",
|
|
59
59
|
"command": "npx",
|
|
60
|
-
"args": ["-y", "deadbyte-mcp@0.15.
|
|
60
|
+
"args": ["-y", "deadbyte-mcp@0.15.59", "mcp"]
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -67,7 +67,7 @@ Add to the Codex MCP configuration:
|
|
|
67
67
|
|
|
68
68
|
[mcp_servers.deadbyte]
|
|
69
69
|
command = "npx"
|
|
70
|
-
args = ["-y", "deadbyte-mcp@0.15.
|
|
70
|
+
args = ["-y", "deadbyte-mcp@0.15.59", "mcp"]
|
|
71
71
|
|
|
72
72
|
The `mcp` command is the quiet stdio server entry for local MCP clients; stdout is reserved for MCP.
|
|
73
73
|
The remote CLI invokes the stable active-release PowerShell launcher directly with shell=false.
|
|
@@ -356,7 +356,7 @@ CONTROLLER
|
|
|
356
356
|
----------
|
|
357
357
|
Primary operator entry point:
|
|
358
358
|
|
|
359
|
-
npx -y deadbyte-mcp@0.15.
|
|
359
|
+
npx -y deadbyte-mcp@0.15.59 remote
|
|
360
360
|
|
|
361
361
|
The legacy CMD entry remains compatibility-only for R33 rollback safety.
|
|
362
362
|
|
|
@@ -417,7 +417,7 @@ MCP CLIENT CONFIGURATION
|
|
|
417
417
|
------------------------
|
|
418
418
|
The local stdio entry point is quiet and suitable for MCP hosts:
|
|
419
419
|
|
|
420
|
-
npx -y deadbyte-mcp@0.15.
|
|
420
|
+
npx -y deadbyte-mcp@0.15.59 mcp
|
|
421
421
|
|
|
422
422
|
CLAUDE DESKTOP
|
|
423
423
|
Use the standard local-server entry in claude_desktop_config.json:
|
|
@@ -426,7 +426,7 @@ Use the standard local-server entry in claude_desktop_config.json:
|
|
|
426
426
|
"mcpServers": {
|
|
427
427
|
"deadbyte": {
|
|
428
428
|
"command": "npx",
|
|
429
|
-
"args": ["-y", "deadbyte-mcp@0.15.
|
|
429
|
+
"args": ["-y", "deadbyte-mcp@0.15.59", "mcp"]
|
|
430
430
|
}
|
|
431
431
|
}
|
|
432
432
|
}
|
|
@@ -439,7 +439,7 @@ Create .cursor/mcp.json:
|
|
|
439
439
|
"deadbyte": {
|
|
440
440
|
"type": "stdio",
|
|
441
441
|
"command": "npx",
|
|
442
|
-
"args": ["-y", "deadbyte-mcp@0.15.
|
|
442
|
+
"args": ["-y", "deadbyte-mcp@0.15.59", "mcp"]
|
|
443
443
|
}
|
|
444
444
|
}
|
|
445
445
|
}
|
|
@@ -452,7 +452,7 @@ Create .vscode/mcp.json:
|
|
|
452
452
|
"deadbyte": {
|
|
453
453
|
"type": "stdio",
|
|
454
454
|
"command": "npx",
|
|
455
|
-
"args": ["-y", "deadbyte-mcp@0.15.
|
|
455
|
+
"args": ["-y", "deadbyte-mcp@0.15.59", "mcp"]
|
|
456
456
|
}
|
|
457
457
|
}
|
|
458
458
|
}
|
|
@@ -462,9 +462,9 @@ Add this to ~/.codex/config.toml:
|
|
|
462
462
|
|
|
463
463
|
[mcp_servers.deadbyte]
|
|
464
464
|
command = "npx"
|
|
465
|
-
args = ["-y", "deadbyte-mcp@0.15.
|
|
465
|
+
args = ["-y", "deadbyte-mcp@0.15.59", "mcp"]
|
|
466
466
|
|
|
467
|
-
The remote device path remains `npx -y deadbyte-mcp@0.15.
|
|
467
|
+
The remote device path remains `npx -y deadbyte-mcp@0.15.59 remote`. Remote public MCP uses the
|
|
468
468
|
verified HTTPS named-tunnel URL selected by the active generation; do not commit a private device
|
|
469
469
|
URL or tunnel token into a repository.
|
|
470
470
|
|
package/RELEASE.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "deadbyte.release.v1",
|
|
3
3
|
"name": "deadbyte-mcp",
|
|
4
|
-
"version": "0.15.
|
|
4
|
+
"version": "0.15.59",
|
|
5
5
|
"train": "R153",
|
|
6
6
|
"label": "R153 CLEAN ACTIVATION RECOVERY",
|
|
7
7
|
"protocol_revision": "2026-07-28",
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
"generation_manifest_sha256": "ff2b73410062688651abd7bc2dd7b2b8c87810a28e3808bfe1f4352a25b0e6e4"
|
|
20
20
|
},
|
|
21
21
|
"source_predecessor": {
|
|
22
|
-
"version": "0.15.
|
|
23
|
-
"source_path": "C:\\Users\\DEADBYTE\\.deadbyte-mcp\\evidence\\npm-publication\\0.15.
|
|
22
|
+
"version": "0.15.58",
|
|
23
|
+
"source_path": "C:\\Users\\DEADBYTE\\.deadbyte-mcp\\evidence\\npm-publication\\0.15.58\\deadbyte-mcp-0.15.58.tgz",
|
|
24
24
|
"release_status": "REGISTRY_PUBLISHED",
|
|
25
|
-
"tarball_sha256": "
|
|
25
|
+
"tarball_sha256": "4bc53cfa6b3890b5749066cb507e8773b36d6c255192a8973dadb8546a39822e"
|
|
26
26
|
},
|
|
27
27
|
"consolidation": {
|
|
28
28
|
"frontend_status_vocabulary": true,
|
|
@@ -417,9 +417,9 @@
|
|
|
417
417
|
"stable_final_claim": false
|
|
418
418
|
},
|
|
419
419
|
"r153": {
|
|
420
|
-
"release_candidate_version": "0.15.
|
|
421
|
-
"source_predecessor_version": "0.15.
|
|
422
|
-
"source_predecessor_tarball_sha256": "
|
|
420
|
+
"release_candidate_version": "0.15.59",
|
|
421
|
+
"source_predecessor_version": "0.15.58",
|
|
422
|
+
"source_predecessor_tarball_sha256": "4bc53cfa6b3890b5749066cb507e8773b36d6c255192a8973dadb8546a39822e",
|
|
423
423
|
"production_predecessor_version": "0.15.45",
|
|
424
424
|
"startup_order": "LOCK_MARKER_RECONCILE_ACTIVATE_CLAIM_START",
|
|
425
425
|
"stale_marker_reconciliation": "PASS_FOCUSED_CONTENT_CAS",
|
package/SBOM.cdx.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.6",
|
|
4
|
-
"serialNumber": "urn:cdx:deadbyte-mcp:r153:0.15.
|
|
4
|
+
"serialNumber": "urn:cdx:deadbyte-mcp:r153:0.15.59",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
7
|
"component": {
|
|
8
8
|
"type": "application",
|
|
9
9
|
"name": "deadbyte-mcp",
|
|
10
|
-
"version": "0.15.
|
|
10
|
+
"version": "0.15.59"
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
13
|
"components": [
|
package/TEST-MATRIX.json
CHANGED
package/bridge/package.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deadbyte-mcp",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.59",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Authenticated MCP agentic runtime with signed skills, persistent model backends, identity-bound remote devices, durable job supervision, immutable release slots, and separately revocable machine authority.",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
param(
|
|
2
|
-
[Parameter(Mandatory=$true)][ValidateSet('0.15.
|
|
2
|
+
[Parameter(Mandatory=$true)][ValidateSet('0.15.59')][string]$ExpectedVersion,
|
|
3
3
|
[Parameter(Mandatory=$true)][string]$StateRoot,
|
|
4
4
|
[Parameter(Mandatory=$true)][string]$TarballPath,
|
|
5
5
|
[Parameter(Mandatory=$true)][ValidatePattern('^[0-9a-f]{64}$')][string]$ExpectedTarballSha256,
|
|
@@ -99,7 +99,7 @@ if ($LASTEXITCODE -ne 0) { throw 'R153 protected staging initial ACL normalizati
|
|
|
99
99
|
& $icacls $prefix '/setowner' '*S-1-5-32-544' '/T' '/C' | Out-Null
|
|
100
100
|
if ($LASTEXITCODE -ne 0) { throw 'R153 protected staging initial owner normalization failed' }
|
|
101
101
|
|
|
102
|
-
$metadataUri = 'https://registry.npmjs.org/deadbyte-mcp/0.15.
|
|
102
|
+
$metadataUri = 'https://registry.npmjs.org/deadbyte-mcp/0.15.59'
|
|
103
103
|
$tagsUri = 'https://registry.npmjs.org/-/package/deadbyte-mcp/dist-tags'
|
|
104
104
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
|
105
105
|
$metadata = Invoke-RestMethod -UseBasicParsing -Uri $metadataUri -Method Get -TimeoutSec 30
|
|
@@ -184,6 +184,12 @@ if ($actual.Count -ne $expected.Count) { throw 'R153 staged package file-count m
|
|
|
184
184
|
if ($LASTEXITCODE -ne 0) { throw 'R153 protected staging final ACL normalization failed' }
|
|
185
185
|
& $icacls $prefix '/setowner' '*S-1-5-32-544' '/T' '/C' | Out-Null
|
|
186
186
|
if ($LASTEXITCODE -ne 0) { throw 'R153 protected staging final owner normalization failed' }
|
|
187
|
+
# /inheritance:r with /T strips inherited Allow ACEs from leaf files.
|
|
188
|
+
# The directory OI/CI grant above does not become a direct leaf ACE on Windows.
|
|
189
|
+
# Restore direct access for Administrators and SYSTEM on every existing member;
|
|
190
|
+
# never grant Users/Everyone, and independently re-hash all package files below.
|
|
191
|
+
& $icacls $prefix '/grant' '*S-1-5-32-544:(F)' '*S-1-5-18:(F)' '/T' '/C' | Out-Null
|
|
192
|
+
if ($LASTEXITCODE -ne 0) { throw 'R153 protected staging leaf ACL restoration failed' }
|
|
187
193
|
|
|
188
194
|
# Re-read every manifest-bound byte after ACL normalization. The first
|
|
189
195
|
# candidate JavaScript below cannot run against bytes changed in the ACL gap.
|
|
@@ -45,7 +45,7 @@ async function main(){
|
|
|
45
45
|
if(trust.trusted!==true)fail('candidate not R89 protected');
|
|
46
46
|
const pkg=JSON.parse((await read(path.join(root,'package.json'))).toString('utf8'));
|
|
47
47
|
const rel=JSON.parse((await read(path.join(root,'RELEASE.json'))).toString('utf8'));
|
|
48
|
-
if(pkg.version!=='0.15.
|
|
48
|
+
if(pkg.version!=='0.15.59'||rel.version!==pkg.version)fail('candidate release identity mismatch');
|
|
49
49
|
const pointer=parseActivePointer((await read(path.join(state,'active-release.json'))).toString('utf8'));
|
|
50
50
|
if(pointer.version!=='0.15.45'||rel.parent?.release_id!==pointer.release_id||
|
|
51
51
|
rel.parent?.manifest_sha256!==pointer.manifest_sha256||
|
|
@@ -6,9 +6,9 @@ import {fileURLToPath} from 'node:url';
|
|
|
6
6
|
const defaultRoot=path.resolve(path.dirname(fileURLToPath(import.meta.url)),'..');
|
|
7
7
|
const hex64=/^[0-9a-f]{64}$/;
|
|
8
8
|
const EXPECTED=Object.freeze({
|
|
9
|
-
candidateVersion:'0.15.
|
|
10
|
-
sourceVersion:'0.15.
|
|
11
|
-
sourceSha256:'
|
|
9
|
+
candidateVersion:'0.15.59', train:'R153',
|
|
10
|
+
sourceVersion:'0.15.58',
|
|
11
|
+
sourceSha256:'4bc53cfa6b3890b5749066cb507e8773b36d6c255192a8973dadb8546a39822e',
|
|
12
12
|
runtimeVersion:'0.15.45',
|
|
13
13
|
runtimeReleaseId:'v0.15.45-34aa8d1241cfb8bf',
|
|
14
14
|
runtimeManifest:'34aa8d1241cfb8bf0b5ba303bf3c06e0e9e1bf01f64457bca659d6dd4d634fdc',
|
|
@@ -32,7 +32,7 @@ export function classifyLegacyMigration(input){
|
|
|
32
32
|
if(!input.pointer||input.pointer.version!=='0.15.45'||
|
|
33
33
|
!HEX64.test(String(input.pointer.manifest_sha256??''))||!HEX64.test(String(input.pointer.generation_manifest_sha256??'')))
|
|
34
34
|
return reject('predecessor identity invalid',subject);
|
|
35
|
-
if(!input.candidate||input.candidate.version!=='0.15.
|
|
35
|
+
if(!input.candidate||input.candidate.version!=='0.15.59'||
|
|
36
36
|
!HEX64.test(String(input.candidate.manifest_sha256??''))||!HEX64.test(String(input.candidate.tarball_sha256??'')))
|
|
37
37
|
return reject('candidate identity invalid',subject);
|
|
38
38
|
if(PLANES.some(plane=>!HEX64.test(String(input.policySha256?.[plane]??''))))
|
|
@@ -58,7 +58,7 @@ export function uacReceiptSubject(input){
|
|
|
58
58
|
const candidate=windowsAbsolute(input.candidateRoot,'candidate root');
|
|
59
59
|
if(!candidate.startsWith('c:\\program files\\')||candidate==='c:\\program files\\')
|
|
60
60
|
throw new Error('UAC migration requires a protected candidate installation');
|
|
61
|
-
if(input.candidateVersion!=='0.15.
|
|
61
|
+
if(input.candidateVersion!=='0.15.59')throw new Error('UAC migration candidate identity unsupported');
|
|
62
62
|
const hashes=['candidateManifestSha256','tarballSha256','markerReceiptSha256','predecessorPointerSha256',
|
|
63
63
|
'preflightSubjectSha256','nodeSha256','deployScriptSha256','nonce'];
|
|
64
64
|
for(const key of hashes)if(!HEX64.test(String(input[key]??'')))throw new Error('UAC approval hash/nonce invalid: '+key);
|
package/src/version.mjs
CHANGED
|
@@ -13,15 +13,15 @@ test('R130 security patch has a new immutable package identity and truthful sour
|
|
|
13
13
|
read('SBOM.cdx.json'),read('package-lock.json'),read('TEST-MATRIX.json')]);
|
|
14
14
|
assert.equal(pkg.name,'deadbyte-mcp');
|
|
15
15
|
for(const actual of [pkg.version,release.version,provenance.version,matrix.version,bom.metadata.component.version,lock.version,lock.packages[''].version,DEADBYTE_VERSION])
|
|
16
|
-
assert.equal(actual,'0.15.
|
|
16
|
+
assert.equal(actual,'0.15.59');
|
|
17
17
|
assert.equal(release.train,'R153');
|
|
18
18
|
assert.equal(matrix.train,'R153');
|
|
19
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
20
|
-
assert.match(release.source_predecessor.source_path,/0\.15\.
|
|
19
|
+
assert.equal(release.source_predecessor.version,'0.15.58');
|
|
20
|
+
assert.match(release.source_predecessor.source_path,/0\.15\.58/);
|
|
21
21
|
assert.equal(release.runtime_predecessor.version,'0.15.45');
|
|
22
|
-
assert.equal(provenance.source_predecessor_tarball_sha256,'
|
|
23
|
-
assert.equal(provenance.source_predecessor_version,'0.15.
|
|
24
|
-
assert.equal(provenance.source_predecessor_manifest_file_sha256,'
|
|
22
|
+
assert.equal(provenance.source_predecessor_tarball_sha256,'4bc53cfa6b3890b5749066cb507e8773b36d6c255192a8973dadb8546a39822e');
|
|
23
|
+
assert.equal(provenance.source_predecessor_version,'0.15.58');
|
|
24
|
+
assert.equal(provenance.source_predecessor_manifest_file_sha256,'ec621a8a16f264f8824aa4644c914aca8f6ce57cb3578f5bce8acf2ac77fcc18');
|
|
25
25
|
assert.equal(pkg.dependencies['@modelcontextprotocol/client'],'2.3.1');
|
|
26
26
|
assert.equal(pkg.dependencies['@modelcontextprotocol/server'],'2.3.1');
|
|
27
27
|
for(const dep of ['@modelcontextprotocol/client','@modelcontextprotocol/server'])
|
|
@@ -17,12 +17,12 @@ test('R144 package identities, R132 historic evidence and published predecessor
|
|
|
17
17
|
}
|
|
18
18
|
assert.equal(release.train,'R153');
|
|
19
19
|
assert.equal(matrix.train,'R153');
|
|
20
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
21
|
-
assert.match(release.source_predecessor.source_path,/0\.15\.
|
|
22
|
-
assert.equal(prov.source_predecessor_version,'0.15.
|
|
23
|
-
assert.equal(prov.source_predecessor_manifest_file_sha256,'
|
|
24
|
-
assert.equal(prov.parent_tarball_sha256,'
|
|
25
|
-
assert.equal(prov.parent_registry_tarball_sha1,'
|
|
20
|
+
assert.equal(release.source_predecessor.version,'0.15.58');
|
|
21
|
+
assert.match(release.source_predecessor.source_path,/0\.15\.58/);
|
|
22
|
+
assert.equal(prov.source_predecessor_version,'0.15.58');
|
|
23
|
+
assert.equal(prov.source_predecessor_manifest_file_sha256,'ec621a8a16f264f8824aa4644c914aca8f6ce57cb3578f5bce8acf2ac77fcc18');
|
|
24
|
+
assert.equal(prov.parent_tarball_sha256,'4bc53cfa6b3890b5749066cb507e8773b36d6c255192a8973dadb8546a39822e');
|
|
25
|
+
assert.equal(prov.parent_registry_tarball_sha1,'04cc1a1e80bcb7062ac39eee6b7bab70edd5d8c3');
|
|
26
26
|
assert.equal(release.runtime_predecessor.version,'0.15.45');
|
|
27
27
|
assert.equal(prov.runtime_predecessor.release_id,release.runtime_predecessor.release_id);
|
|
28
28
|
assert.equal(prov.runtime_predecessor.manifest_sha256,release.runtime_predecessor.manifest_sha256);
|
|
@@ -22,7 +22,7 @@ const planes=['process','coding','autonomous','desktop','host'];
|
|
|
22
22
|
const base=()=>({
|
|
23
23
|
stateRoot:'C:\\Users\\owner\\.deadbyte-mcp',
|
|
24
24
|
pointer:{release_id:'v0.15.45-parent',version:'0.15.45',manifest_sha256:'1'.repeat(64),generation_manifest_sha256:'2'.repeat(64)},
|
|
25
|
-
candidate:{version:'0.15.
|
|
25
|
+
candidate:{version:'0.15.59',manifest_sha256:'3'.repeat(64),tarball_sha256:'4'.repeat(64)},
|
|
26
26
|
observation:{state:'OFFLINE',local_ready:false,bridge:{alive:false},core:{alive:false},cloud:{alive:false},supervisor:{running:false},
|
|
27
27
|
authority:Object.fromEntries(planes.map(plane=>[plane,{configured:true,armed:false,reason:plane==='autonomous'?'unverified':'disarmed'}]))},
|
|
28
28
|
policySha256:Object.fromEntries(planes.map((plane,index)=>[plane,String(index+5).repeat(64)])),
|
|
@@ -55,7 +55,7 @@ test('R153 RED: UAC subject binds candidate, predecessor, policy, marker, state
|
|
|
55
55
|
issuedAt:'2026-10-23T16:00:00.000Z',expiresAt:'2026-10-23T16:10:00.000Z'});
|
|
56
56
|
assert.equal(subject.action,'narrow_legacy_policy_and_activate');
|
|
57
57
|
assert.equal(subject.marker_sha256,HEX);
|
|
58
|
-
assert.equal(subject.candidate.version,'0.15.
|
|
58
|
+
assert.equal(subject.candidate.version,'0.15.59');
|
|
59
59
|
assert.equal(subject.nonce,'b'.repeat(64));
|
|
60
60
|
assert.deepEqual(subject.allowed_authority_after,Object.fromEntries(planes.map(plane=>[plane,false])));
|
|
61
61
|
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import {readFileSync} from 'node:fs';
|
|
4
|
+
import {fileURLToPath} from 'node:url';
|
|
5
|
+
import {spawnSync} from 'node:child_process';
|
|
6
|
+
|
|
7
|
+
const bootstrap=readFileSync(fileURLToPath(new URL('../scripts/bootstrap-uac-migration-r153.ps1',import.meta.url)),'utf8');
|
|
8
|
+
|
|
9
|
+
test('R153 ACL hotfix grants direct leaf read only to Administrators and SYSTEM before rehash',()=>{
|
|
10
|
+
const start=bootstrap.indexOf("R153 protected staging final ACL normalization failed");
|
|
11
|
+
const repair=bootstrap.indexOf("'*S-1-5-32-544:(F)' '*S-1-5-18:(F)' '/T' '/C'");
|
|
12
|
+
const rehash=bootstrap.indexOf('R153 staged package post-ACL verification failed');
|
|
13
|
+
assert.ok(start>=0&&repair>start&&rehash>repair,'ACL repair must follow recursive inheritance stripping and precede independent rehash');
|
|
14
|
+
assert.match(bootstrap,/R153 protected staging leaf ACL restoration failed/);
|
|
15
|
+
assert.doesNotMatch(bootstrap.slice(start,rehash),/S-1-5-32-545:\(F\)|Everyone:\(F\)/);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('R153 Windows ACL reproduction rejects stripped leaf ACE and restores direct read', {skip:process.platform!=='win32'},()=>{
|
|
19
|
+
const ps=String.raw`$ErrorActionPreference = 'Stop'
|
|
20
|
+
$root = Join-Path $env:TEMP ('r153-native-acl-test-' + [guid]::NewGuid().ToString('N'))
|
|
21
|
+
$sid = [Security.Principal.WindowsIdentity]::GetCurrent().User.Value
|
|
22
|
+
$leaf = Join-Path $root 'child\file.txt'
|
|
23
|
+
try {
|
|
24
|
+
New-Item -ItemType Directory -Path (Split-Path -Parent $leaf) -Force | Out-Null
|
|
25
|
+
[IO.File]::WriteAllText($leaf,'read-only regression fixture')
|
|
26
|
+
& icacls.exe $root '/inheritance:r' '/grant:r' ('*'+$sid+':(OI)(CI)(F)') '/T' '/C' | Out-Null
|
|
27
|
+
if($LASTEXITCODE -ne 0){throw 'REPRO_SETUP_FAILED'}
|
|
28
|
+
$blocked = Get-FileHash -LiteralPath $leaf -Algorithm SHA256 -ErrorAction SilentlyContinue
|
|
29
|
+
if($null -ne $blocked){throw 'REPRO_DID_NOT_STRIP_LEAF_ACE'}
|
|
30
|
+
& icacls.exe $root '/grant' ('*'+$sid+':(F)') '/T' '/C' | Out-Null
|
|
31
|
+
if($LASTEXITCODE -ne 0){throw 'LEAF_REPAIR_FAILED'}
|
|
32
|
+
$restored = Get-FileHash -LiteralPath $leaf -Algorithm SHA256
|
|
33
|
+
if($null -eq $restored -or $restored.Hash.Length -ne 64){throw 'LEAF_NOT_READABLE_AFTER_REPAIR'}
|
|
34
|
+
$acl = Get-Acl -LiteralPath $leaf
|
|
35
|
+
$allow=@($acl.Access | Where-Object {$_.AccessControlType -eq 'Allow'})
|
|
36
|
+
if($allow.Count -ne 1){throw 'LEAF_HAS_UNEXPECTED_ALLOW_ACE_COUNT'}
|
|
37
|
+
if($allow[0].IdentityReference.Translate([Security.Principal.SecurityIdentifier]).Value -ne $sid){throw 'LEAF_HAS_UNEXPECTED_TRUSTEE'}
|
|
38
|
+
Write-Output 'R153_WIN32_LEAF_ACL_REPAIR_PASS'
|
|
39
|
+
} finally {
|
|
40
|
+
if(Test-Path -LiteralPath $root){Remove-Item -LiteralPath $root -Force -Recurse}
|
|
41
|
+
}`;
|
|
42
|
+
const encoded=Buffer.from(ps,'utf16le').toString('base64');
|
|
43
|
+
const result=spawnSync('powershell.exe',['-NoLogo','-NoProfile','-NonInteractive','-EncodedCommand',encoded],
|
|
44
|
+
{encoding:'utf8',timeout:30000,maxBuffer:256*1024});
|
|
45
|
+
assert.equal(result.status,0,result.stderr||result.stdout||String(result.error));
|
|
46
|
+
assert.match(result.stdout,/R153_WIN32_LEAF_ACL_REPAIR_PASS/);
|
|
47
|
+
});
|
|
@@ -4,7 +4,7 @@ import {createUacApproval,verifyUacApproval,validateApprovalWindow,requireTruste
|
|
|
4
4
|
import {readFileSync} from 'node:fs';
|
|
5
5
|
import {fileURLToPath} from 'node:url';
|
|
6
6
|
const h=(n)=>n.repeat(64);
|
|
7
|
-
const base=()=>({stateRoot:'C:\\Users\\DEADBYTE\\.deadbyte-mcp',candidateRoot:'C:\\Program Files\\DEADBYTE-R153-TEST',candidateVersion:'0.15.
|
|
7
|
+
const base=()=>({stateRoot:'C:\\Users\\DEADBYTE\\.deadbyte-mcp',candidateRoot:'C:\\Program Files\\DEADBYTE-R153-TEST',candidateVersion:'0.15.59',candidateManifestSha256:h('a'),tarballSha256:h('b'),markerReceiptSha256:h('c'),predecessorPointerSha256:h('d'),predecessorPolicySha256:{process:h('1'),coding:h('2'),autonomous:h('3'),desktop:h('4'),host:h('5')},preflightSubjectSha256:h('e'),nodeSha256:h('f'),deployScriptSha256:h('0'),nonce:h('6'),issuedAt:'2026-10-24T00:00:00.000Z',expiresAt:'2026-10-24T00:05:00.000Z'});
|
|
8
8
|
test('R153 UAC receipt carries exact no-grants narrow migration subject',()=>{
|
|
9
9
|
const x=base(),receipt=createUacApproval(x);
|
|
10
10
|
assert.equal(receipt.schema,'deadbyte.r153-uac-approval.v1');
|
|
@@ -31,7 +31,7 @@ test('R153 UAC receipt fails closed on expiration, malformed, replay-like tamper
|
|
|
31
31
|
assert.throws(()=>createUacApproval({...x,issuedAt:'not-a-date'}));
|
|
32
32
|
assert.throws(()=>createUacApproval({...x,nonce:'x'}));
|
|
33
33
|
});
|
|
34
|
-
test('R153 UAC scope only accepts protected root and exact v0.15.
|
|
34
|
+
test('R153 UAC scope only accepts protected root and exact v0.15.59',()=>{
|
|
35
35
|
assert.throws(()=>createUacApproval({...base(),candidateRoot:'C:\\Users\\DEADBYTE\\npm-cache'}),/protected/i);
|
|
36
36
|
assert.throws(()=>createUacApproval({...base(),candidateVersion:'0.15.55'}),/candidate/i);
|
|
37
37
|
assert.throws(()=>validateApprovalWindow('2026-10-24T00:00:00.000Z','2026-10-24T00:00:00.000Z','2026-10-24T00:00:00.000Z'));
|
|
@@ -45,7 +45,7 @@ test('R153 RED: mutable npx entrypoint stages exact registry package before priv
|
|
|
45
45
|
assert.doesNotMatch(script,/npm-cli\.js|npm install/i);
|
|
46
46
|
assert.match(script,/Get-FileHash -LiteralPath \$file -Algorithm SHA256/);
|
|
47
47
|
assert.match(script,/NODE_OPTIONS/);
|
|
48
|
-
assert.match(script,/https:\/\/registry\.npmjs\.org\/deadbyte-mcp\/0\.15\.
|
|
48
|
+
assert.match(script,/https:\/\/registry\.npmjs\.org\/deadbyte-mcp\/0\.15\.59/);
|
|
49
49
|
assert.match(script,/live npm registry tarball SHA-256 mismatch/);
|
|
50
50
|
assert.match(script,/live npm registry tarball integrity mismatch/);
|
|
51
51
|
assert.match(script,/DEADBYTE-R153-Stage-/);
|
|
@@ -83,7 +83,7 @@ test('R72 compact baseline permits only R64 read offset and authorized coding-on
|
|
|
83
83
|
assert.deepEqual(diff.added,[]);
|
|
84
84
|
assert.deepEqual(diff.removed,[]);
|
|
85
85
|
const packageVersion=JSON.parse(await readFile(path.join(repoRoot,'package.json'),'utf8')).version;
|
|
86
|
-
if(['0.15.41','0.15.42','0.15.43','0.15.44','0.15.45','0.15.46','0.15.47','0.15.48','0.15.49','0.15.50','0.15.51','0.15.52','0.15.53','0.15.54','0.15.55','0.15.56','0.15.57','0.15.58'].includes(packageVersion)){
|
|
86
|
+
if(['0.15.41','0.15.42','0.15.43','0.15.44','0.15.45','0.15.46','0.15.47','0.15.48','0.15.49','0.15.50','0.15.51','0.15.52','0.15.53','0.15.54','0.15.55','0.15.56','0.15.57','0.15.58','0.15.59'].includes(packageVersion)){
|
|
87
87
|
assert.deepEqual([...diff.schema_changed].sort(),['machine_fs','native_diff_preview']);
|
|
88
88
|
assert.equal(diff.unchanged.length,41);
|
|
89
89
|
const prior=baseline.tools.find(tool=>tool.name==='machine_fs');
|