deadbyte-mcp 0.15.26 → 0.15.27
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/DEADBYTE-MCP.cmd +4 -0
- package/MANIFEST.SHA256 +13 -10
- package/PROVENANCE.json +10 -10
- package/README.txt +15 -7
- package/RELEASE.json +9 -9
- package/SBOM.cdx.json +3 -3
- package/TEST-MATRIX.json +8 -8
- package/package.json +2 -2
- package/scripts/gate-windows-r50.ps1 +56 -0
- package/scripts/windows-gate-evidence-r50.mjs +80 -0
- package/src/version.mjs +1 -1
- package/test/package-boundary.test.mjs +6 -0
- package/test/r48-release-contract.test.mjs +44 -29
- package/test/r49-windows-gate.test.mjs +13 -10
package/DEADBYTE-MCP.cmd
ADDED
package/MANIFEST.SHA256
CHANGED
|
@@ -56,6 +56,7 @@ d274b099a298c1033fea8f1e8849751693bbc0448778d619400acb82d4f53a3b controller/dea
|
|
|
56
56
|
e9baf9abf4410ff8bd0f68e6b957dbbf9790fc88d9126311c5c135e943424952 DEADBYTE-MCP-R27-FINAL/R27-CLEANUP-FINAL-RECEIPT.json
|
|
57
57
|
39cb483c0897af5027bf1790a35a4c3b9a8cd5f6e3a2e0440787615f69cd14b2 DEADBYTE-MCP-R27-FINAL/R27-FINAL-CLOSURE.json
|
|
58
58
|
9aaf6d07e7511a1f0046ee8cc731d4b9660bbbf47dcea785a9c6b6cec95640bc DEADBYTE-MCP-R27-FINAL/R27-SLOT-UPDATE-RECEIPT.json
|
|
59
|
+
79d7cf101e6890acd4d36ec8e3773ec8434b67bfe01b8aab7e00b5c80e9a7f87 DEADBYTE-MCP.cmd
|
|
59
60
|
7994082e4340b5f43272e8cb111ce54043af64dc3a04d5279e251f3dae16f654 docs/ADR-0001-PRODUCTION-BASELINE-SEAMS.md
|
|
60
61
|
c945b519454c6cb4c89a2b432a3f7ad29a5e7d4bc1db638972104f0093639b18 docs/ARCHITECTURE.md
|
|
61
62
|
3f455f407933d8e044682f3415bdb51e68d7c4b508411dda7d8ed65b6e1d7e79 docs/AUTHORITY.md
|
|
@@ -1338,7 +1339,7 @@ db605a698f917c4006462596e6526fe6a9c6eff9b8409e8472fe545d4b70027c node_modules/z
|
|
|
1338
1339
|
f67a25ded944912bd4621b68df17c7c70a52aae117278c076c0aabbc32a3abba node_modules/zod/v4/mini/schemas.d.ts
|
|
1339
1340
|
51b3a7869df2d3a1bd98acb9d5b6a61bbccc7653d7a3d8fca7f0e0db7e84e284 node_modules/zod/v4/mini/schemas.js
|
|
1340
1341
|
3e3125b5a537a24c3632c1c5c09640ce7bcb3935901b127ad8ae3c37a27f133f node_modules/zod/v4/package.json
|
|
1341
|
-
|
|
1342
|
+
1b90040b11d1b042656ff077ec2c037bfe0044f252c594cd9cbfb7d7c66d382f package.json
|
|
1342
1343
|
872947dffd89755b03558b217129f009dc9f4fd1ce55e93c602fc6ea97ba8b48 proof/commander-closure-20260927/CONTINUATION.json
|
|
1343
1344
|
2959980d295814aaa0df71fdb358d2cbfd01c1357ee36ef6b10c149875bdb262 proof/commander-closure-20260927/RESULT.json
|
|
1344
1345
|
2c2866309ca3a6fc8de5b03d445f1dcf0778474fa25cefb822b2ab729bc91c62 proof/commander-closure-20260927/SEARCH-CONTINUATION.json
|
|
@@ -1403,7 +1404,7 @@ d433aaea5cccd1e184775ac4d915f34e0b39c6c99916dddd009731ad5fd6443f proof/V073-WIN
|
|
|
1403
1404
|
bd0773a9e02e8ab11475c9cc5a7db29a8313233b7eab7f837922737e75ec5938 proof/VERIFY.txt
|
|
1404
1405
|
2c821808d4596965c577f40191daee224d3aea81989778c4af97f53a83b487db proof/WINDOWS-CONTAINED-STATUS.txt
|
|
1405
1406
|
f8bc839c7b4fcb0ea7b7e7ad9448847c3beae6f95f2eb4d407d1b284aaa4ff68 proof/WINDOWS-CONTAINMENT-STATUS.txt
|
|
1406
|
-
|
|
1407
|
+
1002cd1721f3af6c5adef6c64c0e336454f58fa7ea68b6e619e0740e987dd4b7 PROVENANCE.json
|
|
1407
1408
|
27ca0f3c9ee3a1b6374a9c8dd98008decdd0c7659c7a569c70ad7b9734c74655 R34-BASELINE.json
|
|
1408
1409
|
0b7ec5ee347ddfa6cca59740fc7a8fe3fc5d51406265bb12189e82fa106319d2 R41-PARENT.json
|
|
1409
1410
|
bd2a789b0aab5663f0d208af2ca8e4ec98179bc8c7b57e70a962d4e06a3dcfc4 R42-PARENT.json
|
|
@@ -1412,9 +1413,9 @@ f932ef78b7a72b1bb0d7aedb5fe42fbb9951c2492eb528b72442f46ddff81a6c R44-DONORS.jso
|
|
|
1412
1413
|
731b4c559fc0d25dea701e4474f02400b27e8e3f4cac9f230d5214497d4490a9 R44-PARENT.json
|
|
1413
1414
|
d33ec5d167dd44800ba4e68372b08db43deb8d01df2ef71dd435ff004ac66c8b R45-PARENT.json
|
|
1414
1415
|
3dc607603fea511e2f428e9546a875ab7e38b6a0bbd5e803e4510de082f30804 R49-PARENT.json
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1416
|
+
335019064f8365f86411f2d4657e96c3f05b18a68d8d966fa928bdadd914be2c README.txt
|
|
1417
|
+
6651133e13cfee8e24d1faca0fe7302288afb5bd98c0b76126c32af2e2713076 RELEASE.json
|
|
1418
|
+
4229644f54f475d7486132df06042145a505569370396c6c822da5660e00a021 SBOM.cdx.json
|
|
1418
1419
|
7c86062c4f69db3179a129d65945ccfab1b1c1c5bcc29b91383eac097d50f2aa scripts/activate-skill-creator-1.1.1.mjs
|
|
1419
1420
|
bd138fe5a64088e8e1a7a5bf6104c5b17317bdc8cf3ad8191ea00ed82ace7d9b scripts/agent-eval-r42.mjs
|
|
1420
1421
|
8d90256a6863f3bbbff02e95cb12389fc6f9e8dbcb77bf1c20c902de371425e8 scripts/archive-source-zips.mjs
|
|
@@ -1506,6 +1507,7 @@ a0ad824eed1d8be051d5f731579f9bf4115b311f202b75ea0d03aa257b13a671 scripts/gate-w
|
|
|
1506
1507
|
00a3fc5aa75763c40ff0e09173091168903eb7fcae0ce164e51876569a4e2ff1 scripts/gate-windows-r46.ps1
|
|
1507
1508
|
e2d555bfcdc1464834cd6541753a7edc9845fc4a72761c2ec9f2d75991616b2d scripts/gate-windows-r48.ps1
|
|
1508
1509
|
a76505b4a2e7702e7d61a3ae799e5fa297ced7006dc1a1df8b65d5ed1cd7604b scripts/gate-windows-r49.ps1
|
|
1510
|
+
a62d69eea0c9db8778cd1551185ff6721ee6390d91afcb6863aecb75f9f422d1 scripts/gate-windows-r50.ps1
|
|
1509
1511
|
9a085b34b9e54023eb0efadcea1e74a1bef44b984105d064768d66910999173e scripts/gate-windows.ps1
|
|
1510
1512
|
9e625bdc701298c05eb2a63c208d023a487a1baf306c05940eb29c19fb1d6544 scripts/init-desktop-policy-r40.ps1
|
|
1511
1513
|
01451045bff624a157e7eea79afd7edfa8cb8212ea0256c8ec744fe1e1b269ff scripts/init-host-policy.ps1
|
|
@@ -1593,6 +1595,7 @@ d05fd67d62005aebf3cd2daf1e67f0550d124a2068baf9aa0550afb7de26f440 scripts/window
|
|
|
1593
1595
|
536f36b6d4cd86b9f874f6b8c0599d752d9efa69a2691f8971ee4b0d317c9739 scripts/windows-gate-evidence-r46.mjs
|
|
1594
1596
|
f344639080f68b7da5cda765b518e0fb91bc8818229b6f460e82b173018ad30c scripts/windows-gate-evidence-r48.mjs
|
|
1595
1597
|
6fc6c98fe0ccb06891227703196743cd22135934603e600f9c6a0cb86400934b scripts/windows-gate-evidence-r49.mjs
|
|
1598
|
+
31ddb34208af0ab0d65fbb4a59db43a2428a06720aeb38b040ac211c9e838ed4 scripts/windows-gate-evidence-r50.mjs
|
|
1596
1599
|
2255b8eb78ca61267df54448560a671357f04893b6bb1df27b8b9fc8a944d255 scripts/windows-gate-evidence.mjs
|
|
1597
1600
|
105a5c6dcd54e4fabb416df9eaac093654f3ea39c4233a56e0bc6d53371b2128 scripts/workload-contract-regression-r47.mjs
|
|
1598
1601
|
c32cb9054a1b9641ae071c00622c0054272bdb0b519ea22c4ff926a1600a2b46 scripts/workload-stream-regression.mjs
|
|
@@ -1775,11 +1778,11 @@ bac271c6f5218752ac5ff4decf5249e3893ddb35c63c092ce17238c27fc4d35b src/trust-init
|
|
|
1775
1778
|
aa765e9a28c69ff58a5b5a0d29b49ea181af4db9076633b102dbca25861e708e src/tunnel-stdio-compat.mjs
|
|
1776
1779
|
642cb67d1854850e336ee73fbd71b329056bdcbdab35cea19c1a995a155ff5d9 src/verifier-cli.mjs
|
|
1777
1780
|
8f818a4852ce3be3a380cd4736c3073a7a3e0e45cd7c7ca90588a6b843d3d022 src/verifier.mjs
|
|
1778
|
-
|
|
1781
|
+
cfbd76b3c1ff33e8686aa0f27beeca8ef84b3752084508eda2ffe81f62f383e7 src/version.mjs
|
|
1779
1782
|
7e09c57a97289360aabfaf3d531208e54872efbfb3182f3c18203d2cb88c46b5 src/worker-registry.mjs
|
|
1780
1783
|
76361d5ae9a710273cf64a7525082197b692236bf23689875e5fd1ef4aa96d2b src/worker-scheduler.mjs
|
|
1781
1784
|
4da1b32f5198bb089bc68b7eb6de21ea296678b5020018a73742bf0df57d62fa src/workload-substrate.mjs
|
|
1782
|
-
|
|
1785
|
+
588aef615e8e663c9550d1ed36d579bf96c887d2771f96b17bbbcc4e0666a339 TEST-MATRIX.json
|
|
1783
1786
|
e4f1fb97545f23772ddff28ad3f9954a4714f9854062fca62e0e12c1cb2ec4ae test/agent-backend-r44.test.mjs
|
|
1784
1787
|
2a78c818058b25efdc143a3a97c832da231ccd6ff9d90c7796d681a0251b85c4 test/agent-crash-child.mjs
|
|
1785
1788
|
d9461ab7c118ee75d37a2d6f5e637d7e43505af6a9ad8c7ddafffc8ace185a5b test/agent-crash-worker.mjs
|
|
@@ -1983,7 +1986,7 @@ a113ee9c06d38c5f674c369a950704ad00a84a45ee56b873143db3ac2154dd0f test/observati
|
|
|
1983
1986
|
ea60bf617122536ed10f546dc660491522e79c70a05d827efe5b50f09de5711f test/operation-history.test.mjs
|
|
1984
1987
|
874924c2d2e4073b1032e3e4a81af809efd2919044e19c0f862535a2d7442392 test/operation-lifecycle.test.mjs
|
|
1985
1988
|
77ec02d6826e1006aa6dc2f09d46783c22f10ba0a8ee0cfe0238c2b66887ee0e test/output-schema.test.mjs
|
|
1986
|
-
|
|
1989
|
+
3c73352548e7fe83d6c39ccd057fc36aae217f9e0a7808883326528466d7772d test/package-boundary.test.mjs
|
|
1987
1990
|
8f28e3990b79cc58bf52a646a88f374270396c9bc8738f5eceb156f721ae8a81 test/process-longrun-r36.test.mjs
|
|
1988
1991
|
ddac61c12ab29be1736885c01c999ca0346ba44c712cc2c8a48a7eea1ed62a53 test/process-mcp-tools.test.mjs
|
|
1989
1992
|
b84622d07d2ecfe27b55e45f7e89949f29a2d14184d8c6f6f82ed7f1e5fa59be test/process-native.test.mjs
|
|
@@ -2021,9 +2024,9 @@ d8f544bbcdfff61f7abb7705ad7e5e1f17998f5fde3c114fb33915fc66d1408f test/r41-final
|
|
|
2021
2024
|
2c5f2093b945c267c8d09cd2da0875c7f45911a7c01aa02a50cd64c2c1a7ccdc test/r45-autonomous-quick-test.test.mjs
|
|
2022
2025
|
532075c86893caf68a2d0ea09171bee4c7d60892c1892011285376a2c186ed92 test/r45-finalization.test.mjs
|
|
2023
2026
|
25a21ccffcf566b020b8f3c6c0a5a3b7ff06b243fff84e405207e458640ba487 test/r47-release-contract.test.mjs
|
|
2024
|
-
|
|
2027
|
+
0f5c469d07748cb0b828b2fa4e80380ff780f95617ff18c9fd1bb8de5d747fbd test/r48-release-contract.test.mjs
|
|
2025
2028
|
ec6fc253774c318b048dc943c83b496f942d8dd034f6db9439a99a46ae3a6158 test/r49-remote-control-donors.test.mjs
|
|
2026
|
-
|
|
2029
|
+
cbff58e466ea8d41c339202532eec341ece481eece2be97cc65f091a7f3c2ca8 test/r49-windows-gate.test.mjs
|
|
2027
2030
|
e45a6cd299d8d65bdeb9bc0117ce1eb2b47fdebad89a02413ee979c9d0ae3a5c test/release-activation-gate.test.mjs
|
|
2028
2031
|
85f6dc2059fd19d03452309ffe67bed5b87da8e6f0ce3a85cab58cba8b197ceb test/release-generation.test.mjs
|
|
2029
2032
|
bb58887a2c393cd5aac3fa3bb3a04de2704bd2a30dd2083ea638543485fa7e60 test/release-manifest-windows.test.mjs
|
package/PROVENANCE.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "deadbyte.provenance.v1",
|
|
3
|
-
"version": "0.15.
|
|
4
|
-
"builder": "deadbyte-
|
|
5
|
-
"source_model": "immutable published 0.15.
|
|
3
|
+
"version": "0.15.27",
|
|
4
|
+
"builder": "deadbyte-r50-public-package-boundary-hotfix",
|
|
5
|
+
"source_model": "immutable published 0.15.26 parent -> registry-artifact RED proof -> canonical Windows launcher pack-boundary fix -> focused GREEN -> full R50 regression -> MANIFEST.SHA256 -> immutable release slot -> generation bundle -> signed machine truth",
|
|
6
6
|
"signing": "ed25519",
|
|
7
|
-
"parent_release_id": "v0.15.
|
|
8
|
-
"parent_manifest_sha256": "
|
|
9
|
-
"parent_generation_manifest_sha256": "
|
|
10
|
-
"source_predecessor_version": "0.15.
|
|
11
|
-
"source_predecessor_tarball_sha256": "
|
|
12
|
-
"source_predecessor_manifest_file_sha256": "
|
|
7
|
+
"parent_release_id": "v0.15.26-669ea65d2307ee2c",
|
|
8
|
+
"parent_manifest_sha256": "669ea65d2307ee2cce06be960e0a8c7243dc6135f7f129a88d99f53096433cc8",
|
|
9
|
+
"parent_generation_manifest_sha256": "08364adaf1dab9730c314e29121632c6371ed76fc677e83cb7f6aa6b244eab94",
|
|
10
|
+
"source_predecessor_version": "0.15.26",
|
|
11
|
+
"source_predecessor_tarball_sha256": "3272679e3a18610d47e83dc8d3161e949d75a57da145a43c2ab50c865a83bb86",
|
|
12
|
+
"source_predecessor_manifest_file_sha256": "669ea65d2307ee2cce06be960e0a8c7243dc6135f7f129a88d99f53096433cc8",
|
|
13
13
|
"commander_reference_version": "0.2.51",
|
|
14
14
|
"commander_reference_server_sha256": "dfc303bb7dd2e8d01debac50fc43bb8644d00089bffdf2887e149497cff8b305",
|
|
15
15
|
"commander_reference_schemas_sha256": "f342345e34e48769dabaefe1b932f09d41e2e207b422f7794a15ee50ffa8f140",
|
|
16
16
|
"predecessor_r48_full_regression_task_receipt_sha256": "7711039e4807f6c2af02bbda897d0032b067e0a6631f789fd3bf801258160d3f",
|
|
17
|
-
"reproducibility": "candidate source bound to exact immutable published 0.15.
|
|
17
|
+
"reproducibility": "candidate source bound to exact immutable published 0.15.26 predecessor and registry round-trip bytes; fresh R50 full-regression, manifest, package, activation, rollback and restore proof remain mandatory before release"
|
|
18
18
|
}
|
package/README.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
DEADBYTE MCP V0.15.
|
|
1
|
+
DEADBYTE MCP V0.15.27 / R50 PUBLIC PACKAGE BOUNDARY HOTFIX CANDIDATE
|
|
2
2
|
=========================
|
|
3
3
|
|
|
4
4
|
AUTHENTICATED MACHINE TRUTH + DURABLE AGENT + CODING + AUTONOMOUS PRODUCTION ENGINE
|
|
@@ -7,12 +7,12 @@ NPX PRIMARY OPERATOR UX
|
|
|
7
7
|
------------------------
|
|
8
8
|
Use the npm CLI entry point instead of the legacy CMD convenience wrapper:
|
|
9
9
|
|
|
10
|
-
npx -y deadbyte-mcp@0.15.
|
|
11
|
-
npx -y deadbyte-mcp@0.15.
|
|
12
|
-
npx -y deadbyte-mcp@0.15.
|
|
13
|
-
npx -y deadbyte-mcp@0.15.
|
|
14
|
-
npx -y deadbyte-mcp@0.15.
|
|
15
|
-
npx -y deadbyte-mcp@0.15.
|
|
10
|
+
npx -y deadbyte-mcp@0.15.27 mcp
|
|
11
|
+
npx -y deadbyte-mcp@0.15.27 remote
|
|
12
|
+
npx -y deadbyte-mcp@0.15.27 remote status
|
|
13
|
+
npx -y deadbyte-mcp@0.15.27 remote restart
|
|
14
|
+
npx -y deadbyte-mcp@0.15.27 audit status
|
|
15
|
+
npx -y deadbyte-mcp@0.15.27 audit verify
|
|
16
16
|
|
|
17
17
|
The `mcp` command is the quiet stdio server entry for local MCP clients; stdout is reserved for MCP.
|
|
18
18
|
The remote CLI invokes the stable active-release PowerShell launcher directly with shell=false.
|
|
@@ -29,6 +29,14 @@ and a random 256-bit session nonce, prevents concurrent foreground sessions, and
|
|
|
29
29
|
recover only a dead, unguarded stale owner. Explicit subcommands such as `remote status` remain
|
|
30
30
|
one-shot controller operations.
|
|
31
31
|
|
|
32
|
+
R50 PUBLIC PACKAGE BOUNDARY HOTFIX
|
|
33
|
+
----------------------------------
|
|
34
|
+
0.15.26 is immutable and remains valid as a published historical release, but its npm tarball omitted the
|
|
35
|
+
canonical top-level DEADBYTE-MCP.cmd compatibility launcher because the package-ignore boundary matched all
|
|
36
|
+
top-level DEADBYTE-MCP*.cmd wrappers. R50 narrows that boundary: DEADBYTE-MCP.cmd is shipped, while local and
|
|
37
|
+
shadow wrappers remain excluded. A pack-boundary regression now verifies this exact file surface before publish.
|
|
38
|
+
No R49 runtime semantics are widened by this hotfix.
|
|
39
|
+
|
|
32
40
|
R49 BOUNDED SEMANTIC DESKTOP WAIT
|
|
33
41
|
----------------------------------
|
|
34
42
|
`desktop_wait` replaces blind fixed sleeps with a bounded, read-only observation loop. It can wait for
|
package/RELEASE.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "deadbyte.release.v1",
|
|
3
3
|
"name": "deadbyte-mcp",
|
|
4
|
-
"version": "0.15.
|
|
5
|
-
"train": "
|
|
6
|
-
"label": "
|
|
4
|
+
"version": "0.15.27",
|
|
5
|
+
"train": "R50",
|
|
6
|
+
"label": "PUBLIC PACKAGE BOUNDARY HOTFIX",
|
|
7
7
|
"protocol_revision": "2026-07-28",
|
|
8
8
|
"parent": {
|
|
9
|
-
"release_id": "v0.15.
|
|
10
|
-
"manifest_sha256": "
|
|
11
|
-
"generation_manifest_sha256": "
|
|
9
|
+
"release_id": "v0.15.26-669ea65d2307ee2c",
|
|
10
|
+
"manifest_sha256": "669ea65d2307ee2cce06be960e0a8c7243dc6135f7f129a88d99f53096433cc8",
|
|
11
|
+
"generation_manifest_sha256": "08364adaf1dab9730c314e29121632c6371ed76fc677e83cb7f6aa6b244eab94"
|
|
12
12
|
},
|
|
13
13
|
"source_predecessor": {
|
|
14
|
-
"version": "0.15.
|
|
15
|
-
"tarball_sha256": "
|
|
16
|
-
"manifest_file_sha256": "
|
|
14
|
+
"version": "0.15.26",
|
|
15
|
+
"tarball_sha256": "3272679e3a18610d47e83dc8d3161e949d75a57da145a43c2ab50c865a83bb86",
|
|
16
|
+
"manifest_file_sha256": "669ea65d2307ee2cce06be960e0a8c7243dc6135f7f129a88d99f53096433cc8",
|
|
17
17
|
"reference_package": "@wonderwhy-er/desktop-commander@0.2.51",
|
|
18
18
|
"reference_server_sha256": "dfc303bb7dd2e8d01debac50fc43bb8644d00089bffdf2887e149497cff8b305",
|
|
19
19
|
"reference_schemas_sha256": "f342345e34e48769dabaefe1b932f09d41e2e207b422f7794a15ee50ffa8f140"
|
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:
|
|
4
|
+
"serialNumber": "urn:cdx:deadbyte-mcp:r50:0.15.27",
|
|
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.27"
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
13
|
"components": [
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
{
|
|
35
35
|
"type": "file",
|
|
36
36
|
"name": "deadbyte-hardware-observer-r45.exe",
|
|
37
|
-
"version": "0.15.
|
|
37
|
+
"version": "0.15.27",
|
|
38
38
|
"hashes": [
|
|
39
39
|
{
|
|
40
40
|
"alg": "SHA-256",
|
package/TEST-MATRIX.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "deadbyte.test-matrix.v1",
|
|
3
|
-
"version": "0.15.
|
|
4
|
-
"train": "
|
|
3
|
+
"version": "0.15.27",
|
|
4
|
+
"train": "R50",
|
|
5
5
|
"primary_platform": "win32-x64",
|
|
6
6
|
"reference": {
|
|
7
7
|
"package": "@wonderwhy-er/desktop-commander",
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
"schemas_sha256": "f342345e34e48769dabaefe1b932f09d41e2e207b422f7794a15ee50ffa8f140"
|
|
11
11
|
},
|
|
12
12
|
"required": [
|
|
13
|
+
{"id":"package-boundary","command":"node --test test/package-boundary.test.mjs","expected":"PASS canonical top-level DEADBYTE-MCP.cmd included; local/shadow wrappers excluded"},
|
|
14
|
+
{"id":"release-smoke","command":"node --test test/release-smoke-isolation.test.mjs","expected":"PASS"},
|
|
13
15
|
{"id":"capability-authority-truth","command":"node --test test/capability-resolver.test.mjs","expected":"PASS authority-state manifest truth"},
|
|
14
16
|
{"id":"compact-authority-truth","command":"node --test test/compact-max-catalog-r45.test.mjs","expected":"PASS real compact stdio authority-state manifest truth"},
|
|
15
17
|
{"id":"native-windows-observation","command":"powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-hardware-r45.ps1","expected":"PASS native Windows observation build/query gate"},
|
|
@@ -20,13 +22,11 @@
|
|
|
20
22
|
{"id":"commander-protocol-adversarial","command":"node --test test/commander-protocol-adversarial-r48.test.mjs","expected":"PASS malformed JSON, invalid request, unknown method/tool, duplicate IDs and concurrent correlation"},
|
|
21
23
|
{"id":"r48-release","command":"npm run r48:release:test","expected":"PASS"},
|
|
22
24
|
{"id":"full-regression","command":"npm run r48:full:test","expected":"PASS"},
|
|
23
|
-
{"id":"package-boundary","command":"node --test test/package-boundary.test.mjs","expected":"PASS"},
|
|
24
|
-
{"id":"release-smoke","command":"node --test test/release-smoke-isolation.test.mjs","expected":"PASS"},
|
|
25
25
|
{"id":"runtime-update","command":"node --test test/runtime-self-update.test.mjs","expected":"PASS"},
|
|
26
26
|
{"id":"audit","command":"npm audit --omit=dev","expected":"0 vulnerabilities"},
|
|
27
|
-
{"id":"activation","command":"npx -y deadbyte-mcp@0.15.
|
|
28
|
-
{"id":"machine-truth","command":"signed machine_ping","expected":"release_id and manifests bind activated 0.15.
|
|
29
|
-
{"id":"rollback-restore","command":"immutable slot rollback/restore","expected":"0.15.
|
|
27
|
+
{"id":"activation","command":"npx -y deadbyte-mcp@0.15.27 remote status","expected":"active runtime 0.15.27 with no VERSION SKEW"},
|
|
28
|
+
{"id":"machine-truth","command":"signed machine_ping","expected":"release_id and manifests bind activated 0.15.27 generation"},
|
|
29
|
+
{"id":"rollback-restore","command":"immutable slot rollback/restore","expected":"0.15.27 -> exact 0.15.26 -> exact 0.15.27"}
|
|
30
30
|
],
|
|
31
31
|
"focused_proof": {
|
|
32
32
|
"raw_mcp_protocol": {"tests":3,"pass":3,"fail":0},
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"coding_task_id": "a1a10fff1520b37ac674f1861cd9e53e64e350d5a0766639036aefe5e096e235",
|
|
42
42
|
"task_receipt_sha256": "7711039e4807f6c2af02bbda897d0032b067e0a6631f789fd3bf801258160d3f",
|
|
43
43
|
"action_receipt_sha256": "095c5eb4d959b9105a769649aa196a1d33f5097b899031dd16997e5ba1b352e6",
|
|
44
|
-
"
|
|
44
|
+
"not_valid_as_r50_proof": true
|
|
45
45
|
},
|
|
46
46
|
"performance": {
|
|
47
47
|
"fresh_cross_reference_status": "PASS_PINNED_REFERENCE_RUNTIME",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deadbyte-mcp",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.27",
|
|
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-r50.ps1",
|
|
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,56 @@
|
|
|
1
|
+
$ErrorActionPreference = 'Stop'
|
|
2
|
+
Set-StrictMode -Version 3.0
|
|
3
|
+
|
|
4
|
+
function Invoke-GateStep {
|
|
5
|
+
param([Parameter(Mandatory)][string]$Name,[Parameter(Mandatory)][string[]]$NpmArgs)
|
|
6
|
+
Write-Host "==== $Name ===="
|
|
7
|
+
& npm.cmd @NpmArgs
|
|
8
|
+
if ($LASTEXITCODE -ne 0) { throw "DEADBYTE 0.15.27 / R50 gate failed at $Name with exit code $LASTEXITCODE" }
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function Invoke-NodeTest {
|
|
12
|
+
param([Parameter(Mandatory)][string]$Name,[Parameter(Mandatory)][string[]]$TestFiles)
|
|
13
|
+
Write-Host "==== $Name ===="
|
|
14
|
+
& node.exe --test --test-concurrency=1 @TestFiles
|
|
15
|
+
if ($LASTEXITCODE -ne 0) { throw "DEADBYTE 0.15.27 / R50 gate failed at $Name with exit code $LASTEXITCODE" }
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
Invoke-NodeTest 'r50-package-boundary' @('test/package-boundary.test.mjs')
|
|
19
|
+
Invoke-NodeTest 'r50-release-smoke-isolation' @('test/release-smoke-isolation.test.mjs')
|
|
20
|
+
Invoke-GateStep 'containment-build' @('run','containment:build')
|
|
21
|
+
Invoke-GateStep 'process-policy-refresh' @('run','process:policy:refresh')
|
|
22
|
+
Invoke-GateStep 'desktop-policy-refresh' @('run','desktop:policy:refresh')
|
|
23
|
+
Invoke-GateStep 'hardware-build' @('run','hardware:build')
|
|
24
|
+
|
|
25
|
+
$hostPolicy = [System.IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\controller\deadbyte-host-policy.json'))
|
|
26
|
+
Remove-Item -LiteralPath $hostPolicy -Force -ErrorAction SilentlyContinue
|
|
27
|
+
if (Test-Path -LiteralPath $hostPolicy) { throw 'could not establish hermetic Host policy absence' }
|
|
28
|
+
|
|
29
|
+
Invoke-GateStep 'r50-release-focused' @('run','r48:release:test')
|
|
30
|
+
Invoke-NodeTest 'r49-donor-proof' @('test/r49-remote-control-donors.test.mjs')
|
|
31
|
+
Invoke-NodeTest 'r49-desktop-wait' @('test/desktop-runtime-r40.test.mjs','test/desktop-mcp-tools-r40.test.mjs','test/autonomous-desktop-r40.test.mjs')
|
|
32
|
+
Invoke-GateStep 'r49-catalog' @('run','r48:catalog:test')
|
|
33
|
+
Invoke-GateStep 'commander-hardening' @('run','r47:hardening:test')
|
|
34
|
+
Invoke-GateStep 'full-regression' @('run','r48:full:test')
|
|
35
|
+
Invoke-GateStep 'mcp-smoke' @('run','mcp:smoke')
|
|
36
|
+
Invoke-GateStep 'mcp-agent-smoke' @('run','mcp:agent:smoke')
|
|
37
|
+
Invoke-GateStep 'mcp-coding-smoke' @('run','mcp:coding:smoke')
|
|
38
|
+
Invoke-GateStep 'mcp-machine-fs-smoke' @('run','mcp:machine-fs:smoke')
|
|
39
|
+
Invoke-GateStep 'mcp-observation-smoke' @('run','mcp:observation:smoke')
|
|
40
|
+
Invoke-GateStep 'mcp-process-smoke' @('run','mcp:process:smoke')
|
|
41
|
+
Invoke-GateStep 'mcp-autonomous-smoke' @('run','mcp:autonomous:smoke')
|
|
42
|
+
Invoke-GateStep 'tunnel-stdio-compat-smoke' @('run','mcp:tunnel-compat:smoke')
|
|
43
|
+
Invoke-GateStep 'containment-smoke' @('run','containment:smoke')
|
|
44
|
+
Invoke-GateStep 'contained-smoke' @('run','contained:smoke')
|
|
45
|
+
Invoke-GateStep 'mcp-contained-smoke' @('run','mcp:contained:smoke')
|
|
46
|
+
Invoke-GateStep 'host-policy-refresh' @('run','host:policy:init')
|
|
47
|
+
Invoke-GateStep 'manifest-write' @('run','manifest:write')
|
|
48
|
+
Invoke-GateStep 'manifest-verify' @('run','manifest:verify')
|
|
49
|
+
Invoke-GateStep 'doctor' @('run','doctor')
|
|
50
|
+
Invoke-GateStep 'mcp-host-smoke' @('run','mcp:host:smoke')
|
|
51
|
+
Invoke-GateStep 'authority-smoke' @('run','authority:smoke')
|
|
52
|
+
Invoke-GateStep 'manifest-final-verify' @('run','manifest:verify')
|
|
53
|
+
|
|
54
|
+
& node.exe (Join-Path $PSScriptRoot 'windows-gate-evidence-r50.mjs')
|
|
55
|
+
if ($LASTEXITCODE -ne 0) { throw "R50 evidence writer failed with exit code $LASTEXITCODE" }
|
|
56
|
+
Write-Host '==== DEADBYTE 0.15.27 / R50 WINDOWS GATE: PASS ===='
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { mkdir, open, readFile } from 'node:fs/promises';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { doctor } from '../src/doctor-r45.mjs';
|
|
7
|
+
|
|
8
|
+
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
9
|
+
const stateRoot = path.resolve(process.env.DEADBYTE_STATE_ROOT || path.join(os.homedir(), '.deadbyte-mcp'));
|
|
10
|
+
const sha256 = bytes => createHash('sha256').update(bytes).digest('hex');
|
|
11
|
+
const insist = (ok, message) => { if (!ok) throw new Error(message); };
|
|
12
|
+
const pkg = JSON.parse(await readFile(path.join(root, 'package.json'), 'utf8'));
|
|
13
|
+
const release = JSON.parse(await readFile(path.join(root, 'RELEASE.json'), 'utf8'));
|
|
14
|
+
const active = JSON.parse(await readFile(path.join(stateRoot, 'active-release.json'), 'utf8'));
|
|
15
|
+
const manifestSha256 = sha256(await readFile(path.join(root, 'MANIFEST.SHA256')));
|
|
16
|
+
|
|
17
|
+
insist(pkg.version === '0.15.27' && release.version === pkg.version && release.train === 'R50', 'R50 candidate identity mismatch');
|
|
18
|
+
insist(
|
|
19
|
+
active.release_id === release.parent.release_id &&
|
|
20
|
+
active.manifest_sha256 === release.parent.manifest_sha256 &&
|
|
21
|
+
active.generation_manifest_sha256 === release.parent.generation_manifest_sha256,
|
|
22
|
+
'active runtime is not the exact sealed R50 parent'
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
const health = await doctor();
|
|
26
|
+
insist(health.status === 'ok' && health.package_version === pkg.version && health.manifest?.verified === true, 'R50 doctor evidence invalid');
|
|
27
|
+
insist(health.policy?.host_v2_ready === true, 'R50 Host policy v2 is not ready');
|
|
28
|
+
|
|
29
|
+
const evidence = {
|
|
30
|
+
schema: 'deadbyte.r50-windows-gate.v1',
|
|
31
|
+
status: 'passed',
|
|
32
|
+
exit_code: 0,
|
|
33
|
+
version: pkg.version,
|
|
34
|
+
train: 'R50',
|
|
35
|
+
completed_at_utc: new Date().toISOString(),
|
|
36
|
+
manifest_sha256: manifestSha256,
|
|
37
|
+
parent: release.parent,
|
|
38
|
+
active_predecessor: {
|
|
39
|
+
release_id: active.release_id,
|
|
40
|
+
version: active.version,
|
|
41
|
+
manifest_sha256: active.manifest_sha256,
|
|
42
|
+
generation_manifest_sha256: active.generation_manifest_sha256
|
|
43
|
+
},
|
|
44
|
+
doctor: { verified_entries: health.manifest.verified_entries, host_v2_ready: true },
|
|
45
|
+
gates: {
|
|
46
|
+
package_boundary: true,
|
|
47
|
+
release_smoke_isolation: true,
|
|
48
|
+
full_regression: true,
|
|
49
|
+
commander_hardening: true,
|
|
50
|
+
donor_proof: true,
|
|
51
|
+
desktop_wait: true,
|
|
52
|
+
exact_catalog: true,
|
|
53
|
+
stdio_smokes: true,
|
|
54
|
+
manifest_final_verify: true
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const bytes = Buffer.from(`${JSON.stringify(evidence, null, 2)}\n`);
|
|
59
|
+
const dir = path.join(stateRoot, 'evidence', 'release');
|
|
60
|
+
await mkdir(dir, { recursive: true });
|
|
61
|
+
const target = path.join(dir, `r50-windows-gate-${manifestSha256.slice(0, 16)}.json`);
|
|
62
|
+
|
|
63
|
+
try {
|
|
64
|
+
const handle = await open(target, 'wx', 0o600);
|
|
65
|
+
try { await handle.writeFile(bytes); await handle.sync(); }
|
|
66
|
+
finally { await handle.close(); }
|
|
67
|
+
} catch (error) {
|
|
68
|
+
if (error?.code !== 'EEXIST') throw error;
|
|
69
|
+
const prior = JSON.parse(await readFile(target, 'utf8'));
|
|
70
|
+
insist(
|
|
71
|
+
prior.schema === evidence.schema &&
|
|
72
|
+
prior.status === 'passed' &&
|
|
73
|
+
prior.version === evidence.version &&
|
|
74
|
+
prior.manifest_sha256 === manifestSha256 &&
|
|
75
|
+
prior.parent?.release_id === release.parent.release_id,
|
|
76
|
+
'conflicting R50 gate evidence identity'
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
console.log(JSON.stringify({ status: 'passed', path: target, sha256: sha256(bytes), manifest_sha256: manifestSha256 }));
|
package/src/version.mjs
CHANGED
|
@@ -42,3 +42,9 @@ test('publish boundary excludes live state, private keys, grants and non-example
|
|
|
42
42
|
const forbidden=files.filter(rel=>rel.startsWith('tmp/')||rel.startsWith('.deadbyte-machine-fs-recovery/')||/(^|\/)(active-release\.json|runtime\/|audit\/|evidence\/)|\.pem$|(^|\/)deadbyte-controller\.config\.psd1$|(^|\/)deadbyte-host-policy\.json$|(^|\/)[^/]*(?:grant|arm)\.json$/i.test(rel));
|
|
43
43
|
assert.deepEqual(forbidden,[]);
|
|
44
44
|
});
|
|
45
|
+
|
|
46
|
+
test('publish boundary includes only the canonical top-level Windows launcher',()=>{
|
|
47
|
+
const files=packFiles();
|
|
48
|
+
const launchers=files.filter(rel=>/^DEADBYTE-MCP.*\.cmd$/i.test(rel));
|
|
49
|
+
assert.deepEqual(launchers,['DEADBYTE-MCP.cmd']);
|
|
50
|
+
});
|
|
@@ -3,40 +3,55 @@ import assert from 'node:assert/strict';
|
|
|
3
3
|
import { readFile } from 'node:fs/promises';
|
|
4
4
|
import { DEADBYTE_VERSION } from '../src/version.mjs';
|
|
5
5
|
|
|
6
|
-
const root=new URL('../',import.meta.url);
|
|
7
|
-
const read=rel=>readFile(new URL(rel,root),'utf8');
|
|
6
|
+
const root = new URL('../', import.meta.url);
|
|
7
|
+
const read = rel => readFile(new URL(rel, root), 'utf8');
|
|
8
8
|
|
|
9
|
-
test('
|
|
10
|
-
const [pkg,lock,release,provenance,matrix]=await Promise.all([
|
|
9
|
+
test('R50 0.15.27 successor binds exact published immutable 0.15.26 parent', async () => {
|
|
10
|
+
const [pkg, lock, release, provenance, matrix] = await Promise.all([
|
|
11
11
|
read('package.json').then(JSON.parse),
|
|
12
12
|
read('package-lock.json').then(JSON.parse),
|
|
13
13
|
read('RELEASE.json').then(JSON.parse),
|
|
14
14
|
read('PROVENANCE.json').then(JSON.parse),
|
|
15
15
|
read('TEST-MATRIX.json').then(JSON.parse)
|
|
16
16
|
]);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
assert.equal(
|
|
27
|
-
|
|
28
|
-
assert.equal(release.
|
|
29
|
-
assert.equal(release.
|
|
30
|
-
assert.equal(release.
|
|
31
|
-
assert.equal(release.
|
|
32
|
-
assert.equal(release.
|
|
33
|
-
|
|
34
|
-
assert.equal(release.
|
|
35
|
-
assert.equal(release.
|
|
36
|
-
assert.equal(
|
|
37
|
-
assert.equal(
|
|
38
|
-
assert.equal(
|
|
39
|
-
|
|
40
|
-
assert.equal(
|
|
41
|
-
assert.equal(
|
|
17
|
+
|
|
18
|
+
for (const value of [
|
|
19
|
+
pkg.version,
|
|
20
|
+
lock.version,
|
|
21
|
+
lock.packages[''].version,
|
|
22
|
+
DEADBYTE_VERSION,
|
|
23
|
+
release.version,
|
|
24
|
+
provenance.version,
|
|
25
|
+
matrix.version
|
|
26
|
+
]) assert.equal(value, '0.15.27');
|
|
27
|
+
|
|
28
|
+
assert.equal(release.train, 'R50');
|
|
29
|
+
assert.equal(release.label, 'PUBLIC PACKAGE BOUNDARY HOTFIX');
|
|
30
|
+
assert.equal(release.parent.release_id, 'v0.15.26-669ea65d2307ee2c');
|
|
31
|
+
assert.equal(release.parent.manifest_sha256, '669ea65d2307ee2cce06be960e0a8c7243dc6135f7f129a88d99f53096433cc8');
|
|
32
|
+
assert.equal(release.parent.generation_manifest_sha256, '08364adaf1dab9730c314e29121632c6371ed76fc677e83cb7f6aa6b244eab94');
|
|
33
|
+
|
|
34
|
+
assert.equal(release.source_predecessor.version, '0.15.26');
|
|
35
|
+
assert.equal(release.source_predecessor.tarball_sha256, '3272679e3a18610d47e83dc8d3161e949d75a57da145a43c2ab50c865a83bb86');
|
|
36
|
+
assert.equal(release.source_predecessor.manifest_file_sha256, '669ea65d2307ee2cce06be960e0a8c7243dc6135f7f129a88d99f53096433cc8');
|
|
37
|
+
assert.equal(release.source_predecessor.reference_server_sha256, 'dfc303bb7dd2e8d01debac50fc43bb8644d00089bffdf2887e149497cff8b305');
|
|
38
|
+
assert.equal(release.source_predecessor.reference_schemas_sha256, 'f342345e34e48769dabaefe1b932f09d41e2e207b422f7794a15ee50ffa8f140');
|
|
39
|
+
|
|
40
|
+
assert.equal(release.capabilities.full_tool_count, 117);
|
|
41
|
+
assert.equal(release.capabilities.desktop_bounded_semantic_wait, true);
|
|
42
|
+
assert.equal(release.capabilities.commander_incremental_pdf_revisions, true);
|
|
43
|
+
assert.equal(release.capabilities.commander_docx_header_footer_search, true);
|
|
44
|
+
assert.equal(release.capabilities.commander_directory_read_fallback, true);
|
|
45
|
+
assert.equal(release.capabilities.commander_binary_detection, true);
|
|
46
|
+
assert.equal(release.capabilities.commander_protocol_adversarial, true);
|
|
47
|
+
assert.equal(release.capabilities.atomic_mutation_unknown_effect, true);
|
|
48
|
+
|
|
49
|
+
assert.equal(provenance.parent_release_id, release.parent.release_id);
|
|
50
|
+
assert.equal(provenance.parent_manifest_sha256, release.parent.manifest_sha256);
|
|
51
|
+
assert.equal(provenance.parent_generation_manifest_sha256, release.parent.generation_manifest_sha256);
|
|
52
|
+
assert.equal(provenance.source_predecessor_tarball_sha256, release.source_predecessor.tarball_sha256);
|
|
53
|
+
|
|
54
|
+
assert.equal(matrix.train, 'R50');
|
|
55
|
+
assert.equal(matrix.predecessor_r48_full_regression_partition_proof.files, 211);
|
|
56
|
+
assert.equal(matrix.predecessor_r48_full_regression_partition_proof.not_valid_as_r50_proof, true);
|
|
42
57
|
});
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
|
-
import {readFile} from 'node:fs/promises';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
3
|
import test from 'node:test';
|
|
4
4
|
|
|
5
5
|
const read = path => readFile(new URL(`../${path}`, import.meta.url), 'utf8');
|
|
6
6
|
|
|
7
|
-
test('
|
|
8
|
-
const [pkgText, gate, evidence,
|
|
7
|
+
test('R50 canonical Windows gate is successor-bound and preserves R49/R48 historical gates', async () => {
|
|
8
|
+
const [pkgText, gate, evidence, historicalR49, historicalR48, deferred] = await Promise.all([
|
|
9
9
|
read('package.json'),
|
|
10
|
+
read('scripts/gate-windows-r50.ps1'),
|
|
11
|
+
read('scripts/windows-gate-evidence-r50.mjs'),
|
|
10
12
|
read('scripts/gate-windows-r49.ps1'),
|
|
11
|
-
read('scripts/windows-gate-evidence-r49.mjs'),
|
|
12
13
|
read('scripts/gate-windows-r48.ps1'),
|
|
13
14
|
read('scripts/deferred-slot-operation-r46.mjs')
|
|
14
15
|
]);
|
|
15
16
|
const pkg = JSON.parse(pkgText);
|
|
16
|
-
assert.match(pkg.scripts['gate:windows'], /gate-windows-
|
|
17
|
-
assert.match(gate, /DEADBYTE 0\.15\.
|
|
17
|
+
assert.match(pkg.scripts['gate:windows'], /gate-windows-r50\.ps1$/);
|
|
18
|
+
assert.match(gate, /DEADBYTE 0\.15\.27 \/ R50 WINDOWS GATE: PASS/);
|
|
19
|
+
assert.match(gate, /r50-package-boundary/);
|
|
18
20
|
assert.match(gate, /r49-remote-control-donors\.test\.mjs/);
|
|
19
21
|
assert.match(gate, /desktop-runtime-r40\.test\.mjs/);
|
|
20
22
|
assert.match(gate, /manifest-final-verify/);
|
|
21
|
-
assert.match(evidence, /deadbyte\.
|
|
22
|
-
assert.match(evidence, /pkg\.version==='0\.15\.
|
|
23
|
-
assert.match(evidence, /release\.train==='
|
|
24
|
-
assert.match(
|
|
23
|
+
assert.match(evidence, /deadbyte\.r50-windows-gate\.v1/);
|
|
24
|
+
assert.match(evidence, /pkg\.version === '0\.15\.27'/);
|
|
25
|
+
assert.match(evidence, /release\.train === 'R50'/);
|
|
26
|
+
assert.match(historicalR49, /DEADBYTE 0\.15\.26 \/ R49 WINDOWS GATE: PASS/);
|
|
27
|
+
assert.match(historicalR48, /DEADBYTE 0\.15\.25 \/ R48 WINDOWS GATE: PASS/);
|
|
25
28
|
assert.match(deferred, /const expectedVersion=packageIdentity\.version/);
|
|
26
29
|
assert.match(deferred, /'--expected-version',expectedVersion/);
|
|
27
30
|
assert.match(deferred, /async function awaitHandoffCompletion/);
|