deadbyte-mcp 0.11.1 → 0.11.2

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 CHANGED
@@ -30,19 +30,19 @@ f0ce7acb1e41325cef8b6789f95bd78b6a6107423773eace57a12b49faa55095 bin/WORKER-REG
30
30
  e74d45bd9facf03c9a2a0ff52600252924deb804a87e4b5503f48662a2b45a3b conpty-input-observer.obj
31
31
  8c1c45dd47e07b05eb2b43a6060ac23ecb9f7d0dd8aecfdfc29d42a6f824e507 CONTEXT.md
32
32
  e19ff4253eb57ea6befd5df8b807c1c95fda83bfebd0ba871ceae7c5412d4c27 controller/deadbyte-controller.config.psd1.example
33
- 50977dd6714435c9c7e3ae5d9b85a0b5cd3b98ffc0d172827f150f94b5c0d734 controller/deadbyte-controller.ps1
33
+ 31e4cb61ba31ae58033dd9ea9751a1ad6576d1555cd968da9137e7a2272bcaf2 controller/deadbyte-controller.ps1
34
34
  5e8ef223b0dbc52173aaf044a075837eef8964ff0e7e16f83a595e0d17695625 controller/deadbyte-host-policy.json.example
35
35
  6f0cc469f51444dd18211fa3346c826abeea4d2ec7a8945f0200dc5c622031ef controller/DEADBYTE-MCP.cmd
36
36
  e5f8d8b23a31ff6f0ea3c30711fe28031db04156c54ae95840f12e41e0259710 controller/deadbyte-process-policy.json
37
37
  d274b099a298c1033fea8f1e8849751693bbc0448778d619400acb82d4f53a3b controller/deadbyte-semantic-lsp-config.json
38
- 598f50f7e526de3c80db6644c8123317a76702012bfd8998917a0e3b442d3c2a controller/README.TXT
38
+ 362367610f0593adbcdd82da5de44f593b4967b850a04cd23da3ab53b280ccc3 controller/README.TXT
39
39
  101e613518c73c6aa31c725fe1b5f9a24c995dc9876b7b28e1f3e97ac9f8d362 DEADBYTE-MCP-R27-FINAL/R27-ADMIN-CLOSURE.json
40
40
  e9baf9abf4410ff8bd0f68e6b957dbbf9790fc88d9126311c5c135e943424952 DEADBYTE-MCP-R27-FINAL/R27-CLEANUP-FINAL-RECEIPT.json
41
41
  39cb483c0897af5027bf1790a35a4c3b9a8cd5f6e3a2e0440787615f69cd14b2 DEADBYTE-MCP-R27-FINAL/R27-FINAL-CLOSURE.json
42
42
  9aaf6d07e7511a1f0046ee8cc731d4b9660bbbf47dcea785a9c6b6cec95640bc DEADBYTE-MCP-R27-FINAL/R27-SLOT-UPDATE-RECEIPT.json
43
43
  70dfccba12797ce5fea60668c97026cf71e7942cb4d886cac5853e05b362b6c1 DEADBYTE-MCP.cmd
44
44
  7994082e4340b5f43272e8cb111ce54043af64dc3a04d5279e251f3dae16f654 docs/ADR-0001-PRODUCTION-BASELINE-SEAMS.md
45
- a9f154cb50e404c8c35eb1abe2cc43e2e670e2e1146e7fa6b22764559ed8ac4c docs/ARCHITECTURE.md
45
+ d2acc025e4a05ffdf0180d545cf0acf0251731eb35467aff534e44bedeb8a95a docs/ARCHITECTURE.md
46
46
  3f455f407933d8e044682f3415bdb51e68d7c4b508411dda7d8ed65b6e1d7e79 docs/AUTHORITY.md
47
47
  3be291331862ac5bd892345e84d6ce8d9b6d835855235d7c5f28d5cd4b04afdb docs/CHILD-CONTROL.md
48
48
  a9cbd1e2def00aae93569835f2ee17aa5cfd181e5770d7c1185c9c62deb0769e docs/CONSTRUCTION-LADDER.md
@@ -1303,7 +1303,7 @@ db605a698f917c4006462596e6526fe6a9c6eff9b8409e8472fe545d4b70027c node_modules/z
1303
1303
  f67a25ded944912bd4621b68df17c7c70a52aae117278c076c0aabbc32a3abba node_modules/zod/v4/mini/schemas.d.ts
1304
1304
  51b3a7869df2d3a1bd98acb9d5b6a61bbccc7653d7a3d8fca7f0e0db7e84e284 node_modules/zod/v4/mini/schemas.js
1305
1305
  3e3125b5a537a24c3632c1c5c09640ce7bcb3935901b127ad8ae3c37a27f133f node_modules/zod/v4/package.json
1306
- 5c1c0fa87b01b05cc765709c644f4db6caaddae38136f3d77569c0808b23e096 package.json
1306
+ a5a595ca5a530986dfd9d9887653a0d3f7e9e17949819e1a201e7349299590e3 package.json
1307
1307
  5a2722b8b5b16a2b5af9851638851c82c8f795bf4685f1090745ebbe61498c91 proof/CONTAINMENT-BUILD.txt
1308
1308
  a8efa13e44ff50902aee64cfca542d19605a1ae23db95280ad2d44b324f3eae7 proof/MCP-SMOKE-STATUS.txt
1309
1309
  7c115069cc4a343ca21b0ebdee74bd8f544b02d4aa906ffa13308725825d891a proof/NODE-SYNTAX.txt
@@ -1364,7 +1364,7 @@ bd0773a9e02e8ab11475c9cc5a7db29a8313233b7eab7f837922737e75ec5938 proof/VERIFY.t
1364
1364
  2c821808d4596965c577f40191daee224d3aea81989778c4af97f53a83b487db proof/WINDOWS-CONTAINED-STATUS.txt
1365
1365
  f8bc839c7b4fcb0ea7b7e7ad9448847c3beae6f95f2eb4d407d1b284aaa4ff68 proof/WINDOWS-CONTAINMENT-STATUS.txt
1366
1366
  27ca0f3c9ee3a1b6374a9c8dd98008decdd0c7659c7a569c70ad7b9734c74655 R34-BASELINE.json
1367
- 006799e5d014f30214fa21f9fc3a877a1b62d1ddbd1bb1c45a645cb6aa5f2ea0 README.txt
1367
+ be4a59c3fc6ea61492777b2d8aafc2e29ee589f8b1868792f95533567c4ec84d README.txt
1368
1368
  1d4e9dee6f0669bd825334a6a72e13ee85ee29ab430dcef21d893ffd744774b5 scripts/autonomous-benchmark.mjs
