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
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Onto MCP
2
2
 
3
3
  `onto-mcp` is the TypeScript product core for ontology-as-code review. The
4
- public interface is MCP-native; repository-local npm scripts remain development
5
- harnesses for verification and debugging.
4
+ public interface is MCP-native; repository-local verification harnesses are
5
+ internal and are not product entrypoints.
6
6
 
7
7
  ```text
8
8
  .onto contracts and domain documents
@@ -34,19 +34,30 @@ cross-process goal contract lives at
34
34
  7. `ReviewRecord` assembly
35
35
  8. concise human-readable final output
36
36
 
37
- `reconstruct` now has a current design contract under
38
- `.onto/processes/reconstruct/`, material-aware runtime helpers, and a bounded
39
- direct-call integral runner. The runner classifies target material, expands
40
- directory targets into per-member source observations, writes the initial source
41
- frontier, runs reconstruct lens judgments and exploration synthesis through a
42
- configured LLM provider, validates evidence refs, computes deterministic metrics, and writes
43
- `final-output.md`, `reconstruct-run-manifest.yaml`, and the primary
44
- `reconstruct-record.yaml`. Code is the first fixture; the runner path is shared
45
- with spreadsheet/document/database material through source profiles and
46
- material-specific observers. The current public run path defaults to
37
+ `reconstruct` is the next active productization slice. It has active contracts
38
+ under `.onto/processes/reconstruct/`, MCP/direct-call wiring, material-aware
39
+ runtime helpers, and a bounded integral runner. Code is the first partially
40
+ wired runtime profile. Spreadsheet, document, and database profiles are
41
+ contract-active but runtime-planned until their adapters are implemented; mixed
42
+ targets are partial-composite only. The current runner classifies target
43
+ material, expands supported directory targets into per-member source
44
+ observations, writes the initial source frontier, runs reconstruct lens
45
+ judgments and exploration synthesis through a configured LLM provider, validates
46
+ available evidence refs, computes deterministic metrics, and writes
47
+ `reconstruct-run-manifest.yaml`. It emits `final-output.md` and the primary
48
+ `reconstruct-record.yaml` only through the validated handoff path after
49
+ `handoff-decision-validation.yaml` and
50
+ `reconstruct-run-manifest.pre-handoff-validation.yaml` pass; otherwise terminal
51
+ projection must be blocked or limitation-backed. The final
52
+ `reconstruct-run-manifest.post-publication-validation.yaml` is a post-publication audit for the
53
+ complete manifest after final output and record refs exist. The
54
+ current public run path defaults to
47
55
  `direct_call` semantic authoring and host-mediated confirmation. It fails loud
48
- when provider/model/credentials, LLM-authored artifact shape, or runtime gates
49
- are invalid; domain context selection remains deferred.
56
+ when provider/model/credentials, LLM-authored artifact shape, unsupported
57
+ material, or runtime gates are invalid. Optional reconstruct `domain` input
58
+ admits that domain's `competency_qs.md` into the run governing snapshot for
59
+ domain competency trace validation; there is no separate active
60
+ domain competency selection artifact.
50
61
  `evolve` has a future material-kind adapter contract at
51
62
  `.onto/processes/evolve/material-kind-adapter-contract.md`, but no active
52
63
  runtime or MCP tool. `learn` and `govern` remain separate design slices.
@@ -65,6 +76,36 @@ Start the MCP server:
65
76
  onto mcp
66
77
  ```
67
78
 
79
+ ### Register with hosts
80
+
81
+ `npm install` only puts the `onto` binary on PATH — each MCP host (Claude Code,
82
+ Codex, Claude Desktop, Cursor) must additionally be told to launch it. `onto
83
+ register` does that in one step. The same global binary is shared by every host.
84
+
85
+ ```bash
86
+ onto register # interactive: pick detected hosts (terminal only)
87
+ onto register --all --yes # non-interactive: every detected host
88
+ onto register --hosts cursor,codex --yes
89
+ onto register --list # show detection status, write nothing
90
+ onto register --hosts cursor --dry-run # preview the change, write nothing
91
+ ```
92
+
93
+ Mechanism per host:
94
+
95
+ | Host | How it is registered |
96
+ |---|---|
97
+ | Claude Code | `claude mcp add onto -s user -- onto mcp` (user scope = all projects) |
98
+ | Codex CLI | `codex mcp add onto -- onto mcp` |
99
+ | Claude Desktop | edits `mcpServers.onto` in `claude_desktop_config.json` |
100
+ | Cursor | edits `mcpServers.onto` in `~/.cursor/mcp.json` |
101
+
102
+ For the CLI-backed hosts, `onto register` prefers the official CLI and falls back
103
+ to printing manual instructions when it is not on PATH. JSON edits preserve any
104
+ servers already present and are idempotent (re-running reports `skipped`).
105
+ Registration writes only host-owned config; it never writes onto runtime data.
106
+ Restart the host app after registering to pick up the new server. Override the
107
+ launched command or server name with `--command <cmd>` / `--name <id>`.
108
+
68
109
  For project-local installs, add `onto-mcp` to the project and run the local
