deadbyte-mcp 0.15.28 → 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.
- package/MANIFEST.SHA256 +76 -54
- package/PROVENANCE.json +21 -10
- package/README.txt +16 -14
- package/RELEASE.json +29 -10
- package/SBOM.cdx.json +3 -3
- package/STABILIZATION-PROGRESS.md +60 -0
- package/TEST-MATRIX.json +51 -93
- package/bin/appcontainer-stage.obj +0 -0
- package/bin/bootstrap-advapi32.obj +0 -0
- package/bin/bootstrap-exitcode.obj +0 -0
- package/bin/bootstrap-kernel32.obj +0 -0
- package/bin/child-control-probe.obj +0 -0
- package/bin/child-control-stage.obj +0 -0
- package/bin/contained-reverse-worker.obj +0 -0
- package/bin/contained-transform-worker.obj +0 -0
- package/bin/containment-probe.obj +0 -0
- package/bin/deadbyte-contain.obj +0 -0
- package/bin/deadbyte-exec.obj +0 -0
- package/bin/deadbyte-hardware-observer-r45.obj +0 -0
- package/bin/deadbyte-process-host.exe +0 -0
- package/bin/deadbyte-process-host.obj +0 -0
- package/bin/deadbyte-tunnel-host.obj +0 -0
- package/controller/deadbyte-controller.ps1 +4 -1
- package/controller/deadbyte-desktop-policy.json +5 -5
- package/controller/deadbyte-host-policy.json +170 -0
- package/controller/deadbyte-process-policy.json +5 -5
- package/docs/R51-PROVENANCE.json +18 -0
- package/docs/R51-RELEASE.json +115 -0
- package/docs/R51-TEST-MATRIX.json +166 -0
- package/docs/R52-ACTIVATION-FORENSICS.md +85 -0
- package/native/deadbyte-process-host.cpp +5 -3
- package/package.json +96 -94
- package/proof/CONTAINMENT-BUILD.txt +6 -6
- package/scripts/gate-windows-r52.ps1 +58 -0
- package/scripts/gate-windows-r53.ps1 +58 -0
- package/scripts/verify-r42-parent.mjs +1 -1
- package/scripts/verify-r43-parent.mjs +1 -1
- package/scripts/verify-r44-parent.mjs +1 -1
- package/scripts/verify-r45-parent.mjs +1 -1
- package/scripts/windows-gate-evidence-r52.mjs +94 -0
- package/scripts/windows-gate-evidence-r53.mjs +102 -0
- package/src/authority-smoke.mjs +1 -0
- package/src/coding-plane.mjs +43 -12
- package/src/coding-task-runtime.mjs +10 -4
- package/src/deadbyte-cli.mjs +4 -2
- package/src/doctor-r45.mjs +2 -1
- package/src/machine-fs-smoke-client.mjs +1 -0
- package/src/mcp-contained-smoke-client.mjs +1 -0
- package/src/mcp-host-smoke-client.mjs +1 -0
- package/src/mcp-smoke-client.mjs +1 -0
- package/src/process-smoke-client.mjs +1 -0
- package/src/release-slot.mjs +5 -2
- package/src/remote-session-guardian.mjs +12 -4
- package/src/runtime-coherence.mjs +13 -4
- package/src/runtime-update.mjs +28 -7
- package/src/state-root.mjs +8 -0
- package/src/trust.mjs +2 -1
- package/src/tunnel-stdio-compat-smoke.mjs +1 -0
- package/src/version.mjs +1 -1
- package/test/coding-runtime.test.mjs +70 -1
- package/test/commander-biff-reference-r48.test.mjs +1 -1
- package/test/helpers/coding-disconnect-server.mjs +11 -0
- package/test/r44-finalizer.test.mjs +4 -3
- package/test/r49-windows-gate.test.mjs +19 -9
- package/test/r51-release-contract.test.mjs +22 -20
- package/test/r52-host-revocation.test.mjs +65 -0
- package/test/r52-offline-predecessor-recovery.test.mjs +77 -0
- package/test/r52-release-contract.test.mjs +64 -0
- package/test/r53-release-contract.test.mjs +66 -0
- package/test/release-slot.test.mjs +2 -1
- package/test/skill-mcp-r44.test.mjs +3 -0
- package/test/stabilization-guardian.test.mjs +25 -0
- package/test/stabilization-parent-context.test.mjs +18 -0
- package/test/stabilization-powershell.test.mjs +26 -0
- package/test/stabilization-semver.test.mjs +23 -0
- package/test/stabilization-smoke-root.test.mjs +23 -0
- package/test/stabilization-state-root.test.mjs +60 -0
- package/test/stabilization-update-child-root.test.mjs +20 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "deadbyte.release.v1",
|
|
3
|
+
"name": "deadbyte-mcp",
|
|
4
|
+
"version": "0.15.28",
|
|
5
|
+
"train": "R51",
|
|
6
|
+
"label": "RUNTIME COHERENCE + SINGLE-FLIGHT + LIVELOG HARDENING",
|
|
7
|
+
"protocol_revision": "2026-07-28",
|
|
8
|
+
"parent": {
|
|
9
|
+
"release_id": "v0.15.27-1b1dbe24b45ad06a",
|
|
10
|
+
"manifest_sha256": "1b1dbe24b45ad06a62771d15f510662952f3d7c3e5aa08053c6c61511c523e47",
|
|
11
|
+
"generation_manifest_sha256": "f87a1637b3c55ba050d079d8a5e0862a2244b306be7e985880708e0d8ded3db0"
|
|
12
|
+
},
|
|
13
|
+
"source_predecessor": {
|
|
14
|
+
"version": "0.15.27",
|
|
15
|
+
"tarball_sha256": "e728031d097d8678dfef80f8648cce65e72a96611052c31969c80f884506d1d7",
|
|
16
|
+
"manifest_file_sha256": "1b1dbe24b45ad06a62771d15f510662952f3d7c3e5aa08053c6c61511c523e47",
|
|
17
|
+
"reference_package": "@wonderwhy-er/desktop-commander@0.2.51",
|
|
18
|
+
"reference_server_sha256": "dfc303bb7dd2e8d01debac50fc43bb8644d00089bffdf2887e149497cff8b305",
|
|
19
|
+
"reference_schemas_sha256": "f342345e34e48769dabaefe1b932f09d41e2e207b422f7794a15ee50ffa8f140"
|
|
20
|
+
},
|
|
21
|
+
"platform": {
|
|
22
|
+
"primary": "win32",
|
|
23
|
+
"architectures": [
|
|
24
|
+
"x64"
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"capabilities": {
|
|
28
|
+
"host_execution_modes": [
|
|
29
|
+
"script",
|
|
30
|
+
"inline",
|
|
31
|
+
"native"
|
|
32
|
+
],
|
|
33
|
+
"hardware_queries": [
|
|
34
|
+
"cpu",
|
|
35
|
+
"gpu",
|
|
36
|
+
"memory",
|
|
37
|
+
"storage",
|
|
38
|
+
"network",
|
|
39
|
+
"pci"
|
|
40
|
+
],
|
|
41
|
+
"compact_tool_count": 43,
|
|
42
|
+
"full_tool_count": 117,
|
|
43
|
+
"full_tool_catalog": {
|
|
44
|
+
"path": "docs/R49-FULL-TOOL-CATALOG.json",
|
|
45
|
+
"base_sha256": "259fdc97a24575aff3f094911b5e86e4f512b07be7c2cc1286b0fd200d03a8c9"
|
|
46
|
+
},
|
|
47
|
+
"historical_r46_full_tool_count": 84,
|
|
48
|
+
"commander_reference_public_tool_count": 26,
|
|
49
|
+
"commander_additive_tool_count": 14,
|
|
50
|
+
"commander_drop_in": true,
|
|
51
|
+
"commander_rich_pdf": true,
|
|
52
|
+
"commander_incremental_pdf_revisions": true,
|
|
53
|
+
"commander_docx": true,
|
|
54
|
+
"commander_docx_header_footer_search": true,
|
|
55
|
+
"commander_xlsx": true,
|
|
56
|
+
"commander_url_read": true,
|
|
57
|
+
"commander_external_process_identity": true,
|
|
58
|
+
"commander_directory_read_fallback": true,
|
|
59
|
+
"commander_binary_detection": true,
|
|
60
|
+
"commander_protocol_adversarial": true,
|
|
61
|
+
"atomic_mutation_unknown_effect": true,
|
|
62
|
+
"package_slot_version_coherence": true,
|
|
63
|
+
"pid_reuse_self_recovery": true,
|
|
64
|
+
"bounded_controller_failure_evidence": true,
|
|
65
|
+
"durable_task_events_preserve_signed_envelope": true,
|
|
66
|
+
"capability_manifest_authority_truth": true,
|
|
67
|
+
"capability_manifest_host_grant_truth": true,
|
|
68
|
+
"process_profiles": [
|
|
69
|
+
"ping_hold",
|
|
70
|
+
"powershell",
|
|
71
|
+
"powershell_repl"
|
|
72
|
+
],
|
|
73
|
+
"powershell_fileless": true,
|
|
74
|
+
"powershell_source_max_arg_bytes": 8192,
|
|
75
|
+
"powershell_persistent_repl": true,
|
|
76
|
+
"process_raw_input_profile_opt_in": true,
|
|
77
|
+
"process_tail_reads": true,
|
|
78
|
+
"process_wait_reads": true,
|
|
79
|
+
"process_chunked_output_ring": true,
|
|
80
|
+
"remote_reachability_ttl": true,
|
|
81
|
+
"remote_probe_timeout_retry": true,
|
|
82
|
+
"remote_dispatch_timeout_no_retry": true,
|
|
83
|
+
"observation_search_session_ttl": true,
|
|
84
|
+
"observation_search_session_cap": 128,
|
|
85
|
+
"windows_queries": [
|
|
86
|
+
"registry",
|
|
87
|
+
"services",
|
|
88
|
+
"drivers",
|
|
89
|
+
"sockets",
|
|
90
|
+
"volumes",
|
|
91
|
+
"usb",
|
|
92
|
+
"wsl"
|
|
93
|
+
],
|
|
94
|
+
"machine_fs_list_entry_fault_isolation": true,
|
|
95
|
+
"native_windows_observation": true,
|
|
96
|
+
"desktop_bounded_semantic_wait": true,
|
|
97
|
+
"desktop_wait_signed_final_observation": true,
|
|
98
|
+
"desktop_wait_autonomous_goal_binding": true,
|
|
99
|
+
"native_windows_observer_sha256": "c9b46fc497b55b8f0ad1564c8e15f9c1cdf2a07f206b3c8fa7966c892058e920",
|
|
100
|
+
"human_livelog_visual_opcode": true,
|
|
101
|
+
"human_livelog_absolute_root_paths": true,
|
|
102
|
+
"human_livelog_trace_span": true,
|
|
103
|
+
"human_livelog_presentation_filter": true,
|
|
104
|
+
"human_livelog_tty_in_place_rewrite": true,
|
|
105
|
+
"human_livelog_expanded_summary": true,
|
|
106
|
+
"runtime_package_auto_coherence": true,
|
|
107
|
+
"coding_command_singleflight": true,
|
|
108
|
+
"coding_command_result_dedup_cache": true,
|
|
109
|
+
"foreground_desktop_host_fail_closed": true,
|
|
110
|
+
"human_livelog_slow_call_marker": true,
|
|
111
|
+
"human_livelog_peak_inflight": true,
|
|
112
|
+
"human_livelog_bounded_discovery": true,
|
|
113
|
+
"human_livelog_single_parse": true
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "deadbyte.test-matrix.v1",
|
|
3
|
+
"version": "0.15.28",
|
|
4
|
+
"train": "R51",
|
|
5
|
+
"primary_platform": "win32-x64",
|
|
6
|
+
"reference": {
|
|
7
|
+
"package": "@wonderwhy-er/desktop-commander",
|
|
8
|
+
"version": "0.2.51",
|
|
9
|
+
"server_sha256": "dfc303bb7dd2e8d01debac50fc43bb8644d00089bffdf2887e149497cff8b305",
|
|
10
|
+
"schemas_sha256": "f342345e34e48769dabaefe1b932f09d41e2e207b422f7794a15ee50ffa8f140"
|
|
11
|
+
},
|
|
12
|
+
"required": [
|
|
13
|
+
{
|
|
14
|
+
"id": "r51-focused",
|
|
15
|
+
"command": "npm run r51:focused:test",
|
|
16
|
+
"expected": "PASS runtime coherence, command single-flight/result reuse, authority cleanup and live-log optimizer contracts"
|
|
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"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "package-boundary",
|
|
25
|
+
"command": "node --test test/package-boundary.test.mjs",
|
|
26
|
+
"expected": "PASS canonical top-level DEADBYTE-MCP.cmd included; local/shadow wrappers excluded"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "release-smoke",
|
|
30
|
+
"command": "node --test test/release-smoke-isolation.test.mjs",
|
|
31
|
+
"expected": "PASS"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
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",
|
|
66
|
+
"expected": "PASS"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
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"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"id": "r48-release",
|
|
75
|
+
"command": "npm run r48:release:test",
|
|
76
|
+
"expected": "PASS"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "full-regression",
|
|
80
|
+
"command": "npm run r48:full:test",
|
|
81
|
+
"expected": "PASS"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "runtime-update",
|
|
85
|
+
"command": "node --test test/runtime-self-update.test.mjs",
|
|
86
|
+
"expected": "PASS"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "audit",
|
|
90
|
+
"command": "npm audit --omit=dev",
|
|
91
|
+
"expected": "0 vulnerabilities"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": "activation",
|
|
95
|
+
"command": "npx -y deadbyte-mcp@0.15.28 remote",
|
|
96
|
+
"expected": "active runtime auto-synchronizes to exact 0.15.28 package manifest before foreground readiness; no VERSION SKEW reuse"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "machine-truth",
|
|
100
|
+
"command": "signed machine_ping",
|
|
101
|
+
"expected": "release_id and manifests bind activated 0.15.28 generation"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": "rollback-restore",
|
|
105
|
+
"command": "immutable slot rollback/restore",
|
|
106
|
+
"expected": "0.15.28 -> exact 0.15.27 -> exact 0.15.28"
|
|
107
|
+
}
|
|
108
|
+
],
|
|
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,
|
|
119
|
+
"skip": 0
|
|
120
|
+
},
|
|
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
|
+
},
|
|
136
|
+
"predecessor_r48_full_regression_partition_proof": {
|
|
137
|
+
"files": 211,
|
|
138
|
+
"batches": 8,
|
|
139
|
+
"fail": 0,
|
|
140
|
+
"elapsed_ms": 196997.218,
|
|
141
|
+
"coding_task_id": "a1a10fff1520b37ac674f1861cd9e53e64e350d5a0766639036aefe5e096e235",
|
|
142
|
+
"task_receipt_sha256": "7711039e4807f6c2af02bbda897d0032b067e0a6631f789fd3bf801258160d3f",
|
|
143
|
+
"action_receipt_sha256": "095c5eb4d959b9105a769649aa196a1d33f5097b899031dd16997e5ba1b352e6",
|
|
144
|
+
"not_valid_as_r50_proof": true
|
|
145
|
+
},
|
|
146
|
+
"performance": {
|
|
147
|
+
"fresh_cross_reference_status": "PASS_PINNED_REFERENCE_RUNTIME",
|
|
148
|
+
"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.",
|
|
149
|
+
"historical_sample_only": false,
|
|
150
|
+
"r51": {
|
|
151
|
+
"coding_command_singleflight": true,
|
|
152
|
+
"completed_result_cache": {
|
|
153
|
+
"ttl_ms": 300000,
|
|
154
|
+
"max_entries": 16
|
|
155
|
+
},
|
|
156
|
+
"live_log_poll_ms": 250,
|
|
157
|
+
"live_log_discovery_interval_ms": 1000,
|
|
158
|
+
"max_audit_segments_polled": 2,
|
|
159
|
+
"audit_json_parse_per_line": 1
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
"non_win32": {
|
|
163
|
+
"portable_tests": "supported where platform-independent",
|
|
164
|
+
"windows_native_tests": "SKIP/unsupported"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# R52 activation investigation
|
|
2
|
+
|
|
3
|
+
Observed 2026-09-30. This record distinguishes reproduced defects from
|
|
4
|
+
historical facts that the retained evidence cannot establish.
|
|
5
|
+
|
|
6
|
+
## Failed 0.15.28 transition
|
|
7
|
+
|
|
8
|
+
Transaction `r27-b879bdff63478f28-muo5kmwo-33426318` started at
|
|
9
|
+
13:40:29.304Z from registry/npx package 0.15.28. Its prior pointer was exact
|
|
10
|
+
0.15.27 (`1b1dbe24b45ad06a62771d15f510662952f3d7c3e5aa08053c6c61511c523e47`).
|
|
11
|
+
It prepared immutable candidate 0.15.28 and its generation, then failed
|
|
12
|
+
at `candidate_prepared`, at 13:40:34.362Z, with
|
|
13
|
+
`offline predecessor recovery requires host plane DISARMED`.
|
|
14
|
+
No predecessor capture, supervisor handoff, pointer commit, or rollback was
|
|
15
|
+
recorded. A prepared `new_pointer` is not evidence of activation.
|
|
16
|
+
|
|
17
|
+
The receipt's canonical envelope identity is
|
|
18
|
+
`090f165c96da0d5a8e9c0815fd389fe94e8fe36c23a6878ee825b8f46bfb0bc2`.
|
|
19
|
+
The formatted receipt file's SHA-256 is separately
|
|
20
|
+
`e5de685f96b325388b27af3570175aa5fa7ebcc7f15b4bf27754eb96b20a81f5`.
|
|
21
|
+
These hashes have different subjects and must not be conflated.
|
|
22
|
+
|
|
23
|
+
The source path is CLI remote -> coherence -> privileged revocation ->
|
|
24
|
+
deploy -> candidate preparation -> capturePredecessor -> offline Host check.
|
|
25
|
+
The CLI checked revocation exit codes, not a post-revocation authority snapshot.
|
|
26
|
+
The controller's former Disarm-Host suppressed removal errors and printed
|
|
27
|
+
DISARMED regardless of whether the grant remained. Get-HostArmStatus treats
|
|
28
|
+
a policy-matching standing grant as ARMED even when the runtime is OFFLINE.
|
|
29
|
+
Thus runtime liveness and persisted authority are distinct.
|
|
30
|
+
|
|
31
|
+
The retained failure does not contain the grant bytes, revocation result,
|
|
32
|
+
actor identity, or an intervening authority-event trace. It cannot distinguish
|
|
33
|
+
failed removal, concurrent rearming, or another state change. The historical
|
|
34
|
+
actor/root cause is **not proven**. Do not call the grant merely stale or
|
|
35
|
+
claim a specific rearming actor.
|
|
36
|
+
|
|
37
|
+
## Separate observed state drift
|
|
38
|
+
|
|
39
|
+
Earlier transaction `r27-b879bdff63478f28-muo5hf8w-bcc78637` captured an
|
|
40
|
+
offline predecessor, spawned its supervisor, and then failed because
|
|
41
|
+
`cloud.instance.json` was present at the next offline check. This is a
|
|
42
|
+
different failure boundary. It proves capture is not a lifetime guarantee;
|
|
43
|
+
it does not identify the writer or justify deleting ownership evidence.
|
|
44
|
+
|
|
45
|
+
## Reproduced fixes and remaining acceptance
|
|
46
|
+
|
|
47
|
+
The R52 offline recovery test exercises explicit Host revocation followed
|
|
48
|
+
by fresh status, retaining the Host DISARMED invariant. It rejects failed
|
|
49
|
+
revocation, successful-return-with-grant-remaining, and missing recovery opt-in.
|
|
50
|
+
|
|
51
|
+
A new maintained-controller behavioral test was observed RED: failed grant
|
|
52
|
+
removal returned success and printed DISARMED. The minimal fix uses terminating
|
|
53
|
+
removal errors and verifies absence before reporting success. GREEN additionally
|
|
54
|
+
covers absent grants, actual successful deletion, and nominal success with a
|
|
55
|
+
remaining grant. No authority is armed by this fix.
|
|
56
|
+
|
|
57
|
+
Release lineage parent is published 0.15.28; known-good 0.15.27 remains a
|
|
58
|
+
separate runtime rollback target. A failed 0.15.28 generation is not a proven
|
|
59
|
+
live parent generation.
|
|
60
|
+
|
|
61
|
+
Focused GREEN does not establish durable caller-disconnect survival, owned-tree
|
|
62
|
+
cancellation, the full Windows gate, registry round-trip, rollback/recovery, or
|
|
63
|
+
actual latest remote activation. Those remain mandatory independent outcomes.
|
|
64
|
+
|
|
65
|
+
## Subsequent long-run proof
|
|
66
|
+
|
|
67
|
+
The added cancellation test was observed RED: a signed cancellation request
|
|
68
|
+
waited for the running command to finish, and its descendant could perform a
|
|
69
|
+
later write. Cancellation had only been consumed between task steps.
|
|
70
|
+
|
|
71
|
+
Windows coding command execution now uses the existing package-pinned native
|
|
72
|
+
process host's kill-on-close Job Object in pipe-quiet mode. Quiet mode suppresses
|
|
73
|
+
only the host's control records, preserving raw stdout/stderr; no caller chooses
|
|
74
|
+
the host, PID, input channel, or executable outside the existing coding policy.
|
|
75
|
+
Signed cancellation is polled while a step runs, and terminal cancellation is
|
|
76
|
+
reported after the owned host closes. The native host was rebuilt canonically
|
|
77
|
+
and its process-policy digest refreshed. This is an internal implementation
|
|
78
|
+
repair of the requested ownership contract, not a new public execution tool.
|
|
79
|
+
|
|
80
|
+
Observed GREEN covers a real running parent and descendant, prompt cancellation,
|
|
81
|
+
descendant absence and no delayed descendant write. A separate independent
|
|
82
|
+
runtime process survived loss of its caller IPC transport, completed exactly one
|
|
83
|
+
execution, retained attempts=1, and exposed a verifiable terminal task receipt
|
|
84
|
+
to a fresh runtime instance. This does not claim survival of the execution owner
|
|
85
|
+
itself being killed or prove public HTTP parity; those are different scopes.
|
|
@@ -170,9 +170,11 @@ int wmain(int argc, wchar_t** argv) {
|
|
|
170
170
|
const wchar_t* cwd = argv[2];
|
|
171
171
|
const wchar_t* job_id = argv[3];
|
|
172
172
|
bool pipeTransport = false;
|
|
173
|
+
bool quietTransport = false;
|
|
173
174
|
int firstChildArg = 4;
|
|
174
175
|
if (argc > 4 && wcsncmp(argv[4], L"--deadbyte-transport=", 21) == 0) {
|
|
175
176
|
if (wcscmp(argv[4], L"--deadbyte-transport=pipe") == 0) pipeTransport = true;
|
|
177
|
+
else if (wcscmp(argv[4], L"--deadbyte-transport=pipe-quiet") == 0) { pipeTransport = true; quietTransport = true; }
|
|
176
178
|
else if (wcscmp(argv[4], L"--deadbyte-transport=conpty") != 0) {
|
|
177
179
|
fwprintf(stderr, L"DEADBYTE process host: invalid transport\n");
|
|
178
180
|
return 65;
|
|
@@ -306,8 +308,8 @@ int wmain(int argc, wchar_t** argv) {
|
|
|
306
308
|
const int readyLength = snprintf(ready, sizeof(ready),
|
|
307
309
|
"DEADBYTE_PROCESS_HOST_READY {\"child_pid\":%lu,\"creation_filetime\":\"%llu\",\"job_id\":\"%ls\"}\n",
|
|
308
310
|
pi.dwProcessId, filetime_value(creation), job_id);
|
|
309
|
-
if (readyLength <= 0 || readyLength >= static_cast<int>(sizeof(ready)) ||
|
|
310
|
-
!write_all(GetStdHandle(STD_OUTPUT_HANDLE), ready, static_cast<DWORD>(readyLength))) {
|
|
311
|
+
if (!quietTransport && (readyLength <= 0 || readyLength >= static_cast<int>(sizeof(ready)) ||
|
|
312
|
+
!write_all(GetStdHandle(STD_OUTPUT_HANDLE), ready, static_cast<DWORD>(readyLength)))) {
|
|
311
313
|
TerminateProcess(process.value, 113);
|
|
312
314
|
if (hpc) ClosePseudoConsole(hpc);
|
|
313
315
|
return fail_win32(L"WriteFile(ready)");
|
|
@@ -333,7 +335,7 @@ int wmain(int argc, wchar_t** argv) {
|
|
|
333
335
|
const int doneLength = snprintf(done, sizeof(done),
|
|
334
336
|
"\nDEADBYTE_PROCESS_HOST_EXIT {\"child_pid\":%lu,\"exit_code\":%lu}\n",
|
|
335
337
|
pi.dwProcessId, exitCode);
|
|
336
|
-
if (doneLength > 0 && doneLength < static_cast<int>(sizeof(done))) {
|
|
338
|
+
if (!quietTransport && doneLength > 0 && doneLength < static_cast<int>(sizeof(done))) {
|
|
337
339
|
write_all(GetStdHandle(STD_OUTPUT_HANDLE), done, static_cast<DWORD>(doneLength));
|
|
338
340
|
}
|
|
339
341
|
return wait == WAIT_OBJECT_0 ? static_cast<int>(exitCode) : 114;
|
package/package.json
CHANGED
|
@@ -1,96 +1,98 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
"
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
"
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
"
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
"
|
|
94
|
-
|
|
95
|
-
|
|
2
|
+
"name": "deadbyte-mcp",
|
|
3
|
+
"version": "0.15.30",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
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.",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=22"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "node --test test/*.test.mjs",
|
|
12
|
+
"manifest:write": "node scripts/release-manifest.mjs write",
|
|
13
|
+
"manifest:verify": "node scripts/release-manifest.mjs verify",
|
|
14
|
+
"r41:parent:verify": "node scripts/verify-r41-parent.mjs",
|
|
15
|
+
"r41:memory:verify": "node scripts/verify-memory-r41.mjs",
|
|
16
|
+
"r42:parent:verify": "node scripts/verify-r42-parent.mjs",
|
|
17
|
+
"r42:eval": "node scripts/agent-eval-r42.mjs",
|
|
18
|
+
"self-update:runtime": "node scripts/runtime-self-update.mjs",
|
|
19
|
+
"self-update:deferred": "node scripts/deferred-slot-operation-r46.mjs",
|
|
20
|
+
"release:parity": "node scripts/release-parity-r46.mjs",
|
|
21
|
+
"release:final:write": "node scripts/final-closure-r46.mjs",
|
|
22
|
+
"release:final:verify": "node scripts/final-closure-verify-r46.mjs",
|
|
23
|
+
"proof": "node src/proof-cli.mjs workspaces/demo input.txt",
|
|
24
|
+
"verify": "node src/verifier-cli.mjs workspaces/demo evidence/latest.json",
|
|
25
|
+
"trust:init": "node src/trust-init.mjs",
|
|
26
|
+
"mcp": "node src/mcp-server.mjs",
|
|
27
|
+
"mcp:smoke": "node src/mcp-smoke-client.mjs",
|
|
28
|
+
"mcp:agent:smoke": "node --test test/agent-runtime.test.mjs test/agent-runtime-adversarial.test.mjs test/agent-runtime-crash.test.mjs test/agent-task-receipt.test.mjs",
|
|
29
|
+
"mcp:coding:smoke": "node --test test/coding-plane.test.mjs test/coding-plane-adversarial.test.mjs test/coding-runtime.test.mjs test/coding-crash.test.mjs",
|
|
30
|
+
"mcp:machine-fs:smoke": "node src/machine-fs-smoke-client.mjs",
|
|
31
|
+
"mcp:observation:smoke": "node src/observation-smoke-client.mjs",
|
|
32
|
+
"mcp:process:smoke": "node src/process-smoke-client.mjs",
|
|
33
|
+
"process:policy:refresh": "node scripts/refresh-process-policy.mjs",
|
|
34
|
+
"mcp:autonomous:smoke": "node --test test/autonomous-runtime.test.mjs test/autonomous-loop.test.mjs test/autonomous-adversarial.test.mjs test/autonomous-supervisor-integration.test.mjs test/native-diff.test.mjs",
|
|
35
|
+
"containment:build": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-containment.ps1",
|
|
36
|
+
"containment:smoke": "node src/containment-smoke.mjs appcontainer",
|
|
37
|
+
"containment:bootstrap": "node src/containment-bootstrap.mjs",
|
|
38
|
+
"containment:smoke:lpac": "node src/containment-smoke.mjs lpac",
|
|
39
|
+
"containment:smoke:appcontainer": "node src/containment-smoke.mjs appcontainer",
|
|
40
|
+
"containment:construction": "node src/containment-construction.mjs",
|
|
41
|
+
"containment:child-control": "node src/containment-child-control.mjs",
|
|
42
|
+
"contained:run": "node src/contained-cli.mjs workspaces/demo input.txt",
|
|
43
|
+
"contained:smoke": "node src/contained-smoke.mjs",
|
|
44
|
+
"mcp:contained:smoke": "node src/mcp-contained-smoke-client.mjs",
|
|
45
|
+
"gate:windows": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/gate-windows-r53.ps1",
|
|
46
|
+
"authority:smoke": "node src/authority-smoke.mjs",
|
|
47
|
+
"mcp:remote:smoke": "node src/remote-mcp-smoke-client.mjs",
|
|
48
|
+
"mcp:host:smoke": "node src/mcp-host-smoke-client.mjs",
|
|
49
|
+
"host:policy:init": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/init-host-policy.ps1",
|
|
50
|
+
"mcp:remote:host:smoke": "node src/remote-mcp-host-smoke-client.mjs",
|
|
51
|
+
"mcp:remote:autonomous:smoke": "node src/remote-mcp-autonomous-smoke-client.mjs",
|
|
52
|
+
"mcp:tunnel-compat:smoke": "node src/tunnel-stdio-compat-smoke.mjs",
|
|
53
|
+
"audit:verify": "node src/deadbyte-cli.mjs audit verify",
|
|
54
|
+
"audit:status": "node src/deadbyte-cli.mjs audit status",
|
|
55
|
+
"desktop:build": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-desktop-r40.ps1",
|
|
56
|
+
"desktop:policy:refresh": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/init-desktop-policy-r40.ps1",
|
|
57
|
+
"r43:parent:verify": "node scripts/verify-r43-parent.mjs",
|
|
58
|
+
"r43:full:test": "node scripts/full-regression-r43.mjs",
|
|
59
|
+
"r44:parent:verify": "node scripts/verify-r44-parent.mjs",
|
|
60
|
+
"r44:full:test": "node scripts/full-regression-r44.mjs",
|
|
61
|
+
"finalize:r44": "node scripts/finalize-r44.mjs",
|
|
62
|
+
"hardware:build": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/build-hardware-r45.ps1",
|
|
63
|
+
"doctor": "node src/deadbyte-cli.mjs doctor",
|
|
64
|
+
"r45:parent:verify": "node scripts/verify-r45-parent.mjs",
|
|
65
|
+
"r45:full:test": "node scripts/full-regression-r45.mjs",
|
|
66
|
+
"finalize:r45": "node scripts/finalize-r45.mjs",
|
|
67
|
+
"r46:fileless:test": "node --test --test-concurrency=1 test/process-policy.test.mjs test/process-policy-refresh.test.mjs test/release-generation.test.mjs test/process-runtime.test.mjs test/process-mcp-tools.test.mjs test/compact-gateway-r36.test.mjs test/capability-ledger-r36.test.mjs test/remote-device-r44.test.mjs test/observation-runtime.test.mjs test/observation-mcp-tools.test.mjs",
|
|
68
|
+
"r46:full:test": "node scripts/full-regression-r46.mjs",
|
|
69
|
+
"r47:full:test": "node scripts/full-regression-r47.mjs",
|
|
70
|
+
"r47:catalog:test": "node --test --test-concurrency=1 test/full-max-catalog-r47.test.mjs",
|
|
71
|
+
"r47:hardening:test": "node scripts/commander-hardening-gate-r47.mjs",
|
|
72
|
+
"r48:full:test": "node scripts/full-regression-r48.mjs",
|
|
73
|
+
"r48:release:test": "node --test --test-concurrency=1 test/r48-release-contract.test.mjs test/commander-reference-contract-r48.test.mjs test/commander-extended-wire-r48.test.mjs test/commander-external-process-r48.test.mjs test/commander-office-reader-r48.test.mjs test/commander-pdf-r48.test.mjs test/commander-url-reader-r48.test.mjs test/commander-wire-contract-r47.test.mjs test/commander-protocol-adversarial-r48.test.mjs",
|
|
74
|
+
"r48:catalog:test": "node --test --test-concurrency=1 test/full-max-catalog-r48.test.mjs",
|
|
75
|
+
"release:npm": "node scripts/npm-release-r48.mjs",
|
|
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",
|
|
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"
|
|
79
|
+
},
|
|
80
|
+
"bundleDependencies": [
|
|
81
|
+
"@modelcontextprotocol/server",
|
|
82
|
+
"@modelcontextprotocol/client",
|
|
83
|
+
"typescript",
|
|
84
|
+
"zod"
|
|
85
|
+
],
|
|
86
|
+
"dependencies": {
|
|
87
|
+
"@modelcontextprotocol/client": "2.1.0",
|
|
88
|
+
"@modelcontextprotocol/server": "2.1.0",
|
|
89
|
+
"typescript": "5.9.3",
|
|
90
|
+
"zod": "4.4.3"
|
|
91
|
+
},
|
|
92
|
+
"bin": {
|
|
93
|
+
"deadbyte-mcp": "src/deadbyte-cli.mjs"
|
|
94
|
+
},
|
|
95
|
+
"publishConfig": {
|
|
96
|
+
"access": "public"
|
|
97
|
+
}
|
|
96
98
|
}
|