deadbyte-mcp 0.15.52 → 0.15.53

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
@@ -38,7 +38,7 @@ fa0dcc4cde9c03e978c9f9dd24b62afa83f49bdada1f42ead544a9a17edd332f bridge/src/bri
38
38
  fa2073209516279eb6324dc5e51b438c583d33922bf4bb9178c0aec8224abd94 bridge/src/public-tool-definitions.mjs
39
39
  fb5f27a0d324f5e500feb612f86069fe57f6de537aad6d3df2a3abff8923b1be bridge/src/r40-governor.mjs
40
40
  2a54dd491431a3041ac7a48fc9af13ae5f92c8c5a6ef6869ebacc15f49e57936 bridge/src/reconnect-delay-r60.mjs
41
- c02261aa429166517d36cdd18f1ab9a09077d9341f9818a7955ad02cff937851 bridge/src/remote-call-claims-r60.mjs
41
+ b963f3256f407b4216343815d310f9dce06ac61633c3b45071be6712ebb357d2 bridge/src/remote-call-claims-r60.mjs
42
42
  7e094bb44f74f1bfe0aeb065d6f8d2e61fb494587c2c898d335da2a12e24cb02 bridge/src/remote-dispatch-r60.mjs
43
43
  8653d36e373f7c604b4f5e78b446e6a9c3974bfc39a9e346c3fd5abe1f910b3c CONTEXT.md
44
44
  3ffd977e819e0d68bd62dad2dadd7481b25c508ebd8042bec2b706cea8ce16f9 controller/deadbyte-controller.config.psd1.example
@@ -46,7 +46,7 @@ d212dfb2ed0049ea54a62fca07847143a2485a8ba09a7e20fc1cdd58593b5ce0 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
- f2a746213e85d7b0809c59c047c4bdcc993563ac87637d864454ed40c9098d08 controller/deadbyte-process-policy.json
49
+ 10f447690fb72b8f7d23678dbb3e1d2b95d071af42f4a01796b5e9a02fca912a 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
@@ -1394,8 +1394,8 @@ db605a698f917c4006462596e6526fe6a9c6eff9b8409e8472fe545d4b70027c node_modules/z
1394
1394
  f67a25ded944912bd4621b68df17c7c70a52aae117278c076c0aabbc32a3abba node_modules/zod/v4/mini/schemas.d.ts
1395
1395
  51b3a7869df2d3a1bd98acb9d5b6a61bbccc7653d7a3d8fca7f0e0db7e84e284 node_modules/zod/v4/mini/schemas.js
1396
1396
  3e3125b5a537a24c3632c1c5c09640ce7bcb3935901b127ad8ae3c37a27f133f node_modules/zod/v4/package.json
1397
- 9b3041123739c4ccb8e8860d47c0ad5e9957bae60a6d878a780309e23e46114e package.json
1398
- 54fb261169cb263aebebf05f5387e1bc0aefd9013c43c53ef2f4506135ace3a5 PROVENANCE.json
1397
+ dbbbcc1804eb36bedb297cf14487a3b97fe40e9a506f6aeb0052ed3d80c415f3 package.json
1398
+ 2822011499a153ddd4389dfe0805cb58195d12f0b1d84c30041fd9c0ba15ead1 PROVENANCE.json
1399
1399
  27ca0f3c9ee3a1b6374a9c8dd98008decdd0c7659c7a569c70ad7b9734c74655 R34-BASELINE.json
1400
1400
  0b7ec5ee347ddfa6cca59740fc7a8fe3fc5d51406265bb12189e82fa106319d2 R41-PARENT.json
1401
1401
  bd2a789b0aab5663f0d208af2ca8e4ec98179bc8c7b57e70a962d4e06a3dcfc4 R42-PARENT.json
@@ -1404,9 +1404,9 @@ f932ef78b7a72b1bb0d7aedb5fe42fbb9951c2492eb528b72442f46ddff81a6c R44-DONORS.jso
1404
1404
  731b4c559fc0d25dea701e4474f02400b27e8e3f4cac9f230d5214497d4490a9 R44-PARENT.json
1405
1405
  d33ec5d167dd44800ba4e68372b08db43deb8d01df2ef71dd435ff004ac66c8b R45-PARENT.json
1406
1406
  3dc607603fea511e2f428e9546a875ab7e38b6a0bbd5e803e4510de082f30804 R49-PARENT.json
1407
- 9b938cd5f3ff30c1e1e554abb3dc873a433f33ec1a9dc8e1470a17547af87be2 README.txt
1408
- 1f4bbc7a8abd5849e7162447f2935d4e245e7bf94521141a5bd3112119ac10b9 RELEASE.json
1409
- 8041efe7842db00a9a22f303e557040e495f7d0b7dc756cdaca0c7660c71fa18 SBOM.cdx.json
1407
+ 6b5b4f90c4fdc6667722d55b7d52d6acacfd655fe9bc85e786ea724fab438661 README.txt
1408
+ a8fe4687c17920eaaf0bbe03f88d3d0e3742fbc5c0f0f4e87f984c853b40a92e RELEASE.json
1409
+ 6759a82259a0c21323dce97851c237e16bbd68b49a676637a068ef5da53985f9 SBOM.cdx.json
1410
1410
  7c86062c4f69db3179a129d65945ccfab1b1c1c5bcc29b91383eac097d50f2aa scripts/activate-skill-creator-1.1.1.mjs
1411
1411
  bd138fe5a64088e8e1a7a5bf6104c5b17317bdc8cf3ad8191ea00ed82ace7d9b scripts/agent-eval-r42.mjs
