deadbyte-mcp 0.8.9 → 0.9.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.
Files changed (349) hide show
  1. package/CONTEXT.md +41 -0
  2. package/MANIFEST.SHA256 +348 -83
  3. package/R34-BASELINE.json +9 -0
  4. package/README.txt +135 -9
  5. package/bench/fixtures/corpus.json +17 -0
  6. package/bin/WORKER-REGISTRY.txt +3 -3
  7. package/bin/appcontainer-stage.exe +0 -0
  8. package/bin/appcontainer-stage.obj +0 -0
  9. package/bin/bootstrap-advapi32.exe +0 -0
  10. package/bin/bootstrap-advapi32.obj +0 -0
  11. package/bin/bootstrap-exitcode.exe +0 -0
  12. package/bin/bootstrap-exitcode.obj +0 -0
  13. package/bin/bootstrap-kernel32.exe +0 -0
  14. package/bin/bootstrap-kernel32.obj +0 -0
  15. package/bin/child-control-probe.exe +0 -0
  16. package/bin/child-control-probe.obj +0 -0
  17. package/bin/child-control-stage.exe +0 -0
  18. package/bin/child-control-stage.obj +0 -0
  19. package/bin/contained-reverse-worker.exe +0 -0
  20. package/bin/contained-reverse-worker.obj +0 -0
  21. package/bin/contained-transform-worker.exe +0 -0
  22. package/bin/contained-transform-worker.obj +0 -0
  23. package/bin/containment-probe.exe +0 -0
  24. package/bin/containment-probe.obj +0 -0
  25. package/bin/deadbyte-contain.exe +0 -0
  26. package/bin/deadbyte-contain.obj +0 -0
  27. package/bin/deadbyte-exec.exe +0 -0
  28. package/bin/deadbyte-exec.obj +0 -0
  29. package/bin/deadbyte-process-host.exe +0 -0
  30. package/bin/deadbyte-process-host.obj +0 -0
  31. package/bin/deadbyte-tunnel-host.exe +0 -0
  32. package/bin/deadbyte-tunnel-host.obj +0 -0
  33. package/controller/README.TXT +10 -4
  34. package/controller/deadbyte-controller.config.psd1.example +14 -0
  35. package/controller/deadbyte-controller.ps1 +144 -19
  36. package/controller/deadbyte-process-policy.json +5 -5
  37. package/controller/deadbyte-semantic-lsp-config.json +95 -0
  38. package/deadbyte-mcp-0.8.9.tgz +0 -0
  39. package/docs/ADR-0001-PRODUCTION-BASELINE-SEAMS.md +29 -0
  40. package/docs/ARCHITECTURE.md +6 -5
  41. package/docs/superpowers/plans/2026-09-16-deadbyte-loop-engine.md +846 -0
  42. package/docs/superpowers/plans/2026-09-17-r35-production-successor.md +408 -0
  43. package/docs/superpowers/specs/2026-09-16-deadbyte-loop-engine-design.md +435 -0
  44. package/docs/superpowers/specs/2026-09-17-r35-production-successor-design.md +220 -0
  45. package/node_modules/typescript/LICENSE.txt +55 -0
  46. package/node_modules/typescript/README.md +50 -0
  47. package/node_modules/typescript/SECURITY.md +41 -0
  48. package/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
  49. package/node_modules/typescript/bin/tsc +2 -0
  50. package/node_modules/typescript/bin/tsserver +2 -0
  51. package/node_modules/typescript/lib/_tsc.js +133818 -0
  52. package/node_modules/typescript/lib/_tsserver.js +659 -0
  53. package/node_modules/typescript/lib/_typingsInstaller.js +222 -0
  54. package/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
  55. package/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
  56. package/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
  57. package/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
  58. package/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
  59. package/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
  60. package/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
  61. package/node_modules/typescript/lib/lib.d.ts +22 -0
  62. package/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
  63. package/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
  64. package/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
  65. package/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
  66. package/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
  67. package/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
  68. package/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
  69. package/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
  70. package/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
  71. package/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
  72. package/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
  73. package/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
  74. package/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
  75. package/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
  76. package/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
  77. package/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
  78. package/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
  79. package/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
  80. package/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
  81. package/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
  82. package/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
  83. package/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
  84. package/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
  85. package/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
  86. package/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
  87. package/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
  88. package/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
  89. package/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
  90. package/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
  91. package/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
  92. package/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
  93. package/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
  94. package/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
  95. package/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
  96. package/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
  97. package/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
  98. package/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
  99. package/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
  100. package/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
  101. package/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
  102. package/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
  103. package/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
  104. package/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
  105. package/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
  106. package/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
  107. package/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
  108. package/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
  109. package/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
  110. package/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
  111. package/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
  112. package/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
  113. package/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
  114. package/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
  115. package/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
  116. package/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
  117. package/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
  118. package/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
  119. package/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
  120. package/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
  121. package/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
  122. package/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
  123. package/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
  124. package/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
  125. package/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
  126. package/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
  127. package/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
  128. package/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
  129. package/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
  130. package/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
  131. package/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
  132. package/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
  133. package/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
  134. package/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
  135. package/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
  136. package/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
  137. package/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
  138. package/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
  139. package/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
  140. package/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
  141. package/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
  142. package/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
  143. package/node_modules/typescript/lib/lib.es6.d.ts +23 -0
  144. package/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
  145. package/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
  146. package/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
  147. package/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
  148. package/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
  149. package/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
  150. package/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
  151. package/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
  152. package/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
  153. package/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
  154. package/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
  155. package/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
  156. package/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
  157. package/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
  158. package/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
  159. package/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
  160. package/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
  161. package/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
  162. package/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
  163. package/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
  164. package/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
  165. package/node_modules/typescript/lib/tsc.js +8 -0
  166. package/node_modules/typescript/lib/tsserver.js +8 -0
  167. package/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
  168. package/node_modules/typescript/lib/tsserverlibrary.js +21 -0
  169. package/node_modules/typescript/lib/typesMap.json +497 -0
  170. package/node_modules/typescript/lib/typescript.d.ts +11437 -0
  171. package/node_modules/typescript/lib/typescript.js +200276 -0
  172. package/node_modules/typescript/lib/typingsInstaller.js +8 -0
  173. package/node_modules/typescript/lib/watchGuard.js +53 -0
  174. package/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2122 -0
  175. package/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2122 -0
  176. package/node_modules/typescript/package.json +120 -0
  177. package/package.json +5 -3
  178. package/proof/CONTAINMENT-BUILD.txt +6 -6
  179. package/proof/R34-TASK8-SUPERVISOR-CHECKPOINT.json +29 -0
  180. package/proof/R34-TASK9-MCP-SURFACE-CHECKPOINT.json +28 -0
  181. package/scripts/capability-benchmark.mjs +27 -0
  182. package/scripts/deferred-slot-operation.mjs +4 -2
  183. package/scripts/final-closure-verify.mjs +10 -10
  184. package/scripts/final-closure.mjs +11 -11
  185. package/scripts/gate-windows.ps1 +3 -3
  186. package/scripts/release-parity.mjs +14 -14
  187. package/scripts/semantic-preflight.ps1 +73 -0
  188. package/scripts/tool-surface-snapshot.mjs +73 -0
  189. package/scripts/windows-gate-evidence.mjs +5 -5
  190. package/src/audit-verify.mjs +6 -2
  191. package/src/autonomous-action-reconcile.mjs +142 -0
  192. package/src/autonomous-context-engine.mjs +255 -0
  193. package/src/autonomous-live-state.mjs +17 -0
  194. package/src/autonomous-local-supervisor.mjs +249 -0
  195. package/src/autonomous-loop-state.mjs +304 -0
  196. package/src/autonomous-output-contracts.mjs +22 -3
  197. package/src/autonomous-plan.mjs +181 -0
  198. package/src/autonomous-planner-contracts.mjs +44 -0
  199. package/src/autonomous-planner.mjs +91 -6
  200. package/src/autonomous-policy.mjs +15 -2
  201. package/src/autonomous-progress.mjs +127 -0
  202. package/src/autonomous-runtime.mjs +601 -48
  203. package/src/autonomous-supervisor-host.mjs +70 -0
  204. package/src/autonomous-supervisor.mjs +31 -8
  205. package/src/capability-benchmark-runner.mjs +108 -0
  206. package/src/capability-benchmark.mjs +50 -0
  207. package/src/coding-mcp-tools.mjs +46 -3
  208. package/src/coding-output-contracts.mjs +45 -0
  209. package/src/context-provenance.mjs +86 -0
  210. package/src/deadbyte-cli.mjs +136 -30
  211. package/src/document-adapter.mjs +43 -0
  212. package/src/lsp-stdio-client.mjs +112 -0
  213. package/src/machine-fs-smoke-client.mjs +2 -1
  214. package/src/mcp-server.mjs +17 -3
  215. package/src/observation-smoke-client.mjs +3 -2
  216. package/src/operator-surface.mjs +37 -0
  217. package/src/provider-circuit.mjs +125 -0
  218. package/src/release-generation.mjs +44 -5
  219. package/src/remote-mcp-autonomous-smoke-client.mjs +53 -14
  220. package/src/remote-mcp-coding-smoke-client.mjs +5 -4
  221. package/src/remote-mcp-r24-disarmed-smoke-client.mjs +4 -2
  222. package/src/remote-mcp-r33-parity-client.mjs +1 -1
  223. package/src/remote-mcp-r34-parity-client.mjs +177 -0
  224. package/src/remote-mcp-smoke-client.mjs +2 -1
  225. package/src/remote-result-journal.mjs +114 -0
  226. package/src/runtime-update.mjs +58 -8
  227. package/src/semantic-backend-registry.mjs +39 -0
  228. package/src/semantic-code.mjs +179 -0
  229. package/src/semantic-lsp-backend.mjs +183 -0
  230. package/src/semantic-lsp-config.mjs +112 -0
  231. package/src/tool-surface-ledger.mjs +92 -0
  232. package/src/version.mjs +1 -1
  233. package/test/audit-verify.test.mjs +1 -1
  234. package/test/autonomous-action-reconcile.test.mjs +106 -0
  235. package/test/autonomous-adversarial.test.mjs +149 -6
  236. package/test/autonomous-context-engine.test.mjs +181 -0
  237. package/test/autonomous-live-state.test.mjs +27 -0
  238. package/test/autonomous-local-supervisor.test.mjs +403 -0
  239. package/test/autonomous-loop-state.test.mjs +126 -0
  240. package/test/autonomous-loop-v2.test.mjs +105 -0
  241. package/test/autonomous-loop.test.mjs +79 -1
  242. package/test/autonomous-output-contract.test.mjs +54 -0
  243. package/test/autonomous-plan.test.mjs +101 -0
  244. package/test/autonomous-progress.test.mjs +106 -0
  245. package/test/autonomous-r34-e2e.test.mjs +338 -0
  246. package/test/autonomous-runtime.test.mjs +3 -3
  247. package/test/autonomous-supervisor-integration.test.mjs +48 -3
  248. package/test/capability-benchmark-runner.test.mjs +49 -0
  249. package/test/capability-benchmark.test.mjs +47 -0
  250. package/test/cli-entrypoint.test.mjs +12 -0
  251. package/test/coding-catalog-consistency.test.mjs +24 -0
  252. package/test/coding-plane.test.mjs +3 -3
  253. package/test/context-provenance.test.mjs +61 -0
  254. package/test/controller-r27.test.mjs +4 -3
  255. package/test/controller.test.mjs +52 -0
  256. package/test/core.test.mjs +1 -1
  257. package/test/deferred-slot-operation-behavior.test.mjs +5 -1
  258. package/test/deferred-slot-operation.test.mjs +2 -1
  259. package/test/document-adapter.test.mjs +23 -0
  260. package/test/fixtures/lsp-framed-server.mjs +33 -0
  261. package/test/fixtures/semantic/cpp/compile_commands.json +4 -0
  262. package/test/fixtures/semantic/cpp/lib.cpp +2 -0
  263. package/test/fixtures/semantic/cpp/lib.hpp +2 -0
  264. package/test/fixtures/semantic/cpp/main.cpp +2 -0
  265. package/test/fixtures/semantic/python/lib.py +2 -0
  266. package/test/fixtures/semantic/python/main.py +2 -0
  267. package/test/fixtures/semantic/rust/Cargo.lock +7 -0
  268. package/test/fixtures/semantic/rust/Cargo.toml +8 -0
  269. package/test/fixtures/semantic/rust/src/lib.rs +3 -0
  270. package/test/fixtures/semantic/rust/src/main.rs +5 -0
  271. package/test/fixtures/semantic/rust/src/math.rs +3 -0
  272. package/test/fixtures/semantic/rust/target/.rustc_info.json +1 -0
  273. package/test/fixtures/semantic/rust/target/CACHEDIR.TAG +3 -0
  274. package/test/fixtures/semantic/rust/target/debug/.cargo-lock +0 -0
  275. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-4c168fa33c79d09c/dep-test-lib-semantic_rust +0 -0
  276. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-4c168fa33c79d09c/invoked.timestamp +1 -0
  277. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-4c168fa33c79d09c/test-lib-semantic_rust +1 -0
  278. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-4c168fa33c79d09c/test-lib-semantic_rust.json +1 -0
  279. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-5dcd474439c54a26/dep-test-bin-semantic_rust_bin +0 -0
  280. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-5dcd474439c54a26/invoked.timestamp +1 -0
  281. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-5dcd474439c54a26/test-bin-semantic_rust_bin +1 -0
  282. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-5dcd474439c54a26/test-bin-semantic_rust_bin.json +1 -0
  283. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-6212ccd976aa3808/dep-lib-semantic_rust +0 -0
  284. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-6212ccd976aa3808/invoked.timestamp +1 -0
  285. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-6212ccd976aa3808/lib-semantic_rust +1 -0
  286. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-6212ccd976aa3808/lib-semantic_rust.json +1 -0
  287. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-d741378dccdef61c/bin-semantic_rust_bin +1 -0
  288. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-d741378dccdef61c/bin-semantic_rust_bin.json +1 -0
  289. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-d741378dccdef61c/dep-bin-semantic_rust_bin +0 -0
  290. package/test/fixtures/semantic/rust/target/debug/.fingerprint/semantic_rust-d741378dccdef61c/invoked.timestamp +1 -0
  291. package/test/fixtures/semantic/rust/target/debug/deps/libsemantic_rust-4c168fa33c79d09c.rmeta +0 -0
  292. package/test/fixtures/semantic/rust/target/debug/deps/libsemantic_rust-6212ccd976aa3808.rmeta +0 -0
  293. package/test/fixtures/semantic/rust/target/debug/deps/libsemantic_rust_bin-5dcd474439c54a26.rmeta +0 -0
  294. package/test/fixtures/semantic/rust/target/debug/deps/libsemantic_rust_bin-d741378dccdef61c.rmeta +0 -0
  295. package/test/fixtures/semantic/rust/target/debug/deps/semantic_rust-4c168fa33c79d09c.d +5 -0
  296. package/test/fixtures/semantic/rust/target/debug/deps/semantic_rust-6212ccd976aa3808.d +5 -0
  297. package/test/fixtures/semantic/rust/target/debug/deps/semantic_rust_bin-5dcd474439c54a26.d +6 -0
  298. package/test/fixtures/semantic/rust/target/debug/deps/semantic_rust_bin-d741378dccdef61c.d +6 -0
  299. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust-1nzlugxi6lq16/s-hmdgo8b6hg-1n6glhc-1qb77z00k06rqw4jdkj92spax/dep-graph.bin +0 -0
  300. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust-1nzlugxi6lq16/s-hmdgo8b6hg-1n6glhc-1qb77z00k06rqw4jdkj92spax/query-cache.bin +0 -0
  301. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust-1nzlugxi6lq16/s-hmdgo8b6hg-1n6glhc-1qb77z00k06rqw4jdkj92spax/work-products.bin +0 -0
  302. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust-1nzlugxi6lq16/s-hmdgo8b6hg-1n6glhc.lock +0 -0
  303. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust-3s436v7g6f5xm/s-hmdgo8b58k-1ekj4lq-9twkpivsqnjon278x20bddozq/dep-graph.bin +0 -0
  304. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust-3s436v7g6f5xm/s-hmdgo8b58k-1ekj4lq-9twkpivsqnjon278x20bddozq/metadata.rmeta +0 -0
  305. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust-3s436v7g6f5xm/s-hmdgo8b58k-1ekj4lq-9twkpivsqnjon278x20bddozq/query-cache.bin +0 -0
  306. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust-3s436v7g6f5xm/s-hmdgo8b58k-1ekj4lq-9twkpivsqnjon278x20bddozq/work-products.bin +0 -0
  307. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust-3s436v7g6f5xm/s-hmdgo8b58k-1ekj4lq.lock +0 -0
  308. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust_bin-1jxcbdeehal7q/s-hmdgo8bxlf-1qr24o3-cmu3jai030no72y8u9eurrnjj/dep-graph.bin +0 -0
  309. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust_bin-1jxcbdeehal7q/s-hmdgo8bxlf-1qr24o3-cmu3jai030no72y8u9eurrnjj/query-cache.bin +0 -0
  310. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust_bin-1jxcbdeehal7q/s-hmdgo8bxlf-1qr24o3-cmu3jai030no72y8u9eurrnjj/work-products.bin +0 -0
  311. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust_bin-1jxcbdeehal7q/s-hmdgo8bxlf-1qr24o3.lock +0 -0
  312. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust_bin-2ocx55p60ni6b/s-hmdgo8bxj8-0ir41qt-diy9mqvc2eoiblmhjs3stcgi3/dep-graph.bin +0 -0
  313. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust_bin-2ocx55p60ni6b/s-hmdgo8bxj8-0ir41qt-diy9mqvc2eoiblmhjs3stcgi3/query-cache.bin +0 -0
  314. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust_bin-2ocx55p60ni6b/s-hmdgo8bxj8-0ir41qt-diy9mqvc2eoiblmhjs3stcgi3/work-products.bin +0 -0
  315. package/test/fixtures/semantic/rust/target/debug/incremental/semantic_rust_bin-2ocx55p60ni6b/s-hmdgo8bxj8-0ir41qt.lock +0 -0
  316. package/test/fixtures/semantic/rust/target/flycheck0/stderr +1 -0
  317. package/test/fixtures/semantic/rust/target/flycheck0/stdout +5 -0
  318. package/test/fixtures/semantic/typescript/lib.ts +3 -0
  319. package/test/fixtures/semantic/typescript/main.ts +2 -0
  320. package/test/fixtures/tool-surface-stdio-server.mjs +14 -0
  321. package/test/helpers/autonomous-r34-fixture.mjs +120 -0
  322. package/test/lsp-stdio-client.test.mjs +72 -0
  323. package/test/multi-file-read.test.mjs +41 -0
  324. package/test/observation-integration.test.mjs +3 -3
  325. package/test/production-docs.test.mjs +48 -0
  326. package/test/prompts-resources.test.mjs +35 -0
  327. package/test/provider-circuit.test.mjs +93 -0
  328. package/test/public-autonomous-ingress-budget.test.mjs +28 -0
  329. package/test/r33-closeout-regression.test.mjs +3 -3
  330. package/test/r33-finalization.test.mjs +19 -16
  331. package/test/release-generation.test.mjs +23 -2
  332. package/test/release-version.test.mjs +24 -17
  333. package/test/remote-r24-catalog.test.mjs +5 -4
  334. package/test/remote-result-journal.test.mjs +58 -0
  335. package/test/remote-session-cli.test.mjs +150 -15
  336. package/test/runtime-self-update.test.mjs +63 -0
  337. package/test/semantic-backend-registry.test.mjs +29 -0
  338. package/test/semantic-code.test.mjs +66 -0
  339. package/test/semantic-lsp-backend.test.mjs +99 -0
  340. package/test/semantic-lsp-config.test.mjs +81 -0
  341. package/test/semantic-lsp-readiness.test.mjs +34 -0
  342. package/test/semantic-lsp-transient-empty.test.mjs +32 -0
  343. package/test/semantic-lsp-transient-null.test.mjs +31 -0
  344. package/test/semantic-multilang.test.mjs +72 -0
  345. package/test/semantic-runtime-routing.test.mjs +32 -0
  346. package/test/semantic-server-config-integration.test.mjs +66 -0
  347. package/test/tool-surface-ledger.test.mjs +59 -0
  348. package/test/tool-surface-snapshot.test.mjs +17 -0
  349. package/test/tracer-bullet.test.mjs +77 -0
