deadbyte-mcp 0.15.38 → 0.15.41

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 (42) hide show
  1. package/MANIFEST.SHA256 +41 -21
  2. package/PROVENANCE.json +75 -21
  3. package/README.txt +30 -18
  4. package/RELEASE.json +76 -22
  5. package/SBOM.cdx.json +2 -2
  6. package/TEST-MATRIX.json +78 -26
  7. package/bridge/package.json +1 -1
  8. package/controller/deadbyte-process-policy.json +4 -4
  9. package/docs/R64-EVIDENCE.json +95 -0
  10. package/docs/R64-REFERENCE-GAP-MATRIX.json +98 -0
  11. package/docs/R64-SCOPE.json +41 -0
  12. package/package.json +6 -3
  13. package/scripts/gate-windows-r62-prepublish.ps1 +45 -0
  14. package/scripts/gate-windows-r63-prepublish.ps1 +45 -0
  15. package/scripts/gate-windows-r64-prepublish.ps1 +68 -0
  16. package/scripts/npm-release-r48.mjs +6 -0
  17. package/scripts/r62-focused.ps1 +9 -0
  18. package/scripts/r62-full.ps1 +9 -0
  19. package/scripts/r62-live-transaction-audit.mjs +17 -0
  20. package/scripts/r62-unresolved-transaction-inspect.mjs +54 -0
  21. package/scripts/r64-predecessor-reproducer.mjs +32 -0
  22. package/scripts/r64-read-benchmark.mjs +84 -0
  23. package/src/compact-gateway-mcp-tools.mjs +1 -1
  24. package/src/deadbyte-cli.mjs +16 -2
  25. package/src/doctor-transactions-r58.mjs +79 -8
  26. package/src/machine-fs-mcp-tools.mjs +1 -1
  27. package/src/machine-fs.mjs +7 -4
  28. package/src/remote-authority.mjs +10 -0
  29. package/src/runtime-update.mjs +15 -3
  30. package/src/version.mjs +1 -1
  31. package/test/r58-doctor-transactions.test.mjs +2 -2
  32. package/test/r59-tool-surface-compat.test.mjs +14 -4
  33. package/test/r61-release-contract.test.mjs +2 -1
  34. package/test/r62-doctor-receipt-semantics.test.mjs +50 -0
  35. package/test/r62-doctor-transactions-reconcile.test.mjs +208 -0
  36. package/test/r62-release-contract.test.mjs +60 -0
  37. package/test/r62-rollback-failure-receipt.test.mjs +19 -0
  38. package/test/r63-one-shot-coherence.test.mjs +38 -0
  39. package/test/r63-release-contract.test.mjs +59 -0
  40. package/test/r64-machine-fs-large-read.test.mjs +136 -0
  41. package/test/r64-release-contract.test.mjs +51 -0
  42. package/test/remote-session-cli.test.mjs +7 -5
package/TEST-MATRIX.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema": "deadbyte.test-matrix.v1",
3
- "version": "0.15.38",
4
- "train": "R61",
3
+ "version": "0.15.41",
4
+ "train": "R64",
5
5
  "primary_platform": "win32-x64",
6
6
  "reference": {
7
7
  "package": "@wonderwhy-er/desktop-commander",
@@ -11,19 +11,19 @@
11
11
  },
12
12
  "required": [
13
13
  {
14
- "id": "r61-focused",
15
- "command": "npm run r61:focused:test",
16
- "expected": "PASS R61 LIVELOG bounds, control/bulk admission, R60 authority and dispatch contracts, package boundary"
14
+ "id": "r64-focused",
15
+ "command": "npm run r64:focused:test",
16
+ "expected": "PASS R64 release identity, large-file pagination, bounds, replacement visibility, inherited machine fs and bridge/control contracts"
17
17
  },
18
18
  {
19
- "id": "r61-full-regression",
19
+ "id": "r64-full-regression",
20
20
  "command": "npm test",
21
- "expected": "PASS complete current R61 regression with only documented historical/platform skips"
21
+ "expected": "PASS complete current R64 regression with only documented historical/platform skips"
22
22
  },
23
23
  {
24
24
  "id": "windows-gate",
25
25
  "command": "npm run gate:windows",
26
- "expected": "PASS exact 0.15.37 predecessor, focused/full regression, manifest verify and doctor"
26
+ "expected": "PASS exact R63 source manifest and active 0.15.39 runtime predecessor, R64 focused/full regression, manifest verify and doctor"
27
27
  },
28
28
  {
29
29
  "id": "package-verify",
@@ -31,24 +31,9 @@
31
31
  "expected": "PASS exact packed surface and isolated package version/doctor execution"
32
32
  },
33
33
  {
34
- "id": "frontdoor",
35
- "command": "node src/remote-mcp-smoke-client.mjs <active-https-mcp> smoke",
36
- "expected": "PASS exact 43-tool compact catalog and independently verified Ed25519 ping after activation"
37
- },
38
- {
39
- "id": "activation",
40
- "command": "activate exact packed deadbyte-mcp@0.15.38 candidate",
41
- "expected": "activate exact R61 from exact active 0.15.37 only after prepublish/package gates"
42
- },
43
- {
44
- "id": "rollback",
45
- "command": "runtime-update --rollback-receipt <signed R61 activation receipt>",
46
- "expected": "restore exact signed 0.15.37 pointer/runtime and verify release/generation/machine binding"
47
- },
48
- {
49
- "id": "restore",
50
- "command": "restore exact same packed 0.15.38 candidate",
51
- "expected": "restore exact immutable R61 release/generation and verify public MCP without rebuild"
34
+ "id": "r64-read-benchmark",
35
+ "command": "node scripts/r64-read-benchmark.mjs <R63> <R64> <scratch> <output>",
36
+ "expected": "PASS alternating same-host R63/R64 read and control-lane measurements without unexplained material regression"
52
37
  }
53
38
  ],