1412
1412
  8d90256a6863f3bbbff02e95cb12389fc6f9e8dbcb77bf1c20c902de371425e8 scripts/archive-source-zips.mjs
@@ -1743,7 +1743,7 @@ dcd4c9784e88e253e91ddad3c24b38cb0b36906ed737f6d7bee7712360f66f7a src/containmen
1743
1743
  fe1761b98738e1aea1d25ddf3a0ba56ccad95a43d45104a89b8665197c7c9e18 src/containment-result.mjs
1744
1744
  705a89cb12fedb993d55dfed32a5870d33e10db26422c944d1e52223566c096c src/containment-smoke.mjs
1745
1745
  63a1d4d6a53f9eb7e02197b4e42158b867da8c042c2e61848d8a36cd398b8bd8 src/context-provenance.mjs
1746
- 5519f4979ed05f8fe9dbde5d1b8e740065ba556964539fba8bf3256699a0776d src/deadbyte-cli.mjs
1746
+ 91b0dacb14cc9ea35b06fc20d1108d3a4729f415871ef927b6a1679b5599d207 src/deadbyte-cli.mjs
1747
1747
  9e9766d64dcc9e2c8d23c2c0a5e9dcb87b7213e8de668f79f593ad48daf15acd src/deadline-cancellation.mjs
1748
1748
  fe7a8f8611c33552b3da466a9b866ce79a737bfd5b9a78a953269b30cce16274 src/desktop-contract.mjs
1749
1749
  f97352e510c659910c2d4a874d15be028e1291d685c6c1a7be53bdf1a335c2d8 src/desktop-input-r40.mjs
@@ -1886,13 +1886,13 @@ c99c2402fb0df4f68634fa906eb198c551c55dad9f0921a7b8ed6e33d503884e src/tunnel-std
1886
1886
  aa765e9a28c69ff58a5b5a0d29b49ea181af4db9076633b102dbca25861e708e src/tunnel-stdio-compat.mjs
1887
1887
  642cb67d1854850e336ee73fbd71b329056bdcbdab35cea19c1a995a155ff5d9 src/verifier-cli.mjs
1888
1888
  8f818a4852ce3be3a380cd4736c3073a7a3e0e45cd7c7ca90588a6b843d3d022 src/verifier.mjs
1889
- c38135acfcf4db68a28d83bd09b1e33762e89f444703f79134fd80ee119c54cb src/version.mjs
1889
+ 45a61c47e1e6b1d8fd0787206ba73c6210e0a7e85f7b2149c2c3f58f6c0da806 src/version.mjs
1890
1890
  acf5f5a57779bc0529f9db3d821f0ef1b53d22063aa237041348c1ca444ea677 src/windows-powershell-environment.mjs
1891
1891
  7e09c57a97289360aabfaf3d531208e54872efbfb3182f3c18203d2cb88c46b5 src/worker-registry.mjs
1892
1892
  76361d5ae9a710273cf64a7525082197b692236bf23689875e5fd1ef4aa96d2b src/worker-scheduler.mjs
1893
1893
  4da1b32f5198bb089bc68b7eb6de21ea296678b5020018a73742bf0df57d62fa src/workload-substrate.mjs
1894
1894
  1bd637e7634ca0259791c5108fcf324554f70b1db49e5eac3505287c04bbc3be STABILIZATION-PROGRESS.md
1895
- 7c51693f64b3aceb56f03c8b3ffc86b41b9b5e2c160080ec2b88a452925c5705 TEST-MATRIX.json
1895
+ 1bc41f5442530b17745205035afd7be1fe98e590e5e8413a47473bb0ce521c91 TEST-MATRIX.json
1896
1896
  e4f1fb97545f23772ddff28ad3f9954a4714f9854062fca62e0e12c1cb2ec4ae test/agent-backend-r44.test.mjs
1897
1897
  2a78c818058b25efdc143a3a97c832da231ccd6ff9d90c7796d681a0251b85c4 test/agent-crash-child.mjs
1898
1898
  d9461ab7c118ee75d37a2d6f5e637d7e43505af6a9ad8c7ddafffc8ace185a5b test/agent-crash-worker.mjs
@@ -2146,9 +2146,9 @@ ce163ee9f288e30a213636e2267b8630016ef8a170f12286e8cdd44219bdab32 test/r124-live
2146
2146
  17475b51e416ae678f959f8975fab8497eb7c57d13e36cac8656c0e1f7424c0c test/r126-restore-policy-envelope.test.mjs
2147
2147
  1721d4bd3bb58c10ad9d86b69ad1d993ec5a1e6315c95b28fa50ab67d4ca302a test/r127-restore-append-policy-boundary.test.mjs
2148
2148
  b3d3dda398c94d18e2e156bde65d1338000233407b435134ba0c16175d96620b test/r129-sdk-security-baseline.test.mjs
2149
- effe0e9a6b3db487a3ec748289b35a00e9f3c405195255850f7a06762e783bf7 test/r130-release-security-contract.test.mjs
2149
+ 2f45d87bf72e4abd5df568694624d69dcbdb605bf456f6f5dd47a49bcb63a546 test/r130-release-security-contract.test.mjs
2150
2150
  bb7963baf412ec0f5aca183f6dd98eda9026fe763017f9af595581b521ae6cb7 test/r131-installed-manifest-boundary.test.mjs
2151
- d79a7128e1a7a1a75196c51e62e39ec26d93c73ada8ab82b91ad9910ea74c7e6 test/r132-release-identity.test.mjs
2151
+ 626721a443fdec3cd0c4e8abe4f59bc56d2e01fe879e74bed3f5a1626a5b5064 test/r132-release-identity.test.mjs
2152
2152
  acd236a4d8ba035007bde4166a521b8d4e6044f58c52c0bae9cb42fa75338533 test/r135-autonomous-scope.test.mjs
