deadbyte-mcp 0.9.0 → 0.10.0
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 +119 -91
- package/README.txt +16 -11
- package/bench/fixtures/corpus.json +32 -13
- package/bench/fixtures/r36/case-map.json +8 -0
- package/bin/WORKER-REGISTRY.txt +3 -3
- package/bin/appcontainer-stage.exe +0 -0
- package/bin/appcontainer-stage.obj +0 -0
- package/bin/bootstrap-advapi32.exe +0 -0
- package/bin/bootstrap-advapi32.obj +0 -0
- package/bin/bootstrap-exitcode.exe +0 -0
- package/bin/bootstrap-exitcode.obj +0 -0
- package/bin/bootstrap-kernel32.exe +0 -0
- package/bin/bootstrap-kernel32.obj +0 -0
- package/bin/child-control-probe.exe +0 -0
- package/bin/child-control-probe.obj +0 -0
- package/bin/child-control-stage.exe +0 -0
- package/bin/child-control-stage.obj +0 -0
- package/bin/contained-reverse-worker.exe +0 -0
- package/bin/contained-reverse-worker.obj +0 -0
- package/bin/contained-transform-worker.exe +0 -0
- package/bin/contained-transform-worker.obj +0 -0
- package/bin/containment-probe.exe +0 -0
- package/bin/containment-probe.obj +0 -0
- package/bin/deadbyte-contain.exe +0 -0
- package/bin/deadbyte-contain.obj +0 -0
- package/bin/deadbyte-exec.exe +0 -0
- package/bin/deadbyte-exec.obj +0 -0
- package/bin/deadbyte-process-host.exe +0 -0
- package/bin/deadbyte-process-host.obj +0 -0
- package/bin/deadbyte-tunnel-host.exe +0 -0
- package/bin/deadbyte-tunnel-host.obj +0 -0
- package/controller/README.TXT +8 -6
- package/controller/deadbyte-controller.ps1 +48 -2
- package/controller/deadbyte-process-policy.json +5 -5
- package/docs/ARCHITECTURE.md +1 -1
- package/docs/R36-CAPABILITY-EVIDENCE.md +43 -0
- package/docs/superpowers/plans/2026-09-18-r36-zero-loss-autonomy.md +739 -0
- package/docs/superpowers/specs/2026-09-18-r36-zero-loss-autonomy-design.md +640 -0
- package/package.json +1 -1
- package/proof/CONTAINMENT-BUILD.txt +6 -6
- package/scripts/deferred-slot-operation.mjs +53 -15
- package/scripts/final-closure-verify.mjs +88 -39
- package/scripts/final-closure.mjs +63 -56
- package/scripts/gate-windows.ps1 +3 -3
- package/scripts/release-parity-tests.ps1 +9 -0
- package/scripts/release-parity.mjs +149 -139
- package/scripts/windows-gate-evidence.mjs +5 -5
- package/src/autonomous-context-engine.mjs +2 -1
- package/src/autonomous-mcp-tools.mjs +5 -1
- package/src/autonomous-output-contracts.mjs +4 -4
- package/src/autonomous-planner-contracts.mjs +36 -1
- package/src/autonomous-planner.mjs +25 -3
- package/src/autonomous-runtime.mjs +191 -21
- package/src/capability-benchmark-runner.mjs +86 -1
- package/src/capability-benchmark.mjs +45 -0
- package/src/capability-ledger.mjs +158 -0
- package/src/coding-mcp-tools.mjs +31 -17
- package/src/coding-output-contracts.mjs +48 -10
- package/src/coding-plane.mjs +45 -9
- package/src/coding-search.mjs +130 -47
- package/src/compact-gateway-mcp-tools.mjs +128 -0
- package/src/compact-gateway-output-contracts.mjs +16 -0
- package/src/deadbyte-cli.mjs +51 -28
- package/src/machine-fs-smoke-client.mjs +1 -1
- package/src/machine-fs.mjs +51 -8
- package/src/mcp-server.mjs +32 -9
- package/src/native-diff-v2.mjs +337 -0
- package/src/native-diff.mjs +50 -2
- package/src/observation-smoke-client.mjs +1 -1
- package/src/operator-surface.mjs +7 -1
- package/src/process-runtime.mjs +98 -11
- package/src/process-smoke-client.mjs +11 -3
- package/src/r36-compact-disarmed-probe.mjs +50 -0
- package/src/r36-full-surface-probe.mjs +56 -0
- package/src/remote-live-log.mjs +76 -0
- package/src/remote-mcp-autonomous-smoke-client.mjs +7 -3
- package/src/remote-mcp-coding-smoke-client.mjs +1 -1
- package/src/remote-mcp-r36-parity-client.mjs +175 -0
- package/src/remote-mcp-smoke-client.mjs +112 -56
- package/src/runtime-update.mjs +51 -1
- package/src/search-cursor.mjs +45 -0
- package/src/semantic-code.mjs +72 -5
- package/src/semantic-lsp-backend.mjs +39 -3
- package/src/version.mjs +1 -1
- package/test/autonomous-capability-r36.test.mjs +151 -0
- package/test/autonomous-runtime.test.mjs +2 -2
- package/test/capability-benchmark-r36.test.mjs +107 -0
- package/test/capability-benchmark-semantic-r36.test.mjs +52 -0
- package/test/capability-claims-r36.test.mjs +23 -0
- package/test/capability-ledger-r36.test.mjs +102 -0
- package/test/coding-catalog-consistency.test.mjs +2 -2
- package/test/coding-plane.test.mjs +2 -2
- package/test/coding-runtime.test.mjs +16 -0
- package/test/coding-search-r36.test.mjs +90 -0
- package/test/compact-catalog-r36.test.mjs +37 -0
- package/test/compact-gateway-r36.test.mjs +66 -0
- package/test/contained.test.mjs +1 -1
- package/test/core.test.mjs +1 -1
- package/test/deferred-slot-operation.test.mjs +9 -0
- package/test/fixtures/lsp-framed-server.mjs +2 -0
- package/test/helpers/autonomous-r34-fixture.mjs +5 -3
- package/test/multi-file-read.test.mjs +3 -0
- package/test/native-diff-topology-r36.test.mjs +105 -0
- package/test/package-boundary.test.mjs +6 -0
- package/test/process-longrun-r36.test.mjs +82 -0
- package/test/process-release-gate.test.mjs +9 -0
- package/test/production-docs.test.mjs +3 -3
- package/test/prompts-resources.test.mjs +7 -1
- package/test/r33-closeout-regression.test.mjs +4 -3
- package/test/r33-finalization.test.mjs +14 -9
- package/test/r36-finalization.test.mjs +104 -0
- package/test/r36-release-identity.test.mjs +52 -0
- package/test/release-version.test.mjs +18 -15
- package/test/remote-live-log-r36.test.mjs +37 -0
- package/test/remote-live-log-recovery-r36.test.mjs +41 -0
- package/test/remote-r24-catalog.test.mjs +13 -0
- package/test/remote-session-cli.test.mjs +40 -30
- package/test/runtime-self-update.test.mjs +58 -1
- package/test/semantic-lsp-backend.test.mjs +9 -0
- package/test/semantic-r36-rename.test.mjs +82 -0
- package/deadbyte-mcp-0.8.9.tgz +0 -0
|
@@ -0,0 +1,640 @@
|
|
|
1
|
+
# DEADBYTE MCP R36 Zero-Loss Autonomy Design
|
|
2
|
+
|
|
3
|
+
## Identity and parent authority
|
|
4
|
+
|
|
5
|
+
R36 is `V0.10.0 / R36`. Its immutable parent is the sealed and publicly published R35 Final Baseline:
|
|
6
|
+
|
|
7
|
+
- release version: `0.9.0`
|
|
8
|
+
- frozen source root: `D:\Projects\deadbyte-mcp-r35-release-v0.9.0-r2`
|
|
9
|
+
- frozen manifest SHA-256: `b95e1ec1d9a7e26a96ef492306c1be4df18c883ff03ab3b6015f677d7429ec8d`
|
|
10
|
+
- npm package: `deadbyte-mcp@0.9.0`
|
|
11
|
+
- npm tarball SHA-256: `b9f1b6652f4c70ab9ab515908355a00fa1a84d1f4cb9fc8d4055de41a4f1e805`
|
|
12
|
+
- full live MCP surface: `73` tools
|
|
13
|
+
- observed ChatGPT connector surface: `42` tools
|
|
14
|
+
- R35 final authority state: process/coding/autonomous/host DISARMED
|
|
15
|
+
|
|
16
|
+
R35 bytes are immutable release authority. R36 development occurs only in a successor workspace. No R36 fix may patch the R35 release tree or republish `0.9.0`.
|
|
17
|
+
|
|
18
|
+
The current R36 development root is:
|
|
19
|
+
|
|
20
|
+
`D:\Projects\deadbyte-mcp-r36-dev`
|
|
21
|
+
|
|
22
|
+
The live-log precursor already implemented in this successor root is part of R36 and must satisfy the full R36 gates below before release.
|
|
23
|
+
|
|
24
|
+
## Mission
|
|
25
|
+
|
|
26
|
+
R36 makes DEADBYTE MCP materially more autonomous for software-engineering work without replacing its evidence-first security model with unrestricted shell/filesystem authority.
|
|
27
|
+
|
|
28
|
+
The primary product requirement is:
|
|
29
|
+
|
|
30
|
+
> Every operator-authorized non-host capability required for a production coding workflow must be reachable by the agent through the actual remote connector, not merely registered in server source.
|
|
31
|
+
|
|
32
|
+
The secondary requirement is operator observability:
|
|
33
|
+
|
|
34
|
+
> A foreground `npx deadbyte-mcp@latest remote` session must show startup, connection, authority, tool-start, tool-completion, failure, recovery, and release activity as it occurs, with compact human-readable live logs by default and forensic detail under `--verbose`.
|
|
35
|
+
|
|
36
|
+
R36 is not a Desktop Commander clone and is not a Serena clone. It takes workflow-relevant breadth from those systems while preserving DEADBYTE invariants: typed intent, local authority, exact preconditions, bounded execution, authenticated journals, signed receipts, independent verification, and an objective release gate.
|
|
37
|
+
|
|
38
|
+
The engineering loop remains:
|
|
39
|
+
|
|
40
|
+
`PLAN -> INSPECT -> ACT -> VERIFY -> CRITIC -> REPAIR -> RELEASE`
|
|
41
|
+
|
|
42
|
+
Planner prose is never release evidence.
|
|
43
|
+
|
|
44
|
+
## External reference baseline
|
|
45
|
+
|
|
46
|
+
R36 behavior is benchmarked against current public capability descriptions and reproducible behavior of these projects as of 2026-09-18:
|
|
47
|
+
|
|
48
|
+
- Desktop Commander local MCP: `https://github.com/wonderwhy-er/DesktopCommanderMCP`
|
|
49
|
+
- Remote Desktop Commander: `https://github.com/desktop-commander/remote-desktop-commander`
|
|
50
|
+
- Serena: `https://github.com/oraios/serena`
|
|
51
|
+
|
|
52
|
+
Reference capabilities that matter to R36:
|
|
53
|
+
|
|
54
|
+
- Desktop Commander / Remote Desktop Commander: file metadata, directory operations, progressive search, long-running processes, process output, interactive sessions, remote device activity, and visible remote-session lifecycle.
|
|
55
|
+
- Serena: semantic symbol retrieval, definitions, references, code editing/refactoring, rename, diagnostics, and language-server-backed repository understanding.
|
|
56
|
+
|
|
57
|
+
External implementations are behavioral references only. No implementation code is copied or vendored solely to reproduce competitor behavior. Claims in public documentation must cite either our reproducible benchmark evidence or the upstream project's public documentation/source.
|
|
58
|
+
|
|
59
|
+
R36 does not claim to dominate unrelated document-editing breadth such as PDF/DOCX/XLSX or arbitrary desktop administration. The comparison target is production software-engineering autonomy.
|
|
60
|
+
|
|
61
|
+
## Global invariants
|
|
62
|
+
|
|
63
|
+
1. R35 `0.9.0` remains immutable and rollback-able.
|
|
64
|
+
2. Process, coding, autonomous, and host authority remain independently revocable.
|
|
65
|
+
3. `remote` may arm process/coding/autonomous according to local standing-grant policy but MUST NOT auto-arm host authority.
|
|
66
|
+
4. Host authority remains an explicit local operator action.
|
|
67
|
+
5. No gateway accepts a raw tool name plus arbitrary JSON as a generic dispatch escape hatch.
|
|
68
|
+
6. Raw shell strings remain forbidden at privileged execution boundaries.
|
|
69
|
+
7. Raw arbitrary stdin to processes is not introduced in R36. Process interaction remains policy-defined and typed.
|
|
70
|
+
8. Filesystem mutations retain root policy and stale-state protection.
|
|
71
|
+
9. Mutation and command claims require signed/authenticated evidence where the underlying R35 primitive already requires it.
|
|
72
|
+
10. Public remote compactness must never silently remove semantic capability. If a full capability is intentionally omitted from compact mode, the release gate must name it and fail unless the omission is explicitly classified as host-only or non-production.
|
|
73
|
+
11. Audit/live logs must redact secrets and large payload bodies before terminal presentation.
|
|
74
|
+
12. A successful planner `finish` is never sufficient for release completion.
|
|
75
|
+
13. R36 Final requires exact rollback to R35 and exact restore to R36.
|
|
76
|
+
14. The exact npm tarball published as `latest` must be the tarball independently verified before publication.
|
|
77
|
+
|
|
78
|
+
## R36-A: Dual Surface and Zero-Loss Capability Gateway
|
|
79
|
+
|
|
80
|
+
### Problem
|
|
81
|
+
|
|
82
|
+
R35 proves a full live MCP catalog of 73 tools, but the actual ChatGPT connector used for production work exposes only 42 tools. The missing set includes high-value coding primitives such as search/stat/multi-read/symbol tools, machine filesystem operations, process sessions, and observation tools.
|
|
83
|
+
|
|
84
|
+
A source-level `registerTool()` therefore does not prove agent reachability.
|
|
85
|
+
|
|
86
|
+
### Surface profiles
|
|
87
|
+
|
|
88
|
+
R36 defines two explicit public surface profiles:
|
|
89
|
+
|
|
90
|
+
- `full`: the complete typed MCP catalog for clients that can accept it.
|
|
91
|
+
- `compact`: a remote-agent catalog bounded to 42 tools or fewer.
|
|
92
|
+
|
|
93
|
+
The active profile is explicit and auditable. Local stdio defaults to `full`. The remote Bridge profile defaults to `compact` unless the connected client proves support for the full surface.
|
|
94
|
+
|
|
95
|
+
### Capability identity
|
|
96
|
+
|
|
97
|
+
Every production capability has a stable capability id independent of its presentation as a direct tool or gateway operation. Examples:
|
|
98
|
+
|
|
99
|
+
- `coding.search`
|
|
100
|
+
- `coding.stat`
|
|
101
|
+
- `coding.files_read`
|
|
102
|
+
- `semantic.outline`
|
|
103
|
+
- `semantic.definition`
|
|
104
|
+
- `semantic.references`
|
|
105
|
+
- `semantic.diagnostics`
|
|
106
|
+
- `semantic.implementations`
|
|
107
|
+
- `semantic.rename_preview`
|
|
108
|
+
- `machine_fs.stat`
|
|
109
|
+
- `machine_fs.list`
|
|
110
|
+
- `machine_fs.read`
|
|
111
|
+
- `machine_fs.write`
|
|
112
|
+
- `machine_fs.edit_exact`
|
|
113
|
+
- `machine_fs.mkdir`
|
|
114
|
+
- `machine_fs.move`
|
|
115
|
+
- `machine_fs.delete`
|
|
116
|
+
- `process.start`
|
|
117
|
+
- `process.read`
|
|
118
|
+
- `process.status`
|
|
119
|
+
- `process.list`
|
|
120
|
+
- `process.action`
|
|
121
|
+
- `process.terminate`
|
|
122
|
+
- `observation.search_start`
|
|
123
|
+
- `observation.search_page`
|
|
124
|
+
- `observation.search_status`
|
|
125
|
+
- `observation.search_cancel`
|
|
126
|
+
- `observation.process_list`
|
|
127
|
+
- `observation.system_status`
|
|
128
|
+
|
|
129
|
+
The canonical capability ledger maps each capability id to:
|
|
130
|
+
|
|
131
|
+
- full-surface tool/schema identity;
|
|
132
|
+
- compact-surface route/schema identity;
|
|
133
|
+
- required runtime flag;
|
|
134
|
+
- required authority plane;
|
|
135
|
+
- mutating/read-only classification;
|
|
136
|
+
- receipt/evidence class;
|
|
137
|
+
- host-only flag.
|
|
138
|
+
|
|
139
|
+
### Compact gateways
|
|
140
|
+
|
|
141
|
+
Compact mode uses a small number of typed grouped tools. Each gateway uses a discriminated union of known operations; it is not a generic arbitrary dispatcher.
|
|
142
|
+
|
|
143
|
+
Required gateways:
|
|
144
|
+
|
|
145
|
+
1. `coding_inspect`
|
|
146
|
+
- `stat`
|
|
147
|
+
- `search`
|
|
148
|
+
- `files_read`
|
|
149
|
+
- `symbol_outline`
|
|
150
|
+
- `symbol_definition`
|
|
151
|
+
- `symbol_references`
|
|
152
|
+
- `symbol_diagnostics`
|
|
153
|
+
- `symbol_implementations`
|
|
154
|
+
- `symbol_rename_preview`
|
|
155
|
+
|
|
156
|
+
2. `machine_fs`
|
|
157
|
+
- `stat`
|
|
158
|
+
- `list`
|
|
159
|
+
- `read`
|
|
160
|
+
- `write`
|
|
161
|
+
- `edit_exact`
|
|
162
|
+
- `mkdir`
|
|
163
|
+
- `move`
|
|
164
|
+
- `delete`
|
|
165
|
+
|
|
166
|
+
3. `process_session`
|
|
167
|
+
- `start`
|
|
168
|
+
- `read`
|
|
169
|
+
- `status`
|
|
170
|
+
- `list`
|
|
171
|
+
- `action`
|
|
172
|
+
- `terminate`
|
|
173
|
+
|
|
174
|
+
4. `machine_observe`
|
|
175
|
+
- machine identity/status operations that do not require privileged revoke authority;
|
|
176
|
+
- durable search start/page/status/cancel;
|
|
177
|
+
- process observation;
|
|
178
|
+
- system observation.
|
|
179
|
+
|
|
180
|
+
5. `capability_manifest`
|
|
181
|
+
- returns the active profile, canonical capability ids, reachability state, required authority, schema identity, and full/compact mapping.
|
|
182
|
+
|
|
183
|
+
Gateway handlers call the same runtime functions as the corresponding full tools. They do not invoke one MCP tool from another MCP tool and do not bypass the existing policy/receipt layer.
|
|
184
|
+
|
|
185
|
+
### Zero-loss acceptance
|
|
186
|
+
|
|
187
|
+
For the production coding capability set:
|
|
188
|
+
|
|
189
|
+
`full capabilities - host-only capabilities = compact reachable capabilities`
|
|
190
|
+
|
|
191
|
+
This is compared by capability id, not by tool count.
|
|
192
|
+
|
|
193
|
+
Release fails if:
|
|
194
|
+
|
|
195
|
+
- a full production capability has no compact route;
|
|
196
|
+
- compact claims a capability whose runtime handler is unavailable;
|
|
197
|
+
- the compact route changes authority requirements relative to the full route;
|
|
198
|
+
- the compact route drops stale-state or receipt requirements;
|
|
199
|
+
- duplicate capability ids exist;
|
|
200
|
+
- connector-visible schema differs from the canonical compact ledger.
|
|
201
|
+
|
|
202
|
+
The final gate must inspect the actual connected ChatGPT/agent catalog in addition to server-side `tools/list` evidence whenever that integration is available.
|
|
203
|
+
|
|
204
|
+
## R36-B: Coding inspection breadth
|
|
205
|
+
|
|
206
|
+
### Search
|
|
207
|
+
|
|
208
|
+
The R35 `coding_search` literal-only implementation is upgraded rather than replaced by a raw host search.
|
|
209
|
+
|
|
210
|
+
Required query dimensions:
|
|
211
|
+
|
|
212
|
+
- target: `content | path`
|
|
213
|
+
- mode: `literal | regex`
|
|
214
|
+
- case sensitivity
|
|
215
|
+
- root-relative starting path
|
|
216
|
+
- bounded maximum file bytes
|
|
217
|
+
- bounded maximum total scanned bytes
|
|
218
|
+
- bounded page size
|
|
219
|
+
- optional continuation cursor
|
|
220
|
+
|
|
221
|
+
Search behavior:
|
|
222
|
+
|
|
223
|
+
- deterministic path ordering;
|
|
224
|
+
- multiple matches per file;
|
|
225
|
+
- line/column for content matches;
|
|
226
|
+
- bounded surrounding preview;
|
|
227
|
+
- binary/non-UTF8 classification without accidental text decoding;
|
|
228
|
+
- deny-path enforcement before file access;
|
|
229
|
+
- explicit truncation reason;
|
|
230
|
+
- query identity SHA-256;
|
|
231
|
+
- result/page identity SHA-256;
|
|
232
|
+
- each content match includes the observed file SHA-256;
|
|
233
|
+
- continuation cursor binds the normalized query and retained search snapshot/session identity;
|
|
234
|
+
- stale/foreign cursor fails closed.
|
|
235
|
+
|
|
236
|
+
For wide or long-running searches, the durable observation search runtime may be reused under the same compact gateway so the agent can page/cancel without blocking the remote proxy.
|
|
237
|
+
|
|
238
|
+
### Stat
|
|
239
|
+
|
|
240
|
+
`coding_stat` must expose enough identity for a later mutation decision:
|
|
241
|
+
|
|
242
|
+
- normalized relative path;
|
|
243
|
+
- object type;
|
|
244
|
+
- byte count where applicable;
|
|
245
|
+
- mtime in UTC;
|
|
246
|
+
- SHA-256 when requested and valid for the object type;
|
|
247
|
+
- reparse/symlink/junction classification;
|
|
248
|
+
- stable object/file identity when the platform can supply it without widening authority;
|
|
249
|
+
- policy root id;
|
|
250
|
+
- observation identity SHA-256.
|
|
251
|
+
|
|
252
|
+
Reparse points are never followed silently across the allowed root.
|
|
253
|
+
|
|
254
|
+
### Multi-read
|
|
255
|
+
|
|
256
|
+
`coding_files_read` remains bounded and gains an aggregate observation digest over ordered `(path, sha256, bytes, encoding)` entries. This digest can be carried into planner context and evidence records.
|
|
257
|
+
|
|
258
|
+
## R36-C: Semantic coding parity and stronger mutation integrity
|
|
259
|
+
|
|
260
|
+
R36 keeps existing language routing and required tracer languages from R35: TypeScript/JavaScript, Python, Rust, and C/C++.
|
|
261
|
+
|
|
262
|
+
Existing semantic capabilities remain:
|
|
263
|
+
|
|
264
|
+
- outline;
|
|
265
|
+
- definition;
|
|
266
|
+
- references;
|
|
267
|
+
- receipt-backed symbol replacement.
|
|
268
|
+
|
|
269
|
+
R36 adds public/internal capability ids for:
|
|
270
|
+
|
|
271
|
+
- diagnostics;
|
|
272
|
+
- implementations;
|
|
273
|
+
- transactional rename preview.
|
|
274
|
+
|
|
275
|
+
### Diagnostics
|
|
276
|
+
|
|
277
|
+
Diagnostics return normalized severity, code, bounded message, location, backend identity, target file SHA-256, and result identity.
|
|
278
|
+
|
|
279
|
+
### Implementations
|
|
280
|
+
|
|
281
|
+
Where the backend supports implementation lookup, results normalize to the same location structure used by definitions/references. Unsupported backend operations return an explicit typed unsupported-capability result; they do not fall back to grep while pretending to be semantic.
|
|
282
|
+
|
|
283
|
+
### Rename preview
|
|
284
|
+
|
|
285
|
+
Cross-file rename is a two-stage evidence path:
|
|
286
|
+
|
|
287
|
+
1. semantic backend computes the exact affected edits against observed file identities;
|
|
288
|
+
2. DEADBYTE converts those edits into a content-addressed Native Diff transaction.
|
|
289
|
+
|
|
290
|
+
The semantic operation returns a `diff_id`, affected file count, edit count, backend identity, and observed preimage identities. Commit remains `native_diff_apply(diff_id)` and independent verification remains `native_diff_verify(diff_id)`.
|
|
291
|
+
|
|
292
|
+
No semantic rename may directly mutate files before a Native Diff exists.
|
|
293
|
+
|
|
294
|
+
This gives symbol rename Serena-like workflow breadth while preserving DEADBYTE stale-state rejection and transactional proof.
|
|
295
|
+
|
|
296
|
+
## R36-D: Transactional filesystem topology
|
|
297
|
+
|
|
298
|
+
R35 machine filesystem already provides `mkdir`, `move`, and `delete`; R36 makes topology mutation a transaction-class capability rather than a set of unrelated convenience calls.
|
|
299
|
+
|
|
300
|
+
Native Diff evolves to a versioned transaction format that can represent:
|
|
301
|
+
|
|
302
|
+
- file write;
|
|
303
|
+
- exact replace;
|
|
304
|
+
- file delete;
|
|
305
|
+
- directory create;
|
|
306
|
+
- move/rename;
|
|
307
|
+
- empty-directory delete where explicitly requested.
|
|
308
|
+
|
|
309
|
+
Topology preconditions include, as applicable:
|
|
310
|
+
|
|
311
|
+
- source object identity;
|
|
312
|
+
- source type;
|
|
313
|
+
- source SHA-256 for regular files;
|
|
314
|
+
- destination absence or exact destination identity;
|
|
315
|
+
- parent directory identity;
|
|
316
|
+
- reparse classification.
|
|
317
|
+
|
|
318
|
+
A topology transaction records signed preimage state before the first mutation. If a later operation fails, rollback restores the prior topology where rollback is safe and objectively verifiable. If rollback cannot be proven, the transaction terminates `conflicted`/`ambiguous`; it must not report success.
|
|
319
|
+
|
|
320
|
+
Recursive destructive delete is not introduced as a generic primitive in R36.
|
|
321
|
+
|
|
322
|
+
## R36-E: Process autonomy without raw shell expansion
|
|
323
|
+
|
|
324
|
+
The existing `process_session_*` runtime is the R36 process authority. R36 does not create a second competing process model.
|
|
325
|
+
|
|
326
|
+
Required compact reachability:
|
|
327
|
+
|
|
328
|
+
- start approved profile;
|
|
329
|
+
- read ordered output with byte cursor;
|
|
330
|
+
- status;
|
|
331
|
+
- list owned sessions;
|
|
332
|
+
- execute policy-defined named action;
|
|
333
|
+
- terminate owned session.
|
|
334
|
+
|
|
335
|
+
Process identity remains a DEADBYTE logical session id. The agent does not gain authority merely from knowing an OS PID.
|
|
336
|
+
|
|
337
|
+
Long build/test/server workflows must support:
|
|
338
|
+
|
|
339
|
+
- start returning before process completion;
|
|
340
|
+
- bounded incremental output reads;
|
|
341
|
+
- monotonic output cursor;
|
|
342
|
+
- output truncation state;
|
|
343
|
+
- observed exit state;
|
|
344
|
+
- owned-session crash/restart reconciliation;
|
|
345
|
+
- bounded cancellation/termination;
|
|
346
|
+
- signed process journal evidence.
|
|
347
|
+
|
|
348
|
+
R36 does not add generic arbitrary stdin or arbitrary process attach. Debugger/REPL interaction is only available through explicit policy-defined actions. A future version may add a separately designed typed interactive lease if benchmark evidence proves named actions insufficient.
|
|
349
|
+
|
|
350
|
+
## R36-F: Autonomous planner capability parity
|
|
351
|
+
|
|
352
|
+
The autonomous planner must stop reasoning as if only tree/read/write/replace/command/benchmark exist.
|
|
353
|
+
|
|
354
|
+
The R36 planner receives a compact capability manifest derived from the same canonical ledger used by the MCP surface. It contains only currently configured runtime capabilities and their authority/read-only/mutation classes.
|
|
355
|
+
|
|
356
|
+
The R36 typed planner action model includes first-class actions for:
|
|
357
|
+
|
|
358
|
+
- tree inspection;
|
|
359
|
+
- search;
|
|
360
|
+
- stat;
|
|
361
|
+
- multi-file read;
|
|
362
|
+
- semantic outline/definition/references/diagnostics/implementations;
|
|
363
|
+
- semantic rename preview;
|
|
364
|
+
- Native Diff preview/apply/verify;
|
|
365
|
+
- machine filesystem stat/list/read and transactional topology requests;
|
|
366
|
+
- process start/read/status/list/action/terminate;
|
|
367
|
+
- observation search/process/system operations;
|
|
368
|
+
- release profiles;
|
|
369
|
+
- checkpoint/pause/finish.
|
|
370
|
+
|
|
371
|
+
The old generic `delegate: record<string,json>` path is removed from production planning or restricted to a compatibility adapter that validates into one of the typed R36 capability schemas before execution. Arbitrary operation records are not an authority surface.
|
|
372
|
+
|
|
373
|
+
Planner context records capability id, observation identity, mutation epoch, and evidence identity. Progress fingerprints ignore rationale prose.
|
|
374
|
+
|
|
375
|
+
The autonomous loop may proceed without repeated operator transport work as long as required process/coding/autonomous standing grants remain valid. Missing authority transitions the goal to a durable waiting state; it never self-arms.
|
|
376
|
+
|
|
377
|
+
## R36-G: RDC-style live activity logs
|
|
378
|
+
|
|
379
|
+
The foreground remote UX must provide continuous operator visibility.
|
|
380
|
+
|
|
381
|
+
### Compact default
|
|
382
|
+
|
|
383
|
+
`npx deadbyte-mcp@latest remote` prints concise lifecycle and activity lines. Emoji are semantic markers, not decoration.
|
|
384
|
+
|
|
385
|
+
Required marker vocabulary:
|
|
386
|
+
|
|
387
|
+
- `🚀` device/runtime startup;
|
|
388
|
+
- `🔌` transport/Bridge/Cloud connection;
|
|
389
|
+
- `✅` successful readiness/tool completion;
|
|
390
|
+
- `❌` tool/runtime failure;
|
|
391
|
+
- `🔐` authority state;
|
|
392
|
+
- `▶` tool/action start;
|
|
393
|
+
- `♻️` recovery/resume;
|
|
394
|
+
- `⚠️` bounded warning.
|
|
395
|
+
|
|
396
|
+
Do not add an emoji to every informational line.
|
|
397
|
+
|
|
398
|
+
Required lifecycle visibility:
|
|
399
|
+
|
|
400
|
+
- runtime start;
|
|
401
|
+
- Bridge connect/readiness;
|
|
402
|
+
- Cloud/tunnel connect/readiness;
|
|
403
|
+
- remote session claim/resume;
|
|
404
|
+
- device ONLINE readiness;
|
|
405
|
+
- process/coding/autonomous authority state;
|
|
406
|
+
- explicit Host DISARMED state;
|
|
407
|
+
- live tool request start;
|
|
408
|
+
- correlated result completion;
|
|
409
|
+
- duration;
|
|
410
|
+
- bounded result summary;
|
|
411
|
+
- recovery/reconnect;
|
|
412
|
+
- disconnect and authority cleanup.
|
|
413
|
+
|
|
414
|
+
Example compact activity:
|
|
415
|
+
|
|
416
|
+
```text
|
|
417
|
+
DEADBYTE MCP
|
|
418
|
+
|
|
419
|
+
🚀 Starting device runtime...
|
|
420
|
+
Bridge connecting...
|
|
421
|
+
🔌 Bridge connected pid=5132
|
|
422
|
+
🔌 Remote tunnel connected
|
|
423
|
+
✅ Device ONLINE
|
|
424
|
+
|
|
425
|
+
🔐 Process ARMED
|
|
426
|
+
🔐 Coding ARMED
|
|
427
|
+
🔐 Autonomous ARMED
|
|
428
|
+
Host DISARMED
|
|
429
|
+
|
|
430
|
+
▶ coding.search req=8e21... root=projects pattern="releaseGate"
|
|
431
|
+
✅ coding.search req=8e21... 37ms results=12
|
|
432
|
+
|
|
433
|
+
▶ native_diff.apply req=0f12... diff=62da...
|
|
434
|
+
✅ native_diff.apply req=0f12... 121ms receipt=9c37...
|
|
435
|
+
|
|
436
|
+
▶ process.read req=79d2... session=218a...
|
|
437
|
+
❌ process.read req=79d2... 1.31s status=failed
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
### Verbose mode
|
|
441
|
+
|
|
442
|
+
`remote --verbose` additionally exposes bounded forensic metadata:
|
|
443
|
+
|
|
444
|
+
- full audit sequence number;
|
|
445
|
+
- request id;
|
|
446
|
+
- tool and capability id;
|
|
447
|
+
- runtime/profile ids;
|
|
448
|
+
- receipt ids/hashes where safe;
|
|
449
|
+
- cursor identity;
|
|
450
|
+
- Bridge stdout/stderr diagnostic lines;
|
|
451
|
+
- sanitized policy/profile metadata.
|
|
452
|
+
|
|
453
|
+
Verbose mode still does not dump secrets, raw large content bodies, replacement bodies, auth tokens, tunnel tokens, private keys, or raw credential material.
|
|
454
|
+
|
|
455
|
+
### Ordering and correlation
|
|
456
|
+
|
|
457
|
+
The log watcher establishes its baseline before startup actions begin so newly created log files are read from byte zero and existing log files are tailed from their prior end.
|
|
458
|
+
|
|
459
|
+
A request start must become visible before its terminal result. Result duration is computed from correlated request/result timestamps by request id. Orphaned requests after crash/restart are displayed as interrupted/reconciled states rather than silently disappearing.
|
|
460
|
+
|
|
461
|
+
## R36-H: Capability benchmark and competitor evidence
|
|
462
|
+
|
|
463
|
+
The R35 offline corpus is extended into an R36 production coding corpus. Required cases:
|
|
464
|
+
|
|
465
|
+
1. repository tree exploration;
|
|
466
|
+
2. literal content search;
|
|
467
|
+
3. regex content search;
|
|
468
|
+
4. filename/path search;
|
|
469
|
+
5. deterministic search paging and cancel;
|
|
470
|
+
6. bounded multi-file read;
|
|
471
|
+
7. rich stat/reparse handling;
|
|
472
|
+
8. stale-edit race rejection;
|
|
473
|
+
9. transactional multi-file Native Diff;
|
|
474
|
+
10. topology mkdir/move/delete rollback;
|
|
475
|
+
11. TypeScript symbol navigation;
|
|
476
|
+
12. Python symbol navigation;
|
|
477
|
+
13. Rust symbol navigation;
|
|
478
|
+
14. C/C++ symbol navigation;
|
|
479
|
+
15. diagnostics normalization;
|
|
480
|
+
16. implementation lookup where supported;
|
|
481
|
+
17. cross-file rename preview -> Native Diff -> apply -> verify;
|
|
482
|
+
18. long process start/output/status/terminate;
|
|
483
|
+
19. policy-defined process action;
|
|
484
|
+
20. process crash/reconciliation;
|
|
485
|
+
21. autonomous failing-test diagnosis and repair;
|
|
486
|
+
22. autonomous search + semantic inspection + patch + test loop;
|
|
487
|
+
23. release-gate refusal when planner claims finish without evidence;
|
|
488
|
+
24. provider/Bridge interruption recovery;
|
|
489
|
+
25. remote result replay/deduplication;
|
|
490
|
+
26. compact connector capability closure;
|
|
491
|
+
27. live-log request-before-result ordering;
|
|
492
|
+
28. live-log redaction;
|
|
493
|
+
29. forged/stale receipt rejection;
|
|
494
|
+
30. rollback to R35 and exact R36 restore.
|
|
495
|
+
|
|
496
|
+
Metrics include:
|
|
497
|
+
|
|
498
|
+
- correctness/pass;
|
|
499
|
+
- agent round trips;
|
|
500
|
+
- elapsed time;
|
|
501
|
+
- bytes returned;
|
|
502
|
+
- stale-state rejection;
|
|
503
|
+
- duplicate side effects;
|
|
504
|
+
- recovery success;
|
|
505
|
+
- capability reachability;
|
|
506
|
+
- evidence verification result;
|
|
507
|
+
- release-gate result.
|
|
508
|
+
|
|
509
|
+
Competitor evidence matrix uses current upstream documented/public capabilities and, when locally runnable without paid quota or unavailable service state, direct observed runs. Public DEADBYTE claims must distinguish documented competitor capability from directly observed competitor behavior.
|
|
510
|
+
|
|
511
|
+
R36 does not publish a blanket claim of superiority from tool count. The release may claim that DEADBYTE has stronger evidence/state-integrity semantics or better measured coding-task completion only when the corresponding reproducible case supports the statement.
|
|
512
|
+
|
|
513
|
+
## R36-I: Public surface, protocol, and compatibility
|
|
514
|
+
|
|
515
|
+
R36 version is `0.10.0`.
|
|
516
|
+
|
|
517
|
+
The full surface may grow beyond R35's 73 tools for diagnostics/implementations/semantic rename preview/capability metadata. Intentional additions are recorded in the canonical surface ledger.
|
|
518
|
+
|
|
519
|
+
Compact remote surface is bounded to 42 tools or fewer and must include the capability gateways needed for zero-loss production coding reachability.
|
|
520
|
+
|
|
521
|
+
R35 direct tool names remain available in `full` profile unless a versioned compatibility test explicitly allows replacement. Existing clients using `coding_tree`, `coding_file_read`, Native Diff, autonomous goal tools, and host tools remain valid.
|
|
522
|
+
|
|
523
|
+
MCP protocol identity remains explicit. R36 must run the project's compatibility/conformance probes against its declared protocol revision and preserve the existing legacy probe adapter rules where still required.
|
|
524
|
+
|
|
525
|
+
## R36-J: Release, activation, rollback, and npm publication
|
|
526
|
+
|
|
527
|
+
R36 release closure is sequential. No later stage can excuse an earlier failure.
|
|
528
|
+
|
|
529
|
+
Required gates:
|
|
530
|
+
|
|
531
|
+
1. focused RED -> GREEN unit/integration tests for every R36 subsystem;
|
|
532
|
+
2. full source regression with zero failures;
|
|
533
|
+
3. canonical full-surface ledger generation and verification;
|
|
534
|
+
4. canonical compact-surface ledger generation and verification;
|
|
535
|
+
5. capability-closure proof: every production non-host capability reachable in compact mode;
|
|
536
|
+
6. actual remote connector catalog check when connector integration is available;
|
|
537
|
+
7. semantic tracer gates for TypeScript/JavaScript, Python, Rust, and C/C++;
|
|
538
|
+
8. R36 capability benchmark corpus PASS;
|
|
539
|
+
9. live-log startup/request/result/redaction/recovery tests PASS;
|
|
540
|
+
10. process long-running output/reconciliation tests PASS;
|
|
541
|
+
11. transactional topology/rollback adversarial tests PASS;
|
|
542
|
+
12. public remote smoke against the exact candidate;
|
|
543
|
+
13. Windows gate PASS on one exact frozen candidate manifest;
|
|
544
|
+
14. deterministic package emission and package-boundary scan;
|
|
545
|
+
15. immutable R36 slot activation;
|
|
546
|
+
16. public full/compact parity against the active R36 slot;
|
|
547
|
+
17. loop supervisor `RUNNING [verified]`;
|
|
548
|
+
18. signed rollback to exact sealed R35 `0.9.0` identity;
|
|
549
|
+
19. R35 public verification after rollback;
|
|
550
|
+
20. exact R36 restore;
|
|
551
|
+
21. R36 public verification after restore;
|
|
552
|
+
22. process/coding/autonomous/host all DISARMED;
|
|
553
|
+
23. signed R36 final closure;
|
|
554
|
+
24. implementation-independent final verifier PASS;
|
|
555
|
+
25. create exact npm tarball outside the frozen candidate;
|
|
556
|
+
26. inspect tarball identity/boundary and run local tarball `npx` smoke;
|
|
557
|
+
27. publish that exact tarball as `deadbyte-mcp@0.10.0` with dist-tag `latest`;
|
|
558
|
+
28. verify npm registry `latest == 0.10.0`;
|
|
559
|
+
29. download the registry tarball and prove byte-for-byte SHA-256 equality with the pre-publish tarball;
|
|
560
|
+
30. run registry-backed `npx deadbyte-mcp@latest --help`, `remote status`, and `supervisor status`;
|
|
561
|
+
31. run a real foreground `npx deadbyte-mcp@latest remote` smoke showing the R36 live-log startup path;
|
|
562
|
+
32. finish with process/coding/autonomous/host DISARMED.
|
|
563
|
+
|
|
564
|
+
If npm requires browser/2FA confirmation, the operator completes only that npm-owned confirmation locally. Passwords, tokens, and OTP values are never transmitted through the agent chat.
|
|
565
|
+
|
|
566
|
+
`0.9.0` remains available and immutable after `latest` advances.
|
|
567
|
+
|
|
568
|
+
## Error handling and fail-closed behavior
|
|
569
|
+
|
|
570
|
+
- unknown compact gateway operation -> schema rejection before handler execution;
|
|
571
|
+
- unavailable runtime capability -> typed unavailable result; no silent fallback to host authority;
|
|
572
|
+
- missing coding/process/autonomous grant -> durable waiting/denied state; no self-arm;
|
|
573
|
+
- host disarmed -> host capability denied even if compact/full surface advertises the tool;
|
|
574
|
+
- stale search cursor -> explicit stale/foreign cursor error;
|
|
575
|
+
- regex exceeding bounds or invalid syntax -> typed search error before repository scan;
|
|
576
|
+
- binary file in text search -> classify/skip according to query policy, never lossy decode silently;
|
|
577
|
+
- semantic backend unsupported operation -> explicit unsupported capability;
|
|
578
|
+
- stale semantic rename preimage -> Native Diff refuses apply;
|
|
579
|
+
- filesystem topology conflict -> rollback or terminal ambiguous/conflicted state with evidence;
|
|
580
|
+
- process output cursor outside retained range -> explicit retained-window error;
|
|
581
|
+
- process session ownership mismatch -> deny;
|
|
582
|
+
- live-log parse error -> preserve runtime operation, emit bounded warning, retain raw audit on disk;
|
|
583
|
+
- audit/receipt verification failure -> release gate failure;
|
|
584
|
+
- connector capability loss -> release gate failure;
|
|
585
|
+
- benchmark failure/flakiness -> preserve raw evidence and stop release; no waiver from planner prose;
|
|
586
|
+
- npm registry artifact mismatch -> stop and do not move/retain `latest` as successful R36 closure.
|
|
587
|
+
|
|
588
|
+
## Testing strategy
|
|
589
|
+
|
|
590
|
+
All R36 behavior changes use RED -> GREEN TDD.
|
|
591
|
+
|
|
592
|
+
Test layers:
|
|
593
|
+
|
|
594
|
+
- pure unit tests for capability ledger/mapping, gateway schema discrimination, search cursor identity, result digests, live-log formatting, and planner action parsing;
|
|
595
|
+
- tool integration tests proving gateway and full tool paths produce equivalent authority/evidence semantics;
|
|
596
|
+
- remote connector catalog tests proving compact profile size and capability closure;
|
|
597
|
+
- filesystem adversarial tests for traversal, symlink/reparse, stale identity, rollback, and conflicts;
|
|
598
|
+
- process integration tests for long-running output, cursoring, termination, crash reconciliation, and action allowlists;
|
|
599
|
+
- semantic tracer tests for the four required languages plus diagnostics/implementations/rename where supported;
|
|
600
|
+
- autonomous loop tests proving planner use of search/stat/semantic/process/filesystem capabilities;
|
|
601
|
+
- live-log lifecycle tests including request-before-result and crash reconciliation;
|
|
602
|
+
- full source regression;
|
|
603
|
+
- Windows native/containment gate;
|
|
604
|
+
- public HTTPS/remote parity;
|
|
605
|
+
- release rollback/restore/final closure;
|
|
606
|
+
- npm registry byte-identity and `npx` smoke.
|
|
607
|
+
|
|
608
|
+
Timing tests wait for the exact condition they assert. An earlier proxy event must not be used to declare later output present.
|
|
609
|
+
|
|
610
|
+
## Versioning and frozen-artifact policy
|
|
611
|
+
|
|
612
|
+
- R36 public version: `0.10.0`.
|
|
613
|
+
- R35 `0.9.0` is never patched or republished.
|
|
614
|
+
- Development mutations occur only in R36 successor roots.
|
|
615
|
+
- A candidate becomes immutable before canonical Windows/release parity gates.
|
|
616
|
+
- A genuine defect discovered after freeze creates a successor candidate (`r1`, `r2`, etc.); the frozen candidate is not silently edited.
|
|
617
|
+
- npm publication always uses the exact already-verified tarball, never an unverified rebuild after authentication.
|
|
618
|
+
|
|
619
|
+
## Definition of Done
|
|
620
|
+
|
|
621
|
+
R36 is Final only when all of the following are objectively true at the same time:
|
|
622
|
+
|
|
623
|
+
- the actual agent-facing compact connector reaches 100% of the declared production non-host capability ledger;
|
|
624
|
+
- full typed clients retain the complete typed surface;
|
|
625
|
+
- search/stat/multi-read semantics are sufficient for large-repository inspection with deterministic bounded behavior;
|
|
626
|
+
- semantic diagnostics/implementations and transactional cross-file rename are evidence-backed;
|
|
627
|
+
- machine filesystem topology mutations are preconditioned and transactionally verifiable;
|
|
628
|
+
- long-running process workflows are observable and controllable without arbitrary raw shell/stdin expansion;
|
|
629
|
+
- the autonomous planner can select and execute the new capabilities as first-class typed actions;
|
|
630
|
+
- foreground remote Live Logs continuously expose startup, connection, authority, tool start/result, recovery, and cleanup without leaking secrets;
|
|
631
|
+
- the R36 benchmark corpus passes and comparison claims are traceable to evidence;
|
|
632
|
+
- full regression and Windows gates pass on one exact candidate;
|
|
633
|
+
- exact R35 rollback and exact R36 restore pass;
|
|
634
|
+
- final closure and independent verifier pass;
|
|
635
|
+
- all privileged planes are DISARMED at closure;
|
|
636
|
+
- the exact verified npm tarball is published as `deadbyte-mcp@0.10.0` and registry `latest` resolves to it;
|
|
637
|
+
- the registry-downloaded tarball matches the pre-publish SHA-256 byte-for-byte;
|
|
638
|
+
- `npx deadbyte-mcp@latest remote` executes the public R36 build and displays the new live activity UX.
|
|
639
|
+
|
|
640
|
+
Only after these conditions pass may R36 be described as the production successor to R35 and publicly released as the current DEADBYTE MCP baseline.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deadbyte-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Authenticated MCP machine-truth runtime with signed audit chain, immutable release slots, contained execution, coding/autonomous production authority, and npx-first remote control.",
|