deadbyte-mcp 0.15.29 → 0.15.30

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.
Files changed (62) hide show
  1. package/MANIFEST.SHA256 +60 -48
  2. package/PROVENANCE.json +19 -14
  3. package/README.txt +14 -14
  4. package/RELEASE.json +25 -13
  5. package/SBOM.cdx.json +3 -3
  6. package/STABILIZATION-PROGRESS.md +60 -0
  7. package/TEST-MATRIX.json +46 -101
  8. package/bin/appcontainer-stage.obj +0 -0
  9. package/bin/bootstrap-advapi32.obj +0 -0
  10. package/bin/bootstrap-exitcode.obj +0 -0
  11. package/bin/bootstrap-kernel32.obj +0 -0
  12. package/bin/child-control-probe.obj +0 -0
  13. package/bin/child-control-stage.obj +0 -0
  14. package/bin/contained-reverse-worker.obj +0 -0
  15. package/bin/contained-transform-worker.obj +0 -0
  16. package/bin/containment-probe.obj +0 -0
  17. package/bin/deadbyte-contain.obj +0 -0
  18. package/bin/deadbyte-exec.obj +0 -0
  19. package/bin/deadbyte-hardware-observer-r45.obj +0 -0
  20. package/bin/deadbyte-process-host.obj +0 -0
  21. package/bin/deadbyte-tunnel-host.obj +0 -0
  22. package/controller/deadbyte-desktop-policy.json +5 -5
  23. package/controller/deadbyte-host-policy.json +170 -0
  24. package/controller/deadbyte-process-policy.json +4 -4
  25. package/package.json +4 -3
  26. package/proof/CONTAINMENT-BUILD.txt +6 -6
  27. package/scripts/gate-windows-r53.ps1 +58 -0
  28. package/scripts/verify-r42-parent.mjs +1 -1
  29. package/scripts/verify-r43-parent.mjs +1 -1
  30. package/scripts/verify-r44-parent.mjs +1 -1
  31. package/scripts/verify-r45-parent.mjs +1 -1
  32. package/scripts/windows-gate-evidence-r53.mjs +102 -0
  33. package/src/authority-smoke.mjs +1 -0
  34. package/src/deadbyte-cli.mjs +4 -2
  35. package/src/doctor-r45.mjs +2 -1
  36. package/src/machine-fs-smoke-client.mjs +1 -0
  37. package/src/mcp-contained-smoke-client.mjs +1 -0
  38. package/src/mcp-host-smoke-client.mjs +1 -0
  39. package/src/mcp-smoke-client.mjs +1 -0
  40. package/src/process-smoke-client.mjs +1 -0
  41. package/src/release-slot.mjs +5 -2
  42. package/src/remote-session-guardian.mjs +12 -4
  43. package/src/runtime-coherence.mjs +13 -4
  44. package/src/runtime-update.mjs +20 -5
  45. package/src/state-root.mjs +8 -0
  46. package/src/trust.mjs +2 -1
  47. package/src/tunnel-stdio-compat-smoke.mjs +1 -0
  48. package/src/version.mjs +1 -1
  49. package/test/commander-biff-reference-r48.test.mjs +1 -1
  50. package/test/r44-finalizer.test.mjs +4 -3
  51. package/test/r49-windows-gate.test.mjs +15 -10
  52. package/test/r52-release-contract.test.mjs +9 -3
  53. package/test/r53-release-contract.test.mjs +66 -0
  54. package/test/release-slot.test.mjs +2 -1
  55. package/test/skill-mcp-r44.test.mjs +3 -0
  56. package/test/stabilization-guardian.test.mjs +25 -0
  57. package/test/stabilization-parent-context.test.mjs +18 -0
  58. package/test/stabilization-powershell.test.mjs +26 -0
  59. package/test/stabilization-semver.test.mjs +23 -0
  60. package/test/stabilization-smoke-root.test.mjs +23 -0
  61. package/test/stabilization-state-root.test.mjs +60 -0
  62. package/test/stabilization-update-child-root.test.mjs +20 -0