2153
2153
  3fcf657aae1f8466abc5ab82bb5a619966ea9b8a33d4a95a5a5246df5bf3afa1 test/r136-scoped-command-rights.test.mjs
2154
2154
  e0c466f25b35eb894166df792b71b23924610d32363756c75ff437dfdaa12a4c test/r136-scoped-observer.test.mjs
@@ -2165,6 +2165,8 @@ c14e6c17defb3eac062ae7429742cb9ac9a3d9aa2bd806754149a37b7dbb0180 test/r139-proc
2165
2165
  b0af7054d5ef9e67af86b5959ff73f6e988992318dc39dd3ee64d4fa7859e8b0 test/r141-commander-tail-utf8.test.mjs
2166
2166
  a21d029a174c7ae069997b284d01ba6708db388dbdf4c6fa24c3a672f0133b8d test/r141-real-windows-disk.test.mjs
2167
2167
  7c6dddd97f1508d46ffffc2e06b25c077ebbc8f54d44d739619a028436317bec test/r142-native-machinefs-authority.test.mjs
2168
+ 79f87493bff0c5bfa06dbd8d51845f292dc3cabc95f9bcd937e3aa90330731ef test/r144-claim-terminal-history.test.mjs
2169
+ ef0665adaab2a2b2d6ca8611a6335ded96b8e65a9661840acd139d3c86710e62 test/r144-controller-broad-roots-cleanup.test.mjs
2168
2170
  3c5c3724bce89aa1fa59fe97cc346c40a5674bb5cd6dc3e2f31b86f2d62e75e4 test/r33-closeout-regression.test.mjs
2169
2171
  5e3700ee610442dfd7b7ae5e380263f231438be0e32790597142c41362a53c9a test/r33-finalization.test.mjs
2170
2172
  7e419d3c1caf79bfc7407207f50e5645298f9b19d91a7d6f595af185b92cd55e test/r36-finalization.test.mjs
@@ -2230,7 +2232,7 @@ ca8e23abc89f3eadeceb4b6fdad2cb4db5a7933029ece8e8beae2c6a158876b7 test/r58-owner
2230
2232
  8fc5ed1d3088facf45f9578d9ff8514c3a633f7f342d15eec316e129e7a916c0 test/r58-stale-owner.test.mjs
2231
2233
  84be7ee7d167eb06c9f9fc178930daaa81e53a91de40bad6d7df2060bd3dd165 test/r58-windows-gate.test.mjs
2232
2234
  76db2a4009d76b86e1da57b91a96b0d6bfeb4063bec3301ede736e2fd5832f39 test/r59-release-contract.test.mjs
2233
- a2b6779e6cbc8e23859b42383440b9e08a631e9b0bfa0a92d000ec236769e423 test/r59-tool-surface-compat.test.mjs
2235
+ 16f1e5b1f3b95341969c604e2355b71764cf35fbcd6cdc18447ce5fd40eb9fc8 test/r59-tool-surface-compat.test.mjs
2234
2236
  3befd5d4dc4d8ca9e1f6cbeb9c430671e676c5696d6ee5931c2cbe3244c558a4 test/r60-authority-coherence.test.mjs
2235
2237
  60577e231c7d164f57a3960c574d3e369ca140d9dbc477b2444fa62dbf224e51 test/r60-authority-enforcement.test.mjs
2236
2238
  a1fa0b1e529da05f3659a33be6d36dab02f93808638cf0f458d057e9c6d1e35b test/r60-bridge-dispatch.test.mjs
@@ -2328,7 +2330,7 @@ a4f4e675703d6208d2ca51151273f97e547927d6f44d8b95c88309b3ee002008 test/r72-stagi
2328
2330
  c26ac29f6e47e21cc3d20331391295c4f57c20bc1a9094f27079ee60c11ab75b test/r72-staging-workspace-isolation.test.mjs
2329
2331
  20cc37b85fd61870fc51b01aeba7e7bb4e31fd6529dc38ad42e52b1549c412f8 test/r73-package-boundary.test.mjs
2330
2332
  ff8d6c7998053a20a0d6a855d4a0013f0f19e649b91731d970e647242bb66e86 test/r74-kernel-lock.test.mjs
2331
- 6e28226fecd5a13701dbc5f2812ae4e21c9ac65b4eea14a158d040a1db3b213f test/r74-prepublish-contract.test.mjs
2333
+ 6903c010b285a7551d1f77fa2a3b56bad74db45b2cacd747da75fea33ef839ab test/r74-prepublish-contract.test.mjs
2332
2334
  d283a882b9d7bb38b8d6a0db97882fcaf9b6dfa717aca79dd0351012cc00ba23 test/r75-activation-authority-proof.test.mjs
2333
2335
  38b66147b550c1d1e068ebaa9f8de93a070c08a8a99e0ddee7970b0374c4bfc5 test/r75-authority-evidence.test.mjs
2334
2336
  993186133dc7620bcd3057efda9a0ba1435c938656e4b24a32ace4ce57ea9735 test/r76-pinned-marker-cas.test.mjs
package/PROVENANCE.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schema": "deadbyte.provenance.v1",
3
- "version": "0.15.52",
4
- "source_model": "published 0.15.51 -> R137-R142 isolated Commander/MachineFS successors -> R143 0.15.52 release candidate",
3
+ "version": "0.15.53",
4
+ "source_model": "published 0.15.52 -> R144 bounded remote claim recovery and fail-closed authority cleanup",
5
5
  "signing": "ed25519",