1369
1369
  06447dea18be1fa0a5e5a1167a6e3dcbd10ddfd28dd18d7bfd17383cf5bfc080 scripts/autonomous-build.ps1
1370
1370
  6ae23099102eb0f0be4969598ba76600d19b00abf534a039d48e63bc7d7fffe3 scripts/autonomous-tests.ps1
@@ -1372,21 +1372,27 @@ f8bc839c7b4fcb0ea7b7e7ad9448847c3beae6f95f2eb4d407d1b284aaa4ff68 proof/WINDOWS-
1372
1372
  1077e2f4baf2aae1c0d3e2416d00bd49a54e9e39a5939872c73143ca9e546633 scripts/capability-benchmark.mjs
1373
1373
  7d3c741de2b1c29f82efa96ab81fc819d8520f97413ce5ab0d4a1b1efd0e8b42 scripts/coding-live-smoke.mjs
1374
1374
  254872f5f1f2fa662b1061aad4c3da59b21d882e45f7f0ceefff2f688ea493a1 scripts/deferred-slot-operation-r37-0110.mjs
1375
+ 98b27366379a63ffad8cc6ac3c33dff6f0f6810eb4f1a75835aa8477afba8ad6 scripts/deferred-slot-operation-r38.mjs
1375
1376
  34116370895aeff9a424475558f4aca3b05460146455d9bb0bafcacd1a270910 scripts/deferred-slot-operation.mjs
1376
1377
  69e3beb55573b5fc3ba30a220fabf9e3585e7757430fb3264caf27e41254b789 scripts/final-closure-r36.mjs
1377
1378
  4b7dce462db12237e9f3bb8637e703689140c16e5ddd8bf08b41f8a4b35de95d scripts/final-closure-r37-0110.mjs
1379
+ 551e7aa855d1618f29b243413a3cb888f67b0f33eb436f25401902d528c6171a scripts/final-closure-r38.mjs
1378
1380
  4b895f85e2bf7009def5ecb0a96dad38832c6fac3b2a0633a6b71d9ac9a868be scripts/final-closure-verify-r36.mjs
1379
1381
  c6cbbfe7ea3e4c257c419535425a9f75e4d58f2d5cb18f2f408b871f1c7c20a8 scripts/final-closure-verify-r37-0110.mjs
1382
+ 228268406b0fd7bcb585fe87ce720bec7548ce172ee22f7f1be02638c2d7af18 scripts/final-closure-verify-r38.mjs
1380
1383
  c1a16ed8b9e3bde9622d288e7274d7677eec7fa1783cbb090fb8df96db3d6e2a scripts/final-closure-verify.mjs
1381
1384
  14b7fee5246589819ee0a5e89a0e386b932d89275660305d98324efc6a3f0902 scripts/final-closure.mjs
1382
1385
  feaecfaf78ebf20a42b17974a81777185b74344bc4717f00fde69b5e66ac3257 scripts/gate-windows-r36.ps1
1383
1386
  75931dbb30e7d5b07bf781481849c7a583c7fe7250ac2e5d43a83e9c4764569b scripts/gate-windows-r37-0110.ps1
1387
+ 96c407135841b88ed713ed4984a678acfe5b19285673e0d2c35168d9bedde68c scripts/gate-windows-r38.ps1
1384
1388
  9a085b34b9e54023eb0efadcea1e74a1bef44b984105d064768d66910999173e scripts/gate-windows.ps1
1385
1389
  a64ab9a70c26495ac5d94c024a8813d8bd2bc8a708f236b672cb18556396c262 scripts/init-host-policy.ps1
1386
1390
  b655f2f9c63c7e4b651e7182c6461f9ec63d0991f770f24fe5d44b209ad6bdfb scripts/refresh-process-policy.mjs
1387
1391
  c92b518b7232849d945f0fcd9c428a2366758e5c9410be68104ed50ef869a33e scripts/release-manifest.mjs
1388
1392
  2272ceab04fba9030fe3dad5ccb14b8313f7dea963873ca64a86945608b6e7fb scripts/release-parity-r36.mjs
1389
1393
  bb03b8645718c52f7e195703d88caf284c6bdb4459e35bc2ff67ed7dcc7ebcfb scripts/release-parity-r37-0110.mjs
1394
+ 64779ec84d473fb15efe6908a8e9d9b25fcec42806393083586a4d088cedb69c scripts/release-parity-r38.mjs
1395
+ 6b5ea3ae9b3468bc82df8f371f7e2120c5f4265916cf312beae045f481b8abbb scripts/release-parity-tests-r38.ps1
1390
1396
  4c8ff3df2d3c5bb06984be8887381f29d87c468c6a0c87db7ba623717907e79a scripts/release-parity-tests.ps1
1391
1397
  1b83f49d9798188533c8cfca0030a98af34560fe181b3e593db790319e1b7bc5 scripts/release-parity.mjs
1392
1398
  caac2867971dfdf56456528b816ff56282a11cbba81510c13e1723accffac678 scripts/runtime-self-update.mjs
@@ -1394,6 +1400,7 @@ b0cc75c38e0163dbcf7fb1b0d21f2dc34c71f2d0e2a156a53e570ff84afc64e6 scripts/semant
1394
1400
  0a115aa9829576c86cc247f754cae69ae09ba146b637d3a1c9fbc16420d20a5d scripts/tool-surface-snapshot.mjs
1395
1401
  eb59d412712270bedc33bcdabd65fe9c31994339858a4947d0dc4bac371256fc scripts/windows-gate-evidence-r36.mjs
1396
1402
  ea68d948b9e3bf155b7782b5745d75d98c142a199785ba52840aff7d2272ea17 scripts/windows-gate-evidence-r37-0110.mjs
1403
+ 3d7c5092b080cae079607e5f741edd5c106117b962b0ebdc2c647431517a2282 scripts/windows-gate-evidence-r38.mjs
1397
1404
  2255b8eb78ca61267df54448560a671357f04893b6bb1df27b8b9fc8a944d255 scripts/windows-gate-evidence.mjs
1398
1405
  5f4a73a1c3dc178c4b5de193b6cfc4774cfc46d5ad95ef0b786d4d386d82323b src/agent-mcp-tools.mjs
1399
1406
  22d32373fdaceb7debae300ec4db2f3b1677072e946a203acff6f5e4dc458946 src/agent-memory-plane.mjs
@@ -1480,7 +1487,7 @@ be4a4f7f16e473ac842559a5a18eccb59e3693bded59a1abc71e75ff448cc755 src/proof-work
1480
1487
  9105c86adc4f5a11ccc076cd17c9effe4d4d3e7bce42e00420a987deb315ec92 src/r36-compact-disarmed-probe.mjs
1481
1488
  57f6f90baff83eb7a6e0cb4a02b62e10c3de39d10befbf426578eb187d626ad7 src/r36-full-surface-probe.mjs