@@ -0,0 +1,408 @@
1
+ # DEADBYTE MCP R35 Production Successor Implementation Plan
2
+
3
+ > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
4
+
5
+ **Goal:** Build R35 / V0.9.0 as a compatibility-preserving successor to sealed R34 with machine-checked tool-surface archaeology, four required-language semantic backends plus optional Go evidence, provenance-aware context, durable critic/repair loops, signed provider circuit state, reproducible capability benchmarks, resumable remote sessions, and a rollback/restore Final closure to exact R34.
6
+
7
+ **Architecture:** Copy the exact sealed R34 package tree into a separate R35 workspace, preserve existing public tool names, and add narrowly bounded modules behind existing seams. Every slice is test-first and releases through the same immutable slot/evidence machinery, with new R35 authorities deriving from canonical registries rather than duplicated arrays.
8
+
9
+ **Tech Stack:** Node.js ESM, `@modelcontextprotocol/*`, Zod v4, TypeScript language service, JSON-RPC/LSP over stdio for external language servers, Windows PowerShell 5.1 controller/release gates, native Windows containment/process hosts, Ed25519 evidence receipts.
10
+
11
+ **Spec:** `docs/superpowers/specs/2026-09-17-r35-production-successor-design.md`
12
+
13
+ ## Global Constraints
14
+
15
+ - Parent release is exactly `v0.8.11-6c01e5285e065220` with manifest `6c01e5285e065220db07d7719f78bb6aa4fde88365419281b33be1b1d59dd3c5`.
16
+ - Never mutate the sealed R34 release slot or the R34 development/final workspace in place.
17
+ - R35 version is `0.9.0`; release label is `R35` until Final closure proves a stronger label.
18
+ - Preserve R34's 73 public tool names unless an explicit versioned R35 surface test approves an addition.
19
+ - Process, coding, autonomous, and host authority never auto-arm.
20
+ - No raw privileged shell command strings and no silent semantic grep fallback.
21
+ - No runtime auto-download of language servers.
22
+ - External LSP executables must be configured and SHA-256 pinned before launch.
23
+ - Full audit evidence remains durable; compact terminal UX remains the default.
24
+ - New code is TDD: RED must be observed before the minimal production change.
25
+ - R35 Final requires Windows gate PASS, immutable activation, public parity, rollback to exact sealed R34, exact R35 restore, all privileged planes DISARMED, signed closure, and independent verifier PASS.
26
+
27
+ ---
28
+
29
+ ### Task 1: Materialize the R35 successor and canonical tool-surface ledger
30
+
31
+ **Files:**
32
+ - Create successor tree: `D:\Projects\deadbyte-mcp-r35-release-v0.9.0` from exact R34 package bytes, preserving the already-written R35 spec/plan documents after the copy.
33
+ - Create: `src/tool-surface-ledger.mjs`
34
+ - Create: `scripts/tool-surface-snapshot.mjs`
35
+ - Create: `test/tool-surface-ledger.test.mjs`
36
+ - Modify: `src/mcp-server.mjs`
37
+ - Modify: `src/version.mjs`
38
+ - Modify: `package.json`
39
+ - Modify: `CONTEXT.md`
40
+
41
+ **Interfaces:**
42
+ - Produces `canonicalSchemaHash(schema): string`.
43
+ - Produces `snapshotToolSurface(toolDescriptors): {schema:'deadbyte.tool-surface.v1', tools:Array<{name,input_sha256,output_sha256}>, surface_sha256:string}`.
44
+ - Produces `diffToolSurface(baseline,current): {unchanged:string[],added:string[],removed:string[],schema_changed:string[]}`.
45
+ - Snapshot generation consumes the MCP protocol `tools/list` result produced by the real registered server surface. Release tooling never reconstructs names or schemas independently; this avoids a second descriptor registry and measures exactly what clients observe.
46
+
47
+ - [ ] **Step 1: Verify parent bytes before copying**
48
+
49
+ Create an external PowerShell verifier under `D:\Projects` that reads the R34 final result and verifies the immutable slot `C:\Users\DEADBYTE\.deadbyte-mcp\releases\v0.8.11-6c01e5285e065220` against manifest `6c01e528...`, including exactly 1560 listed files and every listed digest. Explicitly reject `D:\Projects\deadbyte-mcp-r34-release-v0.8.11` as parent authority because it is a mutable working tree. Run the verifier and require `R34_PARENT_EXACT_PASS`.
50
+
51
+ - [ ] **Step 2: Materialize successor without mutating parent**
52
+
53
+ Copy R34 package files into the R35 path with `Copy-Item`/`robocopy` read-only source semantics, exclude R34 mutable runtime outputs, then restore the R35 spec/plan documents. Verify a pre-change comparison showing all inherited package bytes equal to R34 except the R35 planning documents.
54
+
55
+ - [ ] **Step 3: Write the failing ledger tests**
56
+
57
+ `test/tool-surface-ledger.test.mjs` must assert:
58
+
59
+ ```js
60
+ const baseline=snapshotToolSurface([
61
+ {name:'alpha',inputSchema:{type:'object',properties:{x:{type:'string'}}},outputSchema:{type:'object',properties:{ok:{type:'boolean'}}}},
62
+ {name:'beta',inputSchema:{type:'object'},outputSchema:{type:'object'}}
63
+ ]);
64
+ const reordered=snapshotToolSurface([...same descriptors in reverse property/order form...]);
65
+ assert.equal(baseline.surface_sha256,reordered.surface_sha256);
66
+ assert.throws(()=>snapshotToolSurface([{name:'alpha',...},{name:'alpha',...}]),/duplicate tool/i);
67
+ const diff=diffToolSurface(baseline,changed);
68
+ assert.deepEqual(diff.removed,['beta']);
69
+ assert.deepEqual(diff.schema_changed,['alpha']);
70
+ ```
71
+
72
+ Also add an integration assertion that the R35 registered surface initially contains exactly the R34 73 names.
73
+
74
+ - [ ] **Step 4: Run RED**
75
+
76
+ Run `node --test test/tool-surface-ledger.test.mjs`. Expected failure: module/export missing.
77
+
78
+ - [ ] **Step 5: Implement deterministic ledger**
79
+
80
+ Canonicalize objects recursively with lexicographically sorted keys, preserve array order, reject non-JSON schema values, hash UTF-8 canonical JSON with SHA-256, sort tool records by name, reject duplicate names, then hash the whole snapshot.
81
+
82
+ - [ ] **Step 6: Make server descriptors canonical**
83
+
84
+ Refactor only the registration descriptor construction needed to expose the exact descriptors to the ledger. Do not rename public tools. Add `scripts/tool-surface-snapshot.mjs` that writes/prints the snapshot without including secrets or remote endpoint values.
85
+
86
+ - [ ] **Step 7: Cut R35 identity**
87
+
88
+ Set `DEADBYTE_VERSION='0.9.0'`; update package version/banner/current docs from R34 successor identity to R35 while retaining the exact R34 parent manifest in `CONTEXT.md`.
89
+
90
+ - [ ] **Step 8: Run GREEN and R34 compatibility gate**
91
+
92
+ Run focused tests, then compare generated R35 surface with an R34 baseline snapshot generated from sealed R34. Expected: 73 names, `removed=[]`, `schema_changed=[]`; additions require explicit plan amendment.
93
+
94
+ ---
95
+
96
+ ### Task 2: Introduce engine-neutral semantic runtime and pinned LSP transport
97
+
98
+ **Files:**
99
+ - Create: `src/semantic-backend-registry.mjs`
100
+ - Create: `src/lsp-stdio-client.mjs`
101
+ - Create: `src/semantic-lsp-backend.mjs`
102
+ - Create: `test/lsp-stdio-client.test.mjs`
103
+ - Create: `test/semantic-backend-registry.test.mjs`
104
+ - Modify: `src/semantic-code.mjs`
105
+ - Modify: `src/coding-output-contracts.mjs` only if an existing semantic output contract needs an `engine` string broadened without shape drift.
106
+
107
+ **Interfaces:**
108
+ - `createSemanticBackendRegistry({backends})` -> `{backendForPath(relativePath), languages()}`.
109
+ - A backend implements `{id, extensions:Set<string>, outline(ctx), definition(ctx), references(ctx), replaceSymbol(ctx), diagnostics(ctx)}`.
110
+ - `createLspStdioClient({executablePath,expectedSha256,args,cwd,env,requestTimeoutMs,maxMessageBytes})` -> `{initialize,notify,request,shutdown}`.
111
+ - LSP transport accepts no shell string and verifies executable digest before spawn.
112
+
113
+ - [ ] **Step 1: Write failing framed-protocol tests**
114
+
115
+ Use a test fixture child process that speaks LSP `Content-Length` framing. Assert split headers/bodies, multiple frames in one chunk, request-id correlation, timeout, oversized message rejection, unexpected process exit, and graceful shutdown.
116
+
117
+ - [ ] **Step 2: Run RED**
118
+
119
+ Run `node --test test/lsp-stdio-client.test.mjs test/semantic-backend-registry.test.mjs`. Expected missing modules.
120
+
121
+ - [ ] **Step 3: Implement bounded stdio JSON-RPC transport**
122
+
123
+ Use `spawn(executablePath,args,{shell:false,...})`; verify SHA before spawn; parse byte buffers, not line-delimited JSON; cap each message; maintain a request map; reject all outstanding requests on exit; do not retry automatically.
124
+
125
+ - [ ] **Step 4: Implement backend registry**
126
+
127
+ Resolve by normalized lower-case extension. Unknown extension throws `unsupported semantic language: <ext>`; no grep fallback.
128
+
129
+ - [ ] **Step 5: Adapt existing TypeScript backend**
130
+
131
+ Move current TypeScript service behavior behind a backend object while preserving current output fields and symbol-id stale-precondition semantics. Run existing `test/semantic-code.test.mjs` unchanged first; contract drift is a failure.
132
+
133
+ - [ ] **Step 6: Run GREEN**
134
+
135
+ Focused LSP/registry + existing semantic tests must pass.
136
+
137
+ ---
138
+
139
+ ### Task 3: Required semantic tracer corpus plus optional Go evidence
140
+
141
+ **Files:**
142
+ - Create: `src/semantic-lsp-config.mjs`
143
+ - Create fixtures under: `test/fixtures/semantic/{typescript,python,rust,cpp,go}`
144
+ - Create: `test/semantic-multilang.test.mjs`
145
+ - Create: `scripts/semantic-preflight.ps1`
146
+ - Modify: `src/semantic-code.mjs`
147
+ - Modify: `controller/deadbyte-controller.config.psd1.example`
148
+ - Modify: `docs/ARCHITECTURE.md`
149
+ - Modify: `README.txt`
150
+
151
+ **Interfaces:**
152
+ - Config records per language: `{id,extensions,executable_path,executable_sha256,args,initialization_options}`.
153
+ - Preflight reports each tracer language as `builtin`, `pinned`, or `missing`; missing required language blocks R35 Final.
154
+
155
+ - [ ] **Step 1: Inventory local language-server executables**
156
+
157
+ Use a read-only preflight script to locate configured/known executables and hash them. Do not install anything automatically. Record exact results outside the package tree.
158
+
159
+ - [ ] **Step 2: Write failing acceptance tests for TypeScript/JavaScript, Python, Rust, and C/C++; keep Go optional**
160
+
161
+ Each fixture defines a symbol in one file and references it from another. Tests call the same public semantic runtime methods and assert normalized definition/reference paths and symbol-bound replacement. TypeScript uses the builtin backend; the four external languages use configured pinned LSP backends.
162
+
163
+ - [ ] **Step 3: Run RED**
164
+
165
+ Expected failures identify missing backend config or unsupported language. If a required executable is absent, stop implementation of that adapter and resolve the dependency explicitly rather than fake semantics.
166
+
167
+ - [ ] **Step 4: Implement LSP normalization**
168
+
169
+ Map `DocumentSymbol`/`SymbolInformation`, locations, references, diagnostics, and `WorkspaceEdit`/text spans into DEADBYTE normalized locations. Reject edits outside allowed root and reject multi-file mutation from `replaceSymbol` unless the public contract explicitly supports it.
170
+
171
+ - [ ] **Step 5: Implement stale preconditions**
172
+
173
+ Symbol ids bind backend id, path, file SHA, symbol range/name. `replaceSymbol` verifies expected file SHA immediately before mutation and uses existing coding-plane receipt-backed text replacement.
174
+
175
+ - [ ] **Step 6: Run GREEN corpus**
176
+
177
+ The four required tracer languages (TypeScript/JavaScript, Python, Rust, C/C++) must pass outline/definition/references/replace tracer cases. Go is optional evidence only. Diagnostics must be non-empty for one deliberate syntax/type error fixture per required language where the server supports diagnostics.
178
+
179
+ ---
180
+
181
+ ### Task 4: Provenance-aware context and Looped Engineering V2
182
+
183
+ **Files:**
184
+ - Create: `src/context-provenance.mjs`
185
+ - Create: `test/context-provenance.test.mjs`
186
+ - Modify: `src/autonomous-context-engine.mjs`
187
+ - Modify: `src/autonomous-loop-state.mjs`
188
+ - Modify: `src/autonomous-runtime.mjs`
189
+ - Modify: `src/autonomous-progress.mjs`
190
+ - Modify: `src/autonomous-planner-contracts.mjs`
191
+ - Modify: `test/autonomous-context-engine.test.mjs`
192
+ - Modify: `test/autonomous-loop.test.mjs`
193
+ - Modify: `test/autonomous-r34-e2e.test.mjs` or create R35 successor e2e test while retaining R34 regression coverage.
194
+
195
+ **Interfaces:**
196
+ - `provenanceFor({sourceKind,sourceId,bytes,observedAtUtc,trustClass,relevanceEpoch})` returns canonical provenance with byte count and safe source digest.
197
+ - `dedupeEvidence(items)` keeps newest evidence for identical stable provenance identity.
198
+ - Loop phases become exact enum: `PLAN|INSPECT|ACT|VERIFY|CRITIC|REPAIR|RELEASE|WAITING|SUCCEEDED|FAILED`.
199
+
200
+ - [ ] **Step 1: Write provenance RED tests**
201
+
202
+ Assert deterministic identity, payload elision preserving provenance, secret fields not becoming digest oracles, dedupe stability, and context byte budget.
203
+
204
+ - [ ] **Step 2: Write loop RED tests**
205
+
206
+ Assert failed VERIFY enters CRITIC, critic classification enters REPAIR, REPAIR must change plan/hypothesis fingerprint before another ACT, and journal replay produces byte-equivalent todo projection.
207
+
208
+ - [ ] **Step 3: Run RED**
209
+
210
+ Focused context/loop tests must fail on missing provenance and phases.
211
+
212
+ - [ ] **Step 4: Implement provenance envelope**
213
+
214
+ Attach provenance before compaction; compact payload independently; preserve provenance fields. Keep R34 secret sanitizer semantics.
215
+
216
+ - [ ] **Step 5: Implement explicit critic/repair transitions**
217
+
218
+ Do not add another agent. Extend durable state reducer and runtime with machine transitions. Planner remains the single decision source; critic payload is structured failure classification derived from evidence plus a planner repair decision.
219
+
220
+ - [ ] **Step 6: Implement restart-safe todo projection**
221
+
222
+ Derive todo items from active plan + journal state; never trust a standalone mutable todo file.
223
+
224
+ - [ ] **Step 7: GREEN and crash replay**
225
+
226
+ Run context/loop/e2e/adversarial tests including deliberate failed action, crash after mutation, restart, critic repair, and single final side effect.
227
+
228
+ ---
229
+
230
+ ### Task 5: Signed provider circuit state
231
+
232
+ **Files:**
233
+ - Create: `src/provider-circuit.mjs`
234
+ - Create: `test/provider-circuit.test.mjs`
235
+ - Modify: `src/autonomous-local-supervisor.mjs`
236
+ - Modify: `src/autonomous-supervisor-host.mjs`
237
+ - Modify: provider/client-sampling adapter seam used by R35 planner invocation.
238
+
239
+ **Interfaces:**
240
+ - `deriveCircuit(events,providerId,policy)` -> `{state,failure_count,opened_at_utc,next_probe_at_utc,last_success_at_utc}`.
241
+ - `classifyProviderFailure(error)` returns bounded class: `timeout|transport|rate_limit|auth|invalid_response|other`.
242
+ - Circuit policy contains `failure_threshold`, `open_ms`, `half_open_probe_limit`.
243
+
244
+ - [ ] **Step 1: Write RED state-machine tests**
245
+
246
+ Test CLOSED -> OPEN at threshold, OPEN rejects calls without invoking provider, HALF_OPEN after time boundary, one bounded probe, success -> CLOSED, failure -> OPEN, authenticated replay equivalence, and corrupted evidence -> unavailable.
247
+
248
+ - [ ] **Step 2: Run RED**
249
+
250
+ Missing module/state is expected.
251
+
252
+ - [ ] **Step 3: Implement pure reducer first**
253
+
254
+ No timers inside reducer; caller supplies observed UTC timestamp. State derives from signed journal events.
255
+
256
+ - [ ] **Step 4: Integrate only around provider/network calls**
257
+
258
+ Local coding/process/file operations bypass circuit state. Circuit open emits typed WAITING reason and never arms authority or selects an unconfigured fallback provider.
259
+
260
+ - [ ] **Step 5: GREEN supervisor/restart tests**
261
+
262
+ Crash/restart must preserve OPEN/HALF_OPEN state from signed evidence.
263
+
264
+ ---
265
+
266
+ ### Task 6: Resumable remote result cursor and deduplication
267
+
268
+ **Files:**
269
+ - Create: `src/remote-result-journal.mjs`
270
+ - Create: `test/remote-result-journal.test.mjs`
271
+ - Modify: `src/deadbyte-cli.mjs`
272
+ - Modify: `src/remote-session-guardian.mjs`
273
+ - Modify: Bridge sidecar only if server-to-client replay requires a transport hook; old R34 Bridge bytes remain untouched.
274
+ - Modify: `test/remote-session-cli.test.mjs`
275
+
276
+ **Interfaces:**
277
+ - Journal event `{session_id,seq,request_id,tool,status,observed_at_utc,payload_sha256}` with bounded compact display metadata.
278
+ - `replayAfter(cursor,{limit})` returns ordered unique results or typed `cursor_outside_retention`.
279
+ - Result identity is `request_id + terminal result identity`; duplicate terminal results are suppressed.
280
+
281
+ - [ ] **Step 1: Write RED journal tests**
282
+
283
+ Assert monotonic sequence, restart adoption, duplicate suppression, bounded retention, cursor replay, stale cursor error, and no raw payload storage in compact journal.
284
+
285
+ - [ ] **Step 2: Run RED**
286
+
287
+ Expected module missing.
288
+
289
+ - [ ] **Step 3: Implement journal and durable session identity**
290
+
291
+ Use atomic append/replace patterns already proven by audit/session code. Session reconnect never changes authority state.
292
+
293
+ - [ ] **Step 4: Add CLI reconnect/resume UX**
294
+
295
+ Default remains compact. A resumed session prints only concise status and results after cursor; `--verbose` may show full audit/Bridge stream. Do not print SHA noise in compact mode.
296
+
297
+ - [ ] **Step 5: GREEN reconnect tests**
298
+
299
+ Simulate Bridge restart between result events and prove no duplicate terminal display or side effect.
300
+
301
+ - [ ] **Step 6: Stress remote-session tests**
302
+
303
+ Run `test/remote-session-cli.test.mjs` repeatedly. Every wait predicate must correspond to the exact later assertion; no proxy-condition race is accepted.
304
+
305
+ ---
306
+
307
+ ### Task 7: Reproducible capability benchmark corpus
308
+
309
+ **Files:**
310
+ - Create: `bench/fixtures/*`
311
+ - Create: `src/capability-benchmark.mjs`
312
+ - Create: `scripts/capability-benchmark.mjs`
313
+ - Create: `test/capability-benchmark.test.mjs`
314
+ - Create: `docs/R35-BENCHMARK-METHOD.md`
315
+ - Modify: `README.txt` comparison section to reference measured evidence only.
316
+
317
+ **Interfaces:**
318
+ - Benchmark result schema `deadbyte.r35-capability-benchmark.v1`.
319
+ - Each case records `{case_id,correct,round_trips,bytes_returned,elapsed_ms,stale_rejected,recovery_success,duplicate_side_effects}`.
320
+ - Aggregate never collapses correctness into a speed score; dimensions remain separately inspectable.
321
+
322
+ - [ ] **Step 1: Write RED schema/determinism tests**
323
+
324
+ Assert fixture identity/hash, required metrics, deterministic correctness verdicts, and explicit failure when a case lacks evidence.
325
+
326
+ - [ ] **Step 2: Implement offline cases**
327
+
328
+ Cover filesystem bounded read, exact edit/stale reject, paged search, owned process lifecycle, the four required semantic tracer languages with optional Go evidence, context compaction/provenance, autonomous fail/repair, and remote replay dedupe.
329
+
330
+ - [ ] **Step 3: Run benchmark twice**
331
+
332
+ Correctness verdicts and fixture identities must match. Timing may vary and is reported, not used to manufacture a winner.
333
+
334
+ - [ ] **Step 4: Document competitor methodology**
335
+
336
+ Describe how equivalent public operations may be measured against external products without copying their code. Claims in README must cite local benchmark evidence and retain the semantic-breadth caveat where applicable.
337
+
338
+ ---
339
+
340
+ ### Task 8: R35 release authorities, Windows gate, rollback/restore, and Final closure
341
+
342
+ **Files:**
343
+ - Modify: `scripts/gate-windows.ps1`
344
+ - Modify: `scripts/windows-gate-evidence.mjs`
345
+ - Modify: `scripts/release-parity.mjs`
346
+ - Create or update R35 parity client derived from canonical tool-surface authority.
347
+ - Modify: `scripts/final-closure.mjs`
348
+ - Modify: `scripts/final-closure-verify.mjs`
349
+ - Modify: `src/runtime-update.mjs` only if R35 generation data needs semantic-server/circuit/replay configuration pins.
350
+ - Create: `R35-BASELINE.json` only at proven candidate freeze.
351
+ - Tests: release/version/parity/runtime-update/final-verifier tests plus all existing source tests.
352
+
353
+ **Interfaces:**
354
+ - Windows evidence schema becomes `deadbyte.r35-windows-gate.v1` and binds exact manifest, tool-surface snapshot, semantic preflight identities, benchmark evidence hash, source-test count, and gate marker.
355
+ - Final closure binds R35 activation receipt, R34 rollback receipt, R35 restore receipt, public parity, tool-surface evidence, benchmark evidence, Windows evidence, all-DISARMED proof, and supervisor-running proof.
356
+
357
+ - [ ] **Step 1: Write RED release-authority tests**
358
+
359
+ Tests must reject R34 schema/marker identities, stale 73-tool arrays copied by hand, missing surface snapshot, missing benchmark hash, missing semantic preflight pins, and closure that did not roll back to exact `v0.8.11-6c01e5285e065220`.
360
+
361
+ - [ ] **Step 2: Currentize release authorities**
362
+
363
+ Derive expected public surface from `tool-surface-ledger.mjs`. Keep R34 rollback authority constant and explicit. Do not regenerate R34 identity from current source.
364
+
365
+ - [ ] **Step 3: Full source regression**
366
+
367
+ Run `npm test` and all focused stress suites. Zero fail is mandatory; preserve raw failure output externally for any flake.
368
+
369
+ - [ ] **Step 4: Canonical Windows gate**
370
+
371
+ Build native artifacts, refresh process policy pins, run public/machine/coding/process/observation/autonomous/semantic/benchmark smokes, freeze one exact manifest, verify exact tree, and emit manifest-bound R35 evidence outside the candidate tree.
372
+
373
+ - [ ] **Step 5: Independent frozen verification**
374
+
375
+ A separate verifier checks manifest entries/digests, version, surface snapshot, Windows evidence, benchmark evidence, semantic executable pins, and absence of unlisted package files.
376
+
377
+ - [ ] **Step 6: Immutable R35 activation**
378
+
379
+ Create a content-addressed R35 release/generation. Rebind only exact pinned Bridge/LSP/process/supervisor identities. Verify runtime ONLINE and supervisor `RUNNING [verified]`.
380
+
381
+ - [ ] **Step 7: Public R35 parity**
382
+
383
+ Verify exact R35 public tool surface and functional planes. No host authority is required for ordinary parity. Record signed parity evidence.
384
+
385
+ - [ ] **Step 8: Roll back to sealed R34**
386
+
387
+ Use signed activation/rollback receipts. Verify exact R34 release id, manifest, public surface, runtime, and disarmed authority state.
388
+
389
+ - [ ] **Step 9: Restore exact R35**
390
+
391
+ Restore the exact R35 manifest/generation with pinned Bridge/LSP identities; verify parity again and supervisor running.
392
+
393
+ - [ ] **Step 10: Seal all authority**
394
+
395
+ Revoke process, coding, autonomous, and host standing grants. Verify all four are DISARMED while runtime remains ONLINE.
396
+
397
+ - [ ] **Step 11: Signed R35 final closure**
398
+
399
+ Emit signed closure/summary outside the release tree, then run the independent verifier. Only an independent `status=passed`, exact R35 manifest, exact R34 rollback anchor, `all_disarmed=true`, and `supervisor_running=true` permit the label `R35 PRODUCTION FINAL BASELINE`.
400
+
401
+ ---
402
+
403
+ ## Self-review result
404
+
405
+ - Spec coverage: Tasks 1-8 cover every R35-A through R35-H requirement.
406
+ - Placeholder scan: no TBD/TODO/coming-soon implementation steps are permitted by this plan.
407
+ - Type consistency: semantic registry/LSP interfaces are introduced in Task 2 and consumed by Task 3; provenance/loop interfaces are introduced together in Task 4; provider circuit is isolated in Task 5; remote journal is isolated in Task 6; benchmark schema is introduced in Task 7 and consumed by release evidence in Task 8.
408
+ - Scope discipline: no dynamic plugin framework, provider swarm, vector database, auto-download, or host auto-arm is included.