onto-mcp 0.3.2 → 0.4.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 (300) hide show
  1. package/.onto/processes/reconstruct/actionable-ontology-seed-recomposition-design.md +447 -0
  2. package/.onto/processes/reconstruct/foundry-style-ontology-seed-contract.md +934 -0
  3. package/.onto/processes/reconstruct/reconstruct-boundary-contract.md +303 -725
  4. package/.onto/processes/reconstruct/reconstruct-contract-registry.yaml +1645 -0
  5. package/.onto/processes/reconstruct/reconstruct-execution-ux-contract.md +26 -22
  6. package/.onto/processes/reconstruct/source-profile-contract.md +49 -23
  7. package/.onto/processes/reconstruct/source-profiles/code.md +6 -3
  8. package/.onto/processes/reconstruct/source-profiles/database.md +5 -2
  9. package/.onto/processes/reconstruct/source-profiles/document.md +5 -2
  10. package/.onto/processes/reconstruct/source-profiles/spreadsheet.md +5 -4
  11. package/.onto/processes/review/review-execution-ux-contract.md +40 -0
  12. package/.onto/processes/shared/pipeline-execution-ledger-contract.md +26 -10
  13. package/.onto/processes/shared/target-material-kind-contract.md +29 -16
  14. package/AGENTS.md +6 -4
  15. package/README.md +135 -76
  16. package/dist/cli.js +8 -8
  17. package/dist/core-api/reconstruct-api.js +117 -31
  18. package/dist/core-api/review-api.js +47 -0
  19. package/dist/core-runtime/cli/codex-review-unit-executor.js +39 -2
  20. package/dist/core-runtime/cli/complete-review-session.js +2 -2
  21. package/dist/core-runtime/cli/mock-review-unit-executor.js +1 -1
  22. package/dist/core-runtime/cli/review-invoke.js +9 -9
  23. package/dist/core-runtime/cli/run-review-prompt-execution.js +39 -5
  24. package/dist/core-runtime/cli/spawn-watcher.js +266 -47
  25. package/dist/core-runtime/cli/start-review-session.js +3 -3
  26. package/dist/core-runtime/llm/llm-caller.js +11 -0
  27. package/dist/core-runtime/llm/llm-tool-loop.js +2 -0
  28. package/dist/core-runtime/observability/runtime-stream-observation.js +118 -0
  29. package/dist/core-runtime/onboard/cli-host.js +149 -0
  30. package/dist/core-runtime/onboard/host-target.js +22 -0
  31. package/dist/core-runtime/onboard/json-config-host.js +122 -0
  32. package/dist/core-runtime/onboard/path-scan.js +26 -0
  33. package/dist/core-runtime/onboard/prompt.js +51 -0
  34. package/dist/core-runtime/onboard/register.js +207 -0
  35. package/dist/core-runtime/onboard/types.js +27 -0
  36. package/dist/core-runtime/reconstruct/actionable-seed-validation.js +1777 -0
  37. package/dist/core-runtime/reconstruct/artifact-types.js +10 -4
  38. package/dist/core-runtime/reconstruct/contract-registry.js +623 -0
  39. package/dist/core-runtime/reconstruct/domain-id.js +10 -0
  40. package/dist/core-runtime/reconstruct/governing-snapshot.js +716 -0
  41. package/dist/core-runtime/reconstruct/material-profile-validation.js +191 -0
  42. package/dist/core-runtime/reconstruct/materialize-preparation.js +49 -11
  43. package/dist/core-runtime/reconstruct/pipeline-execution-ledger.js +269 -79
  44. package/dist/core-runtime/reconstruct/post-seed-validation.js +1194 -51
  45. package/dist/core-runtime/reconstruct/record.js +104 -20
  46. package/dist/core-runtime/reconstruct/run.js +2107 -413
  47. package/dist/core-runtime/reconstruct/seed-claim-projections.js +268 -0
  48. package/dist/core-runtime/reconstruct/source-profiles.js +93 -4
  49. package/dist/core-runtime/reconstruct/terminal-validation.js +807 -0
  50. package/dist/core-runtime/review/review-invocation-runner.js +4 -4
  51. package/dist/mcp/server.js +110 -38
  52. package/dist/mcp/tool-schemas.js +20 -6
  53. package/package.json +8 -17
  54. package/scripts/onto-review-watch.sh +486 -0
  55. package/scripts/onto-runtime-watch.sh +122 -0
  56. package/scripts/postinstall-hint.js +22 -0
  57. package/.onto/processes/reconstruct/top-level-concept-discovery-contract.md +0 -387
  58. package/dist/core-runtime/cli/bootstrap-review-binding.js +0 -186
  59. package/dist/core-runtime/cli/codex-nested-dispatch.test.js +0 -390
  60. package/dist/core-runtime/cli/codex-nested-teamlead-executor.test.js +0 -335
  61. package/dist/core-runtime/cli/coordinator-helpers.js +0 -583
  62. package/dist/core-runtime/cli/coordinator-state-machine-deliberation.test.js +0 -167
  63. package/dist/core-runtime/cli/coordinator-state-machine.js +0 -794
  64. package/dist/core-runtime/cli/e2e-codex-multi-agent-fixes.test.js +0 -615
  65. package/dist/core-runtime/cli/e2e-start-review-session.test.js +0 -312
  66. package/dist/core-runtime/cli/health.js +0 -44
  67. package/dist/core-runtime/cli/inline-http-review-unit-executor.test.js +0 -567
  68. package/dist/core-runtime/cli/materialize-review-execution-preparation.js +0 -104
  69. package/dist/core-runtime/cli/migrate-session-roots.js +0 -118
  70. package/dist/core-runtime/cli/repo-layout-migration-replace.smoke.test.js +0 -106
  71. package/dist/core-runtime/cli/review-invoke-auto-resolution.test.js +0 -268
  72. package/dist/core-runtime/cli/review-invoke-coordinator-topology.test.js +0 -136
  73. package/dist/core-runtime/cli/review-invoke-resolver-caching.test.js +0 -201
  74. package/dist/core-runtime/cli/review-invoke-topology-dispatch.test.js +0 -192
  75. package/dist/core-runtime/cli/session-root-guard.js +0 -168
  76. package/dist/core-runtime/cli/spawn-watcher.test.js +0 -457
  77. package/dist/core-runtime/cli/strip-wrapping-code-fence.test.js +0 -79
  78. package/dist/core-runtime/cli/teamcreate-lens-deliberation-executor.js +0 -412
  79. package/dist/core-runtime/cli/teamcreate-lens-deliberation-executor.test.js +0 -351
  80. package/dist/core-runtime/cli/topology-executor-mapping.js +0 -139
  81. package/dist/core-runtime/cli/topology-executor-mapping.test.js +0 -173
  82. package/dist/core-runtime/cli/write-review-interpretation.js +0 -81
  83. package/dist/core-runtime/config/onto-config-cli.js +0 -278
  84. package/dist/core-runtime/config/onto-config-key-path.js +0 -288
  85. package/dist/core-runtime/config/onto-config-key-path.test.js +0 -195
  86. package/dist/core-runtime/config/onto-config-preview.js +0 -108
  87. package/dist/core-runtime/config/onto-config-preview.test.js +0 -132
  88. package/dist/core-runtime/discovery/config-chain.js +0 -118
  89. package/dist/core-runtime/discovery/config-chain.test.js +0 -103
  90. package/dist/core-runtime/discovery/config-profile.js +0 -199
  91. package/dist/core-runtime/discovery/config-profile.test.js +0 -233
  92. package/dist/core-runtime/discovery/host-detection.test.js +0 -186
  93. package/dist/core-runtime/discovery/installation-paths.test.js +0 -65
  94. package/dist/core-runtime/discovery/lens-registry.test.js +0 -81
  95. package/dist/core-runtime/discovery/path-normalization.test.js +0 -22
  96. package/dist/core-runtime/discovery/plugin-path.js +0 -72
  97. package/dist/core-runtime/discovery/plugin-path.test.js +0 -95
  98. package/dist/core-runtime/evolve/adapters/code-product/compile/compile-defense.js +0 -344
  99. package/dist/core-runtime/evolve/adapters/code-product/compile/compile-defense.test.js +0 -915
  100. package/dist/core-runtime/evolve/adapters/code-product/compile/compile.js +0 -564
  101. package/dist/core-runtime/evolve/adapters/code-product/compile/compile.test.js +0 -708
  102. package/dist/core-runtime/evolve/adapters/code-product/parsers/brief-parser.js +0 -165
  103. package/dist/core-runtime/evolve/adapters/code-product/parsers/brief-parser.test.js +0 -227
  104. package/dist/core-runtime/evolve/adapters/code-product/validators/validate.js +0 -59
  105. package/dist/core-runtime/evolve/adapters/code-product/validators/validate.test.js +0 -205
  106. package/dist/core-runtime/evolve/adapters/methodology/adapter.js +0 -16
  107. package/dist/core-runtime/evolve/adapters/methodology/adapter.test.js +0 -9
  108. package/dist/core-runtime/evolve/adapters/methodology/perspectives/authority-consistency.js +0 -298
  109. package/dist/core-runtime/evolve/adapters/methodology/perspectives/authority-consistency.test.js +0 -70
  110. package/dist/core-runtime/evolve/adapters/methodology/scope-types/process.js +0 -46
  111. package/dist/core-runtime/evolve/adapters/methodology/scope-types/process.test.js +0 -73
  112. package/dist/core-runtime/evolve/adapters/registry.js +0 -47
  113. package/dist/core-runtime/evolve/adapters/registry.test.js +0 -67
  114. package/dist/core-runtime/evolve/cli.js +0 -256
  115. package/dist/core-runtime/evolve/commands/align.js +0 -194
  116. package/dist/core-runtime/evolve/commands/align.test.js +0 -82
  117. package/dist/core-runtime/evolve/commands/apply.js +0 -161
  118. package/dist/core-runtime/evolve/commands/apply.test.js +0 -138
  119. package/dist/core-runtime/evolve/commands/close.js +0 -39
  120. package/dist/core-runtime/evolve/commands/close.test.js +0 -99
  121. package/dist/core-runtime/evolve/commands/defer.js +0 -40
  122. package/dist/core-runtime/evolve/commands/defer.test.js +0 -134
  123. package/dist/core-runtime/evolve/commands/draft.js +0 -323
  124. package/dist/core-runtime/evolve/commands/draft.test.js +0 -178
  125. package/dist/core-runtime/evolve/commands/e2e-evolve-full-cycle.test.js +0 -208
  126. package/dist/core-runtime/evolve/commands/error-messages.js +0 -125
  127. package/dist/core-runtime/evolve/commands/error-messages.test.js +0 -167
  128. package/dist/core-runtime/evolve/commands/propose-align.js +0 -222
  129. package/dist/core-runtime/evolve/commands/propose-align.test.js +0 -136
  130. package/dist/core-runtime/evolve/commands/reconstruct.js +0 -330
  131. package/dist/core-runtime/evolve/commands/reconstruct.test.js +0 -278
  132. package/dist/core-runtime/evolve/commands/shared.js +0 -22
  133. package/dist/core-runtime/evolve/commands/stale-check.js +0 -103
  134. package/dist/core-runtime/evolve/commands/stale-check.test.js +0 -84
  135. package/dist/core-runtime/evolve/commands/start.js +0 -887
  136. package/dist/core-runtime/evolve/commands/start.test.js +0 -396
  137. package/dist/core-runtime/evolve/config/project-config.js +0 -99
  138. package/dist/core-runtime/evolve/config/project-config.test.js +0 -170
  139. package/dist/core-runtime/evolve/renderers/align-packet.js +0 -280
  140. package/dist/core-runtime/evolve/renderers/align-packet.test.js +0 -332
  141. package/dist/core-runtime/evolve/renderers/draft-packet.js +0 -303
  142. package/dist/core-runtime/evolve/renderers/draft-packet.test.js +0 -377
  143. package/dist/core-runtime/evolve/renderers/format.js +0 -5
  144. package/dist/core-runtime/evolve/renderers/scope-md.js +0 -237
  145. package/dist/core-runtime/evolve/renderers/scope-md.test.js +0 -306
  146. package/dist/core-runtime/govern/cli.js +0 -369
  147. package/dist/core-runtime/govern/cli.test.js +0 -314
  148. package/dist/core-runtime/govern/drift-engine.js +0 -103
  149. package/dist/core-runtime/govern/drift-engine.test.js +0 -319
  150. package/dist/core-runtime/govern/promote-principle.js +0 -206
  151. package/dist/core-runtime/govern/promote-principle.test.js +0 -368
  152. package/dist/core-runtime/govern/queue.js +0 -81
  153. package/dist/core-runtime/govern/types.js +0 -16
  154. package/dist/core-runtime/install/cli.js +0 -530
  155. package/dist/core-runtime/install/detect.js +0 -128
  156. package/dist/core-runtime/install/detect.test.js +0 -155
  157. package/dist/core-runtime/install/gitignore-update.js +0 -74
  158. package/dist/core-runtime/install/gitignore-update.test.js +0 -64
  159. package/dist/core-runtime/install/install-integration.test.js +0 -373
  160. package/dist/core-runtime/install/prompts.js +0 -389
  161. package/dist/core-runtime/install/prompts.test.js +0 -293
  162. package/dist/core-runtime/install/types.js +0 -26
  163. package/dist/core-runtime/install/validation.js +0 -295
  164. package/dist/core-runtime/install/validation.test.js +0 -313
  165. package/dist/core-runtime/install/writer.js +0 -254
  166. package/dist/core-runtime/install/writer.test.js +0 -218
  167. package/dist/core-runtime/learning/extractor.js +0 -461
  168. package/dist/core-runtime/learning/feedback.js +0 -179
  169. package/dist/core-runtime/learning/health-report.js +0 -165
  170. package/dist/core-runtime/learning/health-report.test.js +0 -169
  171. package/dist/core-runtime/learning/loader.js +0 -388
  172. package/dist/core-runtime/learning/loader.test.js +0 -102
  173. package/dist/core-runtime/learning/promote/apply-state.js +0 -240
  174. package/dist/core-runtime/learning/promote/audit-obligation.js +0 -195
  175. package/dist/core-runtime/learning/promote/collector.js +0 -432
  176. package/dist/core-runtime/learning/promote/degraded-state.js +0 -125
  177. package/dist/core-runtime/learning/promote/domain-doc-proposer.js +0 -166
  178. package/dist/core-runtime/learning/promote/e2e-promote.test.js +0 -6385
  179. package/dist/core-runtime/learning/promote/health-snapshot.js +0 -150
  180. package/dist/core-runtime/learning/promote/insight-reclassifier.js +0 -544
  181. package/dist/core-runtime/learning/promote/judgment-auditor.js +0 -517
  182. package/dist/core-runtime/learning/promote/panel-reviewer.js +0 -1158
  183. package/dist/core-runtime/learning/promote/promote-executor.js +0 -1675
  184. package/dist/core-runtime/learning/promote/promoter.js +0 -307
  185. package/dist/core-runtime/learning/promote/retirement.js +0 -122
  186. package/dist/core-runtime/learning/promote/types.js +0 -23
  187. package/dist/core-runtime/learning/prompt-sections.js +0 -51
  188. package/dist/core-runtime/learning/shared/artifact-registry-init.js +0 -45
  189. package/dist/core-runtime/learning/shared/artifact-registry.js +0 -254
  190. package/dist/core-runtime/learning/shared/audit-obligation-kernel.js +0 -73
  191. package/dist/core-runtime/learning/shared/audit-state.js +0 -99
  192. package/dist/core-runtime/learning/shared/duplicate-check.js +0 -28
  193. package/dist/core-runtime/learning/shared/llm-caller.js +0 -831
  194. package/dist/core-runtime/learning/shared/llm-caller.test.js +0 -601
  195. package/dist/core-runtime/learning/shared/llm-tool-loop.js +0 -393
  196. package/dist/core-runtime/learning/shared/mode.js +0 -25
  197. package/dist/core-runtime/learning/shared/paths.js +0 -84
  198. package/dist/core-runtime/learning/shared/paths.test.js +0 -79
  199. package/dist/core-runtime/learning/shared/patterns.js +0 -37
  200. package/dist/core-runtime/learning/shared/recoverability.js +0 -355
  201. package/dist/core-runtime/learning/shared/recovery-context.js +0 -374
  202. package/dist/core-runtime/learning/shared/scope.js +0 -1
  203. package/dist/core-runtime/learning/shared/semantic-classifier.js +0 -94
  204. package/dist/core-runtime/learning/shared/specs/apply-execution-state-spec.js +0 -42
  205. package/dist/core-runtime/learning/shared/specs/audit-state-spec.js +0 -37
  206. package/dist/core-runtime/learning/shared/specs/backup-metadata-spec.js +0 -39
  207. package/dist/core-runtime/learning/shared/specs/emergency-log-spec.js +0 -41
  208. package/dist/core-runtime/learning/shared/specs/layout-version-spec.js +0 -38
  209. package/dist/core-runtime/learning/shared/specs/promote-decisions-spec.js +0 -43
  210. package/dist/core-runtime/learning/shared/specs/promote-report-spec.js +0 -113
  211. package/dist/core-runtime/learning/shared/specs/prune-log-spec.js +0 -36
  212. package/dist/core-runtime/learning/shared/specs/recovery-resolution-spec.js +0 -48
  213. package/dist/core-runtime/learning/shared/specs/restore-manifest-spec.js +0 -43
  214. package/dist/core-runtime/learning/shared/specs/spec-helpers.js +0 -64
  215. package/dist/core-runtime/learning/usage-tracker.js +0 -190
  216. package/dist/core-runtime/learning/usage-tracker.test.js +0 -176
  217. package/dist/core-runtime/onboard/detect-review-axes.js +0 -122
  218. package/dist/core-runtime/onboard/detect-review-axes.test.js +0 -127
  219. package/dist/core-runtime/onboard/write-review-block.js +0 -188
  220. package/dist/core-runtime/onboard/write-review-block.test.js +0 -240
  221. package/dist/core-runtime/readers/brownfield-builder.js +0 -150
  222. package/dist/core-runtime/readers/brownfield-builder.test.js +0 -136
  223. package/dist/core-runtime/readers/code-chunk-collector.js +0 -53
  224. package/dist/core-runtime/readers/code-chunk-collector.test.js +0 -136
  225. package/dist/core-runtime/readers/file-utils.js +0 -240
  226. package/dist/core-runtime/readers/file-utils.test.js +0 -146
  227. package/dist/core-runtime/readers/lexicon-citation-check.js +0 -93
  228. package/dist/core-runtime/readers/lexicon-citation-check.test.js +0 -77
  229. package/dist/core-runtime/readers/mcp-figma.js +0 -30
  230. package/dist/core-runtime/readers/mcp-figma.test.js +0 -82
  231. package/dist/core-runtime/readers/mcp-generic.js +0 -31
  232. package/dist/core-runtime/readers/mcp-generic.test.js +0 -76
  233. package/dist/core-runtime/readers/ontology-index.js +0 -148
  234. package/dist/core-runtime/readers/ontology-index.test.js +0 -245
  235. package/dist/core-runtime/readers/ontology-query.js +0 -168
  236. package/dist/core-runtime/readers/ontology-query.test.js +0 -311
  237. package/dist/core-runtime/readers/ontology-resolve.js +0 -48
  238. package/dist/core-runtime/readers/ontology-resolve.test.js +0 -48
  239. package/dist/core-runtime/readers/patterns/index.js +0 -7
  240. package/dist/core-runtime/readers/review-log.js +0 -213
  241. package/dist/core-runtime/readers/review-log.test.js +0 -313
  242. package/dist/core-runtime/readers/scan-local.js +0 -102
  243. package/dist/core-runtime/readers/scan-local.test.js +0 -102
  244. package/dist/core-runtime/readers/scan-tarball.js +0 -121
  245. package/dist/core-runtime/readers/scan-tarball.test.js +0 -283
  246. package/dist/core-runtime/readers/scan-vault.js +0 -34
  247. package/dist/core-runtime/readers/scan-vault.test.js +0 -81
  248. package/dist/core-runtime/readers/types.js +0 -42
  249. package/dist/core-runtime/readers/types.test.js +0 -94
  250. package/dist/core-runtime/readers/viewpoint-collectors.js +0 -229
  251. package/dist/core-runtime/reconstruct/seed-candidate-validation.js +0 -385
  252. package/dist/core-runtime/review/citation-audit.test.js +0 -165
  253. package/dist/core-runtime/review/execution-plan-resolver.js +0 -247
  254. package/dist/core-runtime/review/execution-plan-resolver.test.js +0 -243
  255. package/dist/core-runtime/review/execution-topology-resolver-axis-first.test.js +0 -246
  256. package/dist/core-runtime/review/execution-topology-resolver.js +0 -401
  257. package/dist/core-runtime/review/execution-topology-resolver.test.js +0 -315
  258. package/dist/core-runtime/review/inline-context-embedder.test.js +0 -154
  259. package/dist/core-runtime/review/legacy-mode-policy.js +0 -88
  260. package/dist/core-runtime/review/materializers-effort-persist.test.js +0 -79
  261. package/dist/core-runtime/review/ontology-path-classifier.js +0 -179
  262. package/dist/core-runtime/review/ontology-path-classifier.test.js +0 -216
  263. package/dist/core-runtime/review/packet-boundary-policy.test.js +0 -107
  264. package/dist/core-runtime/review/participating-lens-paths.test.js +0 -73
  265. package/dist/core-runtime/review/review-config-legacy-translate.js +0 -244
  266. package/dist/core-runtime/review/review-config-legacy-translate.test.js +0 -161
  267. package/dist/core-runtime/review/review-config-validator.js +0 -289
  268. package/dist/core-runtime/review/review-config-validator.test.js +0 -236
  269. package/dist/core-runtime/review/shape-pipeline-audit.test.js +0 -311
  270. package/dist/core-runtime/review/shape-to-topology-id.js +0 -117
  271. package/dist/core-runtime/review/shape-to-topology-id.test.js +0 -132
  272. package/dist/core-runtime/review/topology-shape-derivation.js +0 -155
  273. package/dist/core-runtime/review/topology-shape-derivation.test.js +0 -195
  274. package/dist/core-runtime/scope-runtime/constants.js +0 -12
  275. package/dist/core-runtime/scope-runtime/constraint-pool.js +0 -166
  276. package/dist/core-runtime/scope-runtime/constraint-pool.test.js +0 -674
  277. package/dist/core-runtime/scope-runtime/domain-validation-log.js +0 -135
  278. package/dist/core-runtime/scope-runtime/domain-validation-log.test.js +0 -156
  279. package/dist/core-runtime/scope-runtime/eval-persistence.js +0 -65
  280. package/dist/core-runtime/scope-runtime/eval-persistence.test.js +0 -84
  281. package/dist/core-runtime/scope-runtime/event-pipeline.js +0 -64
  282. package/dist/core-runtime/scope-runtime/event-pipeline.test.js +0 -450
  283. package/dist/core-runtime/scope-runtime/event-store.js +0 -39
  284. package/dist/core-runtime/scope-runtime/event-store.test.js +0 -95
  285. package/dist/core-runtime/scope-runtime/gate-guard.js +0 -348
  286. package/dist/core-runtime/scope-runtime/gate-guard.test.js +0 -1047
  287. package/dist/core-runtime/scope-runtime/hash.js +0 -4
  288. package/dist/core-runtime/scope-runtime/hash.test.js +0 -33
  289. package/dist/core-runtime/scope-runtime/id.js +0 -4
  290. package/dist/core-runtime/scope-runtime/id.test.js +0 -17
  291. package/dist/core-runtime/scope-runtime/reducer.js +0 -297
  292. package/dist/core-runtime/scope-runtime/reducer.test.js +0 -759
  293. package/dist/core-runtime/scope-runtime/scope-manager.js +0 -161
  294. package/dist/core-runtime/scope-runtime/state-machine.js +0 -309
  295. package/dist/core-runtime/scope-runtime/state-machine.test.js +0 -704
  296. package/dist/core-runtime/scope-runtime/types.js +0 -116
  297. package/dist/core-runtime/scope-runtime/types.test.js +0 -69
  298. package/dist/core-runtime/translate/render-for-user.js +0 -169
  299. package/dist/core-runtime/translate/render-for-user.test.js +0 -122
  300. package/dist/providers/capability-contract.js +0 -1