package/TEST-MATRIX.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema": "deadbyte.test-matrix.v1",
3
- "version": "0.15.29",
4
- "train": "R52",
3
+ "version": "0.15.30",
4
+ "train": "R53",
5
5
  "primary_platform": "win32-x64",
6
6
  "reference": {
7
7
  "package": "@wonderwhy-er/desktop-commander",
@@ -11,14 +11,9 @@
11
11
  },
12
12
  "required": [
13
13
  {
14
- "id": "r52-focused",
15
- "command": "npm run r52:focused:test",
16
- "expected": "PASS offline predecessor stale Host grant is revoked before capture; R51 coherence/single-flight/livelog and runtime-update contracts remain green"
17
- },
18
- {
19
- "id": "r51-remote-session",
20
- "command": "node --test test/remote-session-cli.test.mjs",
21
- "expected": "PASS foreground lifecycle, Desktop/Host fail-closed cleanup, guardian and live timeline"
14
+ "id": "r53-focused",
15
+ "command": "npm run r53:focused:test",
16
+ "expected": "PASS stabilization contracts, runtime coherence, state-root propagation, guardian cleanup, SemVer and PowerShell environment behavior"
22
17
  },
23
18
  {
24
19
  "id": "package-boundary",
@@ -31,130 +26,80 @@
31
26
  "expected": "PASS"
32
27
  },
33
28
  {
34
- "id": "capability-authority-truth",
35
- "command": "node --test test/capability-resolver.test.mjs",
36
- "expected": "PASS authority-state manifest truth"
37
- },
38
- {
39
- "id": "compact-authority-truth",
40
- "command": "node --test test/compact-max-catalog-r45.test.mjs",
41
- "expected": "PASS real compact stdio authority-state manifest truth"
42
- },
43
- {
44
- "id": "native-windows-observation",
45
- "command": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-hardware-r45.ps1",
46
- "expected": "PASS native Windows observation build/query gate"
47
- },
48
- {
49
- "id": "r49-donor-proof",
50
- "command": "node --test test/r49-remote-control-donors.test.mjs",
51
- "expected": "PASS six pinned donor decisions"
52
- },
53
- {
54
- "id": "r49-desktop-wait",
55
- "command": "node --test test/desktop-runtime-r40.test.mjs test/desktop-mcp-tools-r40.test.mjs test/autonomous-desktop-r40.test.mjs",
56
- "expected": "PASS bounded semantic wait and signed evidence"
57
- },
58
- {
59
- "id": "r49-catalog",
60
- "command": "npm run r48:catalog:test",
61
- "expected": "PASS 117-tool full catalog; compact remains 43"
62
- },
63
- {
64
- "id": "commander-hardening",
65
- "command": "npm run r47:hardening:test",
29
+ "id": "full-regression",
30
+ "command": "npm run r48:full:test",
66
31
  "expected": "PASS"
67
32
  },
68
33
  {
69
- "id": "commander-protocol-adversarial",
70
- "command": "node --test test/commander-protocol-adversarial-r48.test.mjs",
71
- "expected": "PASS malformed JSON, invalid request, unknown method/tool, duplicate IDs and concurrent correlation"
34
+ "id": "runtime-update",
35
+ "command": "node --test test/runtime-self-update.test.mjs",
36
+ "expected": "PASS"
72
37
  },
73
38
  {
74
- "id": "r48-release",
75
- "command": "npm run r48:release:test",
76
- "expected": "PASS"
39
+ "id": "windows-gate",
40
+ "command": "npm run gate:windows",
41
+ "expected": "PASS R53 exact 0.15.29 predecessor binding and final 0.15.30 manifest"
77
42
  },
78
43
  {
79
- "id": "full-regression",
80
- "command": "npm run r48:full:test",
81
- "expected": "PASS"
44
+ "id": "local-isolated-state-acceptance",
45
+ "command": "powershell -NoProfile -ExecutionPolicy Bypass -File D:/Projects/deadbyte-mcp/testing/0.15.30/local-isolated-acceptance.ps1",
46
+ "expected": "PASS with production sentinel unchanged"
82
47
  },
83
48
  {
84
- "id": "runtime-update",
85
- "command": "node --test test/runtime-self-update.test.mjs",
86
- "expected": "PASS"
49
+ "id": "four-hour-soak",
50
+ "command": "owner override",
51
+ "expected": "NOT_COMPLETED_OPERATOR_BYPASS"
87
52
  },
88
53
  {
89
54
  "id": "audit",
90
55
  "command": "npm audit --omit=dev",
91
56
  "expected": "0 vulnerabilities"
92
57
  },
58
+ {
59
+ "id": "package-verify",
60
+ "command": "node scripts/npm-release-r48.mjs --verify-only",
61
+ "expected": "PASS manifest, package surface, isolated unpack version and doctor"
62
+ },
93
63
  {
94
64
  "id": "activation",
95
- "command": "npx -y deadbyte-mcp@0.15.29 remote",
96
- "expected": "active runtime auto-synchronizes from exact 0.15.27 runtime rollback target to exact 0.15.29 package manifest; published lineage parent is exact 0.15.28; offline predecessor Host authority is revoked before capture"
65
+ "command": "npx --yes deadbyte-mcp@0.15.30 remote",
66
+ "expected": "active runtime synchronizes from exact sealed 0.15.29 to exact 0.15.30 package manifest"
97
67
  },
98
68
  {
99
69
  "id": "machine-truth",
100
70
  "command": "signed machine_ping",
101
- "expected": "release_id and manifests bind activated 0.15.29 generation"
71
+ "expected": "release_id and manifests bind activated 0.15.30 generation"
102
72
  },
103
73
  {
104
74
  "id": "rollback-restore",
105
75
  "command": "immutable slot rollback/restore",
106
- "expected": "0.15.29 -> exact 0.15.27 -> exact 0.15.29"
76
+ "expected": "0.15.30 -> exact 0.15.29 -> same exact 0.15.30"
107
77
  }
108
78
  ],