6
- "parent_tarball_sha256": "69586dc07dc7a3025ec44f08e6b0eab60c1f9e75287da77c850b49e320b201ff",
6
+ "parent_tarball_sha256": "ec675df8885a0d96b1486607956b7091fe47088509b4756194a7e15004d8d97f",
7
7
  "parent_activation_status": "PRODUCTION_ACTIVE",
8
8
  "parent_rollback_receipt_sha256": null,
9
9
  "runtime_predecessor": {
@@ -11,8 +11,8 @@
11
11
  "manifest_sha256": "34aa8d1241cfb8bf0b5ba303bf3c06e0e9e1bf01f64457bca659d6dd4d634fdc",
12
12
  "generation_manifest_sha256": "ff2b73410062688651abd7bc2dd7b2b8c87810a28e3808bfe1f4352a25b0e6e4"
13
13
  },
14
- "source_predecessor_manifest_file_sha256": "ef27d35d0d3102b356fcb17478abefa82fae2375df27f913ce3b0ff0e5815a7e",
15
- "reproducibility": "R143 isolated 0.15.52 candidate from R142 native-authority development, predecessor 0.15.51 published tarball SHA-256 69586dc07dc7a3025ec44f08e6b0eab60c1f9e75287da77c850b49e320b201ff; production 0.15.45 unchanged",
14
+ "source_predecessor_manifest_file_sha256": "e00223a76ef6d0e0fa7e850de597fa44cd6113cd49725535492da73f1daf4244",
15
+ "reproducibility": "R144 isolated 0.15.53 candidate from published 0.15.52 tarball SHA-256 ec675df8885a0d96b1486607956b7091fe47088509b4756194a7e15004d8d97f; production 0.15.45 unchanged pending separate activation approval",
16
16
  "public_surface_evidence": {
17
17
  "status": "PASS",
18
18
  "baseline_release": "v0.15.35-1b5715b276facbc0",
@@ -76,12 +76,12 @@
76
76
  "stdio_aggregate_p95_delta_pct": 1.984392678457768,
77
77
  "limitations_preserved": true
78
78
  },
79
- "builder": "deadbyte-r143-commander-machinefs-release-candidate",
79
+ "builder": "deadbyte-r144-remote-recovery-release-candidate",
80
80
  "parent_release_id": "v0.15.45-34aa8d1241cfb8bf",
81
81
  "parent_manifest_sha256": "34aa8d1241cfb8bf0b5ba303bf3c06e0e9e1bf01f64457bca659d6dd4d634fdc",
82
82
  "parent_generation_manifest_sha256": "ff2b73410062688651abd7bc2dd7b2b8c87810a28e3808bfe1f4352a25b0e6e4",
83
- "source_predecessor_version": "0.15.51",
84
- "source_predecessor_tarball_sha256": "69586dc07dc7a3025ec44f08e6b0eab60c1f9e75287da77c850b49e320b201ff",
83
+ "source_predecessor_version": "0.15.52",
84
+ "source_predecessor_tarball_sha256": "ec675df8885a0d96b1486607956b7091fe47088509b4756194a7e15004d8d97f",
85
85
  "operator_override": {
86
86
  "four_hour_soak": "WAIVED_BY_OPERATOR",
87
87
  "clean_machine": "WAIVED_BY_OPERATOR",
@@ -274,5 +274,13 @@
274
274
  "r143_registry_publication": "NOT_RUN",
275
275
  "production_predecessor_version": "0.15.45",
276
276
  "production_deployment": "NOT_RUN"
277
+ },
278
+ "r144": {
279
+ "terminal_claim_history_recovery": "PASS_FOCUSED_AND_117K_FILE_PRODUCTION_STATE",
280
+ "broad_root_cleanup": "PASS_FOCUSED_NO_EPOCH_MUTATION",
281
+ "protected_full_regression": "PASS_1822_TOTAL_1773_PASS_49_SKIP_0_FAIL",
282
+ "public_named_tunnel": "PASS_SIGNED_MACHINE_PING",
283
+ "controller_lifecycle": "PASS_START_RESTART_STOP_ISOLATED_PROTECTED_CANDIDATE",
284
+ "production_activation": "DEFERRED_SEPARATE_OWNER_APPROVAL"
277
285
  }
278
286
  }
package/README.txt CHANGED
@@ -1,4 +1,4 @@
1
- DEADBYTE MCP V0.15.52 / R143 ISOLATED RELEASE CANDIDATE
1
+ DEADBYTE MCP V0.15.53 / R144 REMOTE RECOVERY
2
2
  =========================
3
3
 
4
4
  AUTHENTICATED MACHINE TRUTH + DURABLE AGENT + CODING + AUTONOMOUS PRODUCTION ENGINE
@@ -16,12 +16,12 @@ check `--version` before issuing a stateful command. The compatibility CMD
16
16
  fails with an explanation when npm is detected rather than forwarding the
17
17
  wrong command to the controller.
18
18
 