1482
1489
  afc638b797d81b16c620ca2226eacc4cb1a36562a402219cdac3376867170610 src/receipt.mjs
1483
- adb6c8218b1067b1cf72510661cc4e8e8cedef3d7d163170c2590fd34eeea4ee src/release-generation.mjs
1490
+ 4d9acc7d201d135ac3fc70632fb2fb39ee977bc608f0ed575d475b0a04070d34 src/release-generation.mjs
1484
1491
  a7a63ea58291e0676c7199633ae234030f46285840cdfc519c879c279ae8bb14 src/release-slot.mjs
1485
1492
  cefc1666608dc2aba7a93b460c2ccc580317acbda6127db2c5b3145233c4c574 src/remote-live-log.mjs
1486
1493
  589c7f348ef24ce61206ea6b6d5e6962e7828c4c12eb23c9bfda7d6103dd710a src/remote-mcp-autonomous-smoke-client.mjs
@@ -1511,7 +1518,7 @@ a765372ee27cf34b3f42ca77e43b839a306a4ca7d8b1c5e2fdd4367ab0c95769 src/tunnel-std
1511
1518
  16df134040e3ff1e73df722b568d3e8ac0a6923b097696cead7580da75aa8d2a src/tunnel-stdio-compat.mjs
1512
1519
  642cb67d1854850e336ee73fbd71b329056bdcbdab35cea19c1a995a155ff5d9 src/verifier-cli.mjs
1513
1520
  8f818a4852ce3be3a380cd4736c3073a7a3e0e45cd7c7ca90588a6b843d3d022 src/verifier.mjs
1514
- 860eac6f9278f36838f49660d9679cf76d1140152e88fedbd021156c8cbe4c01 src/version.mjs
1521
+ 72b63a1112e71443587872f23c02f85541a853706beba06679ae2c5bcc72a110 src/version.mjs
1515
1522
  7e09c57a97289360aabfaf3d531208e54872efbfb3182f3c18203d2cb88c46b5 src/worker-registry.mjs
1516
1523
  76361d5ae9a710273cf64a7525082197b692236bf23689875e5fd1ef4aa96d2b src/worker-scheduler.mjs
1517
1524
  2a78c818058b25efdc143a3a97c832da231ccd6ff9d90c7796d681a0251b85c4 test/agent-crash-child.mjs
@@ -1545,7 +1552,7 @@ bad448d7bfd0c66b8d0dc0fa601fc22d69ccc3f447140ed0f77b68957984daea test/capabilit
1545
1552
  c343906ca0878e13c576cd9f615802b1139c693bf6769a780dfb052637cf0d83 test/capability-benchmark.test.mjs
1546
1553
  b9a8faa4b86683ac5aea891fe6bc95f8e425fb31635176aa4603f9d582b52a79 test/capability-claims-r36.test.mjs
1547
1554
  6fb8640b5488b6c2f1e16bb5c7c0e17b0a7a485b149e2a7cc203fceb812ed824 test/capability-ledger-r36.test.mjs
1548
- 47a88726f671937b2c666957673c246a4d5f8493215328b32bbeaa3591f56664 test/cli-entrypoint.test.mjs
1555
+ 4239c77b9b1756cfb9a2f3c0cfefdd7abd4ac2579650828eb55f3a0dc9b98a84 test/cli-entrypoint.test.mjs
1549
1556
  350e151dbd8cc2723b141c5cf5f90bdf11289577c9b9347330e3ad815d948e98 test/coding-catalog-consistency.test.mjs
1550
1557
  604605e1992ea62e1eca6880d7b0bae36d43b16d17573a663cd9b3ff089575c7 test/coding-crash.test.mjs
1551
1558
  0fad3c669e48d60bbae7f4b847472677bf3bf8bcc9db0c798d76814b8f907e17 test/coding-observation.test.mjs
@@ -1566,8 +1573,8 @@ a972bd20fa927427e6d8e4181699a27e792e916b02dcf8a1ac3e2b44afd238c1 test/controlle
1566
1573
  41959e534e2283bf55ced245a58b6ea8d4d0d91d79820d87a3325adc2051560a test/controller-r27.test.mjs
1567
1574
  ceba7d1a09ccdcb20f33fe4e6de7667ffe0f0170d1bc9fefadfdba4d7f228090 test/controller-r29.test.mjs
1568
1575
  4d0dc810d9af13907f31c834a13acfb7e01ffbbe65575b69649fe52741e42175 test/controller-r30.test.mjs
1569
- aeeb4894cc9656d13812817c969d9edf31a50222911f65c75472af03d9c4ea80 test/controller.test.mjs
1570
- ae4d247f0c356eacd0a69b8f81fb4815c6360c51dadfe4d35bec68a44e4e9deb test/core.test.mjs
1576
+ 275e7d4c0301cbb1fe5ee44f6d6cd7085ea3b9547e639c121b9c6a112abc2505 test/controller.test.mjs
1577
+ dc476218d3fc97a28eaf879a01b9d22d9c3a0842e8fb7034c44b4f7f776a7034 test/core.test.mjs
1571
1578
  7ba4b06a1c4141ba87b5b371157fb59940d15a1016b4c599a13753d63ad0d3d3 test/DEADBYTE-MCP-WRITE-PROBE.txt
1572
1579
  c526724a6d10648fdd5152af917ba2fe51836dc5877daaac554bbd9e52fcd47e test/deferred-slot-operation-behavior.test.mjs
1573
1580
  69a515b1a36f0620cae4057ea8dc5302751058e290aedaf2f0b637eb3288aba8 test/deferred-slot-operation.test.mjs
@@ -1660,12 +1667,12 @@ b84622d07d2ecfe27b55e45f7e89949f29a2d14184d8c6f6f82ed7f1e5fa59be test/process-n
1660
1667
  510f51a6288a1030387cf372951499aea6dba2a35362ad89510bf7480e2f8004 test/process-release-gate.test.mjs
1661
1668
  e19a477abb83c63a1fb7ab5d5d1e9925113cded95d57084186b6ecd6161780e0 test/process-runtime.test.mjs
1662
1669
  34afc8a01e0c21501ec2647b7b0198b73570bce89eaaa983bd50c5709bb83fb8 test/process-supervision.test.mjs
1663
- f43a95b1f1c4ee039ca4008287de4b02515d5c352eca0b7d5b1767939c7b8915 test/production-docs.test.mjs
1670
+ 5c01d5d2fba94e49c7bb6b9343e6734f9dde1c363112aa0c3de7d6147de17557 test/production-docs.test.mjs
1664
1671
  a20273128f4e6dcf2163c0b3fb7fe6ed9bf4d698fb0a5a0c4638396331d961cf test/prompts-resources.test.mjs
