deadbyte-mcp 0.15.63 → 0.15.64
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 +24 -19
- package/PROVENANCE.json +4 -4
- package/README.txt +18 -18
- package/RELEASE.json +14 -6
- package/SBOM.cdx.json +2 -2
- package/TEST-MATRIX.json +2 -2
- package/bridge/package.json +1 -1
- package/controller/deadbyte-process-policy.json +4 -4
- package/node_modules/which/CHANGELOG.md +166 -0
- package/package.json +2 -2
- package/scripts/gate-windows-r166.ps1 +57 -0
- package/scripts/npm-release-r48.mjs +5 -0
- package/scripts/npm-release-readiness-r166.mjs +37 -0
- package/src/activation-lock-r65.mjs +1 -1
- package/src/release-generation.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 +7 -7
- package/test/r153-prepublish-identity.test.mjs +1 -1
- package/test/r160-release-contract.test.mjs +5 -5
- package/test/r163-isolated-slot-rollback-restore.test.mjs +2 -2
- package/test/r165-live-cli-skew.test.mjs +2 -2
- package/test/r166-hotfix-contract.test.mjs +27 -0
- package/test/r166-release-readiness.test.mjs +10 -0
- 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
|
+
9ff9a160f9b098bab32318a880b45348d4bdf58062528a4533e24dfab755c540 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
|
|
@@ -46,7 +46,7 @@ fedd83eaf14a493db077a0a239eeb68df4e19f075c971a9ff4419bb6e5ab86e3 controller/dea
|
|
|
46
46
|
331d168750a18d2b8e351796ddbf8f9619374c707c3cea18b8b166934f8af0d3 controller/deadbyte-desktop-policy.json
|
|
47
47
|
5e8ef223b0dbc52173aaf044a075837eef8964ff0e7e16f83a595e0d17695625 controller/deadbyte-host-policy.json.example
|
|
48
48
|
6f0cc469f51444dd18211fa3346c826abeea4d2ec7a8945f0200dc5c622031ef controller/DEADBYTE-MCP.cmd
|
|
49
|
-
|
|
49
|
+
75fb431f504d9df903946a85d6484b572df3041727b737b194e55b1110629d45 controller/deadbyte-process-policy.json
|
|
50
50
|
d274b099a298c1033fea8f1e8849751693bbc0448778d619400acb82d4f53a3b controller/deadbyte-semantic-lsp-config.json
|
|
51
51
|
3023d2985f5b6e5cc7c0d08cb8b342b362c93dce7ebd4224635362194be40cf2 controller/README.TXT
|
|
52
52
|
101e613518c73c6aa31c725fe1b5f9a24c995dc9876b7b28e1f3e97ac9f8d362 DEADBYTE-MCP-R27-FINAL/R27-ADMIN-CLOSURE.json
|
|
@@ -696,6 +696,7 @@ a7d00bfd54525bc694b6e32f64c7ebcf5e6b7ae3657be5cc12767bce74654a47 node_modules/t
|
|
|
696
696
|
7b6976eec43edfa68b79a459dd089c56b7a395916dbf1a01bd11e6d86e12128f node_modules/typescript/SECURITY.md
|
|
697
697
|
1af3c68039c57e539422da82a4faada506ce6d0ea6f90e0b699d02dbcdb7a90c node_modules/typescript/ThirdPartyNoticeText.txt
|
|
698
698
|
055f0ac4eed1a1591d033d59462972968bf3483b4cc07e163589569c0fb999f0 node_modules/which/bin/node-which
|
|
699
|
+
89bc599ca0b3a119d711c62855b2e3619b734bf371ef55dcc049454313f9904e node_modules/which/CHANGELOG.md
|
|
699
700
|
4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b node_modules/which/LICENSE
|
|
700
701
|
43010039ed5e89f7186960be682b3cb5cda5ab6cdfb06cbfd4f081cf0e7b4260 node_modules/which/package.json
|
|
701
702
|
0c91f714f46006bc9a543e629a3ce3b63700fa8cfbe7c6310a0bcff2738356dd node_modules/which/README.md
|
|
@@ -1418,8 +1419,8 @@ db605a698f917c4006462596e6526fe6a9c6eff9b8409e8472fe545d4b70027c node_modules/z
|
|
|
1418
1419
|
f67a25ded944912bd4621b68df17c7c70a52aae117278c076c0aabbc32a3abba node_modules/zod/v4/mini/schemas.d.ts
|
|
1419
1420
|
51b3a7869df2d3a1bd98acb9d5b6a61bbccc7653d7a3d8fca7f0e0db7e84e284 node_modules/zod/v4/mini/schemas.js
|
|
1420
1421
|
3e3125b5a537a24c3632c1c5c09640ce7bcb3935901b127ad8ae3c37a27f133f node_modules/zod/v4/package.json
|
|
1421
|
-
|
|
1422
|
-
|
|
1422
|
+
3699f1d462584dcbf099dc6ac6f6da7e7443faa3436116f66d1acce352942bde package.json
|
|
1423
|
+
ffd38750894f30646fa7d4f68ef3d4314342dd6e891d09282fc702a15d4c1720 PROVENANCE.json
|
|
1423
1424
|
27ca0f3c9ee3a1b6374a9c8dd98008decdd0c7659c7a569c70ad7b9734c74655 R34-BASELINE.json
|
|
1424
1425
|
0b7ec5ee347ddfa6cca59740fc7a8fe3fc5d51406265bb12189e82fa106319d2 R41-PARENT.json
|
|
1425
1426
|
bd2a789b0aab5663f0d208af2ca8e4ec98179bc8c7b57e70a962d4e06a3dcfc4 R42-PARENT.json
|
|
@@ -1428,9 +1429,9 @@ f932ef78b7a72b1bb0d7aedb5fe42fbb9951c2492eb528b72442f46ddff81a6c R44-DONORS.jso
|
|
|
1428
1429
|
731b4c559fc0d25dea701e4474f02400b27e8e3f4cac9f230d5214497d4490a9 R44-PARENT.json
|
|
1429
1430
|
d33ec5d167dd44800ba4e68372b08db43deb8d01df2ef71dd435ff004ac66c8b R45-PARENT.json
|
|
1430
1431
|
3dc607603fea511e2f428e9546a875ab7e38b6a0bbd5e803e4510de082f30804 R49-PARENT.json
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1432
|
+
4f0e601ec39d7eb2c5f16b2a12aab33453cb243663caa71524e607b9be59edc7 README.txt
|
|
1433
|
+
6e1cc08629c22727c66a6e5cdf05849f024eb1bfb95fce60deb23bc006bbfe4b RELEASE.json
|
|
1434
|
+
6ec3c9451c85c52758ab3c52b8b8724c72803420728c5c6928092d6c57f99ee8 SBOM.cdx.json
|
|
1434
1435
|
7c86062c4f69db3179a129d65945ccfab1b1c1c5bcc29b91383eac097d50f2aa scripts/activate-skill-creator-1.1.1.mjs
|
|
1435
1436
|
bd138fe5a64088e8e1a7a5bf6104c5b17317bdc8cf3ad8191ea00ed82ace7d9b scripts/agent-eval-r42.mjs
|
|
1436
1437
|
8d90256a6863f3bbbff02e95cb12389fc6f9e8dbcb77bf1c20c902de371425e8 scripts/archive-source-zips.mjs
|
|
@@ -1517,6 +1518,7 @@ a917df5e741edb97a9ee554ef6942943a67c185f66e00f7aafff76ae56771979 scripts/full-r
|
|
|
1517
1518
|
3561ef391aa4097d4f1ef33538c553795352e2fac95317ca08552812ae5af4df scripts/full-regression-r60.mjs
|
|
1518
1519
|
93fd7237c1c5885294324458e2cdd7197a2240d576f00fc8640927b0a917a2be scripts/full-regression-summary-r45.mjs
|
|
1519
1520
|
ed119ef56eb0309e342cd7f585f211e9f9cef9e94840f756fedc3e72b6ebf3fa scripts/gate-windows-r160.ps1
|
|
1521
|
+
7ee7ab902fca4c604185bc7441370bbe9aac28545c866cb313d5cf6b2c2ace9a scripts/gate-windows-r166.ps1
|
|
1520
1522
|
feaecfaf78ebf20a42b17974a81777185b74344bc4717f00fde69b5e66ac3257 scripts/gate-windows-r36.ps1
|
|
1521
1523
|
75931dbb30e7d5b07bf781481849c7a583c7fe7250ac2e5d43a83e9c4764569b scripts/gate-windows-r37-0110.ps1
|
|
1522
1524
|
96c407135841b88ed713ed4984a678acfe5b19285673e0d2c35168d9bedde68c scripts/gate-windows-r38.ps1
|
|
@@ -1564,9 +1566,10 @@ de6142bd5693cf4edb8725c9c43fc77e9bdc12f5b398a757006d778d3ee3f8ed scripts/inspec
|
|
|
1564
1566
|
4870c1dba23d1f05f9302153a309ba5d42d1b08aee34eabd3361792c26b254ae scripts/npm-publication-r65.mjs
|
|
1565
1567
|
9d12d15f7c83ddf272834072ed37d618a232bd8a3fd36c339761fe08bb9380d8 scripts/npm-publish-r47.ps1
|
|
1566
1568
|
4f1a6e0f8d23bd24b066b3a2df0cae1d47822c16c754122fde78dc509d0752f8 scripts/npm-release-r47.mjs
|
|
1567
|
-
|
|
1569
|
+
dd0479f6552f8dc48abc365eeb91068e89459a647979e26d1f9ae13fbb84f050 scripts/npm-release-r48.mjs
|
|
1568
1570
|
4fb7f874cc04cd98ad677425f0aae4191b92f8b71e96db70d1fb395eb8267b93 scripts/npm-release-readiness-r163.mjs
|
|
1569
1571
|
88ea6b86973c81fb596927a9100865b7464955fd14b60677eb03f9e27f1073fa scripts/npm-release-readiness-r165.mjs
|
|
1572
|
+
7c80f9310547a5ffe779426fdce85ba8f23b1eacadf62aaf1815cdebbbec43ae scripts/npm-release-readiness-r166.mjs
|
|
1570
1573
|
c166f98c5ec30d66b1769a9a017d8c4bc56230f221d99539f64b2b597187d912 scripts/npm-release-readiness-r67.mjs
|
|
1571
1574
|
34b0448dbf7ba61ce821e53f4de0ca85aadeb44c96e689b39cf43c4801216857 scripts/npm-release-readiness-r71.mjs
|
|
1572
1575
|
8fb0e7a6222d5e2ab67f45453844e53a22958a6c3ba34833c76713a246f2e802 scripts/npm-release-readiness-r72.mjs
|
|
@@ -1703,7 +1706,7 @@ c32cb9054a1b9641ae071c00622c0054272bdb0b519ea22c4ff926a1600a2b46 scripts/worklo
|
|
|
1703
1706
|
1ee9251c743d817245e858229e1e1db4f7bebb7e5411d370d33c4777528e53e0 scripts/workload-substrate-r47-regression.mjs
|
|
1704
1707
|
546947775fac8075f48c689ea0f7bed5ea14424efd12587daead4a7df6e796df src/activation-authority-proof-r75.mjs
|
|
1705
1708
|
0fca861bfb959b6d84c4767b2f60a4e0ec2403291a6050ee7598f75d2c4c18e0 src/activation-continuity-engine-r65.mjs
|
|
1706
|
-
|
|
1709
|
+
1262bfc8408750e963710bdf31089d4fd35bb0904191eb55dccb6a49a50b32ac src/activation-lock-r65.mjs
|
|
1707
1710
|
fc05a48ac13961c2f1dee444946531ff80100a00750fb9f8e456a6d69f6e1310 src/activation-preflight-r65.mjs
|
|
1708
1711
|
9dc1154b3857446d0412002e1f0b0031c23d1768350dc9395749a7f82be337e5 src/agent-backend-r44.mjs
|
|
1709
1712
|
4e8e442497a15bce43b7d02ade497403d80b86e307473d26c172a0fba3a6d4ea src/agent-eval-r42.mjs
|
|
@@ -1871,7 +1874,7 @@ ee1104d1d77bfded8f93834226db718b6c207730c75650b040eec84aaa298078 src/r67-eviden
|
|
|
1871
1874
|
9fa1ece4d9520e24225a119d190cdc59a4a548947f629e15ebdd909adaa42b9f src/r67-regression-shards.mjs
|
|
1872
1875
|
bfc27fcd00f40a9e06b35001ba4d4e5fda49079fe9db35d7b82608f84ea4cd9e src/r70-owner-approval.mjs
|
|
1873
1876
|
afc638b797d81b16c620ca2226eacc4cb1a36562a402219cdac3376867170610 src/receipt.mjs
|
|
1874
|
-
|
|
1877
|
+
a8a0d32f261e570802eae6358b0fde47f5b86bc3565e64020905373bb84d6ab2 src/release-generation.mjs
|
|
1875
1878
|
7927e0c68a53439618b822985c676ff56cca37f27b7ff11f51b792ab8bfe310c src/release-slot.mjs
|
|
1876
1879
|
27c738dc52c66274ad3dc8dc344a73d55da4e28a99607c3191440a5e78d49d3e src/remote-authority.mjs
|
|
1877
1880
|
3f41fa32ddeed403b5431a338821b62e0c1946a9d808f06d0edb2d9341ca0121 src/remote-console.mjs
|
|
@@ -1925,13 +1928,13 @@ aa765e9a28c69ff58a5b5a0d29b49ea181af4db9076633b102dbca25861e708e src/tunnel-std
|
|
|
1925
1928
|
34719b7d54336b2abbc152ff0c5fb2f0052d4f77753f9b7538adfdd20c804b5b src/uac-approval-contract-r153.mjs
|
|
1926
1929
|
642cb67d1854850e336ee73fbd71b329056bdcbdab35cea19c1a995a155ff5d9 src/verifier-cli.mjs
|
|
1927
1930
|
8f818a4852ce3be3a380cd4736c3073a7a3e0e45cd7c7ca90588a6b843d3d022 src/verifier.mjs
|
|
1928
|
-
|
|
1931
|
+
6a5a4462a2d7669edc87b750e7375b1cbcd56a09b61b29df9d4e28dc90c52096 src/version.mjs
|
|
1929
1932
|
3706206ecaa560b9579f57ed3df104af543331fb09a3ad0d28b217aea2d0256f src/windows-powershell-environment.mjs
|
|
1930
1933
|
7e09c57a97289360aabfaf3d531208e54872efbfb3182f3c18203d2cb88c46b5 src/worker-registry.mjs
|
|
1931
1934
|
76361d5ae9a710273cf64a7525082197b692236bf23689875e5fd1ef4aa96d2b src/worker-scheduler.mjs
|
|
1932
1935
|
4da1b32f5198bb089bc68b7eb6de21ea296678b5020018a73742bf0df57d62fa src/workload-substrate.mjs
|
|
1933
1936
|
1bd637e7634ca0259791c5108fcf324554f70b1db49e5eac3505287c04bbc3be STABILIZATION-PROGRESS.md
|
|
1934
|
-
|
|
1937
|
+
7a69929d5d7e1d7ea1c107a7e357378805cb333150098dd612b2e6eb94d44db4 TEST-MATRIX.json
|
|
1935
1938
|
e4f1fb97545f23772ddff28ad3f9954a4714f9854062fca62e0e12c1cb2ec4ae test/agent-backend-r44.test.mjs
|
|
1936
1939
|
2a78c818058b25efdc143a3a97c832da231ccd6ff9d90c7796d681a0251b85c4 test/agent-crash-child.mjs
|
|
1937
1940
|
d9461ab7c118ee75d37a2d6f5e637d7e43505af6a9ad8c7ddafffc8ace185a5b test/agent-crash-worker.mjs
|
|
@@ -2185,9 +2188,9 @@ ce163ee9f288e30a213636e2267b8630016ef8a170f12286e8cdd44219bdab32 test/r124-live
|
|
|
2185
2188
|
17475b51e416ae678f959f8975fab8497eb7c57d13e36cac8656c0e1f7424c0c test/r126-restore-policy-envelope.test.mjs
|
|
2186
2189
|
1721d4bd3bb58c10ad9d86b69ad1d993ec5a1e6315c95b28fa50ab67d4ca302a test/r127-restore-append-policy-boundary.test.mjs
|
|
2187
2190
|
b3d3dda398c94d18e2e156bde65d1338000233407b435134ba0c16175d96620b test/r129-sdk-security-baseline.test.mjs
|
|
2188
|
-
|
|
2191
|
+
f8ca77f9e642171fcfb5d53bbb1889567686458bca2b906db50ab9e967001bc0 test/r130-release-security-contract.test.mjs
|
|
2189
2192
|
bb7963baf412ec0f5aca183f6dd98eda9026fe763017f9af595581b521ae6cb7 test/r131-installed-manifest-boundary.test.mjs
|
|
2190
|
-
|
|
2193
|
+
6832662cb8a22e7888ea87521642d2563fd31a4d08a0b709d09d90fa3dbf8391 test/r132-release-identity.test.mjs
|
|
2191
2194
|
acd236a4d8ba035007bde4166a521b8d4e6044f58c52c0bae9cb42fa75338533 test/r135-autonomous-scope.test.mjs
|
|
2192
2195
|
3fcf657aae1f8466abc5ab82bb5a619966ea9b8a33d4a95a5a5246df5bf3afa1 test/r136-scoped-command-rights.test.mjs
|
|
2193
2196
|
e0c466f25b35eb894166df792b71b23924610d32363756c75ff437dfdaa12a4c test/r136-scoped-observer.test.mjs
|
|
@@ -2211,7 +2214,7 @@ b92f914455cac010b1468cd37a31651e7d423571d0edfeb29829d2281073e1e3 test/r146-lega
|
|
|
2211
2214
|
32f40b649033172384267bbe8f6009dededcba81afff1e3ca51331407197fe3b test/r146-livelog-backpressure.test.mjs
|
|
2212
2215
|
77b3bfcd6fa04e21c7a04206181f7b4cbd5321f799a145859d8e84d0b984d174 test/r147-remote-request-hash.test.mjs
|
|
2213
2216
|
ad184a83ee098eac21d523adbebfd379dcf8b87d4878c2d8dcca95cb22fdc9ee test/r153-clean-activation-recovery.test.mjs
|
|
2214
|
-
|
|
2217
|
+
fefb3fe1f8eb7412258bf6d1757736a1d4693af834a76bda397ab9b678e2ec1c test/r153-prepublish-identity.test.mjs
|
|
2215
2218
|
377b03dbb1d82ed0ddeee261a060b8173d5591dfc20a60d9ea991390a03039b4 test/r153-r60-host-repin-e2e-contract.test.mjs
|
|
2216
2219
|
e2bc7995f2ca85ce5d4a15e647c209d273d8f3871d25bd353046af66ee71bb34 test/r153-r65-signed-precondition-recovery.test.mjs
|
|
2217
2220
|
ce37fc59761ceddf43fd3844b34d57f64f1c8d191ca1d6cba13b643a5e2c02ce test/r153-restricted-reused-pid.test.mjs
|
|
@@ -2232,13 +2235,15 @@ efc195b10b5cb706c23f3a35ba8bf07e7ee23daffcb072704e5c14ffd6db26d5 test/r158-epoc
|
|
|
2232
2235
|
ff0fc541ef9b9b1565be647d2861c29afc8827504122c1df88a94d67fd2c20bd test/r159-legacy-marker-evidence.test.mjs.before-assertion-fix-20261025-120246.bak
|
|
2233
2236
|
d5d0eddc5c33ae9ea2f31d57381bf595bd85adf8048d2886f67554141f086bde test/r160-marker-proof.test.mjs
|
|
2234
2237
|
7816089ae7668f7a5776a50259638cf31dc480116f3445b70afb0b8c64dbb4d3 test/r160-package-decision-manifest.test.mjs
|
|
2235
|
-
|
|
2238
|
+
99b13e127518be5bca1161d14e613053bb39de60ff028ea1cad1033c60fdeca1 test/r160-release-contract.test.mjs
|
|
2236
2239
|
8ddebf4e81e5ccb66533694e7b04775ea9ce063ead75a17c54ce28580a55a0b4 test/r160-stable-launcher.test.mjs
|
|
2237
|
-
|
|
2240
|
+
630b20b231f2ddfcacfb40d5ce31443488cb0aec8a3270a9e685fce367ee43bf test/r163-isolated-slot-rollback-restore.test.mjs
|
|
2238
2241
|
842222cce8d50ba214a4dc97d5965d711e83a29f6660e784ccaf000f50a4213d test/r163-publish-fence.test.mjs
|
|
2239
2242
|
3473a513db884f2ab40a9e3e875ca6ef2c9e5202fc0bf4df56e388b0d55e5e84 test/r164-remote-history-skew.test.mjs
|
|
2240
|
-
|
|
2243
|
+
ff0aaa95f8c03e647b3c750fe91fd19ef06e92c3bd44b73a29db755ecd954ccb test/r165-live-cli-skew.test.mjs
|
|
2241
2244
|
e9c493435956201439479b05d301e81673457abe5c456d8a50153f3d9922daf9 test/r165-publish-fence.test.mjs
|
|
2245
|
+
425e6756afe323d358287a4d00ab6460e8398a8ee39c4a64e4be7ae191c4676f test/r166-hotfix-contract.test.mjs
|
|
2246
|
+
13c4c7792152466b6967627b44eb4aaf815e9c20b4bd67a50323420c937d532c test/r166-release-readiness.test.mjs
|
|
2242
2247
|
3c5c3724bce89aa1fa59fe97cc346c40a5674bb5cd6dc3e2f31b86f2d62e75e4 test/r33-closeout-regression.test.mjs
|
|
2243
2248
|
5e3700ee610442dfd7b7ae5e380263f231438be0e32790597142c41362a53c9a test/r33-finalization.test.mjs
|
|
2244
2249
|
7e419d3c1caf79bfc7407207f50e5645298f9b19d91a7d6f595af185b92cd55e test/r36-finalization.test.mjs
|
|
@@ -2304,7 +2309,7 @@ ca8e23abc89f3eadeceb4b6fdad2cb4db5a7933029ece8e8beae2c6a158876b7 test/r58-owner
|
|
|
2304
2309
|
8fc5ed1d3088facf45f9578d9ff8514c3a633f7f342d15eec316e129e7a916c0 test/r58-stale-owner.test.mjs
|
|
2305
2310
|
84be7ee7d167eb06c9f9fc178930daaa81e53a91de40bad6d7df2060bd3dd165 test/r58-windows-gate.test.mjs
|
|
2306
2311
|
76db2a4009d76b86e1da57b91a96b0d6bfeb4063bec3301ede736e2fd5832f39 test/r59-release-contract.test.mjs
|
|
2307
|
-
|
|
2312
|
+
14bfb9e12e51e7291f35c88c8a80e970f635d61f16dec2b5879299d3fa3605ee test/r59-tool-surface-compat.test.mjs
|
|
2308
2313
|
3befd5d4dc4d8ca9e1f6cbeb9c430671e676c5696d6ee5931c2cbe3244c558a4 test/r60-authority-coherence.test.mjs
|
|
2309
2314
|
60577e231c7d164f57a3960c574d3e369ca140d9dbc477b2444fa62dbf224e51 test/r60-authority-enforcement.test.mjs
|
|
2310
2315
|
a1fa0b1e529da05f3659a33be6d36dab02f93808638cf0f458d057e9c6d1e35b test/r60-bridge-dispatch.test.mjs
|
package/PROVENANCE.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "deadbyte.provenance.v1",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.64",
|
|
4
4
|
"source_model": "R159 unsealed development predecessor -> isolated R160 trusted recovery successor; active runtime 0.15.61 remains immutable",
|
|
5
5
|
"signing": "ed25519",
|
|
6
6
|
"parent_tarball_sha256": "b85f735f4c8be56f97ea5c78f0cc48583e8d5708a704c903596f5720e36ace83",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"manifest_sha256": "055d1ff0aa99e60bbf9e9f136b02ebd4fffb8391712560f7607cff30af94dcdf",
|
|
12
12
|
"generation_manifest_sha256": "f940e794daac2dda097a66301c4b85c4b29a2df7c669e549503c05a2a55ff6c4"
|
|
13
13
|
},
|
|
14
|
-
"source_predecessor_manifest_file_sha256": "
|
|
14
|
+
"source_predecessor_manifest_file_sha256": "b1d7ab48f8ea16178a2700610a5da1b9b60313a1c8b9a1922e57355cc512ab37",
|
|
15
15
|
"reproducibility": "R154 isolated successor of published 0.15.60 tarball SHA-256 b85f735f4c8be56f97ea5c78f0cc48583e8d5708a704c903596f5720e36ace83; production runtime 0.15.45 remains immutable until exact candidate gates pass; multi-command executable repins are one-time Windows UAC, receipt-bound, and retain all authority disarmed",
|
|
16
16
|
"public_surface_evidence": {
|
|
17
17
|
"status": "PASS",
|
|
@@ -80,8 +80,8 @@
|
|
|
80
80
|
"parent_release_id": "v0.15.61-055d1ff0aa99e60b",
|
|
81
81
|
"parent_manifest_sha256": "055d1ff0aa99e60bbf9e9f136b02ebd4fffb8391712560f7607cff30af94dcdf",
|
|
82
82
|
"parent_generation_manifest_sha256": "f940e794daac2dda097a66301c4b85c4b29a2df7c669e549503c05a2a55ff6c4",
|
|
83
|
-
"source_predecessor_version": "0.15.
|
|
84
|
-
"source_predecessor_tarball_sha256": "
|
|
83
|
+
"source_predecessor_version": "0.15.63",
|
|
84
|
+
"source_predecessor_tarball_sha256": "3bcd89c00fca98428aab6791b545bcfd0c62323349ee9de819aae4041d170406",
|
|
85
85
|
"operator_override": {
|
|
86
86
|
"four_hour_soak": "WAIVED_BY_OPERATOR",
|
|
87
87
|
"clean_machine": "WAIVED_BY_OPERATOR",
|
package/README.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
DEADBYTE MCP V0.15.
|
|
1
|
+
DEADBYTE MCP V0.15.64 / R166 TRUSTED RECOVERY AND BOUNDED ENGINEERING LOOP
|
|
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.64 mcp
|
|
20
|
+
npx -y deadbyte-mcp@0.15.64 remote
|
|
21
|
+
npx -y deadbyte-mcp@0.15.64 remote status
|
|
22
|
+
npx -y deadbyte-mcp@0.15.64 remote restart
|
|
23
|
+
npx -y deadbyte-mcp@0.15.64 audit status
|
|
24
|
+
npx -y deadbyte-mcp@0.15.64 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.64", "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.64", "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.64", "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.64", "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.64 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.64 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.64", "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.64", "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.64", "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.64", "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.64 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,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "deadbyte.release.v1",
|
|
3
3
|
"name": "deadbyte-mcp",
|
|
4
|
-
"version": "0.15.
|
|
5
|
-
"train": "
|
|
4
|
+
"version": "0.15.64",
|
|
5
|
+
"train": "R166",
|
|
6
6
|
"label": "R165 remote startup hotfix",
|
|
7
7
|
"protocol_revision": "2026-07-28",
|
|
8
8
|
"parent": {
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
"generation_manifest_sha256": "f940e794daac2dda097a66301c4b85c4b29a2df7c669e549503c05a2a55ff6c4"
|
|
20
20
|
},
|
|
21
21
|
"source_predecessor": {
|
|
22
|
-
"version": "0.15.
|
|
23
|
-
"train": "
|
|
24
|
-
"source_path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.
|
|
22
|
+
"version": "0.15.63",
|
|
23
|
+
"train": "R165",
|
|
24
|
+
"source_path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.63-r165-remote-recovery",
|
|
25
25
|
"release_status": "PUBLISHED_REGISTRY_VERIFIED",
|
|
26
26
|
"manifest_status": "VERIFIED_FINAL_BYTES",
|
|
27
|
-
"tarball_sha256": "
|
|
27
|
+
"tarball_sha256": "3bcd89c00fca98428aab6791b545bcfd0c62323349ee9de819aae4041d170406"
|
|
28
28
|
},
|
|
29
29
|
"consolidation": {
|
|
30
30
|
"frontend_status_vocabulary": true,
|
|
@@ -475,5 +475,13 @@
|
|
|
475
475
|
"production_activation": "NOT_RUN",
|
|
476
476
|
"npm_publish": "NOT_RUN",
|
|
477
477
|
"stable_final_claim": false
|
|
478
|
+
},
|
|
479
|
+
"r166": {
|
|
480
|
+
"scope": "WINDOWS_GATE_AND_SIGNED_PRECONDITION_RECOVERY_HOTFIX",
|
|
481
|
+
"production_activation": "NOT_RUN",
|
|
482
|
+
"npm_publish": "NOT_RUN",
|
|
483
|
+
"source_predecessor_version": "0.15.63",
|
|
484
|
+
"runtime_predecessor_version": "0.15.61",
|
|
485
|
+
"release_test_evidence": "EXTERNAL_ONLY"
|
|
478
486
|
}
|
|
479
487
|
}
|
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:r165:0.15.
|
|
4
|
+
"serialNumber": "urn:cdx:deadbyte-mcp:r165:0.15.64",
|
|
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.64"
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
13
|
"components": [
|
package/TEST-MATRIX.json
CHANGED
package/bridge/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "deadbyte.process-policy.v1",
|
|
3
3
|
"enabled": true,
|
|
4
|
-
"grant_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.
|
|
5
|
-
"state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.
|
|
4
|
+
"grant_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.64-r166-final\\controller\\runtime\\process-grant.json",
|
|
5
|
+
"state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.64-r166-final\\controller\\runtime\\process-state",
|
|
6
6
|
"native_host": {
|
|
7
|
-
"path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.
|
|
7
|
+
"path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.64-r166-final\\bin\\deadbyte-process-host.exe",
|
|
8
8
|
"sha256": "daf9cfb371bee88cafbf5597eaa507fec504dbe0b0ddd40d0c3c2e02817f49e4"
|
|
9
9
|
},
|
|
10
10
|
"roots": {
|
|
11
11
|
"core": {
|
|
12
|
-
"path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.
|
|
12
|
+
"path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.64-r166-final",
|
|
13
13
|
"deny_paths": [
|
|
14
14
|
"node_modules",
|
|
15
15
|
"controller/runtime",
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Changes
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
## 2.0.2
|
|
5
|
+
|
|
6
|
+
* Rename bin to `node-which`
|
|
7
|
+
|
|
8
|
+
## 2.0.1
|
|
9
|
+
|
|
10
|
+
* generate changelog and publish on version bump
|
|
11
|
+
* enforce 100% test coverage
|
|
12
|
+
* Promise interface
|
|
13
|
+
|
|
14
|
+
## 2.0.0
|
|
15
|
+
|
|
16
|
+
* Parallel tests, modern JavaScript, and drop support for node < 8
|
|
17
|
+
|
|
18
|
+
## 1.3.1
|
|
19
|
+
|
|
20
|
+
* update deps
|
|
21
|
+
* update travis
|
|
22
|
+
|
|
23
|
+
## v1.3.0
|
|
24
|
+
|
|
25
|
+
* Add nothrow option to which.sync
|
|
26
|
+
* update tap
|
|
27
|
+
|
|
28
|
+
## v1.2.14
|
|
29
|
+
|
|
30
|
+
* appveyor: drop node 5 and 0.x
|
|
31
|
+
* travis-ci: add node 6, drop 0.x
|
|
32
|
+
|
|
33
|
+
## v1.2.13
|
|
34
|
+
|
|
35
|
+
* test: Pass missing option to pass on windows
|
|
36
|
+
* update tap
|
|
37
|
+
* update isexe to 2.0.0
|
|
38
|
+
* neveragain.tech pledge request
|
|
39
|
+
|
|
40
|
+
## v1.2.12
|
|
41
|
+
|
|
42
|
+
* Removed unused require
|
|
43
|
+
|
|
44
|
+
## v1.2.11
|
|
45
|
+
|
|
46
|
+
* Prevent changelog script from being included in package
|
|
47
|
+
|
|
48
|
+
## v1.2.10
|
|
49
|
+
|
|
50
|
+
* Use env.PATH only, not env.Path
|
|
51
|
+
|
|
52
|
+
## v1.2.9
|
|
53
|
+
|
|
54
|
+
* fix for paths starting with ../
|
|
55
|
+
* Remove unused `is-absolute` module
|
|
56
|
+
|
|
57
|
+
## v1.2.8
|
|
58
|
+
|
|
59
|
+
* bullet items in changelog that contain (but don't start with) #
|
|
60
|
+
|
|
61
|
+
## v1.2.7
|
|
62
|
+
|
|
63
|
+
* strip 'update changelog' changelog entries out of changelog
|
|
64
|
+
|
|
65
|
+
## v1.2.6
|
|
66
|
+
|
|
67
|
+
* make the changelog bulleted
|
|
68
|
+
|
|
69
|
+
## v1.2.5
|
|
70
|
+
|
|
71
|
+
* make a changelog, and keep it up to date
|
|
72
|
+
* don't include tests in package
|
|
73
|
+
* Properly handle relative-path executables
|
|
74
|
+
* appveyor
|
|
75
|
+
* Attach error code to Not Found error
|
|
76
|
+
* Make tests pass on Windows
|
|
77
|
+
|
|
78
|
+
## v1.2.4
|
|
79
|
+
|
|
80
|
+
* Fix typo
|
|
81
|
+
|
|
82
|
+
## v1.2.3
|
|
83
|
+
|
|
84
|
+
* update isexe, fix regression in pathExt handling
|
|
85
|
+
|
|
86
|
+
## v1.2.2
|
|
87
|
+
|
|
88
|
+
* update deps, use isexe module, test windows
|
|
89
|
+
|
|
90
|
+
## v1.2.1
|
|
91
|
+
|
|
92
|
+
* Sometimes windows PATH entries are quoted
|
|
93
|
+
* Fixed a bug in the check for group and user mode bits. This bug was introduced during refactoring for supporting strict mode.
|
|
94
|
+
* doc cli
|
|
95
|
+
|
|
96
|
+
## v1.2.0
|
|
97
|
+
|
|
98
|
+
* Add support for opt.all and -as cli flags
|
|
99
|
+
* test the bin
|
|
100
|
+
* update travis
|
|
101
|
+
* Allow checking for multiple programs in bin/which
|
|
102
|
+
* tap 2
|
|
103
|
+
|
|
104
|
+
## v1.1.2
|
|
105
|
+
|
|
106
|
+
* travis
|
|
107
|
+
* Refactored and fixed undefined error on Windows
|
|
108
|
+
* Support strict mode
|
|
109
|
+
|
|
110
|
+
## v1.1.1
|
|
111
|
+
|
|
112
|
+
* test +g exes against secondary groups, if available
|
|
113
|
+
* Use windows exe semantics on cygwin & msys
|
|
114
|
+
* cwd should be first in path on win32, not last
|
|
115
|
+
* Handle lower-case 'env.Path' on Windows
|
|
116
|
+
* Update docs
|
|
117
|
+
* use single-quotes
|
|
118
|
+
|
|
119
|
+
## v1.1.0
|
|
120
|
+
|
|
121
|
+
* Add tests, depend on is-absolute
|
|
122
|
+
|
|
123
|
+
## v1.0.9
|
|
124
|
+
|
|
125
|
+
* which.js: root is allowed to execute files owned by anyone
|
|
126
|
+
|
|
127
|
+
## v1.0.8
|
|
128
|
+
|
|
129
|
+
* don't use graceful-fs
|
|
130
|
+
|
|
131
|
+
## v1.0.7
|
|
132
|
+
|
|
133
|
+
* add license to package.json
|
|
134
|
+
|
|
135
|
+
## v1.0.6
|
|
136
|
+
|
|
137
|
+
* isc license
|
|
138
|
+
|
|
139
|
+
## 1.0.5
|
|
140
|
+
|
|
141
|
+
* Awful typo
|
|
142
|
+
|
|
143
|
+
## 1.0.4
|
|
144
|
+
|
|
145
|
+
* Test for path absoluteness properly
|
|
146
|
+
* win: Allow '' as a pathext if cmd has a . in it
|
|
147
|
+
|
|
148
|
+
## 1.0.3
|
|
149
|
+
|
|
150
|
+
* Remove references to execPath
|
|
151
|
+
* Make `which.sync()` work on Windows by honoring the PATHEXT variable.
|
|
152
|
+
* Make `isExe()` always return true on Windows.
|
|
153
|
+
* MIT
|
|
154
|
+
|
|
155
|
+
## 1.0.2
|
|
156
|
+
|
|
157
|
+
* Only files can be exes
|
|
158
|
+
|
|
159
|
+
## 1.0.1
|
|
160
|
+
|
|
161
|
+
* Respect the PATHEXT env for win32 support
|
|
162
|
+
* should 0755 the bin
|
|
163
|
+
* binary
|
|
164
|
+
* guts
|
|
165
|
+
* package
|
|
166
|
+
* 1st
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deadbyte-mcp",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.64",
|
|
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.",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"contained:run": "node src/contained-cli.mjs workspaces/demo input.txt",
|
|
43
43
|
"contained:smoke": "node src/contained-smoke.mjs",
|
|
44
44
|
"mcp:contained:smoke": "node src/mcp-contained-smoke-client.mjs",
|
|
45
|
-
"gate:windows": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/gate-windows-
|
|
45
|
+
"gate:windows": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/gate-windows-r166.ps1 -Stage all",
|
|
46
46
|
"authority:smoke": "node src/authority-smoke.mjs",
|
|
47
47
|
"mcp:remote:smoke": "node src/remote-mcp-smoke-client.mjs",
|
|
48
48
|
"mcp:host:smoke": "node src/mcp-host-smoke-client.mjs",
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#requires -Version 5.1
|
|
2
|
+
[CmdletBinding()]
|
|
3
|
+
param([ValidateSet('preflight','focused','full','manifest','doctor','all')][string]$Stage='preflight')
|
|
4
|
+
Set-StrictMode -Version Latest
|
|
5
|
+
$ErrorActionPreference='Stop'
|
|
6
|
+
$repo=Split-Path -Parent $PSScriptRoot
|
|
7
|
+
$state=Join-Path $env:USERPROFILE '.deadbyte-mcp'
|
|
8
|
+
$parentId='v0.15.61-055d1ff0aa99e60b'
|
|
9
|
+
$parentSha='055d1ff0aa99e60bbf9e9f136b02ebd4fffb8391712560f7607cff30af94dcdf'
|
|
10
|
+
$parentGen='f940e794daac2dda097a66301c4b85c4b29a2df7c669e549503c05a2a55ff6c4'
|
|
11
|
+
$nativeNode='C:\Program Files\nodejs\node.exe'
|
|
12
|
+
$node=if(Test-Path -LiteralPath $nativeNode -PathType Leaf){$nativeNode}else{(Get-Command node -ErrorAction Stop).Source}
|
|
13
|
+
function Sha([string]$file){
|
|
14
|
+
$sha=[Security.Cryptography.SHA256]::Create()
|
|
15
|
+
try{$stream=[IO.File]::OpenRead($file);try{return ([BitConverter]::ToString($sha.ComputeHash($stream))).Replace('-','').ToLowerInvariant()}finally{$stream.Dispose()}}finally{$sha.Dispose()}
|
|
16
|
+
}
|
|
17
|
+
function Run-Node([string]$label,[string[]]$nodeArgs){
|
|
18
|
+
if($null -eq $nodeArgs -or $nodeArgs.Count -lt 1){throw "R166_${label}_NO_NODE_ARGUMENTS"}
|
|
19
|
+
Write-Output "R166_STAGE_START=$label"
|
|
20
|
+
Write-Output "R166_STAGE_ARGS=$($nodeArgs.Count)"
|
|
21
|
+
$global:LASTEXITCODE=0
|
|
22
|
+
& $node @nodeArgs
|
|
23
|
+
$exit=$global:LASTEXITCODE
|
|
24
|
+
if($exit -ne 0){throw "R166_${label}_FAILED exit=$exit"}
|
|
25
|
+
Write-Output "R166_STAGE_PASS=$label"
|
|
26
|
+
}
|
|
27
|
+
Push-Location $repo
|
|
28
|
+
try{
|
|
29
|
+
$pkg=Get-Content -LiteralPath 'package.json' -Raw | ConvertFrom-Json
|
|
30
|
+
$release=Get-Content -LiteralPath 'RELEASE.json' -Raw | ConvertFrom-Json
|
|
31
|
+
if($pkg.version -ne '0.15.64' -or $release.version -ne '0.15.64' -or $release.train -ne 'R166'){throw 'R166_CANDIDATE_VERSION_DRIFT'}
|
|
32
|
+
if($release.runtime_predecessor.release_id -ne $parentId -or $release.runtime_predecessor.manifest_sha256 -ne $parentSha -or $release.runtime_predecessor.generation_manifest_sha256 -ne $parentGen){throw 'R166_RUNTIME_PREDECESSOR_IDENTITY_DRIFT'}
|
|
33
|
+
$active=Get-Content -LiteralPath (Join-Path $state 'active-release.json') -Raw | ConvertFrom-Json
|
|
34
|
+
if($active.version -ne '0.15.61' -or $active.release_id -ne $parentId -or $active.manifest_sha256 -ne $parentSha -or $active.generation_manifest_sha256 -ne $parentGen){throw 'R166_ACTIVE_RUNTIME_DRIFT'}
|
|
35
|
+
if((Sha (Join-Path $active.release_root 'MANIFEST.SHA256')) -ne $parentSha){throw 'R166_ACTIVE_MANIFEST_MISMATCH'}
|
|
36
|
+
Write-Output 'R166_PREDECESSOR_PREFLIGHT=PASS'
|
|
37
|
+
if($Stage -eq 'preflight'){return}
|
|
38
|
+
if($Stage -in @('focused','all')){
|
|
39
|
+
Run-Node -label 'focused' -nodeArgs @('--test','--test-reporter=tap','--test-concurrency=1','test/r89-privileged-install-boundary.test.mjs','test/r92-acl-ace-applicability.test.mjs','test/r153-clean-activation-recovery.test.mjs','test/r155-commander-live-log.test.mjs','test/r155-default-live-log.test.mjs','test/r156-supervisor-pacing.test.mjs','test/r157-supervisor-singleflight.test.mjs','test/r158-epoch-bootstrap.test.mjs','test/r159-legacy-marker-evidence.test.mjs','test/r160-marker-proof.test.mjs','test/r160-package-decision-manifest.test.mjs','test/r160-stable-launcher.test.mjs','test/r160-release-contract.test.mjs','test/r59-tool-surface-compat.test.mjs')
|
|
40
|
+
if($Stage -eq 'focused'){return}
|
|
41
|
+
}
|
|
42
|
+
if($Stage -in @('full','all')){
|
|
43
|
+
Run-Node -label 'full' -nodeArgs @('--test','--test-reporter=tap','--test-concurrency=4','test/*.test.mjs')
|
|
44
|
+
if($Stage -eq 'full'){return}
|
|
45
|
+
}
|
|
46
|
+
if($Stage -in @('manifest','all')){
|
|
47
|
+
Run-Node -label 'manifest' -nodeArgs @('scripts/release-manifest.mjs','verify')
|
|
48
|
+
if($Stage -eq 'manifest'){return}
|
|
49
|
+
}
|
|
50
|
+
if($Stage -in @('doctor','all')){
|
|
51
|
+
$previous=$env:DEADBYTE_STATE_ROOT
|
|
52
|
+
$isolated=Join-Path $env:TEMP ('deadbyte-r160-doctor-'+[guid]::NewGuid().ToString('N'))
|
|
53
|
+
try{[IO.Directory]::CreateDirectory($isolated)|Out-Null;$env:DEADBYTE_STATE_ROOT=$isolated;Run-Node -label 'isolated_doctor' -nodeArgs @('src/deadbyte-cli.mjs','doctor')}
|
|
54
|
+
finally{$env:DEADBYTE_STATE_ROOT=$previous;Remove-Item -LiteralPath $isolated -Recurse -Force -ErrorAction SilentlyContinue}
|
|
55
|
+
}
|
|
56
|
+
Write-Output 'R166_WINDOWS_CANDIDATE_GATE=PASS_PREPUBLICATION'
|
|
57
|
+
}finally{Pop-Location}
|
|
@@ -9,6 +9,7 @@ import {assertR72NpmPublishReady} from './npm-release-readiness-r72.mjs';
|
|
|
9
9
|
import {assertR74NpmPublishReady} from './npm-release-readiness-r74.mjs';
|
|
10
10
|
import {assertR163NpmPublishReady} from './npm-release-readiness-r163.mjs';
|
|
11
11
|
import {assertR165NpmPublishReady} from './npm-release-readiness-r165.mjs';
|
|
12
|
+
import {assertR166NpmPublishReady} from './npm-release-readiness-r166.mjs';
|
|
12
13
|
import { existsSync } from 'node:fs';
|
|
13
14
|
import { resolveStateRoot } from '../src/state-root.mjs';
|
|
14
15
|
import path from 'node:path';
|
|
@@ -105,6 +106,10 @@ async function main() {
|
|
|
105
106
|
if (!publishOnly) throw new Error('PUBLISH_BLOCKED R165 0.15.63 requires --publish-only; production activation is a separate authority boundary');
|
|
106
107
|
await assertR165NpmPublishReady(release,{root});
|
|
107
108
|
}
|
|
109
|
+
if (!isVerifyOnly && version==='0.15.64') {
|
|
110
|
+
if (!publishOnly) throw new Error('PUBLISH_BLOCKED R166 requires --publish-only; activation is separate');
|
|
111
|
+
await assertR166NpmPublishReady(release,{root});
|
|
112
|
+
}
|
|
108
113
|
if (release.parent?.release_id !== provenance.parent_release_id ||
|
|
109
114
|
release.parent?.manifest_sha256 !== provenance.parent_manifest_sha256 ||
|
|
110
115
|
release.parent?.generation_manifest_sha256 !== provenance.parent_generation_manifest_sha256) {
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import {readFile,lstat} from 'node:fs/promises';
|
|
2
|
+
import {createHash} from 'node:crypto';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
const sha=b=>createHash('sha256').update(b).digest('hex');
|
|
5
|
+
const required=(v,m)=>{if(!v)throw new Error('PUBLISH_BLOCKED R166 '+m)};
|
|
6
|
+
const hex=s=>typeof s==='string'&&/^[a-f0-9]{64}$/.test(s);
|
|
7
|
+
async function checkedFile(f,expected){
|
|
8
|
+
required(hex(expected),'missing log hash');
|
|
9
|
+
const s=await lstat(f);
|
|
10
|
+
required(s.isFile()&&!s.isSymbolicLink()&&s.size>0&&s.size<32*1024*1024,'invalid log');
|
|
11
|
+
const b=await readFile(f);required(sha(b)===expected,'log digest differs');return b.toString('utf8');
|
|
12
|
+
}
|
|
13
|
+
export async function assertR166NpmPublishReady(release,{root}={}){
|
|
14
|
+
required(release?.version==='0.15.64'&&release?.train==='R166'&&release?.r166?.scope==='WINDOWS_GATE_AND_SIGNED_PRECONDITION_RECOVERY_HOTFIX','candidate metadata invalid');
|
|
15
|
+
required(release?.parent?.release_id==='v0.15.61-055d1ff0aa99e60b'&&release?.source_predecessor?.version==='0.15.63','lineage mismatch');
|
|
16
|
+
const evidence=process.env.DEADBYTE_R166_CLOSURE_ROOT;
|
|
17
|
+
required(root&&path.isAbsolute(root)&&evidence&&path.isAbsolute(evidence),'closure root absent');
|
|
18
|
+
const allowed=path.resolve(root,'..','..','testing','r166-final-gate');
|
|
19
|
+
required(path.resolve(evidence).toLowerCase()===allowed.toLowerCase(),'closure root not in scoped testing folder');
|
|
20
|
+
const data=JSON.parse(await readFile(path.join(evidence,'closure.json'),'utf8'));
|
|
21
|
+
required(data?.schema==='deadbyte.r166-release-closure.v1'&&data.status==='PASS'&&data.version==='0.15.64','closure status mismatch');
|
|
22
|
+
required(data?.production_release_id===release.parent.release_id&&hex(data.manifest_sha256),'predecessor or manifest invalid');
|
|
23
|
+
required(data.manifest_sha256===sha(await readFile(path.join(root,'MANIFEST.SHA256'))),'final manifest drift');
|
|
24
|
+
const gate=await checkedFile(path.join(evidence,'windows-gate.protected.stdout.log'),data.gate_stdout_sha256);
|
|
25
|
+
const verify=await checkedFile(path.join(evidence,'npm-verify.stdout.log'),data.verify_stdout_sha256);
|
|
26
|
+
required(gate.includes('R166_WINDOWS_CANDIDATE_GATE=PASS_PREPUBLICATION')&&gate.includes('MANIFEST_VERIFY_OK')&&gate.includes('R166_STAGE_PASS=full'),'Windows full gate transcript incomplete');
|
|
27
|
+
const matches=[...gate.matchAll(/^# tests (\d+)\s*\r?\n# suites (\d+)\s*\r?\n# pass (\d+)\s*\r?\n# fail (\d+)\s*\r?\n# cancelled (\d+)\s*\r?\n# skipped (\d+)/gm)];
|
|
28
|
+
required(matches.length>0,'full TAP summary absent');
|
|
29
|
+
const full=matches.at(-1);
|
|
30
|
+
const tests=Number(full[1]),passes=Number(full[3]),fails=Number(full[4]),skips=Number(full[6]);
|
|
31
|
+
required(tests>=1960&&passes>=1908&&fails===0&&skips<=55&&passes+skips===tests,'full regression count mismatch');
|
|
32
|
+
required(verify.includes('VERIFY-ONLY PIPELINE PASS')&&verify.includes('Artifact isolation gate PASS')&&verify.includes('VERIFIED_TARBALL '),'exact npm tarball gate missing');
|
|
33
|
+
const tar=verify.split(/\r?\n/).find(x=>x.startsWith('VERIFIED_TARBALL '));
|
|
34
|
+
let identity;try{identity=JSON.parse(tar.slice('VERIFIED_TARBALL '.length));}catch{required(false,'tarball evidence malformed');}
|
|
35
|
+
required(identity.filename==='deadbyte-mcp-0.15.64.tgz'&&hex(identity.sha256)&&identity.bytes>0,'tarball subject invalid');
|
|
36
|
+
return Object.freeze({status:'R166_RELEASE_READY_EVIDENCE_BOUND',manifest_sha256:data.manifest_sha256,tests,passes,skips});
|
|
37
|
+
}
|
|
@@ -114,7 +114,7 @@ async function isSafeSignedPreconditionReject(outcome,lock,stateRoot){
|
|
|
114
114
|
body.result!=='PRECONDITION_REJECTED'||body.phase!=='initial'||
|
|
115
115
|
body.attempted_pointer!==null||body.rollback?.attempted!==false||
|
|
116
116
|
!Array.isArray(body.rollback?.errors)||body.rollback.errors.length!==0||
|
|
117
|
-
|
|
117
|
+
!(/^(?:host command 'powershell_script' executable pin drift detected;|windows release gate package script invalid$)/.test(String(body.error?.message??'')))||
|
|
118
118
|
!Number.isFinite(failedTime)||failedTime<lockTime||failedTime>observedTime||
|
|
119
119
|
!samePointerIdentity(body.prior_pointer,current))return false;
|
|
120
120
|
return true;
|
|
@@ -87,7 +87,7 @@ async function currentWindowsGateScript(rootPath){
|
|
|
87
87
|
try{ pkg=JSON.parse(await readFile(packagePath,'utf8')); }
|
|
88
88
|
catch{ throw new Error('windows release gate package.json malformed'); }
|
|
89
89
|
const command=String(pkg?.scripts?.['gate:windows']??'').trim();
|
|
90
|
-
const match=/^powershell(?:\.exe)?\s+-NoProfile\s+-ExecutionPolicy\s+Bypass\s+-File\s+(scripts\/[A-Za-z0-9._\/-]+\.ps1)
|
|
90
|
+
const match=/^powershell(?:\.exe)?\s+-NoProfile\s+-ExecutionPolicy\s+Bypass\s+-File\s+(scripts\/[A-Za-z0-9._\/-]+\.ps1)(?:\s+-Stage\s+all)?$/i.exec(command);
|
|
91
91
|
if(!match) throw new Error('windows release gate package script invalid');
|
|
92
92
|
return safeRel(match[1]);
|
|
93
93
|
}
|
package/src/version.mjs
CHANGED
|
@@ -13,12 +13,12 @@ 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.
|
|
17
|
-
assert.equal(release.train,'
|
|
18
|
-
assert.equal(matrix.train,'
|
|
19
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
20
|
-
assert.equal(release.source_predecessor.train,'
|
|
21
|
-
assert.match(release.source_predecessor.source_path,/0\.15\.
|
|
16
|
+
assert.equal(actual,'0.15.64');
|
|
17
|
+
assert.equal(release.train,'R166');
|
|
18
|
+
assert.equal(matrix.train,'R166');
|
|
19
|
+
assert.equal(release.source_predecessor.version,'0.15.63');
|
|
20
|
+
assert.equal(release.source_predecessor.train,'R165');
|
|
21
|
+
assert.match(release.source_predecessor.source_path,/0\.15\.63-r165-remote-recovery/i);
|
|
22
22
|
assert.equal(release.source_predecessor.manifest_status,'VERIFIED_FINAL_BYTES');
|
|
23
23
|
assert.equal(release.runtime_predecessor.version,'0.15.61');
|
|
24
24
|
assert.equal(provenance.r160.source_predecessor_manifest_status,'STALE_REJECTED');
|
|
@@ -8,22 +8,22 @@ import {DEADBYTE_VERSION} from '../src/version.mjs';
|
|
|
8
8
|
const root=path.resolve(fileURLToPath(new URL('..',import.meta.url)));
|
|
9
9
|
const read=async rel=>JSON.parse(await readFile(path.join(root,rel),'utf8'));
|
|
10
10
|
|
|
11
|
-
test('
|
|
11
|
+
test('R166 package identity preserves R132 evidence and published source predecessor',async()=>{
|
|
12
12
|
const [pkg,lock,release,prov,bom,matrix]=await Promise.all([
|
|
13
13
|
read('package.json'),read('package-lock.json'),read('RELEASE.json'),
|
|
14
14
|
read('PROVENANCE.json'),read('SBOM.cdx.json'),read('TEST-MATRIX.json')]);
|
|
15
15
|
for(const value of [pkg.version,lock.version,lock.packages[''].version,release.version,prov.version,bom.metadata.component.version,matrix.version,DEADBYTE_VERSION]){
|
|
16
16
|
assert.equal(value,pkg.version);
|
|
17
17
|
}
|
|
18
|
-
assert.equal(release.train,'
|
|
19
|
-
assert.equal(matrix.train,'
|
|
20
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
21
|
-
assert.equal(release.source_predecessor.train,'
|
|
22
|
-
assert.match(release.source_predecessor.source_path,/0\.15\.
|
|
18
|
+
assert.equal(release.train,'R166');
|
|
19
|
+
assert.equal(matrix.train,'R166');
|
|
20
|
+
assert.equal(release.source_predecessor.version,'0.15.63');
|
|
21
|
+
assert.equal(release.source_predecessor.train,'R165');
|
|
22
|
+
assert.match(release.source_predecessor.source_path,/0\.15\.63-r165-remote-recovery/i);
|
|
23
23
|
assert.equal(prov.r160.source_predecessor_manifest_status,'STALE_REJECTED');
|
|
24
24
|
assert.equal(release.r165.published_source_manifest_sha256,'4adf7d94682fbb71c4a91eb3147ecc48076bbc5d79cb67fcb875cde6a1bb4805');
|
|
25
25
|
assert.equal(release.r165.published_source_tarball_sha256,'812e97609b7c51353ed25f2202129737e43bb4fbe0778c3adec43ec065352641');
|
|
26
|
-
assert.equal(release.source_predecessor.tarball_sha256,
|
|
26
|
+
assert.equal(release.source_predecessor.tarball_sha256,'3bcd89c00fca98428aab6791b545bcfd0c62323349ee9de819aae4041d170406');
|
|
27
27
|
assert.equal(prov.source_predecessor_tarball_sha256,release.source_predecessor.tarball_sha256);
|
|
28
28
|
assert.equal(release.runtime_predecessor.version,'0.15.61');
|
|
29
29
|
assert.equal(prov.runtime_predecessor.release_id,release.runtime_predecessor.release_id);
|
|
@@ -26,7 +26,7 @@ test('R153 historical verifier refuses current R160 package identity',async()=>{
|
|
|
26
26
|
const state={pkg:JSON.parse(await readFile(path.join(root,'package.json'),'utf8')),
|
|
27
27
|
release:JSON.parse(await readFile(path.join(root,'RELEASE.json'),'utf8')),
|
|
28
28
|
bridge:JSON.parse(await readFile(path.join(root,'bridge/package.json'),'utf8'))};
|
|
29
|
-
assert.equal(state.pkg.version,'0.15.
|
|
29
|
+
assert.equal(state.pkg.version,'0.15.64');
|
|
30
30
|
assert.throws(()=>verifyR153Lineage(state),/package version/);
|
|
31
31
|
await assert.rejects(verifyR153IdentityTree(root),/package version/);
|
|
32
32
|
});
|
|
@@ -13,15 +13,15 @@ test('R160 package identity separates source and live runtime predecessors',asyn
|
|
|
13
13
|
read('package.json'),read('package-lock.json'),read('bridge/package.json'),read('RELEASE.json'),
|
|
14
14
|
read('PROVENANCE.json'),read('TEST-MATRIX.json'),read('SBOM.cdx.json')]);
|
|
15
15
|
for(const version of [pkg.version,lock.version,lock.packages[''].version,bridge.version,release.version,
|
|
16
|
-
provenance.version,matrix.version,bom.metadata.component.version,DEADBYTE_VERSION]) assert.equal(version,'0.15.
|
|
17
|
-
assert.equal(release.train,'
|
|
18
|
-
assert.equal(matrix.train,'
|
|
16
|
+
provenance.version,matrix.version,bom.metadata.component.version,DEADBYTE_VERSION]) assert.equal(version,'0.15.64');
|
|
17
|
+
assert.equal(release.train,'R166');
|
|
18
|
+
assert.equal(matrix.train,'R166');
|
|
19
19
|
assert.equal(release.runtime_predecessor.version,'0.15.61');
|
|
20
20
|
assert.equal(release.runtime_predecessor.release_id,'v0.15.61-055d1ff0aa99e60b');
|
|
21
21
|
assert.equal(release.runtime_predecessor.manifest_sha256,'055d1ff0aa99e60bbf9e9f136b02ebd4fffb8391712560f7607cff30af94dcdf');
|
|
22
22
|
assert.equal(release.runtime_predecessor.generation_manifest_sha256,'f940e794daac2dda097a66301c4b85c4b29a2df7c669e549503c05a2a55ff6c4');
|
|
23
|
-
assert.equal(release.source_predecessor.train,'
|
|
24
|
-
assert.match(release.source_predecessor.source_path,/deadbyte-mcp-0\.15\.
|
|
23
|
+
assert.equal(release.source_predecessor.train,'R165');
|
|
24
|
+
assert.match(release.source_predecessor.source_path,/deadbyte-mcp-0\.15\.63-r165-remote-recovery/i);
|
|
25
25
|
assert.equal(release.r160.public_tool_delta,0);
|
|
26
26
|
assert.equal(release.r160.authority_scope_delta,0);
|
|
27
27
|
assert.equal(release.r160.production_activation,'NOT_RUN');
|
|
@@ -8,7 +8,7 @@ import {fileURLToPath} from 'node:url';
|
|
|
8
8
|
import {atomicWriteActivePointer,materializeReleaseSlot,parseActivePointer,parseManifest,renderStableLauncherPs1,verifyManifestTreeExact} from '../src/release-slot.mjs';
|
|
9
9
|
|
|
10
10
|
const candidate=path.dirname(path.dirname(fileURLToPath(import.meta.url)));
|
|
11
|
-
const version='0.15.
|
|
11
|
+
const version='0.15.64';
|
|
12
12
|
const parent=path.join(os.homedir(),'.deadbyte-mcp','releases','v0.15.61-055d1ff0aa99e60b');
|
|
13
13
|
const parentDigest='055d1ff0aa99e60bbf9e9f136b02ebd4fffb8391712560f7607cff30af94dcdf';
|
|
14
14
|
const sha=bytes=>createHash('sha256').update(bytes).digest('hex');
|
|
@@ -21,7 +21,7 @@ async function generation(state,label){
|
|
|
21
21
|
await writeFile(path.join(root,'GENERATION.SHA256'),manifest,{flag:'wx'});
|
|
22
22
|
return {root,manifest_sha256:sha(manifest),config_path:path.join(root,'controller-config.psd1')};
|
|
23
23
|
}
|
|
24
|
-
test('
|
|
24
|
+
test('R166 isolated immutable slot activates, rolls back, and restores 0.15.64 without authority or production mutation',async()=>{
|
|
25
25
|
const stateBase=await mkdtemp(path.join(os.tmpdir(),'deadbyte-r163-isolated-'));
|
|
26
26
|
const state=path.join(stateBase,'state');
|
|
27
27
|
try{
|
|
@@ -17,7 +17,7 @@ const hashMarker=c=>c.repeat(64);
|
|
|
17
17
|
async function fixture(t,kind){
|
|
18
18
|
assert.equal(typeof envRoot,'string'); assert.ok(path.isAbsolute(envRoot));
|
|
19
19
|
assert.match(sha(await readFile(path.join(envRoot,'MANIFEST.SHA256'))),/^[0-9a-f]{64}$/);
|
|
20
|
-
assert.equal(JSON.parse(await readFile(path.join(envRoot,'package.json'),'utf8')).version,'0.15.
|
|
20
|
+
assert.equal(JSON.parse(await readFile(path.join(envRoot,'package.json'),'utf8')).version,'0.15.64');
|
|
21
21
|
const dir=await mkdtemp(path.join(os.tmpdir(),'deadbyte-r164-skew-e2e-'));
|
|
22
22
|
t.after(async()=>{await rm(dir,{recursive:true,force:true,maxRetries:10,retryDelay:150});});
|
|
23
23
|
const state=path.join(dir,'state'),bin=path.join(state,'bin');
|
|
@@ -65,7 +65,7 @@ async function run(fx){
|
|
|
65
65
|
assert.doesNotMatch(trace,/\b(?:start|restart|armprocess|armcoding|armautonomous|deploy)\b/i,'unexpected runtime operation');
|
|
66
66
|
return {output:(result.stderr||'')+'\n'+(result.stdout||''),trace};
|
|
67
67
|
}
|
|
68
|
-
gate('R165 executable CLI passes completed R159 history, reaches 0.15.61 -> 0.15.
|
|
68
|
+
gate('R165 executable CLI passes completed R159 history, reaches 0.15.61 -> 0.15.64 synchronization safely',async t=>{
|
|
69
69
|
const fx=await fixture(t,'completed');
|
|
70
70
|
const r=await run(fx);
|
|
71
71
|
assert.match(r.output,/runtime coherence 'disarmhost' failed exit=93/i,r.output);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import {readFile} from 'node:fs/promises';
|
|
4
|
+
const release = await readFile(new URL('../src/release-generation.mjs',import.meta.url),'utf8');
|
|
5
|
+
const gate = await readFile(new URL('../scripts/gate-windows-r166.ps1',import.meta.url),'utf8');
|
|
6
|
+
const pkg = JSON.parse(await readFile(new URL('../package.json',import.meta.url),'utf8'));
|
|
7
|
+
const lock = await readFile(new URL('../src/activation-lock-r65.mjs',import.meta.url),'utf8');
|
|
8
|
+
test('exact Windows gate grammar supports only optional Stage all',()=>{
|
|
9
|
+
const line = release.split('\n').find(x=>x.includes('const match=/^powershell'));
|
|
10
|
+
assert.ok(line);
|
|
11
|
+
const regexSource=line.slice(line.indexOf('const match=')+12,line.lastIndexOf('.exec(command)'));
|
|
12
|
+
const regex=Function(`return ${regexSource}`)();
|
|
13
|
+
assert.ok(regex.test(pkg.scripts['gate:windows']));
|
|
14
|
+
assert.equal(regex.test(pkg.scripts['gate:windows']+'; echo injected'),false);
|
|
15
|
+
assert.equal(regex.test(pkg.scripts['gate:windows'].replace('all','focused')),false);
|
|
16
|
+
});
|
|
17
|
+
test('corrected gate matches candidate identity',()=>{
|
|
18
|
+
assert.match(gate,/R166_CANDIDATE_VERSION_DRIFT/);
|
|
19
|
+
assert.match(gate,/\$pkg.version -ne '0.15.64'/);
|
|
20
|
+
assert.match(gate,/\$release.train -ne 'R166'/);
|
|
21
|
+
});
|
|
22
|
+
test('recovery is restricted to exact recognized signed preconditions',()=>{
|
|
23
|
+
assert.match(lock,/windows release gate package script invalid\$/);
|
|
24
|
+
assert.match(lock,/verifySlotUpdateEnvelope\(signed,publicKey\)/);
|
|
25
|
+
assert.match(lock,/body.phase!=='initial'/);
|
|
26
|
+
assert.match(lock,/body.attempted_pointer!==null/);
|
|
27
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import {readFile} from 'node:fs/promises';
|
|
4
|
+
import {assertR166NpmPublishReady} from '../scripts/npm-release-readiness-r166.mjs';
|
|
5
|
+
test('R166 publication refuses absent external closure',async()=>{
|
|
6
|
+
const release=JSON.parse(await readFile(new URL('../RELEASE.json',import.meta.url)));
|
|
7
|
+
const old=process.env.DEADBYTE_R166_CLOSURE_ROOT;
|
|
8
|
+
try{delete process.env.DEADBYTE_R166_CLOSURE_ROOT;await assert.rejects(assertR166NpmPublishReady(release,{root:new URL('..',import.meta.url).pathname}),/PUBLISH_BLOCKED R166/);}
|
|
9
|
+
finally{if(old===undefined)delete process.env.DEADBYTE_R166_CLOSURE_ROOT;else process.env.DEADBYTE_R166_CLOSURE_ROOT=old;}
|
|
10
|
+
});
|
|
@@ -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','0.15.59','0.15.60','0.15.61','0.15.62','0.15.63'].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','0.15.60','0.15.61','0.15.62','0.15.63','0.15.64'].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');
|