109
- "focused_proof": {
110
- "raw_mcp_protocol": {
111
- "tests": 3,
112
- "pass": 3,
113
- "fail": 0
114
- },
115
- "commander_hardening": {
116
- "tests": 139,
117
- "pass": 139,
118
- "fail": 0,
79
+ "observed_pre_release_evidence": {
80
+ "focused_before_version_finalize": {
81
+ "status": "PASS",
119
82
  "skip": 0
120
83
  },
121
- "npm_audit_production_vulnerabilities": 0,
122
- "r51_behavioral": {
123
- "tests": 56,
124
- "pass": 56,
125
- "fail": 0,
126
- "components": [
127
- "release-contract",
128
- "runtime-coherence",
129
- "live-log-polling",
130
- "coding-runtime",
131
- "remote-live-log",
132
- "remote-session-cli"
133
- ]
134
- },
135
- "r52_behavioral": {
136
- "tests": 1,
137
- "pass": 1,
138
- "fail": 0,
139
- "components": [
140
- "offline-predecessor-host-revocation"
141
- ]
84
+ "full_regression_before_version_finalize": {
85
+ "status": "PASS",
86
+ "batches": 8,
87
+ "test_files": 226,
88
+ "source_unchanged": true
89
+ },
90
+ "local_isolated_state_acceptance": {
91
+ "status": "PASS",
92
+ "production_sentinel_changed": 0,
93
+ "isolated_final_state": "OFFLINE",
94
+ "durable_task_verified": true,
95
+ "action_receipts_verified": 2
142
96
  }
143
97
  },
144
- "predecessor_r48_full_regression_partition_proof": {
145
- "files": 211,
146
- "batches": 8,
147
- "fail": 0,
148
- "elapsed_ms": 196997.218,
149
- "coding_task_id": "a1a10fff1520b37ac674f1861cd9e53e64e350d5a0766639036aefe5e096e235",
150
- "task_receipt_sha256": "7711039e4807f6c2af02bbda897d0032b067e0a6631f789fd3bf801258160d3f",
151
- "action_receipt_sha256": "095c5eb4d959b9105a769649aa196a1d33f5097b899031dd16997e5ba1b352e6",
152
- "not_valid_as_r50_proof": true
98
+ "operator_override": {
99
+ "four_hour_soak": "NOT_COMPLETED",
100
+ "stable_final_claim": false
153
101
  },
154
102
  "performance": {
155
- "fresh_cross_reference_status": "PASS_PINNED_REFERENCE_RUNTIME",
156
- "reason": "A test-only copy of the byte-pinned 0.2.51 reference was installed with scripts, audit, and dev dependencies disabled; production has no reference dependency.",
157
- "historical_sample_only": false,
158
103
  "r51": {
159
104
  "coding_command_singleflight": true,
160
105
  "completed_result_cache": {
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "schema": "deadbyte.desktop-policy.v1",
3
3
  "enabled": true,
4
- "grant_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r42-agentic-dev\\controller\\runtime\\desktop-grant.json",
5
- "evidence_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r42-agentic-dev\\controller\\runtime\\desktop-evidence",
4
+ "grant_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.30-stabilization\\controller\\runtime\\desktop-grant.json",
5
+ "evidence_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.30-stabilization\\controller\\runtime\\desktop-evidence",
6
6
  "observer": {
7
- "executable": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r42-agentic-dev\\bin\\deadbyte-desktop-observer-r40.exe",
7
+ "executable": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.30-stabilization\\bin\\deadbyte-desktop-observer-r40.exe",
8
8
  "sha256": "32671ef2b7decd68c25fcabfe064086e4b3f83a8e9d3558b9d6de3a2510c6dab",
9
9
  "backend": "gdi-bitblt-fallback"
10
10
  },
11
11
  "input": {
12
- "executable": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r42-agentic-dev\\bin\\deadbyte-desktop-input-r40.exe",
12
+ "executable": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.30-stabilization\\bin\\deadbyte-desktop-input-r40.exe",
13
13
  "sha256": "0b967fd0ef599cbb9882b96ea16db7261f086dbcccae631b56f1bc2445a8ab5b"
14
14
  },
15
15
  "grounder": {
16
- "executable": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r42-agentic-dev\\bin\\deadbyte-desktop-uia-r40.exe",
16
+ "executable": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.30-stabilization\\bin\\deadbyte-desktop-uia-r40.exe",
17
17
  "sha256": "19ff558218fe8437dc04f50a8848756a8a83a84f73f464057562d77c7e19fb75"
18
18
  },
19
19
  "allowed_input_desktops": [
@@ -0,0 +1,170 @@
1
+ {
2
+ "schema": "deadbyte.host-policy.v2",
3
+ "enabled": true,
4
+ "arm_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.30-stabilization\\controller\\runtime\\host-arm.json",
5
+ "max_read_bytes": 262144,
6
+ "max_write_bytes": 1048576,
7
+ "roots": {
8
+ "core": {
9
+ "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.30-stabilization",
10
+ "read": true,
11
+ "write": true,
12
+ "exec": true
13
+ },
14
+ "bridge": {
15
+ "path": "C:\\Users\\DEADBYTE\\Downloads\\deadbyte-chatgpt-bridge",
16
+ "read": true,
17
+ "write": true,
18
+ "exec": true
19
+ },
20
+ "downloads": {
21
+ "path": "C:\\Users\\DEADBYTE\\Downloads",
22
+ "read": true,
23
+ "write": true,
24
+ "exec": true
25
+ },
26
+ "projects": {
27
+ "path": "D:\\Projects",
28
+ "read": true,
29
+ "write": true,
30
+ "exec": true
31
+ }
32
+ },
33
+ "commands": {
34
+ "powershell_script": {
35
+ "kind": "script",
36
+ "executable": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
37
+ "executable_sha256": "8bb6fa8c283b4d92120b1ef249a9b311b0f804d4cabbe9981159976c8be76a5e",
38
+ "root_ids": [
39
+ "core",
40
+ "bridge",
41
+ "downloads",
42
+ "projects"
43
+ ],
44
+ "prefix_args": [
45
+ "-NoLogo",
46
+ "-NoProfile",
47
+ "-ExecutionPolicy",
48
+ "Bypass",
49
+ "-File"
50
+ ],
51
+ "extensions": [
52
+ ".ps1"
53
+ ],
54
+ "timeout_ms": 120000,
55
+ "max_output_bytes": 1048576
56
+ },
57
+ "cmd_script": {
58
+ "kind": "script",
59
+ "executable": "C:\\WINDOWS\\system32\\cmd.exe",
60
+ "executable_sha256": "97ac98b1a92c286054cce55239cfccdfc23a5517bd07fe693072c9ca96c7dabb",
61
+ "root_ids": [
62
+ "core",
63
+ "bridge",
64
+ "downloads",
65
+ "projects"
66
+ ],
67
+ "prefix_args": [
68
+ "/D",
69
+ "/S",
70
+ "/C"
71
+ ],
72
+ "extensions": [
73
+ ".cmd",
74
+ ".bat"
75
+ ],
76
+ "timeout_ms": 120000,
77
+ "max_output_bytes": 1048576
78
+ },
79
+ "node_script": {
80
+ "kind": "script",
81
+ "executable": "C:\\Program Files\\nodejs\\node.exe",
82
+ "executable_sha256": "9a4eb5f1c29c6a2e93852ead46b999e284a6a5ca8bab4d4e241d587d025a52de",
83
+ "root_ids": [
84
+ "core",
85
+ "bridge",
86
+ "downloads",
87
+ "projects"
88
+ ],
89
+ "prefix_args": [
90
+
91
+ ],
92
+ "extensions": [
93
+ ".mjs",
94
+ ".js"
95
+ ],
96
+ "timeout_ms": 120000,
97
+ "max_output_bytes": 1048576
98
+ },
99
+ "powershell_inline": {
100
+ "kind": "inline",
101
+ "executable": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
102
+ "executable_sha256": "8bb6fa8c283b4d92120b1ef249a9b311b0f804d4cabbe9981159976c8be76a5e",
103
+ "root_ids": [
104
+ "core",
105
+ "bridge",
106
+ "downloads",
107
+ "projects"
108
+ ],
109
+ "prefix_args": [
110
+ "-NoLogo",
111
+ "-NoProfile",
112
+ "-ExecutionPolicy",
113
+ "Bypass",
114
+ "-Command"
115
+ ],
116
+ "timeout_ms": 120000,
117
+ "max_output_bytes": 1048576,
118
+ "max_command_chars": 32768
119
+ },
120
+ "cmd_inline": {
121
+ "kind": "inline",
122
+ "executable": "C:\\WINDOWS\\system32\\cmd.exe",
123
+ "executable_sha256": "97ac98b1a92c286054cce55239cfccdfc23a5517bd07fe693072c9ca96c7dabb",
124
+ "root_ids": [
125
+ "core",
126
+ "bridge",
127
+ "downloads",
128
+ "projects"
129
+ ],
130
+ "prefix_args": [
131
+ "/D",
132
+ "/S",
133
+ "/C"
134
+ ],
135
+ "timeout_ms": 120000,
136
+ "max_output_bytes": 1048576,
137
+ "max_command_chars": 32768
138
+ },
139
+ "node_inline": {
140
+ "kind": "inline",
141
+ "executable": "C:\\Program Files\\nodejs\\node.exe",
142
+ "executable_sha256": "9a4eb5f1c29c6a2e93852ead46b999e284a6a5ca8bab4d4e241d587d025a52de",
143
+ "root_ids": [
144
+ "core",
145
+ "bridge",
146
+ "downloads",
147
+ "projects"
148
+ ],
149
+ "prefix_args": [
150
+ "-e"
151
+ ],
152
+ "timeout_ms": 120000,
153
+ "max_output_bytes": 1048576,
154
+ "max_command_chars": 32768
155
+ }
156
+ },
157
+ "native_exec": {
158
+ "enabled": true,
159
+ "root_ids": [
160
+ "core",
161
+ "bridge",
162
+ "downloads",
163
+ "projects"
164
+ ],
165
+ "timeout_ms": 120000,
166
+ "max_output_bytes": 1048576,
167
+ "max_args": 64,
168
+ "max_arg_chars": 8192
169
+ }
170
+ }
@@ -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-r42-agentic-dev\\controller\\runtime\\process-grant.json",
5
- "state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r42-agentic-dev\\controller\\runtime\\process-state",
4
+ "grant_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.30-stabilization\\controller\\runtime\\process-grant.json",
5
+ "state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.30-stabilization\\controller\\runtime\\process-state",
6
6
  "native_host": {
7
- "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r42-agentic-dev\\bin\\deadbyte-process-host.exe",
7
+ "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.30-stabilization\\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-r42-agentic-dev",
12
+ "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.30-stabilization",
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.29",
3
+ "version": "0.15.30",
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-r52.ps1",
45
+ "gate:windows": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/gate-windows-r53.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",
@@ -74,7 +74,8 @@
74
74
  "r48:catalog:test": "node --test --test-concurrency=1 test/full-max-catalog-r48.test.mjs",
75
75
  "release:npm": "node scripts/npm-release-r48.mjs",
76
76
  "r51:focused:test": "node --test --test-concurrency=1 test/r51-release-contract.test.mjs test/r51-runtime-coherence.test.mjs test/r51-live-log-polling.test.mjs test/coding-runtime.test.mjs test/remote-live-log-r37.test.mjs",
77
- "r52:focused:test": "node --test --test-concurrency=1 test/r52-release-contract.test.mjs test/r52-offline-predecessor-recovery.test.mjs test/r52-host-revocation.test.mjs test/r51-runtime-coherence.test.mjs test/r51-live-log-polling.test.mjs test/coding-runtime.test.mjs test/remote-live-log-r37.test.mjs test/runtime-self-update.test.mjs"
77
+ "r52:focused:test": "node --test --test-concurrency=1 test/r52-release-contract.test.mjs test/r52-offline-predecessor-recovery.test.mjs test/r52-host-revocation.test.mjs test/r51-runtime-coherence.test.mjs test/r51-live-log-polling.test.mjs test/coding-runtime.test.mjs test/remote-live-log-r37.test.mjs test/runtime-self-update.test.mjs",
78
+ "r53:focused:test": "node --test --test-concurrency=1 test/r53-release-contract.test.mjs test/stabilization-update-child-root.test.mjs test/stabilization-state-root.test.mjs test/stabilization-guardian.test.mjs test/stabilization-semver.test.mjs test/stabilization-powershell.test.mjs test/release-slot.test.mjs test/runtime-self-update.test.mjs test/r51-runtime-coherence.test.mjs test/remote-session-cli.test.mjs test/r52-offline-predecessor-recovery.test.mjs test/r52-host-revocation.test.mjs"
78
79
  },
79
80
  "bundleDependencies": [
80
81
  "@modelcontextprotocol/server",
@@ -39,7 +39,7 @@ deadbyte-process-host.cpp
39
39
  exit_code=0
40
40
  ==== probe-dependencies ====
41
41
 
42
- Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-r42-agentic-dev\bin\containment-probe.exe
42
+ Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.30-stabilization\bin\containment-probe.exe
43
43
 
44
44
  File Type: EXECUTABLE IMAGE
45
45
 
@@ -59,7 +59,7 @@ File Type: EXECUTABLE IMAGE
59
59
  exit_code=0
60
60
  ==== contained-launcher-dependencies ====
61
61
 
62
- Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-r42-agentic-dev\bin\deadbyte-exec.exe
62
+ Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.30-stabilization\bin\deadbyte-exec.exe
63
63
 
64
64
  File Type: EXECUTABLE IMAGE
65
65
 
@@ -83,7 +83,7 @@ File Type: EXECUTABLE IMAGE
83
83
  exit_code=0
84
84
  ==== contained-worker-dependencies ====
85
85
 
86
- Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-r42-agentic-dev\bin\contained-transform-worker.exe
86
+ Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.30-stabilization\bin\contained-transform-worker.exe
87
87
 
88
88
  File Type: EXECUTABLE IMAGE
89
89
 
@@ -104,7 +104,7 @@ File Type: EXECUTABLE IMAGE
104
104
  exit_code=0
105
105
  ==== contained-reverse-worker-dependencies ====
106
106
 
107
- Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-r42-agentic-dev\bin\contained-reverse-worker.exe
107
+ Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.30-stabilization\bin\contained-reverse-worker.exe
108
108
 
109
109
  File Type: EXECUTABLE IMAGE
110
110
 
@@ -125,7 +125,7 @@ File Type: EXECUTABLE IMAGE
125
125
  exit_code=0
126
126
  ==== named-tunnel-host-dependencies ====
127
127
 
128
- Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-r42-agentic-dev\bin\deadbyte-tunnel-host.exe
128
+ Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.30-stabilization\bin\deadbyte-tunnel-host.exe
129
129
 
130
130
  File Type: EXECUTABLE IMAGE
131
131
 
@@ -144,7 +144,7 @@ File Type: EXECUTABLE IMAGE
144
144
  exit_code=0
145
145
  ==== process-host-dependencies ====
146
146
 
147
- Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-r42-agentic-dev\bin\deadbyte-process-host.exe
147
+ Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.30-stabilization\bin\deadbyte-process-host.exe
148
148
 
149
149
  File Type: EXECUTABLE IMAGE
150
150
 
@@ -0,0 +1,58 @@
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.30 / R53 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.30 / R53 gate failed at $Name with exit code $LASTEXITCODE" }
16
+ }
17
+
18
+ Invoke-NodeTest 'r53-package-boundary' @('test/package-boundary.test.mjs')
19
+ Invoke-NodeTest 'r53-release-smoke-isolation' @('test/release-smoke-isolation.test.mjs')
20
+ Invoke-GateStep 'r53-focused-contracts' @('run','r53:focused:test')
21
+ Invoke-GateStep 'containment-build' @('run','containment:build')
22
+ Invoke-GateStep 'process-policy-refresh' @('run','process:policy:refresh')
23
+ Write-Host "==== desktop-policy-refresh ===="
24
+ & (Join-Path $PSScriptRoot 'init-desktop-policy-r40.ps1')
25
+ Invoke-GateStep 'hardware-build' @('run','hardware:build')
26
+
27
+ $hostPolicy = [System.IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\controller\deadbyte-host-policy.json'))
28
+ Remove-Item -LiteralPath $hostPolicy -Force -ErrorAction SilentlyContinue
29
+ if (Test-Path -LiteralPath $hostPolicy) { throw 'could not establish hermetic Host policy absence' }
30
+
31
+ Invoke-GateStep 'r53-release-focused' @('run','r48:release:test')
32
+ Invoke-NodeTest 'r49-donor-proof' @('test/r49-remote-control-donors.test.mjs')
33
+ Invoke-NodeTest 'r49-desktop-wait' @('test/desktop-runtime-r40.test.mjs','test/desktop-mcp-tools-r40.test.mjs','test/autonomous-desktop-r40.test.mjs')
34
+ Invoke-GateStep 'r49-catalog' @('run','r48:catalog:test')
35
+ Invoke-GateStep 'commander-hardening' @('run','r47:hardening:test')
36
+ Invoke-GateStep 'full-regression' @('run','r48:full:test')
37
+ Invoke-GateStep 'mcp-smoke' @('run','mcp:smoke')
38
+ Invoke-GateStep 'mcp-agent-smoke' @('run','mcp:agent:smoke')
39
+ Invoke-GateStep 'mcp-coding-smoke' @('run','mcp:coding:smoke')
40
+ Invoke-GateStep 'mcp-machine-fs-smoke' @('run','mcp:machine-fs:smoke')
41
+ Invoke-GateStep 'mcp-observation-smoke' @('run','mcp:observation:smoke')
42
+ Invoke-GateStep 'mcp-process-smoke' @('run','mcp:process:smoke')
43
+ Invoke-GateStep 'mcp-autonomous-smoke' @('run','mcp:autonomous:smoke')
44
+ Invoke-GateStep 'tunnel-stdio-compat-smoke' @('run','mcp:tunnel-compat:smoke')
45
+ Invoke-GateStep 'containment-smoke' @('run','containment:smoke')
46
+ Invoke-GateStep 'contained-smoke' @('run','contained:smoke')
47
+ Invoke-GateStep 'mcp-contained-smoke' @('run','mcp:contained:smoke')
48
+ Invoke-GateStep 'host-policy-refresh' @('run','host:policy:init')
49
+ Invoke-GateStep 'manifest-write' @('run','manifest:write')
50
+ Invoke-GateStep 'manifest-verify' @('run','manifest:verify')
51
+ Invoke-GateStep 'doctor' @('run','doctor')
52
+ Invoke-GateStep 'mcp-host-smoke' @('run','mcp:host:smoke')
53
+ Invoke-GateStep 'authority-smoke' @('run','authority:smoke')
54
+ Invoke-GateStep 'manifest-final-verify' @('run','manifest:verify')
55
+
56
+ & node.exe (Join-Path $PSScriptRoot 'windows-gate-evidence-r53.mjs')
57
+ if ($LASTEXITCODE -ne 0) { throw "R53 evidence writer failed with exit code $LASTEXITCODE" }
58
+ Write-Host '==== DEADBYTE 0.15.30 / R53 WINDOWS GATE: PASS ===='
@@ -82,7 +82,7 @@ export async function verifyR42Parent(file=path.join(root,'R42-PARENT.json')){
82
82
  const closureBytes=await readFile(path.resolve(record.parent_final_closure_path));
83
83
  insist(sha256(closureBytes)===record.parent_final_closure_sha256,'R41 parent final closure raw hash mismatch');
84
84
  const closure=JSON.parse(closureBytes.toString('utf8').replace(/^\uFEFF/,''));
85
- const pointer=verifySignedClosure(closure,record,await readFile(path.join(stateRoot,'trust','ed25519-public.pem')));
85
+ const pointer=verifySignedClosure(closure,record,await readFile(path.resolve(process.env.DEADBYTE_PARENT_VERIFY_KEY||path.join(stateRoot,'trust','ed25519-public.pem'))));
86
86
  const generationFiles=await verifyTree(path.resolve(pointer.generation_root),'GENERATION.SHA256',record.parent_generation_manifest_sha256,{exact:true});
87
87
 
88
88
  const tarball=await readFile(path.resolve(record.parent_public_tarball_path));
@@ -107,7 +107,7 @@ export async function verifyR43Parent(file=path.join(root,'R43-PARENT.json')){
107
107
  const activationBytes=await readFile(path.resolve(record.parent_activation_receipt_path));
108
108
  insist(sha256(activationBytes)===record.parent_activation_receipt_file_sha256,'R42 activation raw file hash mismatch');
109
109
  const activation=JSON.parse(activationBytes.toString('utf8').replace(/^\uFEFF/,''));
110
- const keyInfo=publicKeyInfo(await readFile(path.join(stateRoot,'trust','ed25519-public.pem')));
110
+ const keyInfo=publicKeyInfo(await readFile(path.resolve(process.env.DEADBYTE_PARENT_VERIFY_KEY||path.join(stateRoot,'trust','ed25519-public.pem'))));
111
111
  verifyActivationEnvelope(activation,keyInfo,record);
112
112
 
113
113
  return {
@@ -76,7 +76,7 @@ export async function verifyR44Parent(parentFile,{stateRoot=path.join(os.homedir
76
76
  insist(envelope.body.version===parent.parent_version,'R44 parent closure version mismatch');
77
77
  insist(envelope.body.release_label==='R43 AUTHORITY HARDENING PATCH','R44 parent closure label mismatch');
78
78
 
79
- const publicKey=createPublicKey(await readFile(path.join(path.resolve(stateRoot),'trust','ed25519-public.pem')));
79
+ const publicKey=createPublicKey(await readFile(path.resolve(process.env.DEADBYTE_PARENT_VERIFY_KEY||path.join(path.resolve(stateRoot),'trust','ed25519-public.pem'))));
80
80
  insist(publicKey.asymmetricKeyType==='ed25519','R44 parent trust key must be Ed25519');
81
81
  const keyId=sha256(Buffer.from(publicKey.export({type:'spki',format:'der'})));
82
82
  insist(keyId===parent.parent_final_closure_signer_key_id,'R44 parent trust key id mismatch');