1665
1672
  fcb70992870cd2f84674d578b0aaee554f958969c629a9d522d1efd230fe8288 test/provider-circuit.test.mjs
1666
1673
  0286df49beb2c2dcf46e384d87687d8d7a1618dd86f068517e36ae80dceb489b test/public-autonomous-ingress-budget.test.mjs
1667
- 3731f47bba757179826b42c04ccf4ad73b9f996b20d7bd14db343720ca4ad22b test/r33-closeout-regression.test.mjs
1668
- f2b4fa05e2ac52a463498a4c520bb936ff447115d40b9599cb83a82ebeaa31eb test/r33-finalization.test.mjs
1674
+ 92d708e1a4fdd14b4858d9d01d3c3f669b29056d4beee7725b4cd96c97bad1b8 test/r33-closeout-regression.test.mjs
1675
+ 52a3e4c8f45c5ae8fe3da984889fa9a995680137a89cea0c6a6292396abe04e0 test/r33-finalization.test.mjs
1669
1676
  7e419d3c1caf79bfc7407207f50e5645298f9b19d91a7d6f595af185b92cd55e test/r36-finalization.test.mjs
1670
1677
  139b0e11e5aac97649af0ab5efa78e8da06b4ee4da7372cc6c26d415ced53084 test/r36-release-identity.test.mjs
1671
1678
  54d13ac29dd59aeca54f132d782a859cacba98ba0e5bac03d07ddeb042e8030b test/r37-0110-history.test.mjs
@@ -1673,11 +1680,12 @@ f2b4fa05e2ac52a463498a4c520bb936ff447115d40b9599cb83a82ebeaa31eb test/r33-final
1673
1680
  72bc1863a2e113f7815903595d010b9c15513e05243d4eef3bef584aea18757b test/r37-autonomous-timeout-recovery.test.mjs
1674
1681
  291d01d18840b543bd6c5790dc6a8a7c167244611168015377ce6b837a1ec038 test/r37-finalization.test.mjs
1675
1682
  c23fd4f78ae94b795af6b428c9bbeb1c2e16dc7c9f90317daf40231bea12ab03 test/r37-remote-tool-call-timeline.test.mjs
1676
- 9d48d51958c30df4931cebe5f5a8f1d6a82de6ffb7fd08711dfc658bc12b201c test/release-generation.test.mjs
1683
+ 82bd5e708736ec59837218301964e01e3fe6a757905e5f395699e499c65f64fb test/r38-finalization.test.mjs
1684
+ 984d153419c3273e896fd280c9347480802c8854742b7832eec113c63f538f4b test/release-generation.test.mjs
1677
1685
  bb58887a2c393cd5aac3fa3bb3a04de2704bd2a30dd2083ea638543485fa7e60 test/release-manifest-windows.test.mjs
1678
1686
  7cc69e786bfd9e4a7e70888c4c1b5f756a264bc1a991139c468b63af23f24c38 test/release-slot.test.mjs
1679
1687
  0109c76b480cc600f6ed42be4519df3fa6835012bb9e4ba4ae6be6635468c4a8 test/release-smoke-isolation.test.mjs
1680
- 662cf58978a115ddf7fdea63ab6de58484da2b7b5758169881086c42f19a4356 test/release-version.test.mjs
1688
+ 8fd7f1b976908461c9d02e9c05f787ffbf6187d47e99e64e12eff8bc1667f6d6 test/release-version.test.mjs
1681
1689
  3d26a0550a22c69990567d998c28e4ba0978c71429741c10c7c47f261653fbe2 test/remote-live-log-r36.test.mjs
1682
1690
  b6f3db73fa2d35ede13d99df3aabce5a11d156a1056fecadcfca3ea699b269a0 test/remote-live-log-r37.test.mjs
1683
1691
  02ad827dc46e3dacf1ef2cfd861f583a44c471b1411cc674f4d61cd421418ad3 test/remote-live-log-recovery-r36.test.mjs
package/README.txt CHANGED
@@ -1,4 +1,4 @@
1
- DEADBYTE MCP V0.11.1 / R37 PRODUCTION BASELINE
1
+ DEADBYTE MCP V0.11.2 / R38 HOTFIX BASELINE
2
2
  =========================
3
3
 
4
4
  AUTHENTICATED MACHINE TRUTH + DURABLE AGENT + CODING + AUTONOMOUS PRODUCTION ENGINE
@@ -7,7 +7,7 @@ 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.11.1 mcp
10
+ npx -y deadbyte-mcp@0.11.2 mcp
11
11
  npx deadbyte-mcp@latest remote
12
12
  npx deadbyte-mcp@latest remote status
13
13
  npx deadbyte-mcp@latest remote restart
@@ -273,7 +273,7 @@ MCP CLIENT CONFIGURATION
273
273
  ------------------------
274
274
  The local stdio entry point is quiet and suitable for MCP hosts:
275
275
 
276
- npx -y deadbyte-mcp@0.11.1 mcp
276
+ npx -y deadbyte-mcp@0.11.2 mcp
277
277
 
278
278
  CLAUDE DESKTOP
279
279
  Use the standard local-server entry in claude_desktop_config.json:
@@ -282,7 +282,7 @@ Use the standard local-server entry in claude_desktop_config.json:
282
282
  "mcpServers": {
283
283
  "deadbyte": {
284
284
  "command": "npx",
285
- "args": ["-y", "deadbyte-mcp@0.11.1", "mcp"]
285
+ "args": ["-y", "deadbyte-mcp@0.11.2", "mcp"]
286
286
  }
287
287
  }
288
288
  }
@@ -295,7 +295,7 @@ Create .cursor/mcp.json:
295
295
  "deadbyte": {
296
296
  "type": "stdio",
297
297
  "command": "npx",
298
- "args": ["-y", "deadbyte-mcp@0.11.1", "mcp"]
298
+ "args": ["-y", "deadbyte-mcp@0.11.2", "mcp"]
299
299
  }
300
300
  }
301
301
  }
@@ -308,7 +308,7 @@ Create .vscode/mcp.json:
308
308
  "deadbyte": {
309
309
  "type": "stdio",
310
310
  "command": "npx",
311
- "args": ["-y", "deadbyte-mcp@0.11.1", "mcp"]
311
+ "args": ["-y", "deadbyte-mcp@0.11.2", "mcp"]
312
312
  }
313
313
  }
314
314
  }
@@ -318,7 +318,7 @@ Add this to ~/.codex/config.toml:
318
318
 
319
319
  [mcp_servers.deadbyte]
320
320
  command = "npx"
321
- args = ["-y", "deadbyte-mcp@0.11.1", "mcp"]
321
+ args = ["-y", "deadbyte-mcp@0.11.2", "mcp"]
322
322
 