69
110
  binary:
70
111
 
@@ -86,7 +127,7 @@ Available MCP tools:
86
127
  | `onto.list_domains` | List available domain ids |
87
128
  | `onto.list_source_profiles` | List reconstruct source profiles |
88
129
  | `onto.observe_source` | Materialize reconstruct material profile, inventory, source observations, and initial record |
89
- | `onto.validate_reconstruct_directive` | Validate LLM-authored reconstruct directive files |
130
+ | `onto.validate_reconstruct_directive` | Validate LLM-authored reconstruct artifacts |
90
131
  | `onto.reconstruct` | Run the material-aware direct-call reconstruct path with runtime validation gates |
91
132
  | `onto.reconstruct_status` | Read reconstruct session status, progress, counts, and artifact refs |
92
133
  | `onto.reconstruct_result` | Read `reconstruct-record.yaml`, run manifest, progress projection, and final output |
@@ -95,6 +136,20 @@ MCP results include `llmPresentation` prompts. The runtime supplies bounded
95
136
  facts; the host LLM should use those prompts to explain the opening brief and
96
137
  final result to the user without inventing settings or findings.
97
138
 
139
+ When `onto.review`, `onto.review_continue`, or `onto.reconstruct` starts, the
140
+ runtime writes a session-local `runtime-events.ndjson` stream and tries to open
141
+ `scripts/onto-runtime-watch.sh` in a supported terminal split/tab. Current
142
+ automatic attach targets are `tmux`, Codex Desktop with a configured launcher
143
+ path, Warp, Cursor, iTerm2, and Apple Terminal. Codex Desktop attach never uses
144
+ UI keystroke automation by default; set
145
+ `ONTO_RUNTIME_WATCHER_CODEX_APP_LAUNCHER=/absolute/path/to/launcher.sh` to
146
+ enable it. The launcher receives `watcherScript`, `sessionRoot`, `projectRoot`,
147
+ and `watcherCommand` as positional arguments. Unsupported hosts can set
148
+ `ONTO_RUNTIME_WATCHER_COMMAND` with a launcher template containing
149
+ `{watcherCommand}`. Each stream line is source-tagged by pipeline,
150
+ unit/stage/process, and stdout/stderr/status. Set `ONTO_RUNTIME_WATCHER=0` to
151
+ disable the automatic terminal attach.
152
+
98
153
  Minimal reconstruct MCP call shape:
99
154
 