19
- npx -y deadbyte-mcp@0.15.52 mcp
20
- npx -y deadbyte-mcp@0.15.52 remote
21
- npx -y deadbyte-mcp@0.15.52 remote status
22
- npx -y deadbyte-mcp@0.15.52 remote restart
23
- npx -y deadbyte-mcp@0.15.52 audit status
24
- npx -y deadbyte-mcp@0.15.52 audit verify
19
+ npx -y deadbyte-mcp@0.15.53 mcp
20
+ npx -y deadbyte-mcp@0.15.53 remote
21
+ npx -y deadbyte-mcp@0.15.53 remote status
22
+ npx -y deadbyte-mcp@0.15.53 remote restart
23
+ npx -y deadbyte-mcp@0.15.53 audit status
24
+ npx -y deadbyte-mcp@0.15.53 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.52", "mcp"]
35
+ "args": ["-y", "deadbyte-mcp@0.15.53", "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.52", "mcp"]
47
+ "args": ["-y", "deadbyte-mcp@0.15.53", "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.52", "mcp"]
60
+ "args": ["-y", "deadbyte-mcp@0.15.53", "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.52", "mcp"]
70
+ args = ["-y", "deadbyte-mcp@0.15.53", "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.52 remote
359
+ npx -y deadbyte-mcp@0.15.53 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.52 mcp
420
+ npx -y deadbyte-mcp@0.15.53 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.52", "mcp"]
429
+ "args": ["-y", "deadbyte-mcp@0.15.53", "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.52", "mcp"]
442
+ "args": ["-y", "deadbyte-mcp@0.15.53", "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.52", "mcp"]
455
+ "args": ["-y", "deadbyte-mcp@0.15.53", "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.52", "mcp"]
465
+ args = ["-y", "deadbyte-mcp@0.15.53", "mcp"]
466
466
 
467
- The remote device path remains `npx -y deadbyte-mcp@0.15.52 remote`. Remote public MCP uses the
467
+ The remote device path remains `npx -y deadbyte-mcp@0.15.53 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,9 +1,9 @@
1
1
  {
2
2
  "schema": "deadbyte.release.v1",
3
3
  "name": "deadbyte-mcp",
4
- "version": "0.15.52",
5
- "train": "R143",
6
- "label": "R143 COMMANDER AND MACHINEFS HARDENING / ISOLATED RELEASE CANDIDATE",
4
+ "version": "0.15.53",
5
+ "train": "R144",
6
+ "label": "R144 REMOTE RECOVERY / VERIFIED PUBLIC NPM CANDIDATE",
7
7
  "protocol_revision": "2026-07-28",
8
8
  "parent": {
9
9
  "version": "0.15.45",
@@ -19,10 +19,10 @@
19
19
  "generation_manifest_sha256": "ff2b73410062688651abd7bc2dd7b2b8c87810a28e3808bfe1f4352a25b0e6e4"
20
20
  },
21
21
  "source_predecessor": {
22
- "version": "0.15.51",
23
- "source_path": "C:\\Users\\DEADBYTE\\.deadbyte-mcp\\evidence\\npm-publication\\0.15.51\\deadbyte-mcp-0.15.51.tgz",
22
+ "version": "0.15.52",
23
+ "source_path": "D:\\Projects\\deadbyte-mcp\\testing\\r144-remote-recovery\\source-predecessor-0.15.52\\deadbyte-mcp-0.15.52.tgz",
24
24
  "release_status": "REGISTRY_PUBLISHED",
25
- "tarball_sha256": "69586dc07dc7a3025ec44f08e6b0eab60c1f9e75287da77c850b49e320b201ff"
25
+ "tarball_sha256": "ec675df8885a0d96b1486607956b7091fe47088509b4756194a7e15004d8d97f"
26
26
  },
27
27
  "consolidation": {
28
28
  "frontend_status_vocabulary": true,
@@ -388,5 +388,19 @@
388
388
  "npm_publish": "NOT_RUN",
389
389
  "production_activation": "NOT_RUN",
390
390
  "stable_final_claim": false
391
+ },
392
+ "r144": {
393
+ "release_candidate_version": "0.15.53",
394
+ "source_predecessor_version": "0.15.52",
395
+ "source_predecessor_tarball_sha256": "ec675df8885a0d96b1486607956b7091fe47088509b4756194a7e15004d8d97f",
396
+ "production_predecessor_version": "0.15.45",
397
+ "terminal_claim_history_recovery": "PASS",
398
+ "broad_root_disarmed_cleanup": "PASS",
399
+ "protected_full_regression": "PASS_1822_TOTAL_1773_PASS_49_SKIP_0_FAIL",
400
+ "public_named_tunnel_machine_ping": "PASS",
401
+ "controller_start_restart_stop": "PASS_ISOLATED_PROTECTED_CANDIDATE",
402
+ "npm_publish": "PENDING",
403
+ "production_activation": "DEFERRED_SEPARATE_OWNER_APPROVAL",
404
+ "stable_final_claim": false
391
405
  }
392
406
  }
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:r143:0.15.52",
4
+ "serialNumber": "urn:cdx:deadbyte-mcp:r144:0.15.53",
5
5
  "version": 1,
6
6
  "metadata": {
7
7
  "component": {
8
8
  "type": "application",
9
9
  "name": "deadbyte-mcp",
10
- "version": "0.15.52"
10
+ "version": "0.15.53"
11
11
  }
12
12
  },
13
13
  "components": [
package/TEST-MATRIX.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema": "deadbyte.test-matrix.v1",
3
- "version": "0.15.52",
4
- "train": "R143",
3
+ "version": "0.15.53",
4
+ "train": "R144",
5
5
  "primary_platform": "win32-x64",
6
6
  "reference": {
7
7
  "package": "@wonderwhy-er/desktop-commander",
@@ -10,6 +10,21 @@
10
10
  "schemas_sha256": "f342345e34e48769dabaefe1b932f09d41e2e207b422f7794a15ee50ffa8f140"
11
11
  },
12
12
  "required": [
13
+ {
14
+ "id": "r144-protected-native-full",
15
+ "command": "node --test --test-concurrency=4 test/*.test.mjs on exact protected candidate",
16
+ "expected": "1822 total, 1773 pass, 49 classified skip, zero failures"
17
+ },
18
+ {
19
+ "id": "r144-public-remote-lifecycle",
20
+ "command": "protected candidate controller start, signed public machine ping, restart, signed public machine ping, stop",
21
+ "expected": "Public named tunnel calls pass and all owned processes are stopped"
22
+ },
23
+ {
24
+ "id": "r144-package-and-registry",
25
+ "command": "node scripts/npm-release-r48.mjs --publish-only",
26
+ "expected": "Exact tarball identity, registry readback and external npx smoke pass; production activation deferred"
27
+ },
13
28
  {
14
29
  "id": "r143-protected-native-full",
15
30
  "command": "node --test --test-concurrency=4 test/*.test.mjs on exact R143 protected installed tree",
@@ -133,9 +133,14 @@ export function openRemoteCallClaims({root,clock=Date.now}={}){
133
133
  names=await readdir(folder);
134
134
  }catch(error){if(error?.code==='ENOENT')continue;throw error;}
135
135
  if(names.length>4096)throw new Error('remote recovery shard exceeds bounded inventory');
136
+ // Terminal claims have no recovery work. Checking same-shard terminal names
137
+ // avoids re-reading large immutable history before bridge readiness.
138
+ // Duplicate requests still validate claim + terminal bytes in state().
139
+ const terminalIds=new Set(names.filter(item=>/^[0-9a-f]{64}\.terminal\.json$/.test(item)).map(item=>item.slice(0,64)));
136
140
  for(const name of names.filter(item=>/^[0-9a-f]{64}\.claim\.json$/.test(item)).sort()){
137
141
  const id=name.slice(0,64);
138
142
  if(after&&id<=after)continue;
143
+ if(terminalIds.has(id))continue;
139
144
  if(records.length>=limit){more=true;break;}
140
145
  const claimRecord=await readExact(files(id).claim);
141
146
  if(!claimRecord||claimRecord.schema!=='deadbyte.remote-call-claim.v1')throw new Error('remote recovery claim corrupt');
@@ -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-epoch-transition-audit-dev\\controller\\runtime\\process-grant.json",
5
- "state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-epoch-transition-audit-dev\\controller\\runtime\\process-state",
4
+ "grant_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r144-remote-recovery-dev\\controller\\runtime\\process-grant.json",
5
+ "state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r144-remote-recovery-dev\\controller\\runtime\\process-state",
6
6
  "native_host": {
7
- "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-epoch-transition-audit-dev\\bin\\deadbyte-process-host.exe",
7
+ "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r144-remote-recovery-dev\\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-epoch-transition-audit-dev",
12
+ "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r144-remote-recovery-dev",
13
13
  "deny_paths": [
14
14
  "node_modules",
15
15
  "controller/runtime",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deadbyte-mcp",
3
- "version": "0.15.52",
3
+ "version": "0.15.53",
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.",
@@ -400,7 +400,11 @@ async function cleanupRemoteSession(ctx,{displayMode='unicode'}={}){
400
400
  for(const command of SESSION_CLEANUP){
401
401
  try{
402
402
  const result=invokeController(ctx,command,{allowFailure:true,capture:true,echoCaptured:false,timeoutMs:REMOTE_STATUS_TIMEOUT_MS});
403
- if(result.status!==0){failed.push(command);writeRemote(process.stderr,`${remoteTag('warn',displayMode)} cleanup ${command} exit=${result.status}\n`,displayMode);}
403
+ if(result.status!==0){
404
+ failed.push(command);
405
+ const detail=boundedSingleLine(result.stderr||result.stdout||'controller returned no diagnostic',512);
406
+ writeRemote(process.stderr,`${remoteTag('warn',displayMode)} cleanup ${command} exit=${result.status}: ${detail}\n`,displayMode);
407
+ }
404
408
  }
405
409
  catch(error){failed.push(command);writeRemote(process.stderr,`${remoteTag('warn',displayMode)} cleanup ${command}: ${String(error?.message||error)}\n`,displayMode);}
406
410
  }
package/src/version.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export const DEADBYTE_VERSION = '0.15.52';
1
+ export const DEADBYTE_VERSION = '0.15.53';
2
2
  export const MCP_PROTOCOL_VERSION = '2026-07-28';
3
3
  export const RECEIPT_SCHEMA_V1 = 'deadbyte.receipt.v1';
4
4
  export const RECEIPT_SCHEMA_V2 = 'deadbyte.receipt.v2';
@@ -13,16 +13,16 @@ 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.52');
17
- assert.equal(release.train,'R143');
18
- assert.equal(matrix.train,'R143');
19
- assert.equal(release.source_predecessor.version,'0.15.51');
20
- assert.match(release.source_predecessor.source_path,/0\.15\.51/);
16
+ assert.equal(actual,'0.15.53');
17
+ assert.equal(release.train,'R144');
18
+ assert.equal(matrix.train,'R144');
19
+ assert.equal(release.source_predecessor.version,'0.15.52');
20
+ assert.match(release.source_predecessor.source_path,/0\.15\.52/);
21
21
  assert.equal(release.runtime_predecessor.version,'0.15.45');
22
- assert.equal(provenance.source_predecessor_version,'0.15.51');
23
- assert.equal(provenance.source_predecessor_manifest_file_sha256,'ef27d35d0d3102b356fcb17478abefa82fae2375df27f913ce3b0ff0e5815a7e');
22
+ assert.equal(provenance.source_predecessor_version,'0.15.52');
23
+ assert.equal(provenance.source_predecessor_manifest_file_sha256,'e00223a76ef6d0e0fa7e850de597fa44cd6113cd49725535492da73f1daf4244');
24
24
  assert.equal(pkg.dependencies['@modelcontextprotocol/client'],'2.3.1');
25
25
  assert.equal(pkg.dependencies['@modelcontextprotocol/server'],'2.3.1');
26
26
  for(const dep of ['@modelcontextprotocol/client','@modelcontextprotocol/server'])
27
27
  assert.equal(pkg.bundleDependencies.includes(dep),true);
28
- });
28
+ });
@@ -8,20 +8,20 @@ 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('R143 package identities, R132 historic evidence and published predecessor are consistent',async()=>{
11
+ test('R144 package identities, R132 historic evidence and published predecessor are consistent',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
- assert.equal(value,'0.15.52');
16
+ assert.equal(value,'0.15.53');
17
17
  }
18
- assert.equal(release.train,'R143');
19
- assert.equal(matrix.train,'R143');
20
- assert.equal(release.source_predecessor.version,'0.15.51');
21
- assert.match(release.source_predecessor.source_path,/0\.15\.51/);
22
- assert.equal(prov.source_predecessor_version,'0.15.51');
23
- assert.equal(prov.source_predecessor_manifest_file_sha256,'ef27d35d0d3102b356fcb17478abefa82fae2375df27f913ce3b0ff0e5815a7e');
24
- assert.equal(prov.parent_tarball_sha256,'69586dc07dc7a3025ec44f08e6b0eab60c1f9e75287da77c850b49e320b201ff');
18
+ assert.equal(release.train,'R144');
19
+ assert.equal(matrix.train,'R144');
20
+ assert.equal(release.source_predecessor.version,'0.15.52');
21
+ assert.match(release.source_predecessor.source_path,/0\.15\.52/);
22
+ assert.equal(prov.source_predecessor_version,'0.15.52');
23
+ assert.equal(prov.source_predecessor_manifest_file_sha256,'e00223a76ef6d0e0fa7e850de597fa44cd6113cd49725535492da73f1daf4244');
24
+ assert.equal(prov.parent_tarball_sha256,'ec675df8885a0d96b1486607956b7091fe47088509b4756194a7e15004d8d97f');
25
25
  assert.equal(release.runtime_predecessor.version,'0.15.45');
26
26
  assert.equal(prov.runtime_predecessor.release_id,release.runtime_predecessor.release_id);
27
27
  assert.equal(prov.runtime_predecessor.manifest_sha256,release.runtime_predecessor.manifest_sha256);
@@ -0,0 +1,55 @@
1
+ import test from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import {mkdtemp,rm,readFile,writeFile} from 'node:fs/promises';
4
+ import path from 'node:path';
5
+ import os from 'node:os';
6
+ import {performance} from 'node:perf_hooks';
7
+ import {openRemoteCallClaims} from '../bridge/src/remote-call-claims-r60.mjs';
8
+
9
+ const now=Date.parse('2029-01-01T00:00:00Z');
10
+ const base={device_id:'device-1',session_id:'session-1',request_id:'init',
11
+ tool:'coding_file_write',arguments:{root_id:'fixture',path:'a.txt',content:'A'},
12
+ expires_at_utc:'2030-01-01T00:00:00.000Z',release_id:'v-test',
13
+ generation_manifest_sha256:'a'.repeat(64),machine_id:'b'.repeat(64),
14
+ online_epoch:'c'.repeat(64),classification:'mutating'};
15
+
16
+ test('R144 terminal-heavy recovery ignores closed history and keeps live interruption fail-closed',async()=>{
17
+ const dir=await mkdtemp(path.join(os.tmpdir(),'r144-terminal-'));
18
+ try{
19
+ const store=openRemoteCallClaims({root:dir,clock:()=>now});
20
+ for(let i=0;i<200;i++){
21
+ const rec=await store.claim({...base,request_id:'terminal-'+i});
22
+ await store.dispatch(rec.claim_id);
23
+ await store.terminal(rec.claim_id,{status:'ok',value:i});
24
+ }
25
+ const pending=await store.claim({...base,request_id:'pending'});
26
+ const inflight=await store.claim({...base,request_id:'inflight'});
27
+ await store.dispatch(inflight.claim_id);
28
+ const start=performance.now(), recovered=await store.recover({limit:100});
29
+ const elapsed_ms=Math.round(performance.now()-start);
30
+ assert.deepEqual(new Set(recovered.records.map(x=>x.claim_id)),new Set([pending.claim_id,inflight.claim_id]));
31
+ assert.equal(recovered.next_cursor,null);
32
+ assert.equal((await store.state(inflight.claim_id)).state,'INTERRUPTED');
33
+ assert.equal((await store.state(inflight.claim_id)).side_effect_state,'unknown');
34
+ const replay=await store.claim({...base,request_id:'terminal-77'});
35
+ assert.equal(replay.owner,false);
36
+ assert.equal(replay.state,'TERMINAL');
37
+ console.log('R144_TERMINAL_HISTORY_BENCH',{terminal_count:200,elapsed_ms});
38
+ }finally{await rm(dir,{recursive:true,force:true});}
39
+ });
40
+
41
+ test('R144 terminal marker cannot enable replay when its bytes are forged',async()=>{
42
+ const dir=await mkdtemp(path.join(os.tmpdir(),'r144-forged-'));
43
+ try{
44
+ const store=openRemoteCallClaims({root:dir,clock:()=>now});
45
+ const claim=await store.claim(base);
46
+ await store.dispatch(claim.claim_id);
47
+ await store.terminal(claim.claim_id,{status:'ok'});
48
+ const f=path.join(dir,claim.claim_id.slice(0,2),claim.claim_id+'.terminal.json');
49
+ const bytes=await readFile(f,'utf8');
50
+ await writeFile(f,bytes.replace('"status":"ok"','"status":"forged"'));
51
+ assert.equal((await store.recover({limit:100})).records.length,0);
52
+ await assert.rejects(store.claim(base),/terminal hash corrupt|remote claim state unreadable/);
53
+ await assert.rejects(store.dispatch(claim.claim_id),/already dispatched/);
54
+ }finally{await rm(dir,{recursive:true,force:true});}
55
+ });
@@ -0,0 +1,54 @@
1
+ import test from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import {readFile,writeFile,mkdtemp,mkdir,rm,access} from 'node:fs/promises';
4
+ import {spawnSync} from 'node:child_process';
5
+ import {createHash} from 'node:crypto';
6
+ import os from 'node:os';
7
+ import path from 'node:path';
8
+
9
+ const q=x=>"'"+String(x).replaceAll("'","''")+"'";
10
+ const section=(src,start,end)=>{
11
+ const a=src.indexOf('function '+start+'('),b=src.indexOf('function '+end+'(',a);
12
+ assert.ok(a>=0&&b>a,start+' boundaries missing');
13
+ return src.slice(a,b);
14
+ };
15
+
16
+ test('R144 broad Coding roots with no leases permit isolated cleanup without changing grants',async()=>{
17
+ const home='C:/Users/DEADBYTE/.deadbyte-mcp';
18
+ const cfgRoot=path.join(home,'generations','v0.15.45-34aa8d1241cfb8bf-ga9de1c56d5e65fa4');
19
+ const tmp=await mkdtemp(path.join(os.tmpdir(),'r144-broad-policy-cleanup-'));
20
+ try{
21
+ const runtime=path.join(tmp,'runtime');await mkdir(runtime);
22
+ const coding=JSON.parse(await readFile(path.join(cfgRoot,'coding-policy.json'),'utf8'));
23
+ const autonomous=JSON.parse(await readFile(path.join(cfgRoot,'autonomous-policy.json'),'utf8'));
24
+ assert.equal(coding.roots.local_c.path,'C:\\');
25
+ assert.equal(coding.roots.local_d.path,'D:\\');
26
+ coding.lease_file=path.join(runtime,'coding-grant.json');
27
+ const codingFile=path.join(tmp,'coding.json');
28
+ await writeFile(codingFile,JSON.stringify(coding));
29
+ autonomous.lease_file=path.join(runtime,'autonomous-grant.json');
30
+ autonomous.coding_policy_sha256=createHash('sha256').update(await readFile(codingFile)).digest('hex');
31
+ const autonomousFile=path.join(tmp,'autonomous.json');
32
+ await writeFile(autonomousFile,JSON.stringify(autonomous));
33
+ const src=await readFile(new URL('../controller/deadbyte-controller.ps1',import.meta.url),'utf8');
34
+ const code=[
35
+ "$ErrorActionPreference='Stop';",'$RuntimeDir='+q(runtime)+';',
36
+ 'function Fail([string]$m){throw $m}',
37
+ 'function Invoke-AuthorityEpochCommand{throw "UNEXPECTED_EPOCH_MUTATION"}',
38
+ section(src,'Assert-PolicyRootsAvailable','Get-AuthorityEpochStatus'),
39
+ section(src,'Read-ControllerPolicySnapshot','Get-CodingPolicyMetadata'),
40
+ section(src,'Get-CodingPolicyMetadata','Get-CodingLeaseStatus'),
41
+ section(src,'Disarm-Coding','Show-CodingStatus'),
42
+ section(src,'Get-AutonomousRevocationLeaseFile','Show-AutonomousStatus'),
43
+ '$cfg=@{CodingPolicyFile='+q(codingFile)+';AutonomousPolicyFile='+q(autonomousFile)+'};',
44
+ 'Disarm-Coding $cfg; Disarm-Autonomous $cfg; Write-Output "R144_NO_GRANT_REVOKE_OK"'
45
+ ].join('\n');
46
+ const run=spawnSync('powershell.exe',['-NoLogo','-NoProfile','-NonInteractive','-Command',code],{
47
+ encoding:'utf8',timeout:30000,maxBuffer:1024*1024
48
+ });
49
+ assert.equal(run.status,0,run.stderr+'\n'+run.stdout);
50
+ assert.match(run.stdout,/R144_NO_GRANT_REVOKE_OK/);
51
+ for(const f of ['coding-grant.json','autonomous-grant.json'])
52
+ await assert.rejects(access(path.join(runtime,f)),{code:'ENOENT'});
53
+ }finally{await rm(tmp,{recursive:true,force:true});}
54
+ });
@@ -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'].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'].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');
@@ -21,8 +21,8 @@ test('R74 prepublish contract: positive path succeeds and verifies identities',
21
21
  assert.equal(result.checks.no_self_referential_tarball_hash, true);
22
22
  assert.equal(result.identities.package_name, 'deadbyte-mcp');
23
23
  // R74 component contract retains its train-specific source and predecessor assertions;
24
- // the containing R143 package must report its actual immutable package version.
25
- assert.equal(result.identities.package_version, '0.15.52');
24
+ // the containing R144 package must report its actual immutable package version.
25
+ assert.equal(result.identities.package_version, '0.15.53');
26
26
  assert.equal(result.identities.target_train, 'R74');
27
27
  assert.equal(result.identities.published_source_predecessor, '0.15.46');
28
28
  assert.notEqual(result.identities.published_source_predecessor, result.identities.runtime_predecessor);