54
39
  "observed_pre_release_evidence": {
@@ -212,6 +197,52 @@
212
197
  },
213
198
  "r60_activation_rollback_restore": {
214
199
  "status": "PENDING"
200
+ },
201
+ "r62_transaction_reconciliation": {
202
+ "tdd_red_receipt_sha256": "16118ec5e0c71957ec5509de6e774e12cbf9d2e657e1fd3e62a66bc86f36c89a",
203
+ "budget_red_receipt_sha256": "e0793a32d9c9d80c14035da3120b502185c784be22e1640bb4e5e71719c38d0d",
204
+ "terminal_proof_red_receipt_sha256": "7528cbba9b90b79aea580d1ef28cb7ae61094ef59782d1c2c68d63d7db67131f",
205
+ "r31_consumer_red_receipt_sha256": "a1689e1401da1b1ef0b58eaab89ad252adc5b603daeb910265c59844a29468fe",
206
+ "r31_producer_red_receipt_sha256": "f545c8a23fd9c80bf4dec6598a0f1c5682f8042826f52857bc21995a75308836",
207
+ "receipt_semantics_red_receipt_sha256": "591be25ff760f5790a7ce9d82a02642fdc71f7c8519e33f4d77de4462408ea94",
208
+ "focused_green_receipt_sha256": "c22d815903145fcd69eec58ca8feb7d6b15357165cb87642473de681c0a401c4",
209
+ "r31_producer_green_receipt_sha256": "0f0211ef085f4e9609b2c86ab78a0cb29bd59c3799093bb9247fe223a0783dcd",
210
+ "parent_live_audit_receipt_sha256": "08eabb45edb661e3542fdbdb985148cd1645f6cbd2dd916cb3c11162ae2e8c2b",
211
+ "parent_states_checked": 341,
212
+ "parent_signed_terminal_receipts_verified": 322,
213
+ "parent_unresolved_unsigned_transactions": 14,
214
+ "historical_evidence_mutation": false,
215
+ "package_boundary_red_receipt_sha256": "df0173b771d7e0170c5e8b6bb4eee26e64d19b42807634af666462cac2b26bb7",
216
+ "package_boundary_green_receipt_sha256": "ccbe983ef796676818f5fcd9a987b589f18472b88e23b59016f5e25525435e7c",
217
+ "full_regression": {
218
+ "tests": 1264,
219
+ "passed": 1226,
220
+ "skipped": 38,
221
+ "failed": 0,
222
+ "status": "PASS_PRE_METADATA_SEAL"
223
+ },
224
+ "windows_gate": {
225
+ "status": "PASS_PRE_METADATA_SEAL",
226
+ "manifest_entries": 2223,
227
+ "manifest_sha256": "034afc13a19c8f7d1cb9e01e95127084f576251bd72b5408a2c378a37907b7ae"
228
+ },
229
+ "package": "PENDING",
230
+ "registry": "PENDING",
231
+ "activation_rollback_restore": "PENDING",
232
+ "status": "PASS_PREPUBLISH_PRE_METADATA_SEAL"
233
+ },
234
+ "r63_one_shot_runtime_coherence": {
235
+ "tdd_red_receipt_sha256": "3634f21b8799730a740bc12eb8b7f94c5210709d88773a985ce48b99afd6523c",
236
+ "tdd_green_receipt_sha256": "1fb812f695d9becff3bb5deb0bc2518cd00a870f64abacbd18e687cde5ab94cc",
237
+ "release_contract_red_receipt_sha256": "61dd572a186d0078dad6d3459ea34120ae459f546562eda13b649d48dda9e2a0",
238
+ "coherent_status_test": "PASS",
239
+ "focused": "PASS_34_OF_34",
240
+ "full_regression": "PENDING",
241
+ "windows_gate": "PASS_PREFLIGHT_AND_FOCUSED",
242
+ "package": "PENDING",
243
+ "registry": "PENDING",
244
+ "activation_rollback_restore": "PENDING",
245
+ "focused_receipt_sha256": "010db961ecbe0aff98edfa7ee8f7db953f462c94a8e6cf0aaf6c5df229274ba7"
215
246
  }
216
247
  },
217
248
  "inherited_parent_evidence": {
@@ -290,8 +321,29 @@
290
321
  "governor_benchmark_path": "D:\\Projects\\deadbyte-mcp\\testing\\0.15.38\\r61-ab-nine-rounds.json",
291
322
  "governor_benchmark_status": "PASS_SCOPED_DIRECT_GOVERNOR",
292
323
  "full_mcp_performance_status": "PENDING"
324
+ },
325
+ "r62": {
326
+ "baseline_version": "0.15.38",
327
+ "candidate_version": "0.15.39",
328
+ "public_surface_tool_count": 43,
329
+ "status": "NO_MCP_HOT_PATH_CHANGE_TRANSACTION_DIAGNOSTIC_ONLY"
293
330
  }
294
331
  },