100
155
  ```json
@@ -104,6 +159,7 @@ Minimal reconstruct MCP call shape:
104
159
  "projectRoot": "/path/to/project",
105
160
  "targetRefs": ["src/example.ts"],
106
161
  "intent": "Create a bounded reconstruct Seed from this target.",
162
+ "domain": "ontology",
107
163
  "sessionRoot": ".onto/reconstruct/example-run"
108
164
  }
109
165
  }
@@ -114,36 +170,9 @@ Minimal reconstruct MCP call shape:
114
170
  with an `llm` provider/model before running. Test-only mock helpers are not
115
171
  product completion evidence.
116
172
 
117
- Repository-local development harness:
118
-
119
- ```bash
120
- npm run review:invoke -- <target> "<intent>"
121
- ```
122
-
123
- `review:invoke` prints a structured start preview before execution begins:
124
-
125
- - review target and filesystem boundary
126
- - request intent
127
- - selected domain and selection mode
128
- - review mode and lens ids
129
- - execution mode, seats, deliberation mode, concurrency
130
- - model auth/provider/model/effort/service tier
131
- - settings locations and MCP/dev-harness override points
132
-
133
- During execution, the runner prints numbered progress markers for the bounded
134
- review stages. At completion, it prints a structured result overview:
135
-
136
- - outcome status and deliberation status
137
- - target/domain/review mode
138
- - planned, participating, and degraded lens counts
139
- - comprehensive `Final Review Result` explanation from synthesize
140
- - issue count plus severity/timing/closure classification
141
- - top problem definitions from `problem-framing.yaml`
142
- - primary artifact paths
143
-
144
173
  For MCP clients, prefer the `llmPresentation.openingBrief` and
145
- `llmPresentation.finalResult` prompt/input pairs over CLI stdout when presenting
146
- start and finish explanations.
174
+ `llmPresentation.finalResult` prompt/input pairs when presenting start and
175
+ finish explanations.
147
176
 
148
177
  Runtime hardening is available as a development verification harness:
149
178
 
@@ -235,53 +264,84 @@ Primary outputs:
235
264
 
236
265
  A reconstruct session writes artifacts under `.onto/reconstruct/<session-id>/`.
237
266
 
238
- Implemented direct-call, runtime-gated outputs:
267
+ Target runtime-gated outputs below are a non-authoritative quick map. The active
268
+ artifact and gate catalog authority is
269
+ `.onto/processes/reconstruct/reconstruct-contract-registry.yaml`.
239
270
 
240
271
  | Artifact | Owner | Purpose |
241
272
  |---|---|---|
242
273
  | `target-material-profile.yaml` | runtime | detected `target_material_kind`, support status, and selected source profiles |
274
+ | `target-material-profile-validation.yaml` | runtime | material profile gate status and selected-profile closure |
243
275
  | `source-inventory.yaml` | runtime | material-specific inventory units and scan boundary |
244
- | `initial-source-frontier.yaml` | runtime | first observation frontier derived from inventory |
245
- | `source-observations.yaml` | runtime | structural observations with stable evidence ids |
276
+ | `source-observations.yaml` | runtime | structural observations with stable evidence ids and source content fingerprints |
246
277
  | `source-observation-directive.yaml` | host LLM author | selected observations for evidence use |
247
278
  | `source-observation-directive-validation.yaml` | runtime | validation of selected observation refs |
279
+ | `*.reuse-provenance.yaml` | runtime | sidecar proof that same-session resume reuses authored YAML only when invocation, source, governing snapshot, and artifact hash match |
248
280
  | `rounds/<round-id>/lens-judgments/*.yaml` | host LLM author | reconstruct lens judgments over trusted observations |
249
281
  | `rounds/<round-id>/exploration-synthesis.yaml` | host LLM author | integrated gaps and next-source needs |
250
282
  | `rounds/<round-id>/source-frontier.yaml` | host LLM author | requested next source refs or no-next-frontier rationale |
251
- | `rounds/<round-id>/source-frontier-validation.yaml` | runtime | boundary, duplicate, and inventory validation for the frontier |
252
- | `seed-candidate.yaml` | host LLM author | evidence-backed Seed candidate with separate `claim_id` and user-facing `name` |
253
- | `seed-candidate-validation.yaml` | runtime | Seed claim name, shape, and evidence-ref validation |
254
- | `claim-realization-map.yaml` | host LLM author | claim-level evidence stance |
255
- | `claim-realization-map-validation.yaml` | runtime | claim id, stance enum, and evidence linkage validation |
256
- | `seed-confirmation.yaml` | host/user mediated | accepted, rejected, partial, or deferred Seed confirmation |
257
- | `seed-confirmation-validation.yaml` | runtime | confirmation transition validation and derived claim sets |
258
- | `competency-questions.yaml` | host LLM author | questions linked to confirmed claims |
259
- | `competency-questions-validation.yaml` | runtime | CQ id, eligible-claim coverage, claim-link, and evidence validation |
260
- | `competency-question-assessment.yaml` | host LLM author | answer status for every authoritative CQ |
261
- | `competency-question-assessment-validation.yaml` | runtime | exactly-once CQ assessment validation |
283
+ | `rounds/<round-id>/source-frontier-validation.yaml` | runtime | frontier validation plus explicit dependency proof on `target-material-profile-validation.yaml` |
284
+ | `candidate-inventory.yaml` | host LLM author | salient object, actor, action, workflow, permission, data source, constraint, and concept candidates |
285
+ | `candidate-disposition.yaml` | host LLM author | one disposition for every salient candidate, including planned target seed refs for promoted candidates |
286
+ | `candidate-disposition-validation.yaml` | runtime | inventory/disposition closure and projection validation |
287
+ | `ontology-seed.yaml` | host LLM author | primary actionable ontology seed |
288
+ | `ontology-seed-validation.yaml` | runtime | seed layer, id, binding, disposition, and evidence-ref validation |
289
+ | `claim-realization-map.yaml` | host LLM author | one realization stance for every ontology seed claim |
290
+ | `claim-realization-map-validation.yaml` | runtime | seed-claim closure and realization evidence validation |
291
+ | `competency-questions.yaml` | host LLM author | questions linked to the declared purpose, seed layers, registry facets, proof-contract refs, admitted domain competency ids, and diagnostic/claim-based dispositions |
292
+ | `competency-questions-validation.yaml` | runtime | question id, derived evidence scope, seed-link, evidence, registry facet/proof refs, exactly-one admitted domain competency coverage, and run-manifest admitted domain trace validation |
293
+ | `competency-question-assessment.yaml` | host LLM author + runtime projections | answer status, required seed refs, evidence refs, and downstream effect for every authoritative CQ |
294
+ | `competency-question-assessment-validation.yaml` | runtime | exactly-once CQ assessment validation plus answer-status/downstream-effect and seed/evidence closure |
295
+ | `seed-confirmation.yaml` | host/user mediated | confirmation or limitation decision over validated seed claims before CQ authoring |
296
+ | `seed-confirmation-validation.yaml` | runtime | confirmation closure and CQ eligibility over the validated seed; terminal readiness is owned by `handoff-decision-validation.yaml` |
262
297
  | `failure-classification.yaml` | host LLM author | material failure and gap classification |
263
298
  | `failure-classification-validation.yaml` | runtime | failure enum, linkage, and materiality validation |
264
299
  | `revision-proposal.yaml` | host LLM author | bounded revision/deferral proposals |
265
300
  | `revision-proposal-validation.yaml` | runtime | proposal id, target, action, and regression guard validation |
266
- | `reconstruct-metrics.yaml` | runtime | deterministic counts, unresolved/deferred counts, and pass rate |
267
- | `stop-decision.yaml` | host LLM author | stop, continue, or ask-user decision based on metrics |
268
- | `final-output.md` | host LLM author | user-facing result grounded in artifacts and provenance-checked by runtime |
269
- | `reconstruct-run-manifest.yaml` | runtime | step refs, `performed_by` provenance, execution profile, and happy-path scope |
301
+ | `reconstruct-metrics.yaml` | runtime | deterministic counts, answerability bucket counts, unresolved/deferred counts, and pass rate |
302
+ | `stop-decision.yaml` | host LLM author | proposed stop/continue/ask-user decision; not the readiness authority |
303
+ | `handoff-decision-validation.yaml` | runtime | canonical readiness projection from runtime gates plus `stop-decision.yaml` consistency before final output and record projection |
304
+ | `final-output.md` | host LLM author + runtime footer | user-facing result grounded in artifacts, seed validity, and handoff limitations |
305
+ | `reconstruct-run-manifest.yaml` | runtime | step refs, `performed_by` provenance, execution profile, requested domain ids, and happy-path scope |
306
+ | `reconstruct-run-manifest.post-publication-validation.yaml` | runtime | post-publication registry hash, active contract hash, source profile migration, validator, reference-standard, pattern-catalog URI/snapshot, version, and migration snapshot consistency after final output and record refs exist |
270
307
  | `reconstruct-record.yaml` | runtime | primary structured reconstruct artifact |
271
308
 
272
- Current deferred reconstruct artifacts are recorded in
273
- `reconstruct-run-manifest.yaml` under `happy_path_scope.deferred_artifacts`:
274
- `domain_context_selection` and `domain_context_selection_validation`. Those
275
- require additional domain selection semantics and are outside the current
276
- direct-call path.
277
-
278
- The reconstruct design contract also defines validation artifacts for those
279
- stages, stable reconstruct stage ids, cross-artifact id authority, and progress
280
- UX expectations in `.onto/processes/reconstruct/reconstruct-execution-ux-contract.md`.
281
- Seed discovery is further constrained by
282
- `.onto/processes/reconstruct/top-level-concept-discovery-contract.md`, which
283
- defines the Seed as a purpose-relative top-level concept discovery artifact
284
- rather than a full ontology or broad claim ledger.
309
+ The runtime keeps full source evidence in `source-observations.yaml`. LLM
310
+ authoring calls may receive compact prompt projections, such as selected
311
+ observations with shortened text excerpts, while validation still checks all
312
+ generated evidence refs against the full artifact truth.
313
+ Terminal projection uses `handoff-decision-validation.yaml.readiness_projection`
314
+ as the readiness authority and requires both validated handoff and a validated
315
+ pre-handoff run-manifest snapshot. The final
316
+ `reconstruct-run-manifest.post-publication-validation.yaml` is the post-publication audit for the
317
+ complete manifest after `final-output.md` and `reconstruct-record.yaml` refs are
318
+ known; it is not a prerequisite for the pre-handoff readiness projection. The
319
+ same artifact records `gate_projection[]`, where each
320
+ active gate is evaluated through the registry `required_when_predicate_catalog`
321
+ before validation status is required.
322
+
323
+ Contract-planned conditional proof authorities are not emitted by the current
324
+ runtime until their validator surfaces are implemented:
325
+
326
+ | planned artifact | planned authority |
327
+ |---|---|
328
+ | `rounds/<round-id>/source-observation-delta.yaml` / `rounds/<round-id>/source-observation-delta-validation.yaml` | multi-round observation lineage before newly observed frontier evidence is used |
329
+ | `rounds/<round-id>/source-observation-reentry-validation.yaml` | post-use re-entry validation for frontier-triggered observations cited downstream |
330
+ | `query-proofs.yaml` / `query-proofs-validation.yaml` | executable query/API proof rows when queryability or implementation access is claimed |
331
+ | `visualization-proofs.yaml` / `visualization-proofs-validation.yaml` | visualization surface proof rows when static or overview visualization is claimed |
332
+ | `graph-exploration-proofs.yaml` / `graph-exploration-proofs-validation.yaml` | graph navigation/exploration proof rows when traversal or large-graph exploration is claimed |
333
+ | `required-when-evaluation.yaml` / `required-when-evaluation-validation.yaml` | standalone audited conditional-gate applicability trace; the current terminal handoff projection embeds predicate input/result details in `handoff-decision-validation.yaml.gate_projection[]` |
334
+ | `ontology-handoff mapping proof` | per-axis ontology handoff mapping gate once that validator is implemented |
335
+
336
+ The active seed target is defined by
337
+ `.onto/processes/reconstruct/foundry-style-ontology-seed-contract.md`.
338
+ The full recomposition plan is
339
+ `.onto/processes/reconstruct/actionable-ontology-seed-recomposition-design.md`.
340
+ The active contract, source profile, lens judgment, artifact, gate, readiness, and
341
+ projection authority registry is
342
+ `.onto/processes/reconstruct/reconstruct-contract-registry.yaml`.
343
+ The seed is valid only when process completion, seed validation, downstream
344
+ gates, and handoff limitations are reported separately and consistently.
285
345
 
286
346
  ## Repository Map
287
347
 
@@ -305,6 +365,5 @@ npm run check:ts-core
305
365
  npm run build:ts-core
306
366
  npm run test:mcp:review
307
367
  npm run test:review:hardening
308
- npm run test:e2e
309
368
  git diff --check
310
369
  ```
package/dist/cli.js CHANGED
@@ -7,8 +7,7 @@ import { readOntoVersion } from "./core-runtime/release-channel/release-channel.
7
7
  * Public binary surface for the MCP-native product.
8
8
  *
9
9
  * Product tools are exposed through MCP (`onto mcp`). Review and other
10
- * runtime flows are no longer public `onto <activity>` CLI commands. The
11
- * `npm run review:*` scripts remain internal development harnesses.
10
+ * runtime flows are no longer public `onto <activity>` CLI commands.
12
11
  */
