open-multi-agent-kit 0.98.3 → 0.98.5

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 (468) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +12 -2
  3. package/dist/cli/args.d.ts +1 -0
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +14 -0
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/cli/help.d.ts.map +1 -1
  8. package/dist/cli/help.js +3 -0
  9. package/dist/cli/help.js.map +1 -1
  10. package/dist/cli/mcp-attach.d.ts +3 -3
  11. package/dist/cli/mcp-attach.d.ts.map +1 -1
  12. package/dist/cli/mcp-attach.js +5 -4
  13. package/dist/cli/mcp-attach.js.map +1 -1
  14. package/dist/cli/model-contract.d.ts +5 -0
  15. package/dist/cli/model-contract.d.ts.map +1 -0
  16. package/dist/cli/model-contract.js +45 -0
  17. package/dist/cli/model-contract.js.map +1 -0
  18. package/dist/commands/adaptorch-doctor-cli.d.ts.map +1 -1
  19. package/dist/commands/adaptorch-doctor-cli.js +32 -10
  20. package/dist/commands/adaptorch-doctor-cli.js.map +1 -1
  21. package/dist/commands/init-cli.d.ts +12 -0
  22. package/dist/commands/init-cli.d.ts.map +1 -0
  23. package/dist/commands/init-cli.js +76 -0
  24. package/dist/commands/init-cli.js.map +1 -0
  25. package/dist/commands/provider-sync-cli.d.ts +27 -0
  26. package/dist/commands/provider-sync-cli.d.ts.map +1 -0
  27. package/dist/commands/provider-sync-cli.js +177 -0
  28. package/dist/commands/provider-sync-cli.js.map +1 -0
  29. package/dist/commands/run-command.d.ts +9 -0
  30. package/dist/commands/run-command.d.ts.map +1 -0
  31. package/dist/commands/run-command.js +34 -0
  32. package/dist/commands/run-command.js.map +1 -0
  33. package/dist/commands/verified-run-cli.d.ts +6 -0
  34. package/dist/commands/verified-run-cli.d.ts.map +1 -0
  35. package/dist/commands/verified-run-cli.js +190 -0
  36. package/dist/commands/verified-run-cli.js.map +1 -0
  37. package/dist/core/active-skill-state.d.ts +7 -0
  38. package/dist/core/active-skill-state.d.ts.map +1 -0
  39. package/dist/core/active-skill-state.js +25 -0
  40. package/dist/core/active-skill-state.js.map +1 -0
  41. package/dist/core/agent-session-services.d.ts +10 -1
  42. package/dist/core/agent-session-services.d.ts.map +1 -1
  43. package/dist/core/agent-session-services.js +43 -0
  44. package/dist/core/agent-session-services.js.map +1 -1
  45. package/dist/core/agent-session.d.ts +7 -9
  46. package/dist/core/agent-session.d.ts.map +1 -1
  47. package/dist/core/agent-session.js +91 -126
  48. package/dist/core/agent-session.js.map +1 -1
  49. package/dist/core/codex-chatgpt-web-bridge.d.ts +99 -0
  50. package/dist/core/codex-chatgpt-web-bridge.d.ts.map +1 -0
  51. package/dist/core/codex-chatgpt-web-bridge.js +192 -0
  52. package/dist/core/codex-chatgpt-web-bridge.js.map +1 -0
  53. package/dist/core/codex-chatgpt-web-sync.d.ts +50 -0
  54. package/dist/core/codex-chatgpt-web-sync.d.ts.map +1 -0
  55. package/dist/core/codex-chatgpt-web-sync.js +119 -0
  56. package/dist/core/codex-chatgpt-web-sync.js.map +1 -0
  57. package/dist/core/compaction/compaction-headroom.d.ts +30 -0
  58. package/dist/core/compaction/compaction-headroom.d.ts.map +1 -0
  59. package/dist/core/compaction/compaction-headroom.js +48 -0
  60. package/dist/core/compaction/compaction-headroom.js.map +1 -0
  61. package/dist/core/compaction/compaction.d.ts +2 -29
  62. package/dist/core/compaction/compaction.d.ts.map +1 -1
  63. package/dist/core/compaction/compaction.js +19 -47
  64. package/dist/core/compaction/compaction.js.map +1 -1
  65. package/dist/core/compaction/overflow-retry-guard.d.ts +20 -0
  66. package/dist/core/compaction/overflow-retry-guard.d.ts.map +1 -0
  67. package/dist/core/compaction/overflow-retry-guard.js +38 -0
  68. package/dist/core/compaction/overflow-retry-guard.js.map +1 -0
  69. package/dist/core/context-budget-headroom-types.d.ts.map +1 -1
  70. package/dist/core/context-budget-headroom-types.js +1 -1
  71. package/dist/core/context-budget-headroom-types.js.map +1 -1
  72. package/dist/core/context-budget-token-counter-types.d.ts +27 -0
  73. package/dist/core/context-budget-token-counter-types.d.ts.map +1 -0
  74. package/dist/core/context-budget-token-counter-types.js +2 -0
  75. package/dist/core/context-budget-token-counter-types.js.map +1 -0
  76. package/dist/core/context-budget-token-counter.d.ts +2 -26
  77. package/dist/core/context-budget-token-counter.d.ts.map +1 -1
  78. package/dist/core/context-budget-token-counter.js +2 -0
  79. package/dist/core/context-budget-token-counter.js.map +1 -1
  80. package/dist/core/context-budget-v2-scoring.d.ts.map +1 -1
  81. package/dist/core/context-budget-v2-scoring.js +14 -10
  82. package/dist/core/context-budget-v2-scoring.js.map +1 -1
  83. package/dist/core/domain-router.d.ts.map +1 -1
  84. package/dist/core/domain-router.js +1 -1
  85. package/dist/core/domain-router.js.map +1 -1
  86. package/dist/core/grok-harness-dispatch.d.ts +4 -0
  87. package/dist/core/grok-harness-dispatch.d.ts.map +1 -1
  88. package/dist/core/grok-harness-dispatch.js +20 -3
  89. package/dist/core/grok-harness-dispatch.js.map +1 -1
  90. package/dist/core/grok-harness.d.ts +15 -9
  91. package/dist/core/grok-harness.d.ts.map +1 -1
  92. package/dist/core/grok-harness.js +34 -8
  93. package/dist/core/grok-harness.js.map +1 -1
  94. package/dist/core/mcp/tools.d.ts +2 -2
  95. package/dist/core/mcp/tools.d.ts.map +1 -1
  96. package/dist/core/mcp/tools.js +29 -3
  97. package/dist/core/mcp/tools.js.map +1 -1
  98. package/dist/core/model-registry-schema.d.ts +1081 -0
  99. package/dist/core/model-registry-schema.d.ts.map +1 -0
  100. package/dist/core/model-registry-schema.js +148 -0
  101. package/dist/core/model-registry-schema.js.map +1 -0
  102. package/dist/core/model-registry.d.ts.map +1 -1
  103. package/dist/core/model-registry.js +1 -146
  104. package/dist/core/model-registry.js.map +1 -1
  105. package/dist/core/model-resolver.d.ts +2 -1
  106. package/dist/core/model-resolver.d.ts.map +1 -1
  107. package/dist/core/model-resolver.js +2 -1
  108. package/dist/core/model-resolver.js.map +1 -1
  109. package/dist/core/prompt-preset.d.ts +1 -1
  110. package/dist/core/prompt-preset.d.ts.map +1 -1
  111. package/dist/core/prompt-preset.js +16 -1
  112. package/dist/core/prompt-preset.js.map +1 -1
  113. package/dist/core/prompt-settlement.d.ts +4 -3
  114. package/dist/core/prompt-settlement.d.ts.map +1 -1
  115. package/dist/core/prompt-settlement.js.map +1 -1
  116. package/dist/core/provider-display-names.d.ts.map +1 -1
  117. package/dist/core/provider-display-names.js +1 -0
  118. package/dist/core/provider-display-names.js.map +1 -1
  119. package/dist/core/provider-resilience.d.ts +8 -0
  120. package/dist/core/provider-resilience.d.ts.map +1 -1
  121. package/dist/core/provider-resilience.js +20 -3
  122. package/dist/core/provider-resilience.js.map +1 -1
  123. package/dist/core/provider-usage-types.d.ts +42 -0
  124. package/dist/core/provider-usage-types.d.ts.map +1 -0
  125. package/dist/core/provider-usage-types.js +2 -0
  126. package/dist/core/provider-usage-types.js.map +1 -0
  127. package/dist/core/provider-usage.d.ts +2 -31
  128. package/dist/core/provider-usage.d.ts.map +1 -1
  129. package/dist/core/provider-usage.js +4 -0
  130. package/dist/core/provider-usage.js.map +1 -1
  131. package/dist/core/redaction.d.ts.map +1 -1
  132. package/dist/core/redaction.js +18 -2
  133. package/dist/core/redaction.js.map +1 -1
  134. package/dist/core/run-budget-policy.d.ts +18 -0
  135. package/dist/core/run-budget-policy.d.ts.map +1 -0
  136. package/dist/core/run-budget-policy.js +52 -0
  137. package/dist/core/run-budget-policy.js.map +1 -0
  138. package/dist/core/run-budget.d.ts +33 -0
  139. package/dist/core/run-budget.d.ts.map +1 -0
  140. package/dist/core/run-budget.js +89 -0
  141. package/dist/core/run-budget.js.map +1 -0
  142. package/dist/core/run-execution-api.d.ts +15 -0
  143. package/dist/core/run-execution-api.d.ts.map +1 -0
  144. package/dist/core/run-execution-api.js +7 -0
  145. package/dist/core/run-execution-api.js.map +1 -0
  146. package/dist/core/run-journal.d.ts.map +1 -1
  147. package/dist/core/run-journal.js +30 -208
  148. package/dist/core/run-journal.js.map +1 -1
  149. package/dist/core/sandbox/policy-merge.d.ts +6 -0
  150. package/dist/core/sandbox/policy-merge.d.ts.map +1 -0
  151. package/dist/core/sandbox/policy-merge.js +74 -0
  152. package/dist/core/sandbox/policy-merge.js.map +1 -0
  153. package/dist/core/sandbox/policy-paths.d.ts +4 -0
  154. package/dist/core/sandbox/policy-paths.d.ts.map +1 -0
  155. package/dist/core/sandbox/policy-paths.js +21 -0
  156. package/dist/core/sandbox/policy-paths.js.map +1 -0
  157. package/dist/core/sandbox/policy-types.d.ts +75 -0
  158. package/dist/core/sandbox/policy-types.d.ts.map +1 -0
  159. package/dist/core/sandbox/policy-types.js +2 -0
  160. package/dist/core/sandbox/policy-types.js.map +1 -0
  161. package/dist/core/sandbox/policy.d.ts +3 -77
  162. package/dist/core/sandbox/policy.d.ts.map +1 -1
  163. package/dist/core/sandbox/policy.js +3 -98
  164. package/dist/core/sandbox/policy.js.map +1 -1
  165. package/dist/core/sdk-provider-stream.d.ts +14 -0
  166. package/dist/core/sdk-provider-stream.d.ts.map +1 -0
  167. package/dist/core/sdk-provider-stream.js +38 -0
  168. package/dist/core/sdk-provider-stream.js.map +1 -0
  169. package/dist/core/sdk.d.ts +5 -1
  170. package/dist/core/sdk.d.ts.map +1 -1
  171. package/dist/core/sdk.js +17 -33
  172. package/dist/core/sdk.js.map +1 -1
  173. package/dist/core/session-bash-service.d.ts +2 -2
  174. package/dist/core/session-bash-service.d.ts.map +1 -1
  175. package/dist/core/session-bash-service.js +21 -9
  176. package/dist/core/session-bash-service.js.map +1 -1
  177. package/dist/core/session-failure-cause.d.ts.map +1 -1
  178. package/dist/core/session-failure-cause.js +15 -3
  179. package/dist/core/session-failure-cause.js.map +1 -1
  180. package/dist/core/session-prompt-lifecycle.d.ts +25 -0
  181. package/dist/core/session-prompt-lifecycle.d.ts.map +1 -0
  182. package/dist/core/session-prompt-lifecycle.js +87 -0
  183. package/dist/core/session-prompt-lifecycle.js.map +1 -0
  184. package/dist/core/session-run-budget.d.ts +28 -0
  185. package/dist/core/session-run-budget.d.ts.map +1 -0
  186. package/dist/core/session-run-budget.js +127 -0
  187. package/dist/core/session-run-budget.js.map +1 -0
  188. package/dist/core/session-run-termination.d.ts +18 -0
  189. package/dist/core/session-run-termination.d.ts.map +1 -0
  190. package/dist/core/session-run-termination.js +72 -0
  191. package/dist/core/session-run-termination.js.map +1 -0
  192. package/dist/core/session-termination-types.d.ts +97 -0
  193. package/dist/core/session-termination-types.d.ts.map +1 -0
  194. package/dist/core/session-termination-types.js +26 -0
  195. package/dist/core/session-termination-types.js.map +1 -0
  196. package/dist/core/session-termination.d.ts +3 -97
  197. package/dist/core/session-termination.d.ts.map +1 -1
  198. package/dist/core/session-termination.js +25 -29
  199. package/dist/core/session-termination.js.map +1 -1
  200. package/dist/core/skill-selector.d.ts +40 -0
  201. package/dist/core/skill-selector.d.ts.map +1 -0
  202. package/dist/core/skill-selector.js +102 -0
  203. package/dist/core/skill-selector.js.map +1 -0
  204. package/dist/core/slash-commands.d.ts.map +1 -1
  205. package/dist/core/slash-commands.js +1 -0
  206. package/dist/core/slash-commands.js.map +1 -1
  207. package/dist/core/subagent-lane-launcher.d.ts +3 -2
  208. package/dist/core/subagent-lane-launcher.d.ts.map +1 -1
  209. package/dist/core/subagent-lane-launcher.js +24 -13
  210. package/dist/core/subagent-lane-launcher.js.map +1 -1
  211. package/dist/core/tools/render-utils.d.ts.map +1 -1
  212. package/dist/core/tools/render-utils.js +2 -4
  213. package/dist/core/tools/render-utils.js.map +1 -1
  214. package/dist/core/turn-metrics-record.d.ts +55 -0
  215. package/dist/core/turn-metrics-record.d.ts.map +1 -0
  216. package/dist/core/turn-metrics-record.js +149 -0
  217. package/dist/core/turn-metrics-record.js.map +1 -0
  218. package/dist/core/turn-metrics.d.ts +4 -56
  219. package/dist/core/turn-metrics.d.ts.map +1 -1
  220. package/dist/core/turn-metrics.js +12 -60
  221. package/dist/core/turn-metrics.js.map +1 -1
  222. package/dist/core/verified-run/broker.d.ts +26 -0
  223. package/dist/core/verified-run/broker.d.ts.map +1 -0
  224. package/dist/core/verified-run/broker.js +210 -0
  225. package/dist/core/verified-run/broker.js.map +1 -0
  226. package/dist/core/verified-run/candidate.d.ts +24 -0
  227. package/dist/core/verified-run/candidate.d.ts.map +1 -0
  228. package/dist/core/verified-run/candidate.js +167 -0
  229. package/dist/core/verified-run/candidate.js.map +1 -0
  230. package/dist/core/verified-run/check-receipt.d.ts +18 -0
  231. package/dist/core/verified-run/check-receipt.d.ts.map +1 -0
  232. package/dist/core/verified-run/check-receipt.js +92 -0
  233. package/dist/core/verified-run/check-receipt.js.map +1 -0
  234. package/dist/core/verified-run/coordinator.d.ts +39 -0
  235. package/dist/core/verified-run/coordinator.d.ts.map +1 -0
  236. package/dist/core/verified-run/coordinator.js +190 -0
  237. package/dist/core/verified-run/coordinator.js.map +1 -0
  238. package/dist/core/verified-run/dag-candidates.d.ts +8 -0
  239. package/dist/core/verified-run/dag-candidates.d.ts.map +1 -0
  240. package/dist/core/verified-run/dag-candidates.js +65 -0
  241. package/dist/core/verified-run/dag-candidates.js.map +1 -0
  242. package/dist/core/verified-run/dag-phase.d.ts +7 -0
  243. package/dist/core/verified-run/dag-phase.d.ts.map +1 -0
  244. package/dist/core/verified-run/dag-phase.js +92 -0
  245. package/dist/core/verified-run/dag-phase.js.map +1 -0
  246. package/dist/core/verified-run/dag-projection.d.ts +7 -0
  247. package/dist/core/verified-run/dag-projection.d.ts.map +1 -0
  248. package/dist/core/verified-run/dag-projection.js +90 -0
  249. package/dist/core/verified-run/dag-projection.js.map +1 -0
  250. package/dist/core/verified-run/dag-recovery.d.ts +13 -0
  251. package/dist/core/verified-run/dag-recovery.d.ts.map +1 -0
  252. package/dist/core/verified-run/dag-recovery.js +98 -0
  253. package/dist/core/verified-run/dag-recovery.js.map +1 -0
  254. package/dist/core/verified-run/dag-retry-projection.d.ts +9 -0
  255. package/dist/core/verified-run/dag-retry-projection.d.ts.map +1 -0
  256. package/dist/core/verified-run/dag-retry-projection.js +43 -0
  257. package/dist/core/verified-run/dag-retry-projection.js.map +1 -0
  258. package/dist/core/verified-run/dag-types.d.ts +47 -0
  259. package/dist/core/verified-run/dag-types.d.ts.map +1 -0
  260. package/dist/core/verified-run/dag-types.js +2 -0
  261. package/dist/core/verified-run/dag-types.js.map +1 -0
  262. package/dist/core/verified-run/event-parser.d.ts +3 -0
  263. package/dist/core/verified-run/event-parser.d.ts.map +1 -0
  264. package/dist/core/verified-run/event-parser.js +153 -0
  265. package/dist/core/verified-run/event-parser.js.map +1 -0
  266. package/dist/core/verified-run/events.d.ts +4 -0
  267. package/dist/core/verified-run/events.d.ts.map +1 -0
  268. package/dist/core/verified-run/events.js +3 -0
  269. package/dist/core/verified-run/events.js.map +1 -0
  270. package/dist/core/verified-run/evidence-binding.d.ts +18 -0
  271. package/dist/core/verified-run/evidence-binding.d.ts.map +1 -0
  272. package/dist/core/verified-run/evidence-binding.js +81 -0
  273. package/dist/core/verified-run/evidence-binding.js.map +1 -0
  274. package/dist/core/verified-run/evidence.d.ts +27 -0
  275. package/dist/core/verified-run/evidence.d.ts.map +1 -0
  276. package/dist/core/verified-run/evidence.js +100 -0
  277. package/dist/core/verified-run/evidence.js.map +1 -0
  278. package/dist/core/verified-run/journal.d.ts +32 -0
  279. package/dist/core/verified-run/journal.d.ts.map +1 -0
  280. package/dist/core/verified-run/journal.js +103 -0
  281. package/dist/core/verified-run/journal.js.map +1 -0
  282. package/dist/core/verified-run/namespace-identity.d.ts +11 -0
  283. package/dist/core/verified-run/namespace-identity.d.ts.map +1 -0
  284. package/dist/core/verified-run/namespace-identity.js +77 -0
  285. package/dist/core/verified-run/namespace-identity.js.map +1 -0
  286. package/dist/core/verified-run/owned-execution.d.ts +21 -0
  287. package/dist/core/verified-run/owned-execution.d.ts.map +1 -0
  288. package/dist/core/verified-run/owned-execution.js +43 -0
  289. package/dist/core/verified-run/owned-execution.js.map +1 -0
  290. package/dist/core/verified-run/phase-context.d.ts +9 -0
  291. package/dist/core/verified-run/phase-context.d.ts.map +1 -0
  292. package/dist/core/verified-run/phase-context.js +2 -0
  293. package/dist/core/verified-run/phase-context.js.map +1 -0
  294. package/dist/core/verified-run/process-gate.d.ts +5 -0
  295. package/dist/core/verified-run/process-gate.d.ts.map +1 -0
  296. package/dist/core/verified-run/process-gate.js +31 -0
  297. package/dist/core/verified-run/process-gate.js.map +1 -0
  298. package/dist/core/verified-run/projection.d.ts +4 -0
  299. package/dist/core/verified-run/projection.d.ts.map +1 -0
  300. package/dist/core/verified-run/projection.js +219 -0
  301. package/dist/core/verified-run/projection.js.map +1 -0
  302. package/dist/core/verified-run/recovery-clock.d.ts +19 -0
  303. package/dist/core/verified-run/recovery-clock.d.ts.map +1 -0
  304. package/dist/core/verified-run/recovery-clock.js +69 -0
  305. package/dist/core/verified-run/recovery-clock.js.map +1 -0
  306. package/dist/core/verified-run/recovery-command.d.ts +11 -0
  307. package/dist/core/verified-run/recovery-command.d.ts.map +1 -0
  308. package/dist/core/verified-run/recovery-command.js +73 -0
  309. package/dist/core/verified-run/recovery-command.js.map +1 -0
  310. package/dist/core/verified-run/recovery-projection.d.ts +12 -0
  311. package/dist/core/verified-run/recovery-projection.d.ts.map +1 -0
  312. package/dist/core/verified-run/recovery-projection.js +88 -0
  313. package/dist/core/verified-run/recovery-projection.js.map +1 -0
  314. package/dist/core/verified-run/recovery.d.ts +12 -0
  315. package/dist/core/verified-run/recovery.d.ts.map +1 -0
  316. package/dist/core/verified-run/recovery.js +115 -0
  317. package/dist/core/verified-run/recovery.js.map +1 -0
  318. package/dist/core/verified-run/run-types.d.ts +103 -0
  319. package/dist/core/verified-run/run-types.d.ts.map +1 -0
  320. package/dist/core/verified-run/run-types.js +2 -0
  321. package/dist/core/verified-run/run-types.js.map +1 -0
  322. package/dist/core/verified-run/scripted-writer.d.ts +15 -0
  323. package/dist/core/verified-run/scripted-writer.d.ts.map +1 -0
  324. package/dist/core/verified-run/scripted-writer.js +94 -0
  325. package/dist/core/verified-run/scripted-writer.js.map +1 -0
  326. package/dist/core/verified-run/session-port.d.ts +27 -0
  327. package/dist/core/verified-run/session-port.d.ts.map +1 -0
  328. package/dist/core/verified-run/session-port.js +2 -0
  329. package/dist/core/verified-run/session-port.js.map +1 -0
  330. package/dist/core/verified-run/storage.d.ts +15 -0
  331. package/dist/core/verified-run/storage.d.ts.map +1 -0
  332. package/dist/core/verified-run/storage.js +96 -0
  333. package/dist/core/verified-run/storage.js.map +1 -0
  334. package/dist/core/verified-run/verification-phase.d.ts +5 -0
  335. package/dist/core/verified-run/verification-phase.d.ts.map +1 -0
  336. package/dist/core/verified-run/verification-phase.js +56 -0
  337. package/dist/core/verified-run/verification-phase.js.map +1 -0
  338. package/dist/core/verified-run/work-recovery.d.ts +8 -0
  339. package/dist/core/verified-run/work-recovery.d.ts.map +1 -0
  340. package/dist/core/verified-run/work-recovery.js +44 -0
  341. package/dist/core/verified-run/work-recovery.js.map +1 -0
  342. package/dist/core/verified-run/writer-completion.d.ts +4 -0
  343. package/dist/core/verified-run/writer-completion.d.ts.map +1 -0
  344. package/dist/core/verified-run/writer-completion.js +27 -0
  345. package/dist/core/verified-run/writer-completion.js.map +1 -0
  346. package/dist/core/verified-run/writer-phase.d.ts +8 -0
  347. package/dist/core/verified-run/writer-phase.d.ts.map +1 -0
  348. package/dist/core/verified-run/writer-phase.js +76 -0
  349. package/dist/core/verified-run/writer-phase.js.map +1 -0
  350. package/dist/core/verified-run/writer-projection.d.ts +11 -0
  351. package/dist/core/verified-run/writer-projection.d.ts.map +1 -0
  352. package/dist/core/verified-run/writer-projection.js +70 -0
  353. package/dist/core/verified-run/writer-projection.js.map +1 -0
  354. package/dist/core/verified-run/writer-recovery.d.ts +16 -0
  355. package/dist/core/verified-run/writer-recovery.d.ts.map +1 -0
  356. package/dist/core/verified-run/writer-recovery.js +107 -0
  357. package/dist/core/verified-run/writer-recovery.js.map +1 -0
  358. package/dist/core/workload-permit-pool.d.ts +1 -3
  359. package/dist/core/workload-permit-pool.d.ts.map +1 -1
  360. package/dist/core/workload-permit-pool.js +11 -11
  361. package/dist/core/workload-permit-pool.js.map +1 -1
  362. package/dist/guardrails/evidence-system.d.ts +1 -1
  363. package/dist/guardrails/evidence-system.d.ts.map +1 -1
  364. package/dist/guardrails/evidence-system.js +18 -29
  365. package/dist/guardrails/evidence-system.js.map +1 -1
  366. package/dist/guardrails/merge-gate-result.d.ts +4 -0
  367. package/dist/guardrails/merge-gate-result.d.ts.map +1 -0
  368. package/dist/guardrails/merge-gate-result.js +32 -0
  369. package/dist/guardrails/merge-gate-result.js.map +1 -0
  370. package/dist/index.d.ts +3 -2
  371. package/dist/index.d.ts.map +1 -1
  372. package/dist/index.js +2 -2
  373. package/dist/index.js.map +1 -1
  374. package/dist/main.d.ts.map +1 -1
  375. package/dist/main.js +17 -23
  376. package/dist/main.js.map +1 -1
  377. package/dist/modes/interactive/components/session-failure.d.ts +13 -0
  378. package/dist/modes/interactive/components/session-failure.d.ts.map +1 -0
  379. package/dist/modes/interactive/components/session-failure.js +81 -0
  380. package/dist/modes/interactive/components/session-failure.js.map +1 -0
  381. package/dist/modes/interactive/interactive-login-options.d.ts +27 -0
  382. package/dist/modes/interactive/interactive-login-options.d.ts.map +1 -0
  383. package/dist/modes/interactive/interactive-login-options.js +54 -0
  384. package/dist/modes/interactive/interactive-login-options.js.map +1 -0
  385. package/dist/modes/interactive/interactive-mode.d.ts +8 -4
  386. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  387. package/dist/modes/interactive/interactive-mode.js +183 -171
  388. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  389. package/dist/modes/interactive/interactive-resume-command.d.ts +3 -0
  390. package/dist/modes/interactive/interactive-resume-command.d.ts.map +1 -0
  391. package/dist/modes/interactive/interactive-resume-command.js +24 -0
  392. package/dist/modes/interactive/interactive-resume-command.js.map +1 -0
  393. package/dist/modes/interactive/interactive-tool-result.d.ts +32 -0
  394. package/dist/modes/interactive/interactive-tool-result.d.ts.map +1 -0
  395. package/dist/modes/interactive/interactive-tool-result.js +59 -0
  396. package/dist/modes/interactive/interactive-tool-result.js.map +1 -0
  397. package/dist/modes/interactive/tui-diagnostics.d.ts +36 -0
  398. package/dist/modes/interactive/tui-diagnostics.d.ts.map +1 -0
  399. package/dist/modes/interactive/tui-diagnostics.js +105 -0
  400. package/dist/modes/interactive/tui-diagnostics.js.map +1 -0
  401. package/dist/modes/interactive/tui-runtime-info.d.ts +20 -0
  402. package/dist/modes/interactive/tui-runtime-info.d.ts.map +1 -0
  403. package/dist/modes/interactive/tui-runtime-info.js +76 -0
  404. package/dist/modes/interactive/tui-runtime-info.js.map +1 -0
  405. package/dist/modes/print-mode.d.ts.map +1 -1
  406. package/dist/modes/print-mode.js +22 -0
  407. package/dist/modes/print-mode.js.map +1 -1
  408. package/dist/utils/clipboard-image.d.ts.map +1 -1
  409. package/dist/utils/clipboard-image.js +10 -60
  410. package/dist/utils/clipboard-image.js.map +1 -1
  411. package/dist/utils/terminal-links.d.ts +13 -0
  412. package/dist/utils/terminal-links.d.ts.map +1 -0
  413. package/dist/utils/terminal-links.js +68 -0
  414. package/dist/utils/terminal-links.js.map +1 -0
  415. package/dist/utils/windows-clipboard-image.d.ts +16 -0
  416. package/dist/utils/windows-clipboard-image.d.ts.map +1 -0
  417. package/dist/utils/windows-clipboard-image.js +87 -0
  418. package/dist/utils/windows-clipboard-image.js.map +1 -0
  419. package/docs/adaptorch-onboarding.md +80 -0
  420. package/docs/containerization.md +12 -0
  421. package/docs/context-files.md +97 -0
  422. package/docs/correctness-wall.md +8 -0
  423. package/docs/custom-provider.md +35 -0
  424. package/docs/development.md +28 -3
  425. package/docs/environment-variables.md +2 -0
  426. package/docs/grok-harness.md +4 -0
  427. package/docs/harness-boundaries.md +154 -0
  428. package/docs/harness-improvements.md +90 -0
  429. package/docs/json.md +19 -0
  430. package/docs/keybindings.md +2 -2
  431. package/docs/mcp.md +22 -2
  432. package/docs/metrics.md +66 -16
  433. package/docs/model-catalog-refresh.md +190 -0
  434. package/docs/model-contract.md +168 -0
  435. package/docs/models.md +21 -4
  436. package/docs/provider-resilience.md +5 -3
  437. package/docs/providers.md +68 -1
  438. package/docs/quickstart.md +4 -0
  439. package/docs/release-audit-0.98.4.md +112 -0
  440. package/docs/release-audit-0.98.5.md +84 -0
  441. package/docs/review-bundle-followup.md +195 -0
  442. package/docs/run-protocol.md +33 -1
  443. package/docs/runtime-algorithms.md +45 -0
  444. package/docs/sdk.md +204 -2
  445. package/docs/sessions.md +1 -1
  446. package/docs/settings.md +17 -1
  447. package/docs/skills.md +2 -0
  448. package/docs/tb21-audit.md +131 -0
  449. package/docs/terminal-setup.md +20 -0
  450. package/docs/usage.md +77 -1
  451. package/docs/verified-run-testing.md +417 -0
  452. package/docs/verified-run.md +388 -0
  453. package/docs/windows.md +48 -0
  454. package/examples/README.md +4 -0
  455. package/examples/context/AGENTS.md +64 -0
  456. package/examples/context/CLAUDE.md +17 -0
  457. package/examples/context/INTERNET.md +42 -0
  458. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  459. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  460. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  461. package/examples/extensions/gondolin/package-lock.json +2 -2
  462. package/examples/extensions/gondolin/package.json +1 -1
  463. package/examples/extensions/sandbox/package-lock.json +2 -2
  464. package/examples/extensions/sandbox/package.json +1 -1
  465. package/examples/extensions/with-deps/package-lock.json +2 -2
  466. package/examples/extensions/with-deps/package.json +1 -1
  467. package/npm-shrinkwrap.json +18 -18
  468. package/package.json +6 -6