332
+ "r64": {
333
+ "source_predecessor_version": "0.15.40",
334
+ "source_predecessor_manifest_sha256": "d6f75feada9ad0ae2c248b3a833ac9cf0e04150d2430ddaa70b3dfb64a0b0a86",
335
+ "runtime_predecessor_release_id": "v0.15.39-3cda3b1c65b7b7c5",
336
+ "reference_corpus_roots": 7,
337
+ "new_public_tools": 0,
338
+ "new_authority_scopes": 0,
339
+ "read_offset_schema_widened": true,
340
+ "per_call_read_limit_unchanged": true,
341
+ "cross_page_atomic_snapshot_claim": false,
342
+ "prepublish_only": true,
343
+ "focused_pre_final_seal": "PASS_40_OF_40",
344
+ "full_regression_pre_final_seal": "PASS_1273_TESTS_1233_PASS_40_DOCUMENTED_SKIP_0_FAIL",
345
+ "benchmark_report_sha256": "7d6083b3b6fe7f80c26fa0a156b0510d57b8cf117c5456c8c2dc7011b6f6905f"
346
+ },
295
347
  "non_win32": {
296
348
  "portable_tests": "supported where platform-independent",
297
349
  "windows_native_tests": "SKIP/unsupported"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deadbyte-chatgpt-bridge",
3
- "version": "0.15.38",
3
+ "version": "0.15.41",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "engines": {
@@ -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-0.15.38-r61\\controller\\runtime\\process-grant.json",
5
- "state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.38-r61\\controller\\runtime\\process-state",
4
+ "grant_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.41-r64\\controller\\runtime\\process-grant.json",
5
+ "state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.41-r64\\controller\\runtime\\process-state",
6
6
  "native_host": {
7
- "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.38-r61\\bin\\deadbyte-process-host.exe",
7
+ "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.41-r64\\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-0.15.38-r61",
12
+ "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.41-r64",
13
13
  "deny_paths": [
14
14
  "node_modules",
15
15
  "controller/runtime",
@@ -0,0 +1,95 @@
1
+ {
2
+ "schema": "deadbyte.r64-evidence.v1",
3
+ "source_predecessor_manifest_sha256": "d6f75feada9ad0ae2c248b3a833ac9cf0e04150d2430ddaa70b3dfb64a0b0a86",
4
+ "red": {
5
+ "command": "node --test test/r64-machine-fs-large-read.test.mjs",
6
+ "tests": 2,
7
+ "failed": 2,
8
+ "raw_reproduction": "D:\\Projects\\deadbyte-mcp\\testing\\0.15.41-r64\\predecessor-red-reproduced.log",
9
+ "raw_reproduction_note": "Fresh post-change re-execution against immutable R63 predecessor; original pre-edit console RED was observed but its raw output was not persisted",
10
+ "observed_boundaries": [
11
+ "Full machine_fs_read schema rejected offset=4194306",
12
+ "Runtime rejected page-two next_offset=4194306 with machine fs read offset must be in [-4194304, 4194304]"
13
+ ]
14
+ },
15
+ "green": {
16
+ "command": "node --test test/r64-machine-fs-large-read.test.mjs",
17
+ "tests": 8,
18
+ "passed": 8,
19
+ "raw_log": "D:\\Projects\\deadbyte-mcp\\testing\\0.15.41-r64\\hash-cancel-behavior-green.log",
20
+ "focused_command": "npm run r64:focused:test",
21
+ "focused_tests": 42,
22
+ "focused_passed": 42
23
+ },
24
+ "inherited_failures_repaired_in_r64_only": [
25
+ "R63 source included a 0.15.39 npm tarball; R64 copy moved to testing evidence without changing R63",
26
+ "R63 process policy remained bound to R62 path; R64 copy repinned to its own root",
27
+ "R63 README still advertised 0.15.39; R64 package documentation now identifies 0.15.41",
28
+ "Historical R59 tool surface expected no schema changes; R64 test now requires only the authorized machine_fs input change",
29
+ "Historical R62 contract asserted current package=0.15.39 even on R63; version-scoped historical contract retained"
30
+ ],
31
+ "full_regression_pre_final_seal": {
32
+ "command": "npm test",
33
+ "tests": 1272,
34
+ "passed": 1232,
35
+ "skipped": 40,
36
+ "failed": 0,
37
+ "log_path": "D:\\Projects\\deadbyte-mcp\\testing\\0.15.41-r64\\full-regression-1.log",
38
+ "log_sha256": "c45f4295f745b5c6674aa8f742268d35c5c922bf5a3a2dafa4bbde48ed729871"
39
+ },
40
+ "benchmark_pre_final_seal": {
41
+ "path": "D:\\Projects\\deadbyte-mcp\\testing\\0.15.41-r64\\read-benchmark-v2.json",
42
+ "sha256": "ba5455687e2233ebfe4516ca50f8c319e70c6393b8b6258fd95d154b79518614",
43
+ "alternating_rounds": 7,
44
+ "read_ops_per_round": 400,
45
+ "errors": 0,
46
+ "median_before_ops_per_second": 3059.36,
47
+ "median_after_ops_per_second": 3173.65,
48
+ "median_before_p95_ms": 1.9078,
49
+ "median_after_p95_ms": 1.9296,
50
+ "median_before_control_p95_ms": 0.6386,
51
+ "median_after_control_p95_ms": 0.6086,
52
+ "limitation": "direct runtime and governor with local scratch I/O, not full public MCP transport; per-round variation remains"
53
+ },
54
+ "benchmark_cross_boundary": {
55
+ "path": "D:\\Projects\\deadbyte-mcp\\testing\\0.15.41-r64\\read-benchmark-after-cancel.json",
56
+ "rounds": 7,
57
+ "r63_page_two": "rejected in every round",
58
+ "r64_page_two": "passed in every round at offset 4259840",
59
+ "median_before_small_page_ops_per_second": 2632.13,
60
+ "median_after_small_page_ops_per_second": 2624.96,
61
+ "median_before_small_page_p95_ms": 2.35,
62
+ "median_after_small_page_p95_ms": 2.32,
63
+ "control_probe_limitation": "local governor read/hash probe, not actual public machine_ping or machine_status",
64
+ "hash_file_cancellation": "R64 read timeout now aborts the default SHA-256 stream; focused source invariant and injected-worker timeout GREEN"
65
+ },
66
+ "real_control_under_bulk_benchmark": {
67
+ "path": "D:\\Projects\\deadbyte-mcp\\testing\\0.15.41-r64\\real-control-after-cancel.json",
68
+ "rounds": 7,
69
+ "calls_per_round": 400,
70
+ "median_r63_control_p95_ms": 3.96,
71
+ "median_r64_control_p95_ms": 3.85,
72
+ "limitation": "signed machine runtime ping/status under concurrent local bulk reads; not public MCP transport"
73
+ },
74
+ "hash_file_cancellation_red_green": {
75
+ "red_log": "D:\\Projects\\deadbyte-mcp\\testing\\0.15.41-r64\\hash-cancel-red-2.log",
76
+ "red": "default createReadStream lacked an abort signal",
77
+ "green_log": "D:\\Projects\\deadbyte-mcp\\testing\\0.15.41-r64\\hash-cancel-behavior-green.log",
78
+ "green": "8/8 focused tests pass; injected default hash stream observed abort on timeout"
79
+ },
80
+ "production_mutation": false,
81
+ "publish_or_activate": false,
82
+ "windows_preflight_repair": {
83
+ "red": "npm run gate:windows exited 1 because inherited Windows PowerShell environment did not resolve Get-FileHash at R64 source manifest check",
84
+ "change": "Compute SHA-256 with built-in .NET cryptography without PowerShell module discovery",
85
+ "green": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/gate-windows-r64-prepublish.ps1 -Stage preflight exited 0 and verified exact R63 source manifest"
86
+ },
87
+ "windows_gate": {
88
+ "status": "PASS_PREPACKAGE",
89
+ "log": "D:\\Projects\\deadbyte-mcp\\testing\\0.15.41-r64\\windows-gate-final-2.log",
90
+ "focused": "40/40",
91
+ "full_regression": "1233 pass / 40 documented skip / 0 fail",
92
+ "doctor": "PASS with isolated empty state; production foreground process identity observation was inaccessible and production was not modified"
93
+ },
94
+ "package_verify_only": "PENDING"
95
+ }
@@ -0,0 +1,98 @@
1
+ {
2
+ "schema": "deadbyte.reference-gap-matrix.v1",
3
+ "train": "R64",
4
+ "method": "Local read-only source comparison; ideas only, no donor source bytes copied",
5
+ "references": [
6
+ {
7
+ "reference": "better-remote-commander",
8
+ "subsystem": "remote transport",
9
+ "behavior": "Correlates calls and results by ID, replaces stale device sockets, and uses heartbeat supervision",
10
+ "evidence_paths": ["better-remote-commander/packages/relay/src/device-hub.ts"],
11
+ "deadbyte_equivalent": ["bridge/src/remote-dispatch-r60.mjs", "bridge/src/reconnect-delay-r60.mjs", "src/remote-result-journal.mjs"],
12
+ "deadbyte_state": "stronger",
13
+ "security_implications": "Relay socket identity alone would weaken durable mutation claim semantics",
14
+ "performance_implications": "No demonstrated R64 hot-path gain",
15
+ "license_attribution": "README declares MIT, but no bytes copied",
16
+ "proposed_action": "KEEP-OURS: retain durable claim and no-blind-replay behavior",
17
+ "priority": "SKIP"
18
+ },
19
+ {
20
+ "reference": "cua",
21
+ "subsystem": "desktop lifecycle",
22
+ "behavior": "Separates session lifecycle from authority and requires fresh observation after actuation",
23
+ "evidence_paths": ["cua/rfcs/3007-cua-driver-lifecycle-sessions.md", "cua/rfcs/3682-typed-native-window-sdk.md"],
24
+ "deadbyte_equivalent": ["src/desktop-runtime-r40.mjs", "src/desktop-contract.mjs"],
25
+ "deadbyte_state": "parity",
26
+ "security_implications": "Public session labels must not become authority; no desktop expansion in R64",
27
+ "performance_implications": "Not on the selected file-read path",
28
+ "license_attribution": "Component-specific licenses; architecture only, no bytes copied",
29
+ "proposed_action": "KEEP-OURS: retain snapshot-bound actuation and independent verification",
30
+ "priority": "SKIP"
31
+ },
32
+ {
33
+ "reference": "desktop-commander",
34
+ "subsystem": "bounded presentation history",
35
+ "behavior": "Caps stored output per entry and on-disk history size",
36
+ "evidence_paths": ["desktop-commander/dist/utils/toolHistory.js"],
37
+ "deadbyte_equivalent": ["src/workload-substrate.mjs", "src/remote-result-journal.mjs"],
38
+ "deadbyte_state": "parity",
39
+ "security_implications": "Presentation retention cannot replace signed evidence",
40
+ "performance_implications": "Bounded memory is already enforced in current stream and journal primitives",
41
+ "license_attribution": "Root LICENSE is MIT; no bytes copied",
42
+ "proposed_action": "KEEP-OURS: preserve separate bounded presentation and durable evidence",
43
+ "priority": "SKIP"
44
+ },
45
+ {
46
+ "reference": "open-remote-mcp",
47
+ "subsystem": "authority",
48
+ "behavior": "Relay policy can narrow but cannot widen local device authority",
49
+ "evidence_paths": ["open-remote-mcp/docs/ARCHITECTURE.md", "open-remote-mcp/apps/server/src/lib/security.ts"],
50
+ "deadbyte_equivalent": ["src/coding-plane.mjs", "bridge/src/remote-dispatch-r60.mjs"],
51
+ "deadbyte_state": "parity",
52
+ "security_implications": "Local policy remains the final enforcement authority",
53
+ "performance_implications": "No read-path optimization",
54
+ "license_attribution": "README declares MIT; NOTICE.md retained in reference; no bytes copied",
55
+ "proposed_action": "KEEP-OURS: no relay-created root or grant",
56
+ "priority": "SKIP"
57
+ },
58
+ {
59
+ "reference": "remcp",
60
+ "subsystem": "large-file reading",
61
+ "behavior": "read_binary accepts offsets beyond one chunk and returns a next byte offset",
62
+ "evidence_paths": ["remcp/packages/runtime/src/tools/files.mjs:readBinaryTool", "remcp/packages/runtime/src/catalog.mjs"],
63
+ "deadbyte_equivalent": ["src/machine-fs.mjs:readRange", "src/machine-fs-mcp-tools.mjs", "src/compact-gateway-mcp-tools.mjs"],
64
+ "deadbyte_state": "weaker",
65
+ "security_implications": "Widen only positional offset; keep per-call byte cap, root and authority enforcement",
66
+ "performance_implications": "Enables bounded paging of files over 4 MiB without whole-file buffering",
67
+ "license_attribution": "Runtime LICENSE is MIT; behavior reimplemented independently",
68
+ "proposed_action": "ADAPT: allow safe positive next_offset while preserving the existing read schema shape",
69
+ "priority": "P0"
70
+ },
71
+ {
72
+ "reference": "secure-host-mcp",
73
+ "subsystem": "workspace and process",
74
+ "behavior": "Bounds workspace reads and command output; tracks cancelable jobs",
75
+ "evidence_paths": ["secure-host-mcp/src/workspace.ts", "secure-host-mcp/src/executor.ts", "secure-host-mcp/test/workspace.test.ts"],
76
+ "deadbyte_equivalent": ["src/machine-fs.mjs", "src/process-runtime.mjs"],
77
+ "deadbyte_state": "stronger",
78
+ "security_implications": "Generic command strings and caller environment would widen DEADBYTE authority",
79
+ "performance_implications": "Current read/output limits already bound retained bytes",
80
+ "license_attribution": "README displays MIT badge, root license file absent in local corpus; no bytes copied",
81
+ "proposed_action": "KEEP-OURS: retain policy-pinned commands and separate process authority",
82
+ "priority": "SKIP"
83
+ },
84
+ {
85
+ "reference": "winremote-mcp",
86
+ "subsystem": "Windows privilege tiers",
87
+ "behavior": "Requires authenticated remote transport before exposing high-risk tier-3 controls",
88
+ "evidence_paths": ["winremote-mcp/src/winremote/tiers.py", "winremote-mcp/tests/test_security_hardening.py"],
89
+ "deadbyte_equivalent": ["src/desktop-policy-r40.mjs", "src/coding-plane.mjs", "bridge/src/remote-dispatch-r60.mjs"],
90
+ "deadbyte_state": "stronger",
91
+ "security_implications": "Broad tier-3 shell/file authority would weaken independently revocable planes",
92
+ "performance_implications": "Not on selected read path",
93
+ "license_attribution": "README declares MIT, root license file absent in local corpus; no bytes copied",
94
+ "proposed_action": "KEEP-OURS: retain fine-grained local planes, not broad capability tiers",
95
+ "priority": "SKIP"
96
+ }
97
+ ]
98
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "schema": "deadbyte.r64-scope.v1",
3
+ "task_id": "deadbyte-r64-large-file-read",
4
+ "version_target": "0.15.41",
5
+ "train": "R64",
6
+ "source_predecessor": {
7
+ "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.40-r63",
8
+ "version": "0.15.40",
9
+ "manifest_sha256": "d6f75feada9ad0ae2c248b3a833ac9cf0e04150d2430ddaa70b3dfb64a0b0a86",
10
+ "manifest_file_count": 2227,
11
+ "release_status": "not proven published or activated"
12
+ },
13
+ "runtime_predecessor": {
14
+ "release_id": "v0.15.39-3cda3b1c65b7b7c5",
15
+ "manifest_sha256": "3cda3b1c65b7b7c561c5a8617156ab87d69cf162f447f3e99a4cb4a76471b3de",
16
+ "generation_manifest_sha256": "f47cb96083679e764725df1bde6eda53169a39f55772c173ab22f89a1dfaa7ab"
17
+ },
18
+ "selected_work": [
19
+ "Permit machine_fs_read positive offsets through Number.MAX_SAFE_INTEGER, subject to actual file size",
20
+ "Apply the same numeric-bound widening in full and compact inputs without changing tool names, field names or per-call max_bytes",
21
+ "Document that independent pages are not an atomic whole-file snapshot",
22
+ "Abort default hash_file streaming when a bounded read times out; retain existing timeout and authority semantics"
23
+ ],
24
+ "rejected_work": [
25
+ "New file-transfer tool or chunked mutation protocol: out of scope and new authority surface",
26
+ "Generic remote shell, broad privilege tiers and donor subsystem ports: weaker authority model",
27
+ "Changing negative tail offset bounds or read length caps: unnecessary for the reproduced defect"
28
+ ],
29
+ "acceptance_criteria": [
30
+ "RED test proves both schema and runtime reject page two solely because offset exceeds 4 MiB",
31
+ "GREEN test reads page two using returned next_offset while per-call length remains capped",
32
+ "Invalid/unsafe offsets, out-of-file offsets, denied roots and changed-file pages are handled explicitly",
33
+ "Focused, full regression, Windows gate, manifest, doctor, benchmark and verify-only package gates pass on exact R64 bytes",
34
+ "Hashing on the default read path receives an abort signal bound to timeout"
35
+ ],
36
+ "public_surface_delta": "0 new tools; same compact 43-tool names; existing read offset numeric maximum widens only",
37
+ "authority_delta": "none",
38
+ "assurance_mode": "MATERIAL",
39
+ "acceptance_environment": "local production Windows host; isolated candidate and scratch files; production runtime untouched",
40
+ "stop_condition": "RELEASE_READY only after every prepublish gate; never publish or activate"
41
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deadbyte-mcp",
3
- "version": "0.15.38",
3
+ "version": "0.15.41",
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-r61-prepublish.ps1",
45
+ "gate:windows": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/gate-windows-r64-prepublish.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",
@@ -86,7 +86,10 @@
86
86
  "r59:release:test": "node --test --test-concurrency=1 test/r59-release-contract.test.mjs test/r59-tool-surface-compat.test.mjs test/bridge-runtime-r59.test.mjs test/controller-policy-preflight-r59.test.mjs",
87
87
  "r60:focused:test": "node --test --test-concurrency=1 test/r60-authority-coherence.test.mjs test/r60-authority-enforcement.test.mjs test/r60-bridge-dispatch.test.mjs test/r60-clock-discipline.test.mjs test/r60-live-timeline.test.mjs test/r60-reconnect-errors.test.mjs test/r60-reconnect-jitter.test.mjs test/r60-remote-call-recovery.test.mjs test/r60-windows-log-decode.test.mjs test/r60-release-contract.test.mjs",
88
88
  "r60:full:test": "node scripts/full-regression-r60.mjs",
89
- "r61:focused:test": "node --test --test-concurrency=1 test/r61-release-contract.test.mjs test/r61-release-bridge-binding.test.mjs test/r61-control-lane.test.mjs test/r61-live-timeline-bounds.test.mjs test/r61-npm-artifact-identity.test.mjs test/remote-live-log-r37.test.mjs test/bridge-runtime-r59.test.mjs test/commander-schema-differential-r48.test.mjs test/package-boundary.test.mjs test/r60-bridge-dispatch.test.mjs test/r60-authority-enforcement.test.mjs"
89
+ "r61:focused:test": "node --test --test-concurrency=1 test/r61-release-contract.test.mjs test/r61-release-bridge-binding.test.mjs test/r61-control-lane.test.mjs test/r61-live-timeline-bounds.test.mjs test/r61-npm-artifact-identity.test.mjs test/remote-live-log-r37.test.mjs test/bridge-runtime-r59.test.mjs test/commander-schema-differential-r48.test.mjs test/package-boundary.test.mjs test/r60-bridge-dispatch.test.mjs test/r60-authority-enforcement.test.mjs",
90
+ "r62:focused:test": "node --test --test-concurrency=1 test/r62-release-contract.test.mjs test/r62-doctor-transactions-reconcile.test.mjs test/r62-doctor-receipt-semantics.test.mjs test/r62-rollback-failure-receipt.test.mjs test/r58-doctor-transactions.test.mjs test/r58-completed-update-receipt.test.mjs test/runtime-self-update.test.mjs test/r56-rollback-launcher-restore.test.mjs",
91
+ "r63:focused:test": "node --test --test-concurrency=1 test/r63-release-contract.test.mjs test/r63-one-shot-coherence.test.mjs test/r51-runtime-coherence.test.mjs test/remote-session-cli.test.mjs",
92
+ "r64:focused:test": "node --test --test-concurrency=1 test/r64-release-contract.test.mjs test/r64-machine-fs-large-read.test.mjs test/machine-fs-runtime.test.mjs test/compact-gateway-r36.test.mjs test/r61-control-lane.test.mjs test/r60-bridge-dispatch.test.mjs"
90
93
  },
91
94
  "bundleDependencies": [
92
95
  "@modelcontextprotocol/server",
@@ -0,0 +1,45 @@
1
+ param(
2
+ [ValidateSet('all','preflight','focused','full','manifest','doctor')]
3
+ [string]$Stage='all'
4
+ )
5
+
6
+ $ErrorActionPreference='Stop'
7
+ Set-StrictMode -Version 3.0
8
+ $root=Split-Path $PSScriptRoot -Parent
9
+ Set-Location -LiteralPath $root
10
+
11
+ function Invoke-Npm([string]$Name,[string[]]$NpmArgs){
12
+ Write-Host "==== $Name ===="
13
+ & npm.cmd @NpmArgs
14
+ if($LASTEXITCODE -ne 0){ throw "R62 prepublish gate failed at $Name exit=$LASTEXITCODE" }
15
+ }
16
+
17
+ $stateRoot=if(-not [string]::IsNullOrWhiteSpace($env:DEADBYTE_STATE_ROOT)){
18
+ [IO.Path]::GetFullPath($env:DEADBYTE_STATE_ROOT)
19
+ }else{ Join-Path $env:USERPROFILE '.deadbyte-mcp' }
20
+ $pointer=Join-Path $stateRoot 'active-release.json'
21
+ if(-not (Test-Path -LiteralPath $pointer -PathType Leaf)){ throw "R62 predecessor pointer missing: $pointer" }
22
+ $active=Get-Content -LiteralPath $pointer -Raw | ConvertFrom-Json
23
+ if($active.release_id -ne 'v0.15.38-917901b3fcb2a77f'){ throw "R62 predecessor release mismatch: $($active.release_id)" }
24
+ if($active.manifest_sha256 -ne '917901b3fcb2a77f696fedc539bd97c567d9dc59345779906fc633d11ea4bcfb'){ throw 'R62 predecessor manifest mismatch' }
25
+ if($active.generation_manifest_sha256 -ne '9d320a8af1ba8e9e6a23552f35263da2670c00af1355464820552d849d9033c6'){ throw 'R62 predecessor generation mismatch' }
26
+ if($Stage -eq 'preflight'){Write-Host '==== R62 WINDOWS GATE: PASS preflight ====';return}
27
+
28
+ if($Stage -eq 'all' -or $Stage -eq 'focused'){
29
+ Invoke-Npm 'r62-focused' @('run','r62:focused:test')
30
+ if($Stage -eq 'focused'){Write-Host '==== R62 WINDOWS GATE: PASS focused ====';return}
31
+ }
32
+ if($Stage -eq 'all' -or $Stage -eq 'full'){
33
+ Invoke-Npm 'full-regression' @('test')
34
+ if($Stage -eq 'full'){Write-Host '==== R62 WINDOWS GATE: PASS full ====';return}
35
+ }
36
+ if($Stage -eq 'all' -or $Stage -eq 'manifest'){
37
+ Invoke-Npm 'manifest-write' @('run','manifest:write')
38
+ Invoke-Npm 'manifest-verify' @('run','manifest:verify')
39
+ if($Stage -eq 'manifest'){Write-Host '==== R62 WINDOWS GATE: PASS manifest ====';return}
40
+ }
41
+ if($Stage -eq 'all' -or $Stage -eq 'doctor'){
42
+ Invoke-Npm 'doctor' @('run','doctor')
43
+ if($Stage -eq 'doctor'){Write-Host '==== R62 WINDOWS GATE: PASS doctor ====';return}
44
+ }
45
+ Write-Host '==== R62 PREPUBLISH WINDOWS GATE: PASS ===='
@@ -0,0 +1,45 @@
1
+ param(
2
+ [ValidateSet('all','preflight','focused','full','manifest','doctor')]
3
+ [string]$Stage='all'
4
+ )
5
+
6
+ $ErrorActionPreference='Stop'
7
+ Set-StrictMode -Version 3.0
8
+ $root=Split-Path $PSScriptRoot -Parent
9
+ Set-Location -LiteralPath $root
10
+
11
+ function Invoke-Npm([string]$Name,[string[]]$NpmArgs){
12
+ Write-Host "==== $Name ===="
13
+ & npm.cmd @NpmArgs
14
+ if($LASTEXITCODE -ne 0){ throw "R63 prepublish gate failed at $Name exit=$LASTEXITCODE" }
15
+ }
16
+
17
+ $stateRoot=if(-not [string]::IsNullOrWhiteSpace($env:DEADBYTE_STATE_ROOT)){
18
+ [IO.Path]::GetFullPath($env:DEADBYTE_STATE_ROOT)
19
+ }else{ Join-Path $env:USERPROFILE '.deadbyte-mcp' }
20
+ $pointer=Join-Path $stateRoot 'active-release.json'
21
+ if(-not (Test-Path -LiteralPath $pointer -PathType Leaf)){ throw "R63 predecessor pointer missing: $pointer" }
22
+ $active=Get-Content -LiteralPath $pointer -Raw | ConvertFrom-Json
23
+ if($active.release_id -ne 'v0.15.39-3cda3b1c65b7b7c5'){ throw "R63 predecessor release mismatch: $($active.release_id)" }
24
+ if($active.manifest_sha256 -ne '3cda3b1c65b7b7c561c5a8617156ab87d69cf162f447f3e99a4cb4a76471b3de'){ throw 'R63 predecessor manifest mismatch' }
25
+ if($active.generation_manifest_sha256 -ne 'f47cb96083679e764725df1bde6eda53169a39f55772c173ab22f89a1dfaa7ab'){ throw 'R63 predecessor generation mismatch' }
26
+ if($Stage -eq 'preflight'){Write-Host '==== R63 WINDOWS GATE: PASS preflight ====';return}
27
+
28
+ if($Stage -eq 'all' -or $Stage -eq 'focused'){
29
+ Invoke-Npm 'r63-focused' @('run','r63:focused:test')
30
+ if($Stage -eq 'focused'){Write-Host '==== R63 WINDOWS GATE: PASS focused ====';return}
31
+ }
32
+ if($Stage -eq 'all' -or $Stage -eq 'full'){
33
+ Invoke-Npm 'full-regression' @('test')
34
+ if($Stage -eq 'full'){Write-Host '==== R63 WINDOWS GATE: PASS full ====';return}
35
+ }
36
+ if($Stage -eq 'all' -or $Stage -eq 'manifest'){
37
+ Invoke-Npm 'manifest-write' @('run','manifest:write')
38
+ Invoke-Npm 'manifest-verify' @('run','manifest:verify')
39
+ if($Stage -eq 'manifest'){Write-Host '==== R63 WINDOWS GATE: PASS manifest ====';return}
40
+ }
41
+ if($Stage -eq 'all' -or $Stage -eq 'doctor'){
42
+ Invoke-Npm 'doctor' @('run','doctor')
43
+ if($Stage -eq 'doctor'){Write-Host '==== R63 WINDOWS GATE: PASS doctor ====';return}
44
+ }
45
+ Write-Host '==== R63 PREPUBLISH WINDOWS GATE: PASS ===='
@@ -0,0 +1,68 @@
1
+ param(
2
+ [ValidateSet('all','preflight','focused','full','manifest','doctor')]
3
+ [string]$Stage='all'
4
+ )
5
+
6
+ $ErrorActionPreference='Stop'
7
+ Set-StrictMode -Version 3.0
8
+ $root=Split-Path $PSScriptRoot -Parent
9
+ Set-Location -LiteralPath $root
10
+
11
+ function Invoke-Npm([string]$Name,[string[]]$NpmArgs){
12
+ Write-Host "==== $Name ===="
13
+ & npm.cmd @NpmArgs
14
+ if($LASTEXITCODE -ne 0){ throw "R64 prepublish gate failed at $Name exit=$LASTEXITCODE" }
15
+ }
16
+
17
+ function Get-FileSha256([string]$File){
18
+ $hasher=[Security.Cryptography.SHA256]::Create()
19
+ try{
20
+ $bytes=[IO.File]::ReadAllBytes($File)
21
+ return (($hasher.ComputeHash($bytes) | ForEach-Object { $_.ToString('x2') }) -join '')
22
+ }finally{ $hasher.Dispose() }
23
+ }
24
+
25
+ $sourceRoot='D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.40-r63'
26
+ $sourceManifest='d6f75feada9ad0ae2c248b3a833ac9cf0e04150d2430ddaa70b3dfb64a0b0a86'
27
+ if(-not (Test-Path -LiteralPath $sourceRoot -PathType Container)){ throw 'R64 source predecessor missing' }
28
+ $observedSourceManifest=Get-FileSha256 (Join-Path $sourceRoot 'MANIFEST.SHA256')
29
+ if($observedSourceManifest -ne $sourceManifest){ throw 'R64 source predecessor manifest identity mismatch' }
30
+ Push-Location -LiteralPath $sourceRoot
31
+ try{
32
+ & npm.cmd run manifest:verify
33
+ if($LASTEXITCODE -ne 0){ throw 'R64 source predecessor manifest verification failed' }
34
+ }finally{ Pop-Location }
35
+
36
+ $stateRoot=Join-Path $env:USERPROFILE '.deadbyte-mcp'
37
+ $pointer=Join-Path $stateRoot 'active-release.json'
38
+ if(-not (Test-Path -LiteralPath $pointer -PathType Leaf)){ throw "R64 runtime predecessor pointer missing: $pointer" }
39
+ $active=Get-Content -LiteralPath $pointer -Raw | ConvertFrom-Json
40
+ if($active.release_id -ne 'v0.15.39-3cda3b1c65b7b7c5'){ throw "R64 runtime predecessor release mismatch: $($active.release_id)" }
41
+ if($active.manifest_sha256 -ne '3cda3b1c65b7b7c561c5a8617156ab87d69cf162f447f3e99a4cb4a76471b3de'){ throw 'R64 runtime predecessor manifest mismatch' }
42
+ if($active.generation_manifest_sha256 -ne 'f47cb96083679e764725df1bde6eda53169a39f55772c173ab22f89a1dfaa7ab'){ throw 'R64 runtime predecessor generation mismatch' }
43
+ if($Stage -eq 'preflight'){Write-Host '==== R64 WINDOWS GATE: PASS preflight ====';return}
44
+
45
+ if($Stage -eq 'all' -or $Stage -eq 'focused'){
46
+ Invoke-Npm 'r64-focused' @('run','r64:focused:test')
47
+ if($Stage -eq 'focused'){Write-Host '==== R64 WINDOWS GATE: PASS focused ====';return}
48
+ }
49
+ if($Stage -eq 'all' -or $Stage -eq 'full'){
50
+ Invoke-Npm 'full-regression' @('test')
51
+ if($Stage -eq 'full'){Write-Host '==== R64 WINDOWS GATE: PASS full ====';return}
52
+ }
53
+ if($Stage -eq 'all' -or $Stage -eq 'manifest'){
54
+ Invoke-Npm 'manifest-write' @('run','manifest:write')
55
+ Invoke-Npm 'manifest-verify' @('run','manifest:verify')
56
+ if($Stage -eq 'manifest'){Write-Host '==== R64 WINDOWS GATE: PASS manifest ====';return}
57
+ }
58
+ if($Stage -eq 'all' -or $Stage -eq 'doctor'){
59
+ $doctorRoot='D:\Projects\deadbyte-mcp\testing\0.15.41-r64\doctor-isolated-empty'
60
+ if(Test-Path -LiteralPath (Join-Path $doctorRoot 'active-release.json')){ throw 'R64 isolated doctor root unexpectedly contains a release pointer' }
61
+ $priorStateRoot=$env:DEADBYTE_STATE_ROOT
62
+ try{
63
+ $env:DEADBYTE_STATE_ROOT=$doctorRoot
64
+ Invoke-Npm 'doctor-isolated-empty-state' @('run','doctor')
65
+ }finally{ $env:DEADBYTE_STATE_ROOT=$priorStateRoot }
66
+ if($Stage -eq 'doctor'){Write-Host '==== R64 WINDOWS GATE: PASS doctor ====';return}
67
+ }
68
+ Write-Host '==== R64 PREPUBLISH WINDOWS GATE: PASS ===='
@@ -1,4 +1,5 @@
1
1
  import { spawnSync } from 'node:child_process';
2
+ import { createHash } from 'node:crypto';
2
3
  import { verifyPublishedTarballIdentity } from './npm-artifact-identity-r61.mjs';
3
4
  import { mkdtemp, readFile, rm, unlink } from 'node:fs/promises';
4
5
  import path from 'node:path';
@@ -177,6 +178,11 @@ async function main() {
177
178
  }
178
179
 
179
180
  if (isVerifyOnly) {
181
+ const packedBytes = await readFile(tarball);
182
+ const sha256 = createHash('sha256').update(packedBytes).digest('hex');
183
+ const sha512Integrity = `sha512-${createHash('sha512').update(packedBytes).digest('base64')}`;
184
+ if (packRecord.integrity !== sha512Integrity) throw new Error('npm pack integrity differs from packed tarball bytes');
185
+ console.log('VERIFIED_TARBALL ' + JSON.stringify({filename,bytes:packedBytes.length,sha256,integrity:sha512Integrity,shasum:packRecord.shasum}));
180
186
  console.log('[6/7] [VERIFY-ONLY] Skipping npm publish.');
181
187
  console.log('[7/7] [VERIFY-ONLY] Skipping external registry smoke test.');
182
188
  console.log('\nVERIFY-ONLY PIPELINE PASS: All pre-pack, artifact surface, and isolated sandbox gates passed successfully.');
@@ -0,0 +1,9 @@
1
+ $ErrorActionPreference='Stop'
2
+ $root=Split-Path -Parent $PSScriptRoot
3
+ Push-Location $root
4
+ try {
5
+ & npm.cmd run r62:focused:test
6
+ if($LASTEXITCODE -ne 0){ exit $LASTEXITCODE }
7
+ } finally {
8
+ Pop-Location
9
+ }