@@ -15,6 +15,8 @@ import { collectReviewInvocationArtifactRefs, prepareReviewInvocationRequest, ru
15
15
  import { completeReviewSession } from "../core-runtime/cli/complete-review-session.js";
16
16
  import { buildExecutorConfigFromRealization, } from "../core-runtime/cli/review-invoke.js";
17
17
  import { executeReviewPromptExecution, } from "../core-runtime/cli/run-review-prompt-execution.js";
18
+ import { spawnRuntimeWatcherPane, } from "../core-runtime/cli/spawn-watcher.js";
19
+ import { appendRuntimeStatusEventSync, } from "../core-runtime/observability/runtime-stream-observation.js";
18
20
  import { buildReviewPipelineExecutionLedger, } from "../core-runtime/review/pipeline-execution-ledger.js";
19
21
  import { buildReviewContinuationPlan, } from "../core-runtime/review/continuation-plan.js";
20
22
  export class ReviewContinuationError extends Error {
@@ -1766,6 +1768,7 @@ export function createOntoReviewCoreApi(options = {}) {
1766
1768
  },
1767
1769
  async runReview(request) {
1768
1770
  await validateRequestedDomainForDispatch(request, ontoHome);
1771
+ const projectRoot = path.resolve(request.projectRoot);
1769
1772
  const requestHash = requestHashForReviewInput(request);
1770
1773
  const invocationId = `initial-${continuationAttemptId()}`;
1771
1774
  let progressSequence = 0;
@@ -1801,6 +1804,23 @@ export function createOntoReviewCoreApi(options = {}) {
1801
1804
  return;
1802
1805
  sessionRootResolved = true;
1803
1806
  resolveSessionRoot(resolved);
1807
+ appendRuntimeStatusEventSync({
1808
+ pipeline: "review",
1809
+ sessionRoot: resolved,
1810
+ sourceLabel: "onto.review",
1811
+ message: "review session observed",
1812
+ stageId: "start",
1813
+ });
1814
+ const watcherResult = spawnRuntimeWatcherPane(projectRoot, resolved, ontoHome);
1815
+ appendRuntimeStatusEventSync({
1816
+ pipeline: "review",
1817
+ sessionRoot: resolved,
1818
+ sourceLabel: "runtime-watcher",
1819
+ message: watcherResult.spawned
1820
+ ? `watcher ${watcherResult.dry_run ? "detected" : "attached"} via ${watcherResult.mechanism}`
1821
+ : `watcher not attached: ${watcherResult.reason ?? "unknown reason"}`,
1822
+ stageId: "start",
1823
+ });
1804
1824
  activeAttemptWrite = (async () => {
1805
1825
  const executionPlan = await readOptionalYaml(path.join(resolved, "execution-plan.yaml"));
1806
1826
  await writeActiveAttemptStarted({
@@ -1819,6 +1839,16 @@ export function createOntoReviewCoreApi(options = {}) {
1819
1839
  const runnerProgressObserver = (event) => {
1820
1840
  if (event.sessionRoot)
1821
1841
  noteSessionRoot(event.sessionRoot);
1842
+ const runtimeSessionRoot = event.sessionRoot ?? observedSessionRoot;
1843
+ if (runtimeSessionRoot) {
1844
+ appendRuntimeStatusEventSync({
1845
+ pipeline: "review",
1846
+ sessionRoot: runtimeSessionRoot,
1847
+ sourceLabel: "onto.review",
1848
+ message: `${event.status}: ${event.message}`,
1849
+ stageId: event.phase,
1850
+ });
1851
+ }
1822
1852
  const stage = event.phase === "prepare"
1823
1853
  ? "session_planned"
1824
1854
  : event.phase === "execute"
@@ -2025,6 +2055,23 @@ export function createOntoReviewCoreApi(options = {}) {
2025
2055
  expected: projectRoot,
2026
2056
  actual: sessionMetadata.project_root,
2027
2057
  });
2058
+ appendRuntimeStatusEventSync({
2059
+ pipeline: "review",
2060
+ sessionRoot: resolvedSessionRoot,
2061
+ sourceLabel: "onto.review_continue",
2062
+ message: "review continuation starting",
2063
+ stageId: "continue",
2064
+ });
2065
+ const continuationWatcherResult = spawnRuntimeWatcherPane(projectRoot, resolvedSessionRoot, ontoHome);
2066
+ appendRuntimeStatusEventSync({
2067
+ pipeline: "review",
2068
+ sessionRoot: resolvedSessionRoot,
2069
+ sourceLabel: "runtime-watcher",
2070
+ message: continuationWatcherResult.spawned
2071
+ ? `watcher ${continuationWatcherResult.dry_run ? "detected" : "attached"} via ${continuationWatcherResult.mechanism}`
2072
+ : `watcher not attached: ${continuationWatcherResult.reason ?? "unknown reason"}`,
2073
+ stageId: "continue",
2074
+ });
2028
2075
  const artifactRefs = await collectArtifactRefs(resolvedSessionRoot);
2029
2076
  const executionPlan = await readOptionalYaml(path.join(resolvedSessionRoot, "execution-plan.yaml"));
2030
2077
  if (!executionPlan) {
@@ -5,6 +5,7 @@ import path from "node:path";
5
5
  import { spawn } from "node:child_process";
6
6
  import { parseArgs } from "node:util";
7
7
  import { pathToFileURL } from "node:url";
8
+ import { appendRuntimeStreamChunkSync, appendRuntimeStreamEventSync, } from "../observability/runtime-stream-observation.js";
8
9
  function requireString(value, optionName) {
9
10
  if (typeof value !== "string" || value.length === 0) {
10
11
  throw new Error(`Missing required option --${optionName}`);
@@ -40,7 +41,7 @@ Authoritative prompt packet follows:
40
41
  ${packetText}
41
42
  `;
42
43
  }
43
- async function runCodexWorker(projectRoot, boundedPrompt, outputPath, model, sandboxMode, reasoningEffort, configOverrides, unitId) {
44
+ async function runCodexWorker(projectRoot, boundedPrompt, outputPath, model, sandboxMode, reasoningEffort, configOverrides, unitId, unitKind, sessionRoot) {
44
45
  const codexArgs = [
45
46
  "exec",
46
47
  "-C",
@@ -65,6 +66,22 @@ async function runCodexWorker(projectRoot, boundedPrompt, outputPath, model, san
65
66
  cwd: projectRoot,
66
67
  stdio: ["pipe", "pipe", "pipe"],
67
68
  });
69
+ const runtimeSourceBase = {
70
+ kind: "process",
71
+ label: `codex:${unitId}`,
72
+ unitId,
73
+ stageId: unitKind,
74
+ };
75
+ const runtimeSource = child.pid !== undefined
76
+ ? { ...runtimeSourceBase, processId: child.pid }
77
+ : runtimeSourceBase;
78
+ appendRuntimeStreamEventSync({
79
+ pipeline: "review",
80
+ sessionRoot,
81
+ source: runtimeSource,
82
+ stream: "status",
83
+ message: `codex worker started: ${unitKind} ${unitId}`,
84
+ });
68
85
  // Real-time tee to disk: each codex stdout/stderr chunk is appended to
69
86
  // the running log under the lens output directory so a watcher pane
70
87
  // can `tail -f` it live. The in-memory buffers remain for final error
@@ -90,11 +107,23 @@ async function runCodexWorker(projectRoot, boundedPrompt, outputPath, model, san
90
107
  stdout += String(chunk);
91
108
  if (runningLogStream)
92
109
  runningLogStream.write(chunk);
110
+ appendRuntimeStreamChunkSync({
111
+ pipeline: "review",
112
+ sessionRoot,
113
+ source: runtimeSource,
114
+ stream: "stdout",
115
+ }, chunk);
93
116
  });
94
117
  child.stderr.on("data", (chunk) => {
95
118
  stderr += String(chunk);
96
119
  if (runningLogStream)
97
120
  runningLogStream.write(chunk);
121
+ appendRuntimeStreamChunkSync({
122
+ pipeline: "review",
123
+ sessionRoot,
124
+ source: runtimeSource,
125
+ stream: "stderr",
126
+ }, chunk);
98
127
  });
99
128
  child.stdin.write(boundedPrompt);
100
129
  child.stdin.end();
@@ -109,6 +138,13 @@ async function runCodexWorker(projectRoot, boundedPrompt, outputPath, model, san
109
138
  });
110
139
  child.on("close", (code) => resolve(code ?? 1));
111
140
  });
141
+ appendRuntimeStreamEventSync({
142
+ pipeline: "review",
143
+ sessionRoot,
144
+ source: runtimeSource,
145
+ stream: "status",
146
+ message: `codex worker exited: ${unitKind} ${unitId} code=${exitCode}`,
147
+ });
112
148
  // Flush the stream before deciding cleanup so tail -f readers see final
113
149
  // bytes. ENV-AFTER line is written before close for parse parity with
114
150
  // the codex-nested running log.
@@ -186,6 +222,7 @@ export async function runCodexReviewUnitExecutorCli(argv) {
186
222
  const projectRoot = path.resolve(requireString(values["project-root"], "project-root"));
187
223
  const unitId = requireString(values["unit-id"], "unit-id");
188
224
  const unitKind = requireString(values["unit-kind"], "unit-kind");
225
+ const sessionRoot = path.resolve(requireString(values["session-root"], "session-root"));
189
226
  const packetPath = path.resolve(requireString(values["packet-path"], "packet-path"));
190
227
  const outputPath = path.resolve(requireString(values["output-path"], "output-path"));
191
228
  // Review Recovery PR-1 (R1 observability symmetry). The codex executor does
@@ -202,7 +239,7 @@ export async function runCodexReviewUnitExecutorCli(argv) {
202
239
  const packetText = await fs.readFile(packetPath, "utf8");
203
240
  const boundedPrompt = buildBoundedPrompt(packetPath, packetText, outputPath, unitId, unitKind);
204
241
  await fs.mkdir(path.dirname(outputPath), { recursive: true });
205
- await runCodexWorker(projectRoot, boundedPrompt, outputPath, values.model, values["sandbox-mode"], values["reasoning-effort"], values["config-override"], unitId);
242
+ await runCodexWorker(projectRoot, boundedPrompt, outputPath, values.model, values["sandbox-mode"], values["reasoning-effort"], values["config-override"], unitId, unitKind, sessionRoot);
206
243
  const outputText = await fs.readFile(outputPath, "utf8");
207
244
  if (outputText.trim().length === 0) {
208
245
  throw new Error(`Codex executor produced empty output: ${outputPath}`);
@@ -46,8 +46,8 @@ export async function completeReviewSession(argv) {
46
46
  return {
47
47
  session_root: sessionRoot,
48
48
  bounded_complete_steps: [
49
- "review:render-final-output",
50
- "review:finalize-session",
49
+ "render_review_final_output",
50
+ "assemble_review_record",
51
51
  ],
52
52
  };
53
53
  }
@@ -73,7 +73,7 @@ deliberation_status: performed
73
73
  - Replace the mock executor with a real ContextIsolatedReasoningUnit realization.
74
74
 
75
75
  ### Recommendations
76
- - Keep MCP review connected to \`review:start-session -> review:run-prompt-execution -> review:complete-session\`.
76
+ - Keep MCP review connected to the start-session -> prompt-execution -> completion runtime.
77
77
 
78
78
  ### Unique Finding Tagging
79
79
  - mock-runner-generated
@@ -1634,14 +1634,14 @@ async function resolveReviewInvokeInputs(argv, ontoConfig, projectRoot, sessionI
1634
1634
  }
1635
1635
  if (!bundleRequested &&
1636
1636
  (typeof requestedTarget !== "string" || requestedTarget.length === 0)) {
1637
- throw new Error("Missing review target. Use `npm run review:invoke -- <target> \"<intent>\"` or pass --requested-target.");
1637
+ throw new Error("Missing review target. Pass <target> \"<intent>\" or pass --requested-target.");
1638
1638
  }
1639
1639
  const MAX_REQUEST_TEXT_LENGTH = 2000;
1640
1640
  let requestText = readSingleOptionValueFromArgv(argv, "request-text") ??
1641
1641
  readSingleOptionValueFromArgv(argv, "intent-summary") ??
1642
1642
  parsedPositionals.intentText;
1643
1643
  if (typeof requestText !== "string" || requestText.length === 0) {
1644
- throw new Error("Missing review intent. Use `npm run review:invoke -- <target> \"<intent>\"` or pass --request-text.");
1644
+ throw new Error("Missing review intent. Pass <target> \"<intent>\" or pass --request-text.");
1645
1645
  }
1646
1646
  if (requestText.length > MAX_REQUEST_TEXT_LENGTH) {
1647
1647
  console.warn(`[onto] Request text truncated from ${requestText.length} to ${MAX_REQUEST_TEXT_LENGTH} characters.`);
@@ -1948,14 +1948,14 @@ function rejectRemovedFlags(argv) {
1948
1948
  throwRetiredInput("--max-concurrent-lenses", "--max-concurrent-lenses is not supported. Review runs all selected lenses in parallel.");
1949
1949
  }
1950
1950
  if (hasOptionFlag(argv, "claude")) {
1951
- throwRetiredInput("--claude", "--claude is not supported by review:invoke. Use the MCP review path or project settings.");
1951
+ throwRetiredInput("--claude", "--claude is not supported by the review runtime. Use the MCP review path or project settings.");
1952
1952
  }
1953
1953
  for (const removed of ["host-runtime", "execution-realization", "execution-mode"]) {
1954
1954
  const optionToken = `--${removed}`;
1955
1955
  const present = hasOptionFlag(argv, removed) ||
1956
1956
  argv.some((token) => token.startsWith(`${optionToken}=`));
1957
1957
  if (present) {
1958
- throwRetiredInput(optionToken, `--${removed} is not supported by review:invoke. Use .onto/settings.json for execution profile selection.`);
1958
+ throwRetiredInput(optionToken, `--${removed} is not supported by the review runtime. Use .onto/settings.json for execution profile selection.`);
1959
1959
  }
1960
1960
  }
1961
1961
  }
@@ -2108,7 +2108,7 @@ export async function runReviewInvokeCli(argv) {
2108
2108
  console.log(`[review runner] live watcher ${action} ${watcherResult.mechanism}`);
2109
2109
  }
2110
2110
  else {
2111
- console.log(`[review runner] live progress: open another terminal and run \`npm run review:watch -- "${sessionRoot}"\`` +
2111
+ console.log(`[review runner] live progress: open another terminal and run \`bash scripts/onto-review-watch.sh "${sessionRoot}"\`` +
2112
2112
  (watcherResult.reason ? ` (${watcherResult.reason})` : ""));
2113
2113
  }
2114
2114
  }
@@ -2157,9 +2157,9 @@ export async function runReviewInvokeCli(argv) {
2157
2157
  console.log("[review invoke] completed 3/3 record assembly");
2158
2158
  const reviewSummary = await readOptionalReviewSummary(sessionRoot);
2159
2159
  const boundedInvokeSteps = [
2160
- "review:start-session",
2161
- "review:run-prompt-execution",
2162
- "review:complete-session",
2160
+ "start_review_session",
2161
+ "run_review_prompt_execution",
2162
+ "complete_review_session",
2163
2163
  ];
2164
2164
  const finalRoute = buildReviewExecutionRoute(effectiveReviewExecutionProfile);
2165
2165
  const routeProfile = {
@@ -2169,7 +2169,7 @@ export async function runReviewInvokeCli(argv) {
2169
2169
  review_execution_profile: effectiveReviewExecutionProfile,
2170
2170
  };
2171
2171
  const routeSummary = {
2172
- combined_entrypoint: "review:invoke",
2172
+ combined_entrypoint: "review_invocation",
2173
2173
  bounded_invoke_steps: [...boundedInvokeSteps],
2174
2174
  execution_realization: routeProfile.execution_realization,
2175
2175
  host_runtime: routeProfile.host_runtime,
@@ -15,6 +15,7 @@ import { printOntoReleaseChannelNotice } from "../release-channel/release-channe
15
15
  import { executeReviewViaCodexNested } from "./codex-nested-dispatch.js";
16
16
  import { ReviewStructuredFailureError, writeAndThrowStructuredFailureRecord, } from "../review/failure-records.js";
17
17
  import { assertReviewExecutionPlanSessionBoundary, } from "../review/execution-plan-boundary.js";
18
+ import { appendRuntimeStreamChunkSync, appendRuntimeStreamEventSync, } from "../observability/runtime-stream-observation.js";
18
19
  function errorMessage(error) {
19
20
  return error instanceof Error ? error.message : String(error);
20
21
  }
@@ -128,11 +129,9 @@ function requireString(value, optionName) {
128
129
  /** Default stagger delay between successive lens dispatches (ms).
129
130
  * Spreads initial burst to avoid thundering-herd on the external API. */
130
131
  function defaultStaggerDelayMsForExecutorConfig(executorConfig) {
131
- if (executorConfig.bin === "npm" || executorConfig.bin.endsWith("npm.cmd")) {
132
- if (executorConfig.args.includes("review:codex-unit-executor")) {
133
- // codex executor spawns an external process → API request per lens
134
- return 1500;
135
- }
132
+ if (executorConfig.args.some((arg) => arg.includes("codex-review-unit-executor"))) {
133
+ // codex executor spawns an external process -> API request per lens
134
+ return 1500;
136
135
  }
137
136
  return 0;
138
137
  }
@@ -258,13 +257,41 @@ async function invokeExecutor(executorConfig, projectRoot, sessionRoot, dispatch
258
257
  ...(process.env.ONTO_HOME ? { ONTO_HOME: process.env.ONTO_HOME } : {}),
259
258
  },
260
259
  });
260
+ const runtimeSourceBase = {
261
+ kind: "process",
262
+ label: `${dispatch.unit_kind}:${dispatch.unit_id}`,
263
+ unitId: dispatch.unit_id,
264
+ stageId: dispatch.unit_kind,
265
+ };
266
+ const runtimeSource = child.pid !== undefined
267
+ ? { ...runtimeSourceBase, processId: child.pid }
268
+ : runtimeSourceBase;
269
+ appendRuntimeStreamEventSync({
270
+ pipeline: "review",
271
+ sessionRoot,
272
+ source: runtimeSource,
273
+ stream: "status",
274
+ message: `executor started: ${dispatch.unit_kind} ${dispatch.unit_id}`,
275
+ });
261
276
  let stdout = "";
262
277
  let stderr = "";
263
278
  child.stdout.on("data", (chunk) => {
264
279
  stdout += String(chunk);
280
+ appendRuntimeStreamChunkSync({
281
+ pipeline: "review",
282
+ sessionRoot,
283
+ source: runtimeSource,
284
+ stream: "stdout",
285
+ }, chunk);
265
286
  });
266
287
  child.stderr.on("data", (chunk) => {
267
288
  stderr += String(chunk);
289
+ appendRuntimeStreamChunkSync({
290
+ pipeline: "review",
291
+ sessionRoot,
292
+ source: runtimeSource,
293
+ stream: "stderr",
294
+ }, chunk);
268
295
  });
269
296
  let timedOut = false;
270
297
  let forceKillTimer = null;
@@ -302,6 +329,13 @@ async function invokeExecutor(executorConfig, projectRoot, sessionRoot, dispatch
302
329
  resolve(code ?? 1);
303
330
  });
304
331
  });
332
+ appendRuntimeStreamEventSync({
333
+ pipeline: "review",
334
+ sessionRoot,
335
+ source: runtimeSource,
336
+ stream: "status",
337
+ message: `executor exited: ${dispatch.unit_kind} ${dispatch.unit_id} code=${exitCode}`,
338
+ });
305
339
  if (timedOut) {
306
340
  await removeFileIfExists(dispatch.output_path);
307
341
  throw new ReviewUnitTimeoutError(dispatch.unit_id, timeoutMs);