@@ -0,0 +1,417 @@
1
+ # Verified Run: 단계별 TDD 증거
2
+
3
+ 검증일: 2026-09-11. 1차 명령형 실행, 2차 오프라인 AgentSession·native v3 receipt에 이어
4
+ 3차에서 고정 candidate 이후의 복구를 연결했습니다. [지원 profile](verified-run.md)의
5
+ 검증이며 S90 전체 gate, 실서비스 모델, writer 재개, DAG, TUI/RPC, 적용 승인 검증은 아닙니다.
6
+
7
+ ## 1차 RED → GREEN
8
+
9
+ | 단위 | RED 관측 | GREEN 근거 |
10
+ | --- | --- | --- |
11
+ | 계약 parser | 기존 protocol export에 parser가 없어 두 정상 사례 실패 | `run-contract.test.ts`: 29개 통과 |
12
+ | Coordinator 경로 | 기존 SDK export에 Coordinator/plan 경로가 없어 14개 실패 | `verified-run.test.ts`: 정상 실행·거부 경로 통과 |
13
+ | 실제 CLI | `run`이 일반 인수 처리로 넘어가고 `--contract` 등을 거부 | `verified-run-cli.test.ts`: 실제 별도 CLI process로 4개 통과 |
14
+ | 파일명 identity | UTF-8 BOM 이름이 일반 이름과 합쳐짐 | `ignoreBOM: true`로 원래 이름 보존, 회귀 통과 |
15
+ | directory mode | 지원하지 않는 `0700`을 묵시적으로 정규화 | `0755` 외 mode 거부, 회귀 통과 |
16
+ | dispatch 기한 | 원장 append 사이 기한이 지났는데 writer가 파일 생성 | append 뒤 남은 기한 재확인, 미실행 회귀 통과 |
17
+
18
+ 검증 후 blob 길이가 달라진 경우 처음에는 `storage_limit`으로 거부했습니다.
19
+ 저장된 blob의 손상은 `integrity`로 분류하도록 고쳤습니다.
20
+
21
+ ## 1차 실행한 검사
22
+
23
+ 저장소 root에서 아래처럼 package 작업 디렉터리를 명시합니다.
24
+
25
+ ```bash
26
+ (cd packages/protocol && node ../../node_modules/vitest/dist/cli.js --run test/run-contract.test.ts)
27
+ (cd packages/coding-agent && node ../../node_modules/vitest/dist/cli.js --run \
28
+ test/verified-run.test.ts test/verified-run-cli.test.ts \
29
+ test/verified-run-candidate.test.ts test/verified-run-journal.test.ts \
30
+ test/verified-run-broker.test.ts test/run-journal-store.test.ts test/run-journal.test.ts)
31
+ npm run check
32
+ ```
33
+
34
+ | 검사 | 실제 결과 |
35
+ | --- | --- |
36
+ | protocol 계약 | 29개 통과, exit 0 |
37
+ | coding-agent 집중 검사 + 기존 v1 원장 회귀 | 7개 파일, 123개 통과, exit 0 |
38
+ | 변경한 TypeScript 17개 파일의 primary LSP | diagnostics 0 |
39
+ | `npm run check` | exit 1: 새 문서가 Git index에 없어 tracked 문서의 링크 검사에서 중단 |
40
+ | 후속 gate + workspace `tsgo --noEmit` + browser smoke | 별도 실행, exit 0 |
41
+ | `git diff --check` | exit 0 |
42
+ | `lens_diagnostics(mode=all, severity=error)` | 오류 0 |
43
+
44
+ 전체 검사의 Biome·의존성·순환·module-size·constitution·release consistency 검사는
45
+ 문서 링크 검사 전까지 통과했습니다. 새 문서 참조를 숨기거나 승인 없이 stage해서
46
+ 검사를 우회하지 않았습니다. index에 변경을 반영할 권한을 받은 뒤 전체 검사를 다시
47
+ 실행해야 합니다. 기존 compaction 모듈의 Biome info 11개는 이번 변경과 무관합니다.
48
+
49
+ 중단 지점 뒤의 검사는 다음 명령으로 별도 확인했습니다.
50
+
51
+ ```bash
52
+ npm run check:openwiki && npm run check:feature-claims && npm run check:private-home && \
53
+ npm run check:release-surface && npm run check:shrinkwrap && \
54
+ node node_modules/@typescript/native-preview/bin/tsgo.js --noEmit && npm run check:browser-smoke
55
+ ```
56
+
57
+ root에서 package config만 지정했던 첫 Vitest 호출은 `test/setup-env.ts`를 root에서
58
+ 찾아 실행 전에 실패했습니다. 소스를 우회하지 않고 프로젝트 지침대로 package
59
+ 디렉터리에서 같은 파일들을 실행했습니다. 이 실패를 테스트 통과로 세지 않았습니다.
60
+
61
+ ## 통과한 동작과 한계
62
+
63
+ | 동작 | 테스트 |
64
+ | --- | --- |
65
+ | 계약 snapshot 불변성·unknown authority·잘못된 ID/경로/budget 거부 | `packages/protocol/test/run-contract.test.ts` |
66
+ | 실제 bwrap writer→고정 candidate→읽기 전용 verifier→수락 | `test/verified-run.test.ts` |
67
+ | 원본 보존, 범위 밖 변경·가짜 verified 텍스트·키/receipt/blob 손상 거부 | `test/verified-run.test.ts` |
68
+ | 시간·output 초과, dispatch 의도 기록 후 기한 재검사 | `test/verified-run.test.ts` |
69
+ | 실제 자식의 시작 출력 확인 후 timeout/close, foreign process 보존, background 자손 종료 | `test/verified-run-broker.test.ts` |
70
+ | append 실패 시 상태 미승격·store 폐쇄, live/released owner, stale head | `test/verified-run-journal.test.ts` |
71
+ | 중복·foreign completion 거부, unsettled 예약 보존, torn/legacy 손상 거부 | `test/verified-run-journal.test.ts` |
72
+ | mode·삭제·binary·empty·BOM 이름 binding, 링크/부분 scope 거부 | `test/verified-run-candidate.test.ts` |
73
+ | 실제 CLI/SDK 상태 일치, 별도 process inspect, 원본 artifact base64 회수 | `test/verified-run-cli.test.ts` |
74
+ | 기존 v1 RunJournal/RunJournalStore 의미 유지 | `test/run-journal.test.ts`, `test/run-journal-store.test.ts` |
75
+
76
+ 추가로 필요한 검증: supervisor 강제 종료의 모든 crash window, PID 재사용,
77
+ cgroup hard limit, reboot/boot-relative 예산 복원, 실서비스 provider 연결,
78
+ 동시 DAG, 적용 nonce/base CAS, 모든 UI의 공통 제어입니다.
79
+
80
+ 전체 coverage 비율은 측정하지 않았습니다. 실제 코딩 성능·경쟁 엔진 비교·유료 모델
81
+ 호출·배포 검사는 실행하지 않았습니다. 새 파일은 250 pure-LOC 한도 안에 두었고,
82
+ 기존 사용자 변경은 검증 대상 변경에 섞어 고치지 않았습니다. 커밋·push·PR은 수행하지
83
+ 않았습니다.
84
+
85
+ ## 2차: AgentSession·native v3 연결
86
+
87
+ - native v3 필드가 없어 5개 테스트가 실패한 상태에서 시작했습니다. 실제 검사 결과를
88
+ `createEvidenceReceipt()`로 보존하고 supervisor attestation v2에 core digest를 연결했습니다.
89
+ - 유효한 core에 mutable `ledgerBinding`을 주입해도 통과하던 사례를 재현했습니다.
90
+ 이 경로에서는 발급하지 않은 envelope authority metadata를 거부하도록 고쳤습니다.
91
+ - 처음 redaction fixture는 기존 redactor의 계약 밖인 bare `Bearer` 문자열이었습니다.
92
+ 지원하는 `Authorization: Bearer` fixture로 바로잡았고, 기존 redactor를 약화하지 않았습니다.
93
+ - scripted profile이 거부되던 상태에서 실제 `AgentSession`과 기존 Faux adapter를 연결했습니다.
94
+ producer가 열린 동안 candidate 고정·정산을 거부하고, 요청 cap·실패 latch를 공유합니다.
95
+ - 직접 `AgentSession` import로 새 모듈 5개가 순환에 들어갔습니다. session port와 기존
96
+ `agent-session-services.ts` 조립 경계로 의존성을 역전하여 baseline 변경 없이 해소했습니다.
97
+ - `main.ts`가 기존 크기 baseline을 한 줄 넘었습니다. 인접 provider-sync 분기를 같은
98
+ 순서로 command router에 옮겼습니다. 빠진 router 분기 테스트의 RED→GREEN을 확인했고,
99
+ baseline을 올리거나 줄을 합쳐 검사를 속이지 않았습니다.
100
+ - 배열형 `it.each` fixture의 원소가 callback 인수로 펼쳐지는 타입 오류도 발견했습니다.
101
+ `{steps}` 객체 행으로 바꾸어 실제 17-step 상한과 상대 executable을 검사합니다.
102
+
103
+ 최종 재실행 명령:
104
+
105
+ ```bash
106
+ (cd packages/protocol && node ../../node_modules/vitest/dist/cli.js --run \
107
+ test/run-contract.test.ts test/run-scripted-contract.test.ts)
108
+ (cd packages/coding-agent && node ../../node_modules/vitest/dist/cli.js --run --maxWorkers=2 \
109
+ test/verified-run.test.ts test/verified-run-cli.test.ts \
110
+ test/verified-run-candidate.test.ts test/verified-run-journal.test.ts \
111
+ test/verified-run-broker.test.ts test/verified-run-v3.test.ts \
112
+ test/verified-run-agent.test.ts test/verified-run-agent-events.test.ts \
113
+ test/run-journal-store.test.ts test/run-journal.test.ts \
114
+ test/verified-executor.test.ts test/evidence-receipt.test.ts)
115
+ ```
116
+
117
+ | 검사 | 2차 최종 결과 |
118
+ | --- | --- |
119
+ | protocol | 2개 파일, 40개 통과, exit 0 |
120
+ | coding-agent + 기존 원장/receipt 회귀 | 12개 파일, 188개 통과, exit 0 |
121
+ | primary LSP | 21개 파일, diagnostics 0 |
122
+ | workspace `tsgo --noEmit` | exit 0 |
123
+ | import-cycle / module-size | exit 0, baseline 변경 없음 |
124
+ | `npm run check` | exit 1, 동일한 미추적 문서 링크 차단 |
125
+ | 차단 지점 이후 나머지 gate·browser smoke·diff whitespace | 별도 실행, exit 0 |
126
+
127
+ 위 228개는 앞의 1차 테스트와 회귀를 포함한 최종 집합이며 두 표의 수를 더하지 않습니다.
128
+ 실제 CLI process에서 두 profile의 start→inspect→artifact를 실행했습니다. 성공 출력만
129
+ 남긴 모델 문구는 실패한 명령을 승격하지 못합니다. 서로 다른 run의 Faux adapter도
130
+ 섞이지 않습니다. 기존 v1 attestation은 `legacy`로 읽고 다시 쓰거나 v3로 승격하지 않습니다.
131
+
132
+ 추가/확장 테스트: `run-scripted-contract.test.ts`, `verified-run-v3.test.ts`,
133
+ `verified-run-agent.test.ts`, `verified-run-agent-events.test.ts`, `verified-run-cli.test.ts`.
134
+ 자체 검토에서는 credential/리소스 discovery, 원장 실패 후 dispatch, 열린 producer의
135
+ 조기 정산, mutable native envelope, 종료 메시지로 실패를 숨기는 경계를 확인했습니다.
136
+ 신규 모듈 최대 크기는 244 pure LOC입니다. Coordinator와 event reducer는 다음 확장 전
137
+ 책임별 분리가 필요한 200–250 LOC 구간입니다.
138
+
139
+ ## 3차: 고정 candidate 이후 복구
140
+
141
+ 범위는 **writer·모델을 재실행하지 않는 검증 재개**입니다. budget/namespace 정보를
142
+ 이미 기록한 새 run만 재개할 수 있습니다. 원장과 key·기존 산출물은 유지하고 새로운
143
+ generation에서 같은 candidate를 다시 검사합니다.
144
+
145
+ | 단위 | 실패 관측과 수정 |
146
+ | --- | --- |
147
+ | resume parser/SDK | parser와 `resume()`이 없어 RED. exact ref·candidate binding으로 구현 |
148
+ | CLI 재개 | 실제 SIGKILL 이후 `run resume`이 usage error로 RED. `--execute` 요구 경로 연결 |
149
+ | reboot 진단 | boot가 다른데 uptime도 작으면 `clock_rollback`으로 오분류. boot 비교를 먼저 적용 |
150
+ | 원장 실패 | append 전 실패·bytes가 남은 indeterminate 실패를 주입. 둘 다 새 검사 dispatch 없음 |
151
+ | 시계 혼용 | wall reference와 서로 다른 종료 wall clock을 읽어 종료가 시작보다 앞서는 사례 재현 |
152
+ | 구형 호환 fixture | 새 budget/gate metadata와 구형 환경 hash를 섞은 fixture가 실패. 실제 구형 원장 모양으로 재구성 |
153
+
154
+ 시계 문제는 host clock 변화, test clock 누출, 두 clock의 혼용을 구분해 조사했습니다.
155
+ 실제 host의 NTP/VM 변화가 원인이었다고 단정하지 않습니다. Date만 뒤로 이동시키는
156
+ fault injection에서 안정 대조군은 통과했고, 역행 사례는
157
+ `1577836800000 < 1767225600000`으로 실패했습니다. 종료 표시를 시작 wall reference +
158
+ 단조 경과시간으로 투영한 뒤 두 경우가 모두 통과했습니다. 실제 재개 예산은 별도의
159
+ boot-relative 기한으로 판정합니다. fake clock은 테스트 종료 때 복구합니다.
160
+
161
+ 최종 검사 명령:
162
+
163
+ ```bash
164
+ (cd packages/protocol && node ../../node_modules/vitest/dist/cli.js --run \
165
+ test/run-contract.test.ts test/run-scripted-contract.test.ts test/run-resume.test.ts)
166
+ (cd packages/coding-agent && node ../../node_modules/vitest/dist/cli.js --run --maxWorkers=2 \
167
+ test/verified-run.test.ts test/verified-run-cli.test.ts \
168
+ test/verified-run-candidate.test.ts test/verified-run-journal.test.ts \
169
+ test/verified-run-broker.test.ts test/verified-run-v3.test.ts \
170
+ test/verified-run-agent.test.ts test/verified-run-agent-events.test.ts \
171
+ test/verified-run-resume.test.ts test/verified-run-gate.test.ts \
172
+ test/verified-run-clock.test.ts test/verified-run-crash.test.ts \
173
+ test/run-journal-store.test.ts test/run-journal.test.ts \
174
+ test/verified-executor.test.ts test/evidence-receipt.test.ts)
175
+ npm run check
176
+ ```
177
+
178
+ | 검사 | 3차 최종 결과 |
179
+ | --- | --- |
180
+ | protocol | 3개 파일, 52개 통과, exit 0 |
181
+ | coding-agent·기존 회귀 | 16개 파일, 216개 통과, exit 0 |
182
+ | primary LSP | 최초 1개 timeout, 재확인 후 24개 파일 clean |
183
+ | workspace `tsgo --noEmit`·import-cycle·module-size | exit 0, baseline 변경 없음 |
184
+ | `npm run check` | exit 1: 동일한 미추적 문서 링크 차단 |
185
+ | 이후 gate·browser smoke·`git diff --check` | 별도 실행, exit 0 |
186
+
187
+ 최종 268개는 이전 단계 테스트를 포함합니다. 새 검증은 다음을 확인합니다.
188
+
189
+ - bwrap private info FD에서 namespace init을 확인한 뒤에만 gate 해제. ready 기록 실패·늦은 callback·취소 시 명령 미실행.
190
+ - 실제 CLI supervisor를 SIGKILL하고 CLI/SDK에서 같은 candidate 재개. modelRequests·원래 budget·검증 기한 보존.
191
+ - `inspect --recovery`는 원장을 변경하지 않으며 `--execute` 없는 재개는 거부.
192
+ - 만료·reboot·clock 역행·stale ref·다른 candidate·live owner·명령 ID 충돌 차단.
193
+ - 동일 resume 명령의 재실행 방지. generation 3 이후 추가 획득 차단.
194
+ - namespace identity 없는 dispatch와 중단된 writer는 미정산 상태를 유지. key를 잃으면 재생성하지 않음.
195
+
196
+ 강제 종료는 test가 만든 CLI에만 보냈습니다. 생성한 fixture와 자식 process는 테스트에서
197
+ 정리했습니다. 실제 reboot, 모든 crash window, writer 재실행, cgroup 제한, 실서비스 모델,
198
+ DAG·RPC/TUI·적용 승인/CAS는 여전히 미검증 또는 미구현입니다. 새 event/parser/phase 모듈로
199
+ 분리해 250 pure-LOC 한도를 유지했고, 기존 사용자 변경은 건드리지 않았습니다.
200
+
201
+ ## 커밋 체크포인트
202
+
203
+ 이번 단위의 변경 범위:
204
+
205
+ - `packages/protocol/src/run-contract.ts`, `src/index.ts`, `test/run-contract.test.ts`, `README.md`
206
+ - `packages/coding-agent/src/core/verified-run/{storage,candidate,events,journal,broker,evidence,coordinator}.ts`
207
+ - `packages/coding-agent/src/core/run-execution-api.ts`
208
+ - `packages/coding-agent/src/commands/{run-command,verified-run-cli}.ts`
209
+ - `packages/coding-agent/test/verified-run{,-broker,-candidate,-cli,-journal}.test.ts`
210
+ - `packages/coding-agent/vitest.config.ts`
211
+ - `packages/coding-agent/docs/{run-protocol,sdk,verified-run,verified-run-testing}.md`
212
+
213
+ 제안 메시지: `feat(runtime): 격리 명령형 Run Coordinator 연결`.
214
+ 1차 시점에는 stage·commit 허가가 없었습니다. 기존 다른 작업의 변경은 이 단위에 포함하지 않습니다.
215
+
216
+ 2차 추가 변경 범위:
217
+
218
+ - `packages/protocol/src/run-parsing.ts`, `src/run-contract.ts`, `src/index.ts`, `test/run-scripted-contract.test.ts`
219
+ - `packages/coding-agent/src/core/verified-run/{check-receipt,evidence-binding,owned-execution,scripted-writer,session-port}.ts`
220
+ - 같은 디렉터리의 `coordinator.ts`, `events.ts`, `evidence.ts`, `broker.ts`
221
+ - `packages/coding-agent/src/core/agent-session-services.ts`, `src/index.ts`, `src/main.ts`
222
+ - `packages/coding-agent/src/commands/{run-command,verified-run-cli}.ts`
223
+ - 위 2차 추가/확장 테스트와 기존 SDK·protocol·verified-run 문서
224
+
225
+ 2차 제안 메시지: `feat(runtime): AgentSession 기준 경로와 v3 증거 연계`.
226
+ 2차 시점의 M2–M4는 미구현이었습니다. 3차에도 M2 전체·M3–M4 완료로 판정하지 않습니다.
227
+
228
+ 3차 추가 변경 범위:
229
+
230
+ - `packages/protocol/src/run-resume.ts`, `src/index.ts`, `test/run-resume.test.ts`
231
+ - `packages/coding-agent/src/core/verified-run/{recovery,recovery-clock,namespace-identity,process-gate}.ts`
232
+ - 같은 디렉터리의 `run-types.ts`, `event-parser.ts`, `projection.ts`, `writer-projection.ts`, `events.ts`
233
+ - 같은 디렉터리의 `phase-context.ts`, `writer-phase.ts`, `verification-phase.ts`, `coordinator.ts`, `broker.ts`, `owned-execution.ts`, `journal.ts`, `evidence.ts`
234
+ - `packages/coding-agent/src/core/run-execution-api.ts`, `src/commands/verified-run-cli.ts`
235
+ - `packages/coding-agent/test/verified-run-{resume,gate,clock,crash,v3}.test.ts`
236
+ - 기존 SDK·protocol·verified-run 문서
237
+
238
+ 제안 메시지: `feat(runtime): 고정 candidate의 세대별 복구와 예산 보존`.
239
+ 3차까지 stage·commit·push·PR은 수행하지 않았습니다.
240
+
241
+ ## 커밋 승인 후 사전 검사
242
+
243
+ 사용자의 원자적 커밋 승인 후 이 기능의 54개 경로만 stage했습니다. 기존 provider,
244
+ retry, benchmark, ROADMAP 변경은 제외했습니다. 전체 staged diff를 검사하고 각 staged
245
+ 파일이 이미 검토·검증한 working-tree 파일과 byte 단위로 같은지 확인했습니다.
246
+
247
+ - `npm run check`: exit 0. 미추적 문서 링크 차단이 해소됐으며 guard 기준은 바꾸지 않았습니다.
248
+ - protocol 집중 재검사: 52개 통과, exit 0.
249
+ - resume/gate/crash/v3 집중 재검사: 25개 통과, exit 0.
250
+ - staged scope·whitespace 검사: 일치·오류 없음.
251
+
252
+ 이 첫 커밋은 계약부터 CLI/SDK·검증·고정 candidate 복구까지의 연결된 opt-in 기능입니다.
253
+ 이 단위는 `3a1a110ecb` (`feat(runtime): 검증 실행과 고정 candidate 복구 연결`)로 커밋했습니다.
254
+ writer 복구 고도화는 아래 별도 구현·직접 테스트·문서 단위로 이어집니다. push·PR·배포는
255
+ 별도 승인 범위가 아니므로 수행하지 않습니다.
256
+
257
+ ## 4차: 불변 입력 기반 writer 재시작
258
+
259
+ 고도화 대상은 M2의 남은 writer 경계입니다. 부분 작업 디렉터리를 이어 쓰거나 변경된
260
+ 원본을 다시 읽는 대신, 최초 writer 전에 저장한 CAS 입력 checkpoint에서 새 시도를 만듭니다.
261
+ 이는 단계별 부분 retry나 Task DAG가 아니라 **승인된 로컬 writer 전체의 명시적 재시작**입니다.
262
+
263
+ - SDK 메서드가 없어 6개가 실패한 RED에서 시작했습니다. 이후 `restartWriter`와
264
+ `inspectWriterRecovery`를 연결했습니다.
265
+ - 실제 writer SIGKILL 후 CLI의 새 flag가 usage error로 실패하는 RED를 확인한 뒤
266
+ `restart-writer --execute`와 `inspect --writer-recovery`를 연결했습니다.
267
+ - `input_checkpoint`가 없거나 손상되면 현재 workspace로 대체하지 않습니다.
268
+ 원본·이전 부분 출력을 바꿔도 새 `writer-N`에는 저장된 원래 입력만 사용합니다.
269
+ - 이전 `modelRequests`는 유지하고 새 시도에 남은 한도만 전달합니다. `requestBaseline`은
270
+ 새 시도의 종료 turn 검증에만 사용하며 전체 사용량을 초기화하지 않습니다.
271
+ - candidate 검증 재개와 writer 재시작이 같은 lease/CAS/command-id/generation 경계를 씁니다.
272
+ generation 상한, 원래 work deadline, 모르는 namespace와 live owner 거부도 유지합니다.
273
+ - 기존 형식 fixture에서 새 `input_checkpoint` 사건을 제거하여 구형 원장 검사를 유지했습니다.
274
+ 실제 runtime의 구형 입력 누락을 허용하도록 guard를 낮추지는 않았습니다.
275
+
276
+ 최종 명령은 3차의 테스트 집합에 다음을 추가한 것입니다.
277
+
278
+ ```bash
279
+ (cd packages/protocol && node ../../node_modules/vitest/dist/cli.js --run \
280
+ test/run-contract.test.ts test/run-scripted-contract.test.ts \
281
+ test/run-resume.test.ts test/run-writer-restart.test.ts)
282
+ # coding-agent의 기존 16개 파일에 아래 3개를 추가하여 --maxWorkers=2로 실행
283
+ # test/verified-run-writer-restart.test.ts
284
+ # test/verified-run-writer-crash.test.ts
285
+ # test/verified-run-writer-progress.test.ts
286
+ npm run check
287
+ ```
288
+
289
+ | 검사 | 4차 결과 |
290
+ | --- | --- |
291
+ | protocol | 4개 파일, 62개 통과, exit 0 |
292
+ | coding-agent·기존 회귀 | 19개 파일, 229개 통과, exit 0 |
293
+ | `npm run check` | exit 0, 문서 링크 포함 전체 통과 |
294
+ | 타입·import-cycle·module-size | 통과, baseline 변경 없음 |
295
+
296
+ 최종 291개는 이전 단계를 포함한 집합입니다. 실제 CLI 테스트는 SIGKILL, 읽기 전용 조회,
297
+ `--execute` 누락 거부, 원본/부분 출력 변조, 요청 누적, 예산 보존을 확인했습니다. command-only
298
+ 경로는 모델 요청 없이 재시작합니다. 순수 reducer 테스트는 이전 요청이 새 시도의 종료 응답을
299
+ 대신할 수 없고 이전 request ID도 재사용할 수 없음을 검사합니다.
300
+
301
+ 이 단위의 변경 경로:
302
+
303
+ - `packages/protocol/src/run-writer-restart.ts`, `src/index.ts`, `test/run-writer-restart.test.ts`, `README.md`
304
+ - `packages/coding-agent/src/core/verified-run/{recovery-command,recovery-projection,writer-completion,writer-recovery}.ts`
305
+ - 같은 디렉터리의 `coordinator.ts`, `event-parser.ts`, `journal.ts`, `projection.ts`, `recovery.ts`,
306
+ `recovery-clock.ts`, `run-types.ts`, `scripted-writer.ts`, `writer-phase.ts`, `writer-projection.ts`
307
+ - `packages/coding-agent/src/core/run-execution-api.ts`, `src/commands/verified-run-cli.ts`
308
+ - 위 writer 테스트 3개, `test/verified-run-v3.test.ts`, SDK·protocol·verified-run 문서
309
+
310
+ 제안 메시지: `feat(runtime): 불변 입력 checkpoint 기반 writer 복구`.
311
+ input pin·process identity 기록 이전의 crash window, 원격/opaque 부작용, 실서비스 모델,
312
+ M3 DAG와 M4 전체 제어 표면은 완료하지 않았습니다. S90 점수나 경쟁 성능을 측정하지 않았습니다.
313
+
314
+ ## 5차: 정적 명령 DAG와 선택적 작업 재시도
315
+
316
+ 기준은 `e7ab1485ee`입니다. 이번 단위는 M3의 직렬 command DAG·동일 계약 내 출력 재사용입니다.
317
+ 기존 단일 Coordinator·v2 journal·bwrap broker·candidate CAS·native v3 검증 경로를 재사용했습니다.
318
+ 별도 실행 엔진이나 live provider 호출은 추가하지 않았습니다.
319
+
320
+ ### 적용한 스킬과 결정
321
+
322
+ - `adaptorch-route` / `omk-plan`: 읽기 전용 분석의 순차형 권고를 적용했습니다. 작업 DAG는
323
+ 5개 노드·4개 edge, width 1(approx), 구조 깊이 5였습니다. 실행 권한으로 해석하지 않았습니다.
324
+ - `ponytail` / `programming`: 기존 parser와 자료구조를 사용했습니다. 새 의존성 없이
325
+ FIFO Kahn 순서·전체 ancestor closure·서로 겹치지 않는 작업 출력 범위로 한정했습니다.
326
+ 기존 tool conflict DAG는 의미와 패키지 계층이 달라 재사용하지 않았습니다.
327
+ - `tdd-workflow` / `property-based-testing`: 계약→SDK 실행→선택 retry→CLI의 RED/GREEN을
328
+ 기록하고, 5개 노드에서 가능한 1,024개 순방향 DAG를 하나의 전수 property test로 검사했습니다.
329
+ - `refactor`: 공통 work 복구 검사를 `work-recovery.ts`로 옮겨 writer와 task 복구가 같은
330
+ input·clock·namespace·key·environment 경계를 사용하도록 했습니다. 기존 M2 회귀를 함께 실행했습니다.
331
+ - `lsp` / `security-review` / `review-work` / `code-review-and-quality`: 타입·입력·권한·실패 경계를
332
+ 루트 에이전트가 직접 검토했습니다. 독립 multi-agent 심사나 보안 인증을 수행한 것은 아닙니다.
333
+ - `omk-arxiv`는 pre-flight에서 중단했습니다. 이미 정해진 정적 DAG·세대 fencing을 연결하는
334
+ 범위여서 새로운 알고리즘 문헌 조사나 성능 비교로 확장하지 않았습니다.
335
+
336
+ ### RED → GREEN
337
+
338
+ | 단계 | 실제 RED | GREEN 근거 |
339
+ | --- | --- | --- |
340
+ | DAG 계약 | 정상 계약 2개가 `version/profile/apply`로 거부됨 | DAG 계약 17개 + 기존 protocol 회귀 통과 |
341
+ | SDK DAG | 새 실행 2개가 `unsupported` terminal 상태로 반환됨 | 실제 두 writer·통합 산출물과 failed dependency 차단 통과 |
342
+ | 선택 retry | 4개가 `retryTasks is not a function`으로 실패 | 성공 branch 1회 유지, 실패 branch 2차 실행, 새 verifier generation 확인 |
343
+ | CLI | SIGKILL 뒤 `--task-recovery`가 usage/exit 2로 실패 | 실제 CLI inspect·승인 누락 거부·retry-tasks·복구 완료 통과 |
344
+
345
+ ### 최종 검증 명령
346
+
347
+ ```bash
348
+ (cd packages/protocol && node ../../node_modules/vitest/dist/cli.js --run \
349
+ test/run-contract.test.ts test/run-scripted-contract.test.ts test/run-resume.test.ts \
350
+ test/run-writer-restart.test.ts test/run-dag-contract.test.ts \
351
+ test/run-dag-properties.test.ts test/run-task-retry.test.ts \
352
+ --coverage --coverage.provider=v8 --coverage.include=src/run-dag.ts \
353
+ --coverage.include=src/run-task-retry.ts --coverage.reporter=text --coverage.reporter=json-summary)
354
+
355
+ (cd packages/coding-agent && node ../../node_modules/vitest/dist/cli.js --run --maxWorkers=2 \
356
+ test/verified-run.test.ts test/verified-run-cli.test.ts test/verified-run-candidate.test.ts \
357
+ test/verified-run-journal.test.ts test/verified-run-broker.test.ts test/verified-run-v3.test.ts \
358
+ test/verified-run-agent.test.ts test/verified-run-agent-events.test.ts test/verified-run-resume.test.ts \
359
+ test/verified-run-gate.test.ts test/verified-run-clock.test.ts test/verified-run-crash.test.ts \
360
+ test/verified-run-writer-restart.test.ts test/verified-run-writer-crash.test.ts \
361
+ test/verified-run-writer-progress.test.ts test/run-journal-store.test.ts test/run-journal.test.ts \
362
+ test/verified-executor.test.ts test/evidence-receipt.test.ts test/verified-run-dag*.test.ts \
363
+ --coverage --coverage.provider=v8 '--coverage.include=src/core/verified-run/dag-*.ts' \
364
+ --coverage.include=src/core/verified-run/work-recovery.ts \
365
+ --coverage.reporter=text --coverage.reporter=json-summary)
366
+
367
+ node node_modules/@typescript/native-preview/bin/tsgo.js --noEmit
368
+ npm run check
369
+ ```
370
+
371
+ | 검사 | 최종 결과 |
372
+ | --- | --- |
373
+ | protocol | 7개 파일, 92개 통과, exit 0 |
374
+ | coding-agent·기존 회귀 | 26개 파일, 261개 통과, exit 0 |
375
+ | 합계 | 353개 통과. 이전 291개를 포함한 집합이며 property 조합 수를 테스트 수에 더하지 않음 |
376
+ | 새 protocol 모듈 coverage | lines/statements 100%, branches 94.64%, functions 100% |
377
+ | DAG·공통 work 복구 모듈 coverage | lines/statements 99.31%, branches 82.07%, functions 100% |
378
+ | primary LSP | 변경 소스 21개 파일 모두 clean, 미확인 0 |
379
+ | 타입·전체 `npm run check` | exit 0. import-cycle/module-size baseline을 바꾸지 않음 |
380
+
381
+ Coverage는 명시한 신규/공통 복구 모듈 집합만의 수치이며 저장소 전체 coverage가 아닙니다.
382
+ CLI는 별도 프로세스로 직접 실행했습니다. 이 테스트가 live model 품질이나 모든 OS의 동작을
383
+ 입증하지는 않습니다. 전체 검사에 남아 있는 기존 compaction info 11개와 OpenWiki corpus 부재
384
+ 경고는 이번 변경의 오류가 아니며, 이를 숨기거나 기존 다른 변경을 수정하지 않았습니다.
385
+
386
+ ### 보장별 확인과 자가 검토
387
+
388
+ | 보장 | 근거 |
389
+ | --- | --- |
390
+ | 순환·미등록 의존성·task scope·시도 목록 제한 | `run-dag-contract.test.ts`, `run-task-retry.test.ts` |
391
+ | 순서·노드 보존·정확한 transitive ancestor 집합 | `run-dag-properties.test.ts`의 전수 DAG/Floyd–Warshall 대조 |
392
+ | 형제 출력 미노출, 삭제·빈 디렉터리·mode·입력 digest 보존 | `verified-run-dag-candidates.test.ts` |
393
+ | 성공 작업 미재실행, 바뀐 원본/부분 출력 미사용 | `verified-run-dag-retry.test.ts` |
394
+ | 실제 SIGKILL·읽기 전용 조회·명시적 실행 승인 | `verified-run-dag-cli.test.ts` |
395
+ | unknown dispatch 차단, pending-only 재개, frozen candidate 재검증 | `verified-run-dag-recovery.test.ts` |
396
+ | task attempt/generation 상한·reboot·fsync 실패 후 무실행 | `verified-run-dag-recovery.test.ts` |
397
+ | 변경/누락 adoption·늦은 task/process 사건 거부 | `verified-run-dag-events.test.ts` |
398
+ | 실제 writer 취소·후속 작업 무실행·기한/복구 조회 차단 | `verified-run-dag-cancellation.test.ts` |
399
+
400
+ 자가 검토 결과: 실행 checkpoint와 verification receipt를 구분하고, 새 세대의 통합 검사만으로
401
+ 최종 수락합니다. parser·순수 상태 전이·파일 합성·실행·복구를 분리했고 불신 JSON을 실행 승인으로
402
+ 승격하지 않았습니다. 새 source/test 모듈은 250 pure LOC 이하입니다. 기존 `projection.ts` 234,
403
+ CLI 223 pure LOC는 경고 구간이므로 다음 확장 시 분할을 검토해야 합니다.
404
+
405
+ ### 커밋 체크포인트
406
+
407
+ 변경 범위는 `packages/protocol/src/{run-contract,run-dag,run-task-retry,index}.ts`와 직접 테스트,
408
+ `packages/coding-agent/src/core/verified-run/`의 DAG·공통 복구 및 연결 reducer,
409
+ `src/core/run-execution-api.ts`, `src/commands/verified-run-cli.ts`, DAG 테스트와 관련 문서입니다.
410
+
411
+ 제안 메시지: `feat(runtime): 정적 DAG와 선택적 작업 재시도 연결`.
412
+ 이번 단위의 stage·commit·push·PR은 수행하지 않았습니다. 기존 provider/retry/benchmark/ROADMAP
413
+ 변경은 제외·보존했습니다.
414
+
415
+ 미완료: 병렬 eager frontier, verification-conditioned edge, 겹치는 쓰기 범위, 계획 amendment와
416
+ 변경된 계약의 결과 adoption, 실서비스 모델, M2의 미기록 input/process crash window, M4 전체
417
+ 제어·적용 표면입니다. S90 점수·경쟁 우위·성능 개선량은 측정하거나 부여하지 않았습니다.