13
12
  function loadOntoEnvFile(filePath) {
14
13
  if (!fs.existsSync(filePath))
@@ -35,10 +34,11 @@ function loadOntoEnvFile(filePath) {
35
34
  }
36
35
  function printHelp() {
37
36
  console.log([
38
- "Usage: onto mcp",
37
+ "Usage: onto <command>",
39
38
  "",
40
39
  "Active interface:",
41
40
  " mcp Start the MCP stdio tool server",
41
+ " register Register the onto MCP server into supported hosts",
42
42
  "",
43
43
  "Available MCP tools:",
44
44
  " onto.review",
@@ -54,9 +54,6 @@ function printHelp() {
54
54
  " onto.reconstruct_status",
55
55
  " onto.reconstruct_result",
56
56
  "",
57
- "Development harness:",
58
- " npm run review:invoke -- <target> \"<intent>\"",
59
- "",
60
57
  "Options:",
61
58
  " --version, -v Show version",
62
59
  " --help, -h Show this help",
@@ -65,8 +62,7 @@ function printHelp() {
65
62
  function unsupportedCommandMessage(subcommand) {
66
63
  return [
67
64
  `[onto] Unsupported public CLI subcommand: ${subcommand}`,
68
- "Active public command: onto mcp",
69
- "Development harness: npm run review:invoke -- <target> \"<intent>\"",
65
+ "Active public commands: onto mcp, onto register",
70
66
  ].join("\n");
71
67
  }
72
68
  async function main() {
@@ -79,6 +75,10 @@ async function main() {
79
75
  const { startMcpServer } = await import("./mcp/server.js");
80
76
  return startMcpServer();
81
77
  }
78
+ case "register": {
79
+ const { runRegister } = await import("./core-runtime/onboard/register.js");
80
+ return runRegister(argv.slice(1));
81
+ }
82
82
  case "--version":
83
83
  case "-v": {
84
84
  const version = await readOntoVersion();
@@ -4,14 +4,19 @@ import path from "node:path";
4
4
  import { parse as parseYaml } from "yaml";
5
5
  import { RECONSTRUCT_STAGE_IDS, } from "../core-runtime/reconstruct/artifact-types.js";
6
6
  import { materializeReconstructPreparationArtifacts, } from "../core-runtime/reconstruct/materialize-preparation.js";
7
+ import { writeTargetMaterialProfileValidationArtifact, } from "../core-runtime/reconstruct/material-profile-validation.js";
7
8
  import { assembleReconstructRecord, } from "../core-runtime/reconstruct/record.js";
8
9
  import { createAutoAcceptReconstructConfirmationProvider, createDirectCallReconstructConfirmationProvider, createDirectCallReconstructDirectiveAuthor, createMockReconstructDirectiveAuthor, runReconstruct, } from "../core-runtime/reconstruct/run.js";
9
10
  import { resolveSettingsChain, } from "../core-runtime/discovery/settings-chain.js";
11
+ import { resolveOntoHome, } from "../core-runtime/discovery/onto-home.js";
10
12
  import { resolveLlmProviderConfig, } from "../core-runtime/llm/llm-caller.js";
11
- import { writeSeedCandidateValidationArtifact, } from "../core-runtime/reconstruct/seed-candidate-validation.js";
13
+ import { writeActionableOntologySeedValidationArtifact, writeCandidateDispositionValidationArtifact, } from "../core-runtime/reconstruct/actionable-seed-validation.js";
12
14
  import { writeSourceObservationDirectiveValidationArtifact, } from "../core-runtime/reconstruct/directive-validation.js";
13
15
  import { loadReconstructSourceProfiles, } from "../core-runtime/reconstruct/source-profiles.js";
16
+ import { assertReconstructDomainId, } from "../core-runtime/reconstruct/domain-id.js";
14
17
  import { buildReconstructPipelineExecutionLedger, } from "../core-runtime/reconstruct/pipeline-execution-ledger.js";
18
+ import { spawnRuntimeWatcherPane, } from "../core-runtime/cli/spawn-watcher.js";
19
+ import { appendRuntimeStatusEventSync, runWithRuntimeObservationContext, } from "../core-runtime/observability/runtime-stream-observation.js";
15
20
  async function directoryExists(directoryPath) {
16
21
  try {
17
22
  const stat = await fs.stat(directoryPath);
@@ -53,8 +58,17 @@ async function resolveProfilesRoot(args) {
53
58
  function defaultDirectiveValidationOutputPath(request) {
54
59
  return path.join(path.dirname(path.resolve(request.directivePath)), "source-observation-directive-validation.yaml");
55
60
  }
56
- function defaultSeedValidationOutputPath(request) {
57
- return path.join(path.dirname(path.resolve(request.seedCandidatePath)), "seed-candidate-validation.yaml");
61
+ function defaultCandidateDispositionValidationOutputPath(request) {
62
+ return path.join(path.dirname(path.resolve(request.candidateDispositionPath)), "candidate-disposition-validation.yaml");
63
+ }
64
+ function defaultOntologySeedValidationOutputPath(request) {
65
+ return path.join(path.dirname(path.resolve(request.ontologySeedPath)), "ontology-seed-validation.yaml");
66
+ }
67
+ function defaultReconstructContractRegistryPath(ontoHome) {
68
+ return path.join(path.resolve(ontoHome ?? process.cwd()), ".onto", "processes", "reconstruct", "reconstruct-contract-registry.yaml");
69
+ }
70
+ function reconstructContractRegistryPathFromProfilesRoot(profilesRoot) {
71
+ return path.resolve(profilesRoot, "..", "reconstruct-contract-registry.yaml");
58
72
  }
59
73
  async function readYamlArtifact(filePath) {
60
74
  return parseYaml(await fs.readFile(filePath, "utf8"));
@@ -131,19 +145,30 @@ function deriveReconstructProgress(args) {
131
145
  args.record.validation_summary.unresolved_count,
132
146
  passRate: args.metrics?.pass_rate ?? args.record.validation_summary.pass_rate,
133
147
  },
148
+ answerabilitySummary: args.metrics
149
+ ? {
150
+ declaredQuestionCount: args.metrics.answerability_summary.declared_question_count,
151
+ supportedQuestionCount: args.metrics.answerability_summary.supported_question_count,
152
+ deferredQuestionCount: args.metrics.answerability_summary.deferred_question_count,
153
+ unsupportedQuestionCount: args.metrics.answerability_summary.unsupported_question_count,
154
+ supportedActionCount: args.metrics.answerability_summary.supported_action_count,
155
+ unsupportedActionCount: args.metrics.answerability_summary.unsupported_action_count,
156
+ }
157
+ : null,
134
158
  stages,
135
159
  };
136
160
  }
137
161
  function recordArtifactRefsFromPreparation(refs) {
138
162
  return {
139
163
  target_material_profile: refs.target_material_profile,
164
+ target_material_profile_validation: refs.target_material_profile_validation ?? null,
140
165
  source_inventory: refs.source_inventory,
141
166
  initial_source_frontier: refs.initial_source_frontier,
142
167
  source_observations: refs.source_observations,
143
168
  };
144
169
  }
145
170
  export function createOntoReconstructCoreApi(options = {}) {
146
- const ontoHome = options.ontoHome ? path.resolve(options.ontoHome) : undefined;
171
+ const ontoHome = resolveOntoHome(options.ontoHome);
147
172
  return {
148
173
  async listSourceProfiles(projectRoot = process.cwd()) {
149
174
  const resolvedProjectRoot = path.resolve(projectRoot);
@@ -173,10 +198,19 @@ export function createOntoReconstructCoreApi(options = {}) {
173
198
  filesystemAllowedRoots: request.filesystemAllowedRoots?.map((root) => resolveFromBase(projectRoot, root)) ??
174
199
  [projectRoot],
175
200
  });
201
+ const targetMaterialProfileValidationPath = path.join(sessionRoot, "target-material-profile-validation.yaml");
202
+ await writeTargetMaterialProfileValidationArtifact({
203
+ targetMaterialProfilePath: preparationRefs.target_material_profile,
204
+ registryPath: reconstructContractRegistryPathFromProfilesRoot(profilesRoot),
205
+ outputPath: targetMaterialProfileValidationPath,
206
+ });
176
207
  const recordPath = path.join(sessionRoot, "reconstruct-record.yaml");
177
208
  const reconstructRecord = await assembleReconstructRecord({
178
209
  sessionRoot,
179
- artifactRefs: recordArtifactRefsFromPreparation(preparationRefs),
210
+ artifactRefs: recordArtifactRefsFromPreparation({
211
+ ...preparationRefs,
212
+ target_material_profile_validation: targetMaterialProfileValidationPath,
213
+ }),
180
214
  outputPath: recordPath,
181
215
  });
182
216
  return {
@@ -207,26 +241,75 @@ export function createOntoReconstructCoreApi(options = {}) {
207
241
  const llmConfig = resolveLlmProviderConfig({ config: settings });
208
242
  const semanticAuthorRealization = request.semanticAuthorRealization ?? "direct_call";
209
243
  const confirmationProviderRealization = request.confirmationProviderRealization ?? "direct_call";
244
+ if (request.domain) {
245
+ assertReconstructDomainId(request.domain, "reconstruct domain");
246
+ }
210
247
  const directiveAuthor = semanticAuthorRealization === "mock"
211
248
  ? createMockReconstructDirectiveAuthor()
212
249
  : createDirectCallReconstructDirectiveAuthor({ llmConfig });
213
250
  const confirmationProvider = confirmationProviderRealization === "mock"
214
251
  ? createAutoAcceptReconstructConfirmationProvider()
215
252
  : createDirectCallReconstructConfirmationProvider({ llmConfig });
216
- return runReconstruct({
217
- projectRoot,
218
- targetRefs,
219
- intent: request.intent,
253
+ appendRuntimeStatusEventSync({
254
+ pipeline: "reconstruct",
220
255
  sessionRoot,
221
- profilesRoot,
222
- semanticAuthorRealization,
223
- confirmationProviderRealization,
224
- directiveAuthor,
225
- confirmationProvider,
226
- llmConfig,
227
- filesystemAllowedRoots: request.filesystemAllowedRoots?.map((root) => resolveFromBase(projectRoot, root)) ??
228
- [projectRoot],
256
+ sourceLabel: "onto.reconstruct",
257
+ message: "reconstruct session starting",
258
+ stageId: "start",
259
+ });
260
+ const watcherResult = spawnRuntimeWatcherPane(projectRoot, sessionRoot, ontoHome);
261
+ appendRuntimeStatusEventSync({
262
+ pipeline: "reconstruct",
263
+ sessionRoot,
264
+ sourceLabel: "runtime-watcher",
265
+ message: watcherResult.spawned
266
+ ? `watcher ${watcherResult.dry_run ? "detected" : "attached"} via ${watcherResult.mechanism}`
267
+ : `watcher not attached: ${watcherResult.reason ?? "unknown reason"}`,
268
+ stageId: "start",
229
269
  });
270
+ try {
271
+ const result = await runWithRuntimeObservationContext({
272
+ pipeline: "reconstruct",
273
+ sessionRoot,
274
+ source: {
275
+ kind: "llm",
276
+ label: "reconstruct",
277
+ },
278
+ }, () => runReconstruct({
279
+ projectRoot,
280
+ targetRefs,
281
+ intent: request.intent,
282
+ sessionRoot,
283
+ profilesRoot,
284
+ ...(request.domain ? { domain: request.domain } : {}),
285
+ ...(request.resumeMode ? { resumeMode: request.resumeMode } : {}),
286
+ semanticAuthorRealization,
287
+ confirmationProviderRealization,
288
+ directiveAuthor,
289
+ confirmationProvider,
290
+ llmConfig,
291
+ filesystemAllowedRoots: request.filesystemAllowedRoots?.map((root) => resolveFromBase(projectRoot, root)) ??
292
+ [projectRoot],
293
+ }));
294
+ appendRuntimeStatusEventSync({
295
+ pipeline: "reconstruct",
296
+ sessionRoot,
297
+ sourceLabel: "onto.reconstruct",
298
+ message: "reconstruct session completed",
299
+ stageId: "complete",
300
+ });
301
+ return result;
302
+ }
303
+ catch (error) {
304
+ appendRuntimeStatusEventSync({
305
+ pipeline: "reconstruct",
306
+ sessionRoot,
307
+ sourceLabel: "onto.reconstruct",
308
+ message: `reconstruct session failed: ${error instanceof Error ? error.message : String(error)}`,
309
+ stageId: "complete",
310
+ });
311
+ throw error;
312
+ }
230
313
  },
231
314
  async validateSourceObservationDirective(request) {
232
315
  return writeSourceObservationDirectiveValidationArtifact({
@@ -237,23 +320,26 @@ export function createOntoReconstructCoreApi(options = {}) {
237
320
  : defaultDirectiveValidationOutputPath(request),
238
321
  });
239
322
  },
240
- async validateSeedCandidate(request) {
241
- return writeSeedCandidateValidationArtifact({
242
- seedCandidatePath: path.resolve(request.seedCandidatePath),
323
+ async validateCandidateDisposition(request) {
324
+ return writeCandidateDispositionValidationArtifact({
325
+ candidateInventoryPath: path.resolve(request.candidateInventoryPath),
326
+ candidateDispositionPath: path.resolve(request.candidateDispositionPath),
243
327
  sourceObservationsPath: path.resolve(request.sourceObservationsPath),
328
+ registryPath: path.resolve(request.registryPath ?? defaultReconstructContractRegistryPath(ontoHome)),
244
329
  outputPath: request.outputPath
245
330
  ? path.resolve(request.outputPath)
246
- : defaultSeedValidationOutputPath(request),
247
- ...(request.sourceObservationDirectivePath
248
- ? {
249
- sourceObservationDirectivePath: path.resolve(request.sourceObservationDirectivePath),
250
- }
251
- : {}),
252
- ...(request.sourceObservationDirectiveValidationPath
253
- ? {
254
- sourceObservationDirectiveValidationPath: path.resolve(request.sourceObservationDirectiveValidationPath),
255
- }
256
- : {}),
331
+ : defaultCandidateDispositionValidationOutputPath(request),
332
+ });
333
+ },
334
+ async validateActionableOntologySeed(request) {
335
+ return writeActionableOntologySeedValidationArtifact({
336
+ ontologySeedPath: path.resolve(request.ontologySeedPath),
337
+ candidateDispositionPath: path.resolve(request.candidateDispositionPath),
338
+ sourceObservationsPath: path.resolve(request.sourceObservationsPath),
339
+ registryPath: path.resolve(request.registryPath ?? defaultReconstructContractRegistryPath(ontoHome)),
340
+ outputPath: request.outputPath
341
+ ? path.resolve(request.outputPath)
342
+ : defaultOntologySeedValidationOutputPath(request),
257
343
  });
258
344
  },
259
345
  async assembleRecord(request) {