323
323
  The remote device path remains `npx deadbyte-mcp@latest remote`. Remote public MCP uses the
324
324
  verified HTTPS named-tunnel URL selected by the active generation; do not commit a private device
@@ -1,4 +1,4 @@
1
- DEADBYTE MCP V0.11.1 / R37 CONTROLLER
1
+ DEADBYTE MCP V0.11.2 / R38 CONTROLLER
2
2
  ====================================
3
3
 
4
4
  ENTRY POINT
@@ -1032,11 +1032,11 @@ function Recover-AutonomousSupervisor($Cfg) {
1032
1032
  $process = Get-ProcessGrantStatus $Cfg
1033
1033
  $coding = Get-CodingLeaseStatus $Cfg
1034
1034
  $autonomous = Get-AutonomousLeaseStatus $Cfg
1035
- $host = Get-HostArmStatus $Cfg
1036
- if ($process.Armed -or $coding.Armed -or $autonomous.Armed -or $host.Armed) { Fail 'supervisor recovery final authority is not fully disarmed' }
1035
+ $hostStatus = Get-HostArmStatus $Cfg
1036
+ if ($process.Armed -or $coding.Armed -or $autonomous.Armed -or $hostStatus.Armed) { Fail 'supervisor recovery final authority is not fully disarmed' }
1037
1037
  $supervisor = Start-AutonomousSupervisor $Cfg
1038
1038
  Write-Host 'AUTONOMOUS SUPERVISOR RECOVERY PASS: runtime ONLINE; privileged planes DISARMED.'
1039
- return [pscustomobject]@{ Runtime=$runtime; Supervisor=$supervisor; Process=$process; Coding=$coding; Autonomous=$autonomous; Host=$host }
1039
+ return [pscustomobject]@{ Runtime=$runtime; Supervisor=$supervisor; Process=$process; Coding=$coding; Autonomous=$autonomous; Host=$hostStatus }
1040
1040
  }
1041
1041
 
1042
1042
  function Show-State($Cfg) {
@@ -1197,7 +1197,7 @@ while ($true) {
1197
1197
  Clear-Host
1198
1198
  $cfg = Get-Config
1199
1199
  Assert-ControllerRootBound $cfg
1200
- Write-Host 'DEADBYTE MCP ON-DEMAND CONTROLLER V0.11.1 / R37'
1200
+ Write-Host 'DEADBYTE MCP ON-DEMAND CONTROLLER V0.11.2 / R38'
1201
1201
  Write-Host '======================================'
1202
1202
  Show-State $cfg | Out-Null
1203
1203
  Write-Host ''
@@ -1,4 +1,4 @@
1
- # DEADBYTE MCP V0.11.1 / R37 ARCHITECTURE
1
+ # DEADBYTE MCP V0.11.2 / R38 ARCHITECTURE
2
2
 
3
3
  ```mermaid
4
4
  flowchart TD
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deadbyte-mcp",
3
- "version": "0.11.1",
3
+ "version": "0.11.2",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Authenticated MCP machine-truth runtime with signed audit chain, immutable release slots, contained execution, coding/autonomous production authority, and npx-first remote control.",
@@ -12,10 +12,10 @@
12
12
  "manifest:write": "node scripts/release-manifest.mjs write",
13
13
  "manifest:verify": "node scripts/release-manifest.mjs verify",
14
14
  "self-update:runtime": "node scripts/runtime-self-update.mjs",
15
- "self-update:deferred": "node scripts/deferred-slot-operation.mjs",
16
- "release:parity": "node scripts/release-parity.mjs",
17
- "release:final:write": "node scripts/final-closure.mjs",
18
- "release:final:verify": "node scripts/final-closure-verify.mjs",
15
+ "self-update:deferred": "node scripts/deferred-slot-operation-r38.mjs",
16
+ "release:parity": "node scripts/release-parity-r38.mjs",
17
+ "release:final:write": "node scripts/final-closure-r38.mjs",
18
+ "release:final:verify": "node scripts/final-closure-verify-r38.mjs",
19
19
  "proof": "node src/proof-cli.mjs workspaces/demo input.txt",
20
20
  "verify": "node src/verifier-cli.mjs workspaces/demo evidence/latest.json",
21
21
  "trust:init": "node src/trust-init.mjs",
@@ -38,7 +38,7 @@
38
38
  "contained:run": "node src/contained-cli.mjs workspaces/demo input.txt",
39
39
  "contained:smoke": "node src/contained-smoke.mjs",
40
40
  "mcp:contained:smoke": "node src/mcp-contained-smoke-client.mjs",
41
- "gate:windows": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/gate-windows.ps1",
41
+ "gate:windows": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/gate-windows-r38.ps1",
42
42
  "authority:smoke": "node src/authority-smoke.mjs",
43
43
  "mcp:remote:smoke": "node src/remote-mcp-smoke-client.mjs",
44
44
  "mcp:host:smoke": "node src/mcp-host-smoke-client.mjs",
@@ -0,0 +1,124 @@
1
+ import { createHash, createPublicKey, randomBytes } from 'node:crypto';
2
+ import { spawn } from 'node:child_process';
3
+ import { mkdir, readFile, realpath, writeFile } from 'node:fs/promises';
4
+ import os from 'node:os';
5
+ import path from 'node:path';
6
+ import { fileURLToPath } from 'node:url';
7
+ import { parseActivePointer } from '../src/release-slot.mjs';
8
+ import { loadPowerShellDataFile, runSlotUpdateCli, verifySlotUpdateEnvelope } from '../src/runtime-update.mjs';
9
+
10
+ const HEX64=/^[0-9a-f]{64}$/;
11
+ const RECEIPT_ID=/^r27-[A-Za-z0-9-]+$/;
12
+ const here=path.dirname(fileURLToPath(import.meta.url));
13
+ const packageRoot=path.resolve(here,'..');
14
+ const stateRoot=path.resolve(process.env.DEADBYTE_STATE_ROOT||path.join(os.homedir(),'.deadbyte-mcp'));
15
+ const evidenceRoot=path.join(stateRoot,'evidence','deferred-slot-operations');
16
+ const sha256=bytes=>createHash('sha256').update(bytes).digest('hex');
17
+ const atomicJson=async(file,value)=>{
18
+ await mkdir(path.dirname(file),{recursive:true});
19
+ const temp=`${file}.${process.pid}.${randomBytes(4).toString('hex')}.tmp`;
20
+ await writeFile(temp,`${JSON.stringify(value,null,2)}\n`,{flag:'wx'});
21
+ await import('node:fs/promises').then(fs=>fs.rename(temp,file));
22
+ };
23
+ function activationArgs(manifestSha){
24
+ if(!HEX64.test(manifestSha??'')) throw new Error('activate requires one lowercase manifest SHA-256');
25
+ return ['--stage',packageRoot,'--development-root',packageRoot,'--expected-version','0.11.2',
26
+ '--expected-manifest',manifestSha,'--process-policy',path.join(packageRoot,'controller','deadbyte-process-policy.json'),
27
+ '--process-policy-sha256',null,'--semantic-lsp-config',path.join(packageRoot,'controller','deadbyte-semantic-lsp-config.json'),
28
+ '--semantic-lsp-config-sha256',null,'--enable-machine-fs','--enable-observation','--enable-autonomous-supervisor'];
29
+ }
30
+ async function bridgeBootstrapArgs(explicitBridgeRoot=null,explicitBridgeSha256=null){
31
+ const hasRoot=typeof explicitBridgeRoot==='string'&&explicitBridgeRoot.length>0;
32
+ const hasSha=typeof explicitBridgeSha256==='string'&&explicitBridgeSha256.length>0;
33
+ if(hasRoot!==hasSha) throw new Error('bridge override requires exact root + SHA pair');
34
+ let bridgeRootRaw,expectedSha256=null;
35
+ if(hasRoot){
36
+ if(!path.isAbsolute(explicitBridgeRoot)||!HEX64.test(explicitBridgeSha256)) throw new Error('bridge override requires exact root + SHA pair');
37
+ bridgeRootRaw=explicitBridgeRoot;expectedSha256=explicitBridgeSha256;
38
+ }else{
39
+ const pointer=parseActivePointer(await readFile(path.join(stateRoot,'active-release.json'),'utf8'));
40
+ const config=await loadPowerShellDataFile(pointer.config_path);
41
+ bridgeRootRaw=config?.Bridge?.WorkingDirectory;
42
+ if(typeof bridgeRootRaw!=='string'||!path.isAbsolute(bridgeRootRaw)) throw new Error('active controller Bridge.WorkingDirectory must be absolute');
43
+ }
44
+ const bridgeRoot=await realpath(path.resolve(bridgeRootRaw));
45
+ const packageFile=path.join(bridgeRoot,'package.json');
46
+ const bridgeScript=path.join(bridgeRoot,'src','bridge.mjs');
47
+ const pkg=JSON.parse(await readFile(packageFile,'utf8'));
48
+ if(pkg?.name!=='deadbyte-chatgpt-bridge') throw new Error('active Bridge package identity mismatch');
49
+ const scriptSha256=sha256(await readFile(bridgeScript));
50
+ if(expectedSha256&&scriptSha256!==expectedSha256) throw new Error('bridge override SHA-256 mismatch');
51
+ return ['--bridge-root',bridgeRoot,'--bridge-script-sha256',scriptSha256];
52
+ }
53
+ async function rollbackArgs(receiptPath){
54
+ const resolved=await realpath(path.resolve(receiptPath));
55
+ const allowed=path.join(stateRoot,'evidence','updates')+path.sep;
56
+ if(!resolved.startsWith(allowed)||path.basename(resolved).toLowerCase()!=='receipt.json'||!RECEIPT_ID.test(path.basename(path.dirname(resolved)))) {
57
+ throw new Error('rollback receipt must be one signed activation receipt under the update evidence store');
58
+ }
59
+ const envelope=JSON.parse(await readFile(resolved,'utf8'));
60
+ const publicKey=createPublicKey(await readFile(path.join(stateRoot,'trust','ed25519-public.pem')));
61
+ if(!verifySlotUpdateEnvelope(envelope,publicKey)||envelope.body?.rollback_performed!==false) throw new Error('rollback activation receipt verification failed');
62
+ const pointer=parseActivePointer(await readFile(path.join(stateRoot,'active-release.json'),'utf8'));
63
+ if(pointer.release_id!==envelope.body?.active_pointer?.release_id||pointer.generation_root!==envelope.body?.active_pointer?.generation_root) {
64
+ throw new Error('rollback receipt does not identify the active release generation');
65
+ }
66
+ return ['--rollback-receipt',resolved];
67
+ }
68
+ async function normalizedArgs(mode,value,{explicitBridgeRoot=null,explicitBridgeSha256=null}={}){
69
+ if(mode==='activate'){
70
+ const args=activationArgs(value);
71
+ args[args.indexOf('--process-policy-sha256')+1]=sha256(await readFile(path.join(packageRoot,'controller','deadbyte-process-policy.json')));
72
+ args[args.indexOf('--semantic-lsp-config-sha256')+1]=sha256(await readFile(path.join(packageRoot,'controller','deadbyte-semantic-lsp-config.json')));
73
+ args.push(...await bridgeBootstrapArgs(explicitBridgeRoot,explicitBridgeSha256));
74
+ return args;
75
+ }
76
+ if(mode==='rollback'){
77
+ if(explicitBridgeRoot||explicitBridgeSha256) throw new Error('rollback does not accept bridge override');
78
+ return rollbackArgs(value);
79
+ }
80
+ throw new Error("operation must be exactly 'activate' or 'rollback'");
81
+ }
82
+ const rawArgs=process.argv.slice(2);
83
+ const mode=rawArgs[0],value=rawArgs[1];
84
+ if(!value||!['activate','rollback'].includes(mode)) throw new Error('usage: deferred-slot-operation.mjs <activate manifest_sha256|rollback activation_receipt> [--bridge-root ABS --bridge-script-sha256 HEX64]');
85
+ let cursor=2,explicitBridgeRoot=null,explicitBridgeSha256=null;
86
+ if(rawArgs[cursor]==='--bridge-root'){
87
+ explicitBridgeRoot=rawArgs[cursor+1]??null;
88
+ if(rawArgs[cursor+2]!=='--bridge-script-sha256') throw new Error('bridge override requires exact root + SHA pair');
89
+ explicitBridgeSha256=rawArgs[cursor+3]??null;cursor+=4;
90
+ }
91
+ let workerFlag=null,operationIdArg=null;
92
+ if(rawArgs[cursor]==='--worker'){workerFlag='--worker';operationIdArg=rawArgs[cursor+1]??null;cursor+=2;}
93
+ if(cursor!==rawArgs.length) throw new Error('deferred slot operation arguments invalid');
94
+ if((explicitBridgeRoot===null)!==(explicitBridgeSha256===null)) throw new Error('bridge override requires exact root + SHA pair');
95
+ if(mode==='rollback'&&(explicitBridgeRoot||explicitBridgeSha256)) throw new Error('rollback does not accept bridge override');
96
+ if(workerFlag==='--worker'){
97
+ if(!/^[0-9a-f]{32}$/.test(operationIdArg??'')) throw new Error('deferred worker operation id invalid');
98
+ const statePath=path.join(evidenceRoot,`${operationIdArg}.json`);
99
+ await new Promise(resolve=>setTimeout(resolve,4000));
100
+ await atomicJson(statePath,{schema:'deadbyte.deferred-slot-operation.v1',operation_id:operationIdArg,mode,state:'running',started_at_utc:new Date().toISOString(),bridge_root:explicitBridgeRoot,bridge_script_sha256:explicitBridgeSha256});
101
+ try{
102
+ const args=await normalizedArgs(mode,value,{explicitBridgeRoot,explicitBridgeSha256});
103
+ const result=await runSlotUpdateCli(args,{stateRoot});
104
+ await atomicJson(statePath,{schema:'deadbyte.deferred-slot-operation.v1',operation_id:operationIdArg,mode,state:'completed',
105
+ completed_at_utc:new Date().toISOString(),receipt_path:result.receipt_path,receipt_sha256:result.receipt_sha256,
106
+ active_release:result.pointer.release_id,generation_root:result.pointer.generation_root,bridge_root:explicitBridgeRoot,bridge_script_sha256:explicitBridgeSha256});
107
+ }catch(error){
108
+ await atomicJson(statePath,{schema:'deadbyte.deferred-slot-operation.v1',operation_id:operationIdArg,mode,state:'failed',
109
+ completed_at_utc:new Date().toISOString(),error:String(error?.message??error),bridge_root:explicitBridgeRoot,bridge_script_sha256:explicitBridgeSha256});
110
+ process.exitCode=1;
111
+ }
112
+ }else{
113
+ const operationId=randomBytes(16).toString('hex');
114
+ const statePath=path.join(evidenceRoot,`${operationId}.json`);
115
+ await atomicJson(statePath,{schema:'deadbyte.deferred-slot-operation.v1',operation_id:operationId,mode,state:'scheduled',scheduled_at_utc:new Date().toISOString(),bridge_root:explicitBridgeRoot,bridge_script_sha256:explicitBridgeSha256});
116
+ const workerArgs=[fileURLToPath(import.meta.url),mode,value];
117
+ if(explicitBridgeRoot) workerArgs.push('--bridge-root',explicitBridgeRoot,'--bridge-script-sha256',explicitBridgeSha256);
118
+ workerArgs.push('--worker',operationId);
119
+ const child=spawn(process.execPath,workerArgs,{
120
+ cwd:packageRoot,detached:true,stdio:'ignore',windowsHide:true,env:{...process.env,DEADBYTE_STATE_ROOT:stateRoot}
121
+ });
122
+ child.unref();
123
+ console.log(JSON.stringify({status:'scheduled',operation_id:operationId,mode,state_path:statePath,execution_provider:'deadbyte_mcp',rdc_operation_count:0,bridge_root:explicitBridgeRoot,bridge_script_sha256:explicitBridgeSha256}));
124
+ }
@@ -0,0 +1,113 @@
1
+ import { createHash, createPrivateKey, createPublicKey, sign as cryptoSign } from 'node:crypto';
2
+ import { lstat, mkdir, open, readFile, rename, rm } from 'node:fs/promises';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { probeR36FullSurface } from '../src/r36-full-surface-probe.mjs';
7
+ import { probeR36CompactDisarmed } from '../src/r36-compact-disarmed-probe.mjs';
8
+ import {
9
+ validateParityEvidence,
10
+ R38_PREDECESSOR_RELEASE_ID,
11
+ R38_PREDECESSOR_MANIFEST
12
+ } from './release-parity-r38.mjs';
13
+
14
+ const DOMAIN=Buffer.from('DEADBYTE-R38-FINAL-CLOSURE-V1\0','utf8');
15
+ const stateRoot=path.resolve(process.env.DEADBYTE_STATE_ROOT||path.join(os.homedir(),'.deadbyte-mcp'));
16
+ const sha256=bytes=>createHash('sha256').update(bytes).digest('hex');
17
+ const canonical=value=>Array.isArray(value)?value.map(canonical):value&&typeof value==='object'
18
+ ?Object.fromEntries(Object.keys(value).sort().map(key=>[key,canonical(value[key])])):value;
19
+ const canonicalJson=value=>JSON.stringify(canonical(value));
20
+ function insist(ok,msg){if(!ok) throw new Error(msg);}
21
+ function samePath(a,b){return path.resolve(String(a)).toLowerCase()===path.resolve(String(b)).toLowerCase();}
22
+ async function fileEvidence(file){const abs=path.resolve(file),bytes=await readFile(abs);return {path:abs,sha256:sha256(bytes)};}
23
+ async function publicUrl(){
24
+ const value=(await readFile(path.join(stateRoot,'bridge','mcp-url.txt'),'utf8')).trim();
25
+ const url=new URL(value);insist(url.protocol==='https:','final closure requires HTTPS public endpoint');return value;
26
+ }
27
+ async function grantAbsence(){
28
+ const out={};
29
+ for(const name of ['process-grant.json','coding-grant.json','autonomous-grant.json','host-grant.json']){
30
+ let absent=false;try{await lstat(path.join(stateRoot,'runtime',name));}catch(error){if(error?.code==='ENOENT') absent=true;else throw error;}
31
+ insist(absent,`authority grant still present: ${name}`);out[name]=true;
32
+ }
33
+ return out;
34
+ }
35
+ async function atomicCreate(file,bytes){
36
+ await mkdir(path.dirname(file),{recursive:true});
37
+ const temp=`${file}.tmp-${process.pid}-${Math.random().toString(16).slice(2)}`;
38
+ const handle=await open(temp,'wx');
39
+ try{await handle.writeFile(bytes);await handle.sync();}finally{await handle.close();}
40
+ try{await rename(temp,file);}catch(error){await rm(temp,{force:true}).catch(()=>{});throw error;}
41
+ }
42
+
43
+ export async function writeFinalClosure({parityPath,activationPath,windowsGatePath}){
44
+ const pointer=JSON.parse(await readFile(path.join(stateRoot,'active-release.json'),'utf8'));
45
+ insist(pointer.version==='0.11.2','final closure requires V0.11.2 active release');
46
+ insist(pointer.release_id===`v${pointer.version}-${pointer.manifest_sha256.slice(0,16)}`,'final closure release id/content address mismatch');
47
+
48
+ const parity=JSON.parse(await readFile(path.resolve(parityPath),'utf8'));
49
+ insist(parity.schema==='deadbyte.r38-parity.v1','R38 parity schema mismatch at final closure');
50
+ validateParityEvidence(parity);
51
+ insist(parity.candidate?.release_id===pointer.release_id&&parity.candidate?.manifest_sha256===pointer.manifest_sha256,'parity candidate/current release mismatch');
52
+ insist(parity.successor?.release_id===pointer.release_id&&parity.successor?.manifest_sha256===pointer.manifest_sha256,'parity successor/current release mismatch');
53
+ insist(parity.predecessor?.release_id===R38_PREDECESSOR_RELEASE_ID&&parity.predecessor?.manifest_sha256===R38_PREDECESSOR_MANIFEST,'parity predecessor identity mismatch');
54
+ insist(parity.rollback?.receipt_path&&parity.restore?.receipt_path,'parity rollback/restore receipt paths missing');
55
+ insist(parity.immutable_slot?.protected===true,'parity immutable-slot proof missing');
56
+ insist(samePath(parity.immutable_slot.release_root,pointer.release_root),'parity immutable release root mismatch');
57
+ insist(!samePath(parity.immutable_slot.development_root,pointer.release_root),'development_root must differ from immutable release_root');
58
+
59
+ const windowsGate=JSON.parse(await readFile(path.resolve(windowsGatePath),'utf8'));
60
+ insist(windowsGate.schema==='deadbyte.r38-windows-gate.v1'&&windowsGate.status==='passed'&&windowsGate.exit_code===0,'R38 Windows gate evidence invalid');
61
+ insist(windowsGate.version==='0.11.2'&&windowsGate.manifest_sha256===pointer.manifest_sha256,'R38 Windows gate/current release mismatch');
62
+ insist(windowsGate.marker==='DEADBYTE V0.11.2 / R38 WINDOWS BATCH GATE: PASS','R38 Windows gate marker mismatch');
63
+
64
+ const localFull=await probeR36FullSurface({packageRoot:pointer.release_root,generationRoot:pointer.generation_root,stateRoot});
65
+ insist(localFull.status==='passed'&&localFull.tool_count===76&&localFull.strict_output_schemas===true,'final local full 76-tool proof failed');
66
+ const compact=await probeR36CompactDisarmed(await publicUrl());
67
+ insist(compact.status==='passed'&&compact.tool_count<=42&&compact.capability_closure===true,'final public compact capability closure failed');
68
+ insist(compact.coding_armed===false&&compact.autonomous_armed===false,'final public compact authority is not DISARMED');
69
+ insist(compact.release_id===pointer.release_id&&compact.release_manifest_sha256===pointer.manifest_sha256,'final public compact release binding mismatch');
70
+ insist(compact.machine_status?.release_id===pointer.release_id&&compact.machine_status?.release_manifest_sha256===pointer.manifest_sha256,'final machine status/current release mismatch');
71
+ insist(compact.machine_ping?.nonce===compact.nonce,'final machine ping nonce mismatch');
72
+
73
+ const evidence={
74
+ parity:await fileEvidence(parityPath),activation:await fileEvidence(activationPath),
75
+ rollback:await fileEvidence(parity.rollback.receipt_path),restore:await fileEvidence(parity.restore.receipt_path),
76
+ windows_gate:await fileEvidence(windowsGatePath)
77
+ };
78
+ const body={
79
+ schema:'deadbyte.r38-final-closure.v1',version:'0.11.2',release_label:'R38 FINAL MACHINE BASELINE',
80
+ completed_at_utc:new Date().toISOString(),active_pointer:pointer,
81
+ predecessor:{release_id:R38_PREDECESSOR_RELEASE_ID,version:'0.11.1',manifest_sha256:R38_PREDECESSOR_MANIFEST},
82
+ immutable_slot:{protected:true,release_root:path.resolve(pointer.release_root),development_root:path.resolve(parity.immutable_slot.development_root)},
83
+ surfaces:{
84
+ local_full:{status:localFull.status,profile:localFull.profile,tool_count:localFull.tool_count,catalog_sha256:localFull.catalog_sha256,strict_output_schemas:localFull.strict_output_schemas,protocol_revision:localFull.protocol_revision},
85
+ public_compact:{status:compact.status,profile:compact.profile,tool_count:compact.tool_count,catalog_sha256:compact.catalog_sha256,strict_output_schemas:compact.strict_output_schemas,ledger_sha256:compact.ledger_sha256,capability_count:compact.capability_count,production_non_host_capabilities:compact.production_non_host_capabilities,capability_closure:compact.capability_closure,coding_armed:compact.coding_armed,autonomous_armed:compact.autonomous_armed,protocol_revision:compact.protocol_revision}
86
+ },
87
+ evidence,
88
+ machine:{status:compact.machine_status,ping:compact.machine_ping,nonce:compact.nonce},
89
+ authority:{all_disarmed:true,grants_absent:await grantAbsence()}
90
+ };
91
+ const privateKey=createPrivateKey(await readFile(path.join(stateRoot,'trust','ed25519-private.pem')));
92
+ const publicKey=createPublicKey(privateKey);
93
+ insist(privateKey.asymmetricKeyType==='ed25519'&&publicKey.asymmetricKeyType==='ed25519','closure signing key must be Ed25519');
94
+ const keyId=sha256(Buffer.from(publicKey.export({type:'spki',format:'der'})));
95
+ const bodyBytes=Buffer.from(canonicalJson(body),'utf8');
96
+ const signature=cryptoSign(null,Buffer.concat([DOMAIN,bodyBytes]),privateKey);
97
+ const envelope={body,body_sha256:sha256(bodyBytes),attestation:{algorithm:'ed25519',domain:'DEADBYTE-R38-FINAL-CLOSURE-V1',key_id:keyId,signature_base64:signature.toString('base64')}};
98
+ envelope.closure_sha256=sha256(Buffer.from(canonicalJson(envelope),'utf8'));
99
+ const dir=path.join(stateRoot,'evidence','release');
100
+ const file=path.join(dir,`r38-final-${pointer.manifest_sha256.slice(0,16)}.json`);
101
+ const bytes=Buffer.from(`${JSON.stringify(envelope,null,2)}\n`,'utf8');
102
+ await atomicCreate(file,bytes);
103
+ return {status:'written',path:file,sha256:sha256(bytes),closure_sha256:envelope.closure_sha256,release_id:pointer.release_id};
104
+ }
105
+
106
+ const invoked=process.argv[1]&&path.resolve(process.argv[1])===fileURLToPath(import.meta.url);
107
+ if(invoked){
108
+ const [parityPath,activationPath,windowsGatePath]=process.argv.slice(2);
109
+ if(!parityPath||!activationPath||!windowsGatePath) throw new Error('usage: node scripts/final-closure-r38.mjs <parity.json> <activation-receipt.json> <windows-gate.json>');
110
+ writeFinalClosure({parityPath,activationPath,windowsGatePath})
111
+ .then(result=>console.log(JSON.stringify(result,null,2)))
112
+ .catch(error=>{console.error(error instanceof Error?error.stack:String(error));process.exitCode=1;});
113
+ }