deadbyte-mcp 0.15.27 → 0.15.29
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 +41 -25
- package/PROVENANCE.json +16 -10
- package/README.txt +32 -14
- package/RELEASE.json +55 -15
- package/SBOM.cdx.json +3 -3
- package/TEST-MATRIX.json +147 -23
- package/bin/deadbyte-process-host.exe +0 -0
- package/bin/deadbyte-process-host.obj +0 -0
- package/controller/deadbyte-controller.ps1 +4 -1
- package/controller/deadbyte-process-policy.json +1 -1
- 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 +95 -93
- package/scripts/deploy-r48.mjs +1 -1
- package/scripts/gate-windows-r51.ps1 +58 -0
- package/scripts/gate-windows-r52.ps1 +58 -0
- package/scripts/windows-gate-evidence-r51.mjs +84 -0
- package/scripts/windows-gate-evidence-r52.mjs +94 -0
- package/src/coding-plane.mjs +190 -28
- package/src/coding-task-runtime.mjs +10 -4
- package/src/deadbyte-cli.mjs +88 -28
- package/src/remote-live-log.mjs +17 -5
- package/src/remote-session-guardian.mjs +1 -1
- package/src/runtime-coherence.mjs +50 -0
- package/src/runtime-update.mjs +8 -2
- package/src/version.mjs +1 -1
- package/test/coding-runtime.test.mjs +104 -1
- package/test/helpers/coding-disconnect-server.mjs +11 -0
- package/test/production-docs.test.mjs +5 -3
- package/test/r48-release-contract.test.mjs +7 -30
- package/test/r49-windows-gate.test.mjs +17 -11
- package/test/r51-live-log-polling.test.mjs +28 -0
- package/test/r51-release-contract.test.mjs +58 -0
- package/test/r51-runtime-coherence.test.mjs +59 -0
- 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 +58 -0
- package/test/remote-live-log-r37.test.mjs +14 -0
- package/test/remote-session-cli.test.mjs +24 -24
package/TEST-MATRIX.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "deadbyte.test-matrix.v1",
|
|
3
|
-
"version": "0.15.
|
|
4
|
-
"train": "
|
|
3
|
+
"version": "0.15.29",
|
|
4
|
+
"train": "R52",
|
|
5
5
|
"primary_platform": "win32-x64",
|
|
6
6
|
"reference": {
|
|
7
7
|
"package": "@wonderwhy-er/desktop-commander",
|
|
@@ -10,28 +10,136 @@
|
|
|
10
10
|
"schemas_sha256": "f342345e34e48769dabaefe1b932f09d41e2e207b422f7794a15ee50ffa8f140"
|
|
11
11
|
},
|
|
12
12
|
"required": [
|
|
13
|
-
{
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
{
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
{
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
{
|
|
29
|
-
|
|
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"
|
|
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.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"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "machine-truth",
|
|
100
|
+
"command": "signed machine_ping",
|
|
101
|
+
"expected": "release_id and manifests bind activated 0.15.29 generation"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": "rollback-restore",
|
|
105
|
+
"command": "immutable slot rollback/restore",
|
|
106
|
+
"expected": "0.15.29 -> exact 0.15.27 -> exact 0.15.29"
|
|
107
|
+
}
|
|
30
108
|
],
|
|
31
109
|
"focused_proof": {
|
|
32
|
-
"raw_mcp_protocol": {
|
|
33
|
-
|
|
34
|
-
|
|
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
|
+
"r52_behavioral": {
|
|
136
|
+
"tests": 1,
|
|
137
|
+
"pass": 1,
|
|
138
|
+
"fail": 0,
|
|
139
|
+
"components": [
|
|
140
|
+
"offline-predecessor-host-revocation"
|
|
141
|
+
]
|
|
142
|
+
}
|
|
35
143
|
},
|
|
36
144
|
"predecessor_r48_full_regression_partition_proof": {
|
|
37
145
|
"files": 211,
|
|
@@ -46,7 +154,23 @@
|
|
|
46
154
|
"performance": {
|
|
47
155
|
"fresh_cross_reference_status": "PASS_PINNED_REFERENCE_RUNTIME",
|
|
48
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.",
|
|
49
|
-
"historical_sample_only": false
|
|
157
|
+
"historical_sample_only": false,
|
|
158
|
+
"r51": {
|
|
159
|
+
"coding_command_singleflight": true,
|
|
160
|
+
"completed_result_cache": {
|
|
161
|
+
"ttl_ms": 300000,
|
|
162
|
+
"max_entries": 16
|
|
163
|
+
},
|
|
164
|
+
"live_log_poll_ms": 250,
|
|
165
|
+
"live_log_discovery_interval_ms": 1000,
|
|
166
|
+
"max_audit_segments_polled": 2,
|
|
167
|
+
"audit_json_parse_per_line": 1
|
|
168
|
+
},
|
|
169
|
+
"r52": {
|
|
170
|
+
"offline_predecessor_host_revoke_before_capture": true,
|
|
171
|
+
"status_reread_required": true,
|
|
172
|
+
"fail_closed_if_host_remains_armed": true
|
|
173
|
+
}
|
|
50
174
|
},
|
|
51
175
|
"non_win32": {
|
|
52
176
|
"portable_tests": "supported where platform-independent",
|
|
Binary file
|
|
Binary file
|
|
@@ -920,7 +920,10 @@ function Arm-Host($Cfg) {
|
|
|
920
920
|
|
|
921
921
|
function Disarm-Host($Cfg) {
|
|
922
922
|
$meta = Get-HostPolicyMetadata $Cfg
|
|
923
|
-
|
|
923
|
+
if (Test-Path -LiteralPath $meta.ArmFile) {
|
|
924
|
+
Remove-Item -LiteralPath $meta.ArmFile -Force -ErrorAction Stop
|
|
925
|
+
}
|
|
926
|
+
if (Test-Path -LiteralPath $meta.ArmFile) { throw 'Host authority revocation failed: grant remains present' }
|
|
924
927
|
Write-Host 'PRIVILEGED HOST PLANE DISARMED'
|
|
925
928
|
}
|
|
926
929
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r42-agentic-dev\\controller\\runtime\\process-state",
|
|
6
6
|
"native_host": {
|
|
7
7
|
"path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r42-agentic-dev\\bin\\deadbyte-process-host.exe",
|
|
8
|
-
"sha256": "
|
|
8
|
+
"sha256": "daf9cfb371bee88cafbf5597eaa507fec504dbe0b0ddd40d0c3c2e02817f49e4"
|
|
9
9
|
},
|
|
10
10
|
"roots": {
|
|
11
11
|
"core": {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "deadbyte.provenance.v1",
|
|
3
|
+
"version": "0.15.28",
|
|
4
|
+
"builder": "deadbyte-r51-runtime-coherence-singleflight-livelog-hardening",
|
|
5
|
+
"source_model": "immutable published 0.15.27 parent -> registry SHA-1/local tarball byte identity -> VERSION SKEW RED -> runtime/package auto-coherence -> coding command single-flight/result dedup -> Desktop/Host foreground fail-closed cleanup -> bounded single-parse live logs -> focused GREEN -> full R51 regression -> MANIFEST.SHA256 -> isolated npm artifact -> immutable release slot -> signed machine truth",
|
|
6
|
+
"signing": "ed25519",
|
|
7
|
+
"parent_release_id": "v0.15.27-1b1dbe24b45ad06a",
|
|
8
|
+
"parent_manifest_sha256": "1b1dbe24b45ad06a62771d15f510662952f3d7c3e5aa08053c6c61511c523e47",
|
|
9
|
+
"parent_generation_manifest_sha256": "f87a1637b3c55ba050d079d8a5e0862a2244b306be7e985880708e0d8ded3db0",
|
|
10
|
+
"source_predecessor_version": "0.15.27",
|
|
11
|
+
"source_predecessor_tarball_sha256": "e728031d097d8678dfef80f8648cce65e72a96611052c31969c80f884506d1d7",
|
|
12
|
+
"source_predecessor_manifest_file_sha256": "1b1dbe24b45ad06a62771d15f510662952f3d7c3e5aa08053c6c61511c523e47",
|
|
13
|
+
"commander_reference_version": "0.2.51",
|
|
14
|
+
"commander_reference_server_sha256": "dfc303bb7dd2e8d01debac50fc43bb8644d00089bffdf2887e149497cff8b305",
|
|
15
|
+
"commander_reference_schemas_sha256": "f342345e34e48769dabaefe1b932f09d41e2e207b422f7794a15ee50ffa8f140",
|
|
16
|
+
"predecessor_r48_full_regression_task_receipt_sha256": "7711039e4807f6c2af02bbda897d0032b067e0a6631f789fd3bf801258160d3f",
|
|
17
|
+
"reproducibility": "candidate source bound to exact immutable published 0.15.27 predecessor; R51 focused coherence/single-flight/livelog proofs plus fresh full regression, manifest, package isolation, registry round-trip and activation machine truth are mandatory before release"
|
|
18
|
+
}
|
|
@@ -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;
|