onto-mcp 0.3.1 → 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 (328) hide show
  1. package/.onto/authority/core-lexicon.yaml +1 -0
  2. package/.onto/domains/software-engineering/competency_qs.md +192 -63
  3. package/.onto/domains/software-engineering/concepts.md +67 -5
  4. package/.onto/domains/software-engineering/conciseness_rules.md +22 -2
  5. package/.onto/domains/software-engineering/dependency_rules.md +78 -8
  6. package/.onto/domains/software-engineering/domain_scope.md +181 -150
  7. package/.onto/domains/software-engineering/extension_cases.md +318 -542
  8. package/.onto/domains/software-engineering/logic_rules.md +75 -3
  9. package/.onto/domains/software-engineering/problem_framing_profile.md +29 -2
  10. package/.onto/domains/software-engineering/prompt_interface.md +122 -0
  11. package/.onto/domains/software-engineering/structure_spec.md +53 -4
  12. package/.onto/principles/llm-native-development-guideline.md +20 -0
  13. package/.onto/principles/productization-charter.md +6 -0
  14. package/.onto/processes/reconstruct/actionable-ontology-seed-recomposition-design.md +447 -0
  15. package/.onto/processes/reconstruct/foundry-style-ontology-seed-contract.md +934 -0
  16. package/.onto/processes/reconstruct/reconstruct-boundary-contract.md +303 -538
  17. package/.onto/processes/reconstruct/reconstruct-contract-registry.yaml +1645 -0
  18. package/.onto/processes/reconstruct/reconstruct-execution-ux-contract.md +63 -26
  19. package/.onto/processes/reconstruct/source-profile-contract.md +79 -20
  20. package/.onto/processes/reconstruct/source-profiles/code.md +6 -3
  21. package/.onto/processes/reconstruct/source-profiles/database.md +5 -2
  22. package/.onto/processes/reconstruct/source-profiles/document.md +5 -2
  23. package/.onto/processes/reconstruct/source-profiles/spreadsheet.md +5 -4
  24. package/.onto/processes/review/lens-registry.md +16 -0
  25. package/.onto/processes/review/review-execution-ux-contract.md +40 -0
  26. package/.onto/processes/shared/pipeline-execution-ledger-contract.md +26 -10
  27. package/.onto/processes/shared/target-material-kind-contract.md +47 -18
  28. package/.onto/roles/axiology.md +7 -2
  29. package/AGENTS.md +6 -3
  30. package/README.md +148 -83
  31. package/dist/cli.js +8 -8
  32. package/dist/core-api/reconstruct-api.js +134 -31
  33. package/dist/core-api/review-api.js +1335 -533
  34. package/dist/core-runtime/cli/codex-review-unit-executor.js +39 -2
  35. package/dist/core-runtime/cli/complete-review-session.js +2 -2
  36. package/dist/core-runtime/cli/mock-review-unit-executor.js +18 -1
  37. package/dist/core-runtime/cli/review-invoke.js +32 -57
  38. package/dist/core-runtime/cli/run-review-prompt-execution.js +161 -5
  39. package/dist/core-runtime/cli/spawn-watcher.js +266 -47
  40. package/dist/core-runtime/cli/start-review-session.js +3 -3
  41. package/dist/core-runtime/llm/llm-caller.js +11 -0
  42. package/dist/core-runtime/llm/llm-tool-loop.js +2 -0
  43. package/dist/core-runtime/observability/runtime-stream-observation.js +118 -0
  44. package/dist/core-runtime/onboard/cli-host.js +149 -0
  45. package/dist/core-runtime/onboard/host-target.js +22 -0
  46. package/dist/core-runtime/onboard/json-config-host.js +122 -0
  47. package/dist/core-runtime/onboard/path-scan.js +26 -0
  48. package/dist/core-runtime/onboard/prompt.js +51 -0
  49. package/dist/core-runtime/onboard/register.js +207 -0
  50. package/dist/core-runtime/onboard/types.js +27 -0
  51. package/dist/core-runtime/path-boundary.js +58 -0
  52. package/dist/core-runtime/reconstruct/actionable-seed-validation.js +1777 -0
  53. package/dist/core-runtime/reconstruct/artifact-types.js +15 -4
  54. package/dist/core-runtime/reconstruct/contract-registry.js +623 -0
  55. package/dist/core-runtime/reconstruct/domain-id.js +10 -0
  56. package/dist/core-runtime/reconstruct/governing-snapshot.js +716 -0
  57. package/dist/core-runtime/reconstruct/material-profile-validation.js +191 -0
  58. package/dist/core-runtime/reconstruct/materialize-preparation.js +103 -15
  59. package/dist/core-runtime/reconstruct/pipeline-execution-ledger.js +298 -72
  60. package/dist/core-runtime/reconstruct/post-seed-validation.js +1207 -51
  61. package/dist/core-runtime/reconstruct/record.js +115 -20
  62. package/dist/core-runtime/reconstruct/run.js +3046 -245
  63. package/dist/core-runtime/reconstruct/seed-claim-projections.js +268 -0
  64. package/dist/core-runtime/reconstruct/source-profiles.js +93 -4
  65. package/dist/core-runtime/reconstruct/terminal-validation.js +807 -0
  66. package/dist/core-runtime/review/execution-plan-boundary.js +123 -0
  67. package/dist/core-runtime/review/materializers.js +8 -3
  68. package/dist/core-runtime/review/review-artifact-utils.js +15 -2
  69. package/dist/core-runtime/review/review-invocation-runner.js +604 -0
  70. package/dist/core-runtime/target-material-kind.js +43 -5
  71. package/dist/mcp/server.js +268 -77
  72. package/dist/mcp/tool-schemas.js +42 -8
  73. package/package.json +9 -16
  74. package/scripts/onto-review-watch.sh +486 -0
  75. package/scripts/onto-runtime-watch.sh +122 -0
  76. package/scripts/postinstall-hint.js +22 -0
  77. package/.onto/domains/llm-native-development/competency_qs.md +0 -430
  78. package/.onto/domains/llm-native-development/concepts.md +0 -242
  79. package/.onto/domains/llm-native-development/conciseness_rules.md +0 -163
  80. package/.onto/domains/llm-native-development/dependency_rules.md +0 -216
  81. package/.onto/domains/llm-native-development/domain_scope.md +0 -197
  82. package/.onto/domains/llm-native-development/extension_cases.md +0 -474
  83. package/.onto/domains/llm-native-development/logic_rules.md +0 -123
  84. package/.onto/domains/llm-native-development/prompt_interface.md +0 -49
  85. package/.onto/domains/llm-native-development/structure_spec.md +0 -245
  86. package/dist/core-runtime/cli/bootstrap-review-binding.js +0 -186
  87. package/dist/core-runtime/cli/codex-nested-dispatch.test.js +0 -390
  88. package/dist/core-runtime/cli/codex-nested-teamlead-executor.test.js +0 -335
  89. package/dist/core-runtime/cli/coordinator-helpers.js +0 -583
  90. package/dist/core-runtime/cli/coordinator-state-machine-deliberation.test.js +0 -167
  91. package/dist/core-runtime/cli/coordinator-state-machine.js +0 -794
  92. package/dist/core-runtime/cli/e2e-codex-multi-agent-fixes.test.js +0 -615
  93. package/dist/core-runtime/cli/e2e-start-review-session.test.js +0 -312
  94. package/dist/core-runtime/cli/health.js +0 -44
  95. package/dist/core-runtime/cli/inline-http-review-unit-executor.test.js +0 -567
  96. package/dist/core-runtime/cli/materialize-review-execution-preparation.js +0 -104
  97. package/dist/core-runtime/cli/migrate-session-roots.js +0 -118
  98. package/dist/core-runtime/cli/repo-layout-migration-replace.smoke.test.js +0 -106
  99. package/dist/core-runtime/cli/review-invoke-auto-resolution.test.js +0 -268
  100. package/dist/core-runtime/cli/review-invoke-coordinator-topology.test.js +0 -136
  101. package/dist/core-runtime/cli/review-invoke-resolver-caching.test.js +0 -201
  102. package/dist/core-runtime/cli/review-invoke-topology-dispatch.test.js +0 -192
  103. package/dist/core-runtime/cli/session-root-guard.js +0 -168
  104. package/dist/core-runtime/cli/spawn-watcher.test.js +0 -457
  105. package/dist/core-runtime/cli/strip-wrapping-code-fence.test.js +0 -79
  106. package/dist/core-runtime/cli/teamcreate-lens-deliberation-executor.js +0 -412
  107. package/dist/core-runtime/cli/teamcreate-lens-deliberation-executor.test.js +0 -351
  108. package/dist/core-runtime/cli/topology-executor-mapping.js +0 -139
  109. package/dist/core-runtime/cli/topology-executor-mapping.test.js +0 -173
  110. package/dist/core-runtime/cli/write-review-interpretation.js +0 -81
  111. package/dist/core-runtime/config/onto-config-cli.js +0 -278
  112. package/dist/core-runtime/config/onto-config-key-path.js +0 -288
  113. package/dist/core-runtime/config/onto-config-key-path.test.js +0 -195
  114. package/dist/core-runtime/config/onto-config-preview.js +0 -108
  115. package/dist/core-runtime/config/onto-config-preview.test.js +0 -132
  116. package/dist/core-runtime/discovery/config-chain.js +0 -118
  117. package/dist/core-runtime/discovery/config-chain.test.js +0 -103
  118. package/dist/core-runtime/discovery/config-profile.js +0 -199
  119. package/dist/core-runtime/discovery/config-profile.test.js +0 -233
  120. package/dist/core-runtime/discovery/host-detection.test.js +0 -186
  121. package/dist/core-runtime/discovery/installation-paths.test.js +0 -65
  122. package/dist/core-runtime/discovery/lens-registry.test.js +0 -81
  123. package/dist/core-runtime/discovery/path-normalization.test.js +0 -22
  124. package/dist/core-runtime/discovery/plugin-path.js +0 -72
  125. package/dist/core-runtime/discovery/plugin-path.test.js +0 -95
  126. package/dist/core-runtime/evolve/adapters/code-product/compile/compile-defense.js +0 -344
  127. package/dist/core-runtime/evolve/adapters/code-product/compile/compile-defense.test.js +0 -915
  128. package/dist/core-runtime/evolve/adapters/code-product/compile/compile.js +0 -564
  129. package/dist/core-runtime/evolve/adapters/code-product/compile/compile.test.js +0 -708
  130. package/dist/core-runtime/evolve/adapters/code-product/parsers/brief-parser.js +0 -165
  131. package/dist/core-runtime/evolve/adapters/code-product/parsers/brief-parser.test.js +0 -227
  132. package/dist/core-runtime/evolve/adapters/code-product/validators/validate.js +0 -59
  133. package/dist/core-runtime/evolve/adapters/code-product/validators/validate.test.js +0 -205
  134. package/dist/core-runtime/evolve/adapters/methodology/adapter.js +0 -16
  135. package/dist/core-runtime/evolve/adapters/methodology/adapter.test.js +0 -9
  136. package/dist/core-runtime/evolve/adapters/methodology/perspectives/authority-consistency.js +0 -298
  137. package/dist/core-runtime/evolve/adapters/methodology/perspectives/authority-consistency.test.js +0 -70
  138. package/dist/core-runtime/evolve/adapters/methodology/scope-types/process.js +0 -46
  139. package/dist/core-runtime/evolve/adapters/methodology/scope-types/process.test.js +0 -73
  140. package/dist/core-runtime/evolve/adapters/registry.js +0 -47
  141. package/dist/core-runtime/evolve/adapters/registry.test.js +0 -67
  142. package/dist/core-runtime/evolve/cli.js +0 -256
  143. package/dist/core-runtime/evolve/commands/align.js +0 -194
  144. package/dist/core-runtime/evolve/commands/align.test.js +0 -82
  145. package/dist/core-runtime/evolve/commands/apply.js +0 -161
  146. package/dist/core-runtime/evolve/commands/apply.test.js +0 -138
  147. package/dist/core-runtime/evolve/commands/close.js +0 -39
  148. package/dist/core-runtime/evolve/commands/close.test.js +0 -99
  149. package/dist/core-runtime/evolve/commands/defer.js +0 -40
  150. package/dist/core-runtime/evolve/commands/defer.test.js +0 -134
  151. package/dist/core-runtime/evolve/commands/draft.js +0 -323
  152. package/dist/core-runtime/evolve/commands/draft.test.js +0 -178
  153. package/dist/core-runtime/evolve/commands/e2e-evolve-full-cycle.test.js +0 -208
  154. package/dist/core-runtime/evolve/commands/error-messages.js +0 -125
  155. package/dist/core-runtime/evolve/commands/error-messages.test.js +0 -167
  156. package/dist/core-runtime/evolve/commands/propose-align.js +0 -222
  157. package/dist/core-runtime/evolve/commands/propose-align.test.js +0 -136
  158. package/dist/core-runtime/evolve/commands/reconstruct.js +0 -330
  159. package/dist/core-runtime/evolve/commands/reconstruct.test.js +0 -278
  160. package/dist/core-runtime/evolve/commands/shared.js +0 -22
  161. package/dist/core-runtime/evolve/commands/stale-check.js +0 -103
  162. package/dist/core-runtime/evolve/commands/stale-check.test.js +0 -84
  163. package/dist/core-runtime/evolve/commands/start.js +0 -887
  164. package/dist/core-runtime/evolve/commands/start.test.js +0 -396
  165. package/dist/core-runtime/evolve/config/project-config.js +0 -99
  166. package/dist/core-runtime/evolve/config/project-config.test.js +0 -170
  167. package/dist/core-runtime/evolve/renderers/align-packet.js +0 -280
  168. package/dist/core-runtime/evolve/renderers/align-packet.test.js +0 -332
  169. package/dist/core-runtime/evolve/renderers/draft-packet.js +0 -303
  170. package/dist/core-runtime/evolve/renderers/draft-packet.test.js +0 -377
  171. package/dist/core-runtime/evolve/renderers/format.js +0 -5
  172. package/dist/core-runtime/evolve/renderers/scope-md.js +0 -237
  173. package/dist/core-runtime/evolve/renderers/scope-md.test.js +0 -306
  174. package/dist/core-runtime/govern/cli.js +0 -369
  175. package/dist/core-runtime/govern/cli.test.js +0 -314
  176. package/dist/core-runtime/govern/drift-engine.js +0 -103
  177. package/dist/core-runtime/govern/drift-engine.test.js +0 -319
  178. package/dist/core-runtime/govern/promote-principle.js +0 -206
  179. package/dist/core-runtime/govern/promote-principle.test.js +0 -368
  180. package/dist/core-runtime/govern/queue.js +0 -81
  181. package/dist/core-runtime/govern/types.js +0 -16
  182. package/dist/core-runtime/install/cli.js +0 -530
  183. package/dist/core-runtime/install/detect.js +0 -128
  184. package/dist/core-runtime/install/detect.test.js +0 -155
  185. package/dist/core-runtime/install/gitignore-update.js +0 -74
  186. package/dist/core-runtime/install/gitignore-update.test.js +0 -64
  187. package/dist/core-runtime/install/install-integration.test.js +0 -373
  188. package/dist/core-runtime/install/prompts.js +0 -389
  189. package/dist/core-runtime/install/prompts.test.js +0 -293
  190. package/dist/core-runtime/install/types.js +0 -26
  191. package/dist/core-runtime/install/validation.js +0 -295
  192. package/dist/core-runtime/install/validation.test.js +0 -313
  193. package/dist/core-runtime/install/writer.js +0 -254
  194. package/dist/core-runtime/install/writer.test.js +0 -218
  195. package/dist/core-runtime/learning/extractor.js +0 -461
  196. package/dist/core-runtime/learning/feedback.js +0 -179
  197. package/dist/core-runtime/learning/health-report.js +0 -165
  198. package/dist/core-runtime/learning/health-report.test.js +0 -169
  199. package/dist/core-runtime/learning/loader.js +0 -388
  200. package/dist/core-runtime/learning/loader.test.js +0 -102
  201. package/dist/core-runtime/learning/promote/apply-state.js +0 -240
  202. package/dist/core-runtime/learning/promote/audit-obligation.js +0 -195
  203. package/dist/core-runtime/learning/promote/collector.js +0 -432
  204. package/dist/core-runtime/learning/promote/degraded-state.js +0 -125
  205. package/dist/core-runtime/learning/promote/domain-doc-proposer.js +0 -166
  206. package/dist/core-runtime/learning/promote/e2e-promote.test.js +0 -6385
  207. package/dist/core-runtime/learning/promote/health-snapshot.js +0 -150
  208. package/dist/core-runtime/learning/promote/insight-reclassifier.js +0 -544
  209. package/dist/core-runtime/learning/promote/judgment-auditor.js +0 -517
  210. package/dist/core-runtime/learning/promote/panel-reviewer.js +0 -1158
  211. package/dist/core-runtime/learning/promote/promote-executor.js +0 -1675
  212. package/dist/core-runtime/learning/promote/promoter.js +0 -307
  213. package/dist/core-runtime/learning/promote/retirement.js +0 -122
  214. package/dist/core-runtime/learning/promote/types.js +0 -23
  215. package/dist/core-runtime/learning/prompt-sections.js +0 -51
  216. package/dist/core-runtime/learning/shared/artifact-registry-init.js +0 -45
  217. package/dist/core-runtime/learning/shared/artifact-registry.js +0 -254
  218. package/dist/core-runtime/learning/shared/audit-obligation-kernel.js +0 -73
  219. package/dist/core-runtime/learning/shared/audit-state.js +0 -99
  220. package/dist/core-runtime/learning/shared/duplicate-check.js +0 -28
  221. package/dist/core-runtime/learning/shared/llm-caller.js +0 -831
  222. package/dist/core-runtime/learning/shared/llm-caller.test.js +0 -601
  223. package/dist/core-runtime/learning/shared/llm-tool-loop.js +0 -393
  224. package/dist/core-runtime/learning/shared/mode.js +0 -25
  225. package/dist/core-runtime/learning/shared/paths.js +0 -84
  226. package/dist/core-runtime/learning/shared/paths.test.js +0 -79
  227. package/dist/core-runtime/learning/shared/patterns.js +0 -37
  228. package/dist/core-runtime/learning/shared/recoverability.js +0 -355
  229. package/dist/core-runtime/learning/shared/recovery-context.js +0 -374
  230. package/dist/core-runtime/learning/shared/scope.js +0 -1
  231. package/dist/core-runtime/learning/shared/semantic-classifier.js +0 -94
  232. package/dist/core-runtime/learning/shared/specs/apply-execution-state-spec.js +0 -42
  233. package/dist/core-runtime/learning/shared/specs/audit-state-spec.js +0 -37
  234. package/dist/core-runtime/learning/shared/specs/backup-metadata-spec.js +0 -39
  235. package/dist/core-runtime/learning/shared/specs/emergency-log-spec.js +0 -41
  236. package/dist/core-runtime/learning/shared/specs/layout-version-spec.js +0 -38
  237. package/dist/core-runtime/learning/shared/specs/promote-decisions-spec.js +0 -43
  238. package/dist/core-runtime/learning/shared/specs/promote-report-spec.js +0 -113
  239. package/dist/core-runtime/learning/shared/specs/prune-log-spec.js +0 -36
  240. package/dist/core-runtime/learning/shared/specs/recovery-resolution-spec.js +0 -48
  241. package/dist/core-runtime/learning/shared/specs/restore-manifest-spec.js +0 -43
  242. package/dist/core-runtime/learning/shared/specs/spec-helpers.js +0 -64
  243. package/dist/core-runtime/learning/usage-tracker.js +0 -190
  244. package/dist/core-runtime/learning/usage-tracker.test.js +0 -176
  245. package/dist/core-runtime/onboard/detect-review-axes.js +0 -122
  246. package/dist/core-runtime/onboard/detect-review-axes.test.js +0 -127
  247. package/dist/core-runtime/onboard/write-review-block.js +0 -188
  248. package/dist/core-runtime/onboard/write-review-block.test.js +0 -240
  249. package/dist/core-runtime/readers/brownfield-builder.js +0 -150
  250. package/dist/core-runtime/readers/brownfield-builder.test.js +0 -136
  251. package/dist/core-runtime/readers/code-chunk-collector.js +0 -53
  252. package/dist/core-runtime/readers/code-chunk-collector.test.js +0 -136
  253. package/dist/core-runtime/readers/file-utils.js +0 -240
  254. package/dist/core-runtime/readers/file-utils.test.js +0 -146
  255. package/dist/core-runtime/readers/lexicon-citation-check.js +0 -93
  256. package/dist/core-runtime/readers/lexicon-citation-check.test.js +0 -77
  257. package/dist/core-runtime/readers/mcp-figma.js +0 -30
  258. package/dist/core-runtime/readers/mcp-figma.test.js +0 -82
  259. package/dist/core-runtime/readers/mcp-generic.js +0 -31
  260. package/dist/core-runtime/readers/mcp-generic.test.js +0 -76
  261. package/dist/core-runtime/readers/ontology-index.js +0 -148
  262. package/dist/core-runtime/readers/ontology-index.test.js +0 -245
  263. package/dist/core-runtime/readers/ontology-query.js +0 -168
  264. package/dist/core-runtime/readers/ontology-query.test.js +0 -311
  265. package/dist/core-runtime/readers/ontology-resolve.js +0 -48
  266. package/dist/core-runtime/readers/ontology-resolve.test.js +0 -48
  267. package/dist/core-runtime/readers/patterns/index.js +0 -7
  268. package/dist/core-runtime/readers/review-log.js +0 -213
  269. package/dist/core-runtime/readers/review-log.test.js +0 -313
  270. package/dist/core-runtime/readers/scan-local.js +0 -102
  271. package/dist/core-runtime/readers/scan-local.test.js +0 -102
  272. package/dist/core-runtime/readers/scan-tarball.js +0 -121
  273. package/dist/core-runtime/readers/scan-tarball.test.js +0 -283
  274. package/dist/core-runtime/readers/scan-vault.js +0 -34
  275. package/dist/core-runtime/readers/scan-vault.test.js +0 -81
  276. package/dist/core-runtime/readers/types.js +0 -42
  277. package/dist/core-runtime/readers/types.test.js +0 -94
  278. package/dist/core-runtime/readers/viewpoint-collectors.js +0 -229
  279. package/dist/core-runtime/reconstruct/seed-candidate-validation.js +0 -356
  280. package/dist/core-runtime/review/citation-audit.test.js +0 -165
  281. package/dist/core-runtime/review/execution-plan-resolver.js +0 -247
  282. package/dist/core-runtime/review/execution-plan-resolver.test.js +0 -243
  283. package/dist/core-runtime/review/execution-topology-resolver-axis-first.test.js +0 -246
  284. package/dist/core-runtime/review/execution-topology-resolver.js +0 -401
  285. package/dist/core-runtime/review/execution-topology-resolver.test.js +0 -315
  286. package/dist/core-runtime/review/inline-context-embedder.test.js +0 -154
  287. package/dist/core-runtime/review/legacy-mode-policy.js +0 -88
  288. package/dist/core-runtime/review/materializers-effort-persist.test.js +0 -79
  289. package/dist/core-runtime/review/ontology-path-classifier.js +0 -179
  290. package/dist/core-runtime/review/ontology-path-classifier.test.js +0 -216
  291. package/dist/core-runtime/review/packet-boundary-policy.test.js +0 -107
  292. package/dist/core-runtime/review/participating-lens-paths.test.js +0 -73
  293. package/dist/core-runtime/review/review-config-legacy-translate.js +0 -244
  294. package/dist/core-runtime/review/review-config-legacy-translate.test.js +0 -161
  295. package/dist/core-runtime/review/review-config-validator.js +0 -289
  296. package/dist/core-runtime/review/review-config-validator.test.js +0 -236
  297. package/dist/core-runtime/review/shape-pipeline-audit.test.js +0 -311
  298. package/dist/core-runtime/review/shape-to-topology-id.js +0 -117
  299. package/dist/core-runtime/review/shape-to-topology-id.test.js +0 -132
  300. package/dist/core-runtime/review/topology-shape-derivation.js +0 -155
  301. package/dist/core-runtime/review/topology-shape-derivation.test.js +0 -195
  302. package/dist/core-runtime/scope-runtime/constants.js +0 -12
  303. package/dist/core-runtime/scope-runtime/constraint-pool.js +0 -166
  304. package/dist/core-runtime/scope-runtime/constraint-pool.test.js +0 -674
  305. package/dist/core-runtime/scope-runtime/domain-validation-log.js +0 -135
  306. package/dist/core-runtime/scope-runtime/domain-validation-log.test.js +0 -156
  307. package/dist/core-runtime/scope-runtime/eval-persistence.js +0 -65
  308. package/dist/core-runtime/scope-runtime/eval-persistence.test.js +0 -84
  309. package/dist/core-runtime/scope-runtime/event-pipeline.js +0 -64
  310. package/dist/core-runtime/scope-runtime/event-pipeline.test.js +0 -450
  311. package/dist/core-runtime/scope-runtime/event-store.js +0 -39
  312. package/dist/core-runtime/scope-runtime/event-store.test.js +0 -95
  313. package/dist/core-runtime/scope-runtime/gate-guard.js +0 -348
  314. package/dist/core-runtime/scope-runtime/gate-guard.test.js +0 -1047
  315. package/dist/core-runtime/scope-runtime/hash.js +0 -4
  316. package/dist/core-runtime/scope-runtime/hash.test.js +0 -33
  317. package/dist/core-runtime/scope-runtime/id.js +0 -4
  318. package/dist/core-runtime/scope-runtime/id.test.js +0 -17
  319. package/dist/core-runtime/scope-runtime/reducer.js +0 -297
  320. package/dist/core-runtime/scope-runtime/reducer.test.js +0 -759
  321. package/dist/core-runtime/scope-runtime/scope-manager.js +0 -161
  322. package/dist/core-runtime/scope-runtime/state-machine.js +0 -309
  323. package/dist/core-runtime/scope-runtime/state-machine.test.js +0 -704
  324. package/dist/core-runtime/scope-runtime/types.js +0 -116
  325. package/dist/core-runtime/scope-runtime/types.test.js +0 -69
  326. package/dist/core-runtime/translate/render-for-user.js +0 -169
  327. package/dist/core-runtime/translate/render-for-user.test.js +0 -122
  328. package/dist/providers/capability-contract.js +0 -1
@@ -1,348 +0,0 @@
1
- import { resolveTransition } from "./state-machine.js";
2
- import { MAX_COMPILE_RETRIES, MAX_EXPLORATION_ROUNDS } from "./constants.js";
3
- import { findConstraint, isConstraintsResolved } from "./constraint-pool.js";
4
- // ─── Actor validation mapping ───
5
- /**
6
- * Allowed actors per event type.
7
- *
8
- * Events not listed here are allowed for ALL actors (gradual adoption).
9
- * This mapping encodes the intended actor constraints:
10
- * - user: human PO actions (scope creation, locking, decisions)
11
- * - system: automated pipeline actions (grounding, compile, surface generation)
12
- * - agent: AI-driven actions (apply, validation, constraint discovery/decisions)
13
- */
14
- export const ACTOR_MAPPING = {
15
- // User-initiated events
16
- "scope.created": new Set(["user"]),
17
- "scope.closed": new Set(["user"]),
18
- "surface.confirmed": new Set(["user"]),
19
- "align.locked": new Set(["user"]),
20
- // User or agent decisions
21
- "constraint.decision_recorded": new Set(["user", "agent"]),
22
- "constraint.clarify_resolved": new Set(["user", "agent"]),
23
- // System-initiated pipeline events (user allowed for gradual adoption)
24
- "grounding.started": new Set(["system", "user"]),
25
- "grounding.completed": new Set(["system", "user"]),
26
- "compile.started": new Set(["system", "user"]),
27
- "compile.completed": new Set(["system", "user"]),
28
- "surface.generated": new Set(["system", "user"]),
29
- // Agent-driven actions (user allowed for gradual adoption)
30
- "apply.started": new Set(["agent", "user"]),
31
- "apply.completed": new Set(["agent", "user"]),
32
- "validation.started": new Set(["agent", "user"]),
33
- "validation.completed": new Set(["agent", "user"]),
34
- // Mixed actors
35
- "constraint.discovered": new Set(["system", "agent", "user"]),
36
- "align.proposed": new Set(["system", "user"]),
37
- "align.revised": new Set(["system", "user"]),
38
- "exploration.started": new Set(["agent", "system"]),
39
- "exploration.round_completed": new Set(["agent", "system"]),
40
- "exploration.phase_transitioned": new Set(["agent", "system"]),
41
- };
42
- // ─── Events that reference a constraint_id ───
43
- const CONSTRAINT_REF_EVENTS = new Set([
44
- "constraint.decision_recorded",
45
- "constraint.clarify_requested",
46
- "constraint.clarify_resolved",
47
- "constraint.invalidated",
48
- "surface.change_required",
49
- ]);
50
- // ─── Events blocked during convergence ───
51
- const CONVERGENCE_BLOCKED_EVENTS = new Set([
52
- "align.revised",
53
- "surface.revision_applied",
54
- ]);
55
- // ─── Main validation function ───
56
- /**
57
- * Validate an event before appending to the event store.
58
- *
59
- * Checks rules in order:
60
- * 1. State transition authorization (state machine matrix)
61
- * 2. Referential integrity (constraint_id existence)
62
- * 3. Required override validation (rationale required)
63
- * 3b. Required constraint invalidation protection [GC-017]
64
- * 4. Convergence blocking (revise blocked after convergence.blocked)
65
- * 5a. Apply gate (apply_enabled in config)
66
- * 5c. Pre-Apply Review gate (pre_apply.review_completed required before apply)
67
- * 5b. Compile retry limit (compile.started blocked after 3 gap_found cycles)
68
- *
69
- * On success, returns the determined next_state (resolving conditional targets).
70
- * On failure, returns the reason for rejection.
71
- */
72
- export function validateEvent(state, newEvent, options) {
73
- const eventType = newEvent.type;
74
- // ── Special case: scope.created is a bootstrap event ──
75
- // Not in the state machine matrix. Allowed only when no events exist yet.
76
- if (eventType === "scope.created") {
77
- if (state.latest_revision === 0) {
78
- return { allowed: true, next_state: "draft" };
79
- }
80
- return {
81
- allowed: false,
82
- reason: `scope.created is only allowed as the first event (current revision: ${state.latest_revision})`,
83
- };
84
- }
85
- // ── Rule 0: Actor validation ──
86
- const allowedActors = ACTOR_MAPPING[eventType];
87
- if (allowedActors && !allowedActors.has(newEvent.actor)) {
88
- return {
89
- allowed: false,
90
- reason: `Actor denied: "${newEvent.actor}" is not allowed for "${eventType}". Allowed: ${[...allowedActors].join(", ")}`,
91
- };
92
- }
93
- // ── Rule 1: State transition authorization ──
94
- const outcome = resolveTransition(state.current_state, eventType);
95
- if (!outcome.allowed) {
96
- return {
97
- allowed: false,
98
- reason: `Transition denied: "${state.current_state}" does not allow "${eventType}"`,
99
- };
100
- }
101
- // ── Rule 2: Referential integrity ──
102
- if (CONSTRAINT_REF_EVENTS.has(eventType)) {
103
- const constraintId = extractConstraintId(newEvent);
104
- if (constraintId !== undefined) {
105
- const entry = findConstraint(state.constraint_pool, constraintId);
106
- if (!entry) {
107
- return {
108
- allowed: false,
109
- reason: `Referential integrity: constraint_id "${constraintId}" not found in pool`,
110
- };
111
- }
112
- // ── Rule 3: Required override validation ──
113
- if (eventType === "constraint.decision_recorded" ||
114
- eventType === "constraint.clarify_resolved") {
115
- const decision = newEvent.payload.decision;
116
- if (entry.severity === "required" &&
117
- decision === "override") {
118
- const rationale = newEvent.payload.rationale;
119
- if (!rationale || rationale.trim() === "") {
120
- return {
121
- allowed: false,
122
- reason: `Required constraint "${constraintId}" with override decision requires non-empty rationale`,
123
- };
124
- }
125
- }
126
- }
127
- // ── Rule 3b: Required constraint invalidation protection [GC-017] ──
128
- if (eventType === "constraint.invalidated" &&
129
- entry.severity === "required" &&
130
- newEvent.actor === "system") {
131
- return {
132
- allowed: false,
133
- reason: `Required constraint "${constraintId}" cannot be invalidated by system alone. User confirmation is required.`,
134
- };
135
- }
136
- }
137
- }
138
- // ── Rule 4: Convergence blocking ──
139
- if (state.convergence_blocked &&
140
- CONVERGENCE_BLOCKED_EVENTS.has(eventType)) {
141
- return {
142
- allowed: false,
143
- reason: `Convergence blocked: cannot "${eventType}" until convergence.action_taken is recorded`,
144
- };
145
- }
146
- // ── Rule 5a: Apply gate — requires apply_enabled in .sprint-kit.yaml ──
147
- if (eventType === "apply.started" && options?.apply_enabled !== true) {
148
- return {
149
- allowed: false,
150
- reason: "Apply gate: apply 단계를 실행하려면 .sprint-kit.yaml에 apply_enabled: true를 추가하세요.",
151
- };
152
- }
153
- // ── Rule 5c: Pre-Apply Review gate — apply requires pre_apply.review_completed ──
154
- if (eventType === "apply.started" && !state.pre_apply_completed) {
155
- return {
156
- allowed: false,
157
- reason: "Apply gate: Pre-Apply Review가 완료되어야 합니다. pre_apply.review_completed 이벤트가 먼저 기록되어야 합니다.",
158
- };
159
- }
160
- // ── Rule 5d: PRD Review gate — apply requires prd.review_completed ──
161
- if (eventType === "apply.started" && !state.prd_review_completed) {
162
- return {
163
- allowed: false,
164
- reason: "Apply gate: PRD 다관점 리뷰가 완료되어야 합니다. prd.review_completed 이벤트가 먼저 기록되어야 합니다.",
165
- };
166
- }
167
- // ── Rule 5b: Compile retry limit ──
168
- if (eventType === "compile.started" &&
169
- state.retry_count_compile >= MAX_COMPILE_RETRIES) {
170
- return {
171
- allowed: false,
172
- reason: `Compile retry limit exceeded (${state.retry_count_compile} gap_found cycles). Consider scope.deferred or redirect.to_align.`,
173
- };
174
- }
175
- // ── Rule 6: target.locked requires all constraints resolved ──
176
- if (eventType === "target.locked" && !isConstraintsResolved(state.constraint_pool)) {
177
- const { summary } = state.constraint_pool;
178
- const reasons = [];
179
- if (summary.undecided > 0)
180
- reasons.push(`미결정 ${summary.undecided}건`);
181
- if (summary.clarify_pending > 0)
182
- reasons.push(`clarify 대기 ${summary.clarify_pending}건`);
183
- return {
184
- allowed: false,
185
- reason: `Target lock 불가: ${reasons.join(", ")}. 모든 constraint 결정이 완료되어야 합니다.`,
186
- };
187
- }
188
- // ── Rule 7: Exploration round limit ──
189
- if (eventType === "exploration.round_completed" &&
190
- state.exploration_progress &&
191
- state.exploration_progress.total_rounds >= MAX_EXPLORATION_ROUNDS) {
192
- return {
193
- allowed: false,
194
- reason: `Exploration round limit exceeded (${state.exploration_progress.total_rounds} rounds). align.proposed로 진행하거나 scope.deferred를 고려하세요.`,
195
- };
196
- }
197
- // ── Rule 8: Exploration sequence integrity ──
198
- // Rule 8a (align.proposed during exploration) is now handled structurally by MATRIX:
199
- // exploring state allows align.proposed; grounded state allows align.proposed.
200
- // Protocol determines when agent should record align.proposed.
201
- // Rule 8b: exploration.round_completed/phase_transitioned require exploration.started
202
- // MATRIX enforces this structurally (only exploring state allows these events).
203
- // This rule provides a clearer error message.
204
- if ((eventType === "exploration.round_completed" ||
205
- eventType === "exploration.phase_transitioned") &&
206
- !state.exploration_progress) {
207
- return {
208
- allowed: false,
209
- reason: `exploration.started 이벤트가 먼저 기록되어야 합니다.`,
210
- };
211
- }
212
- // Rule 8c: exploration.started blocked when exploration already in progress
213
- if (eventType === "exploration.started" &&
214
- state.exploration_progress &&
215
- !state.exploration_progress.completed_at) {
216
- return {
217
- allowed: false,
218
- reason: `Exploration이 이미 진행 중입니다 (Phase ${state.exploration_progress.current_phase}/6). 완료 후 재시작 가능합니다.`,
219
- };
220
- }
221
- // ── Resolve next state (handle conditional targets) ──
222
- const next_state = resolveNextState(outcome, state, newEvent);
223
- return { allowed: true, next_state };
224
- }
225
- // ─── Conditional target resolution ───
226
- /**
227
- * Determine the actual next state when conditional_targets exist.
228
- *
229
- * Handles two cases:
230
- * 1. surface_confirmed + constraint decision/clarify/invalidated
231
- * → constraints_resolved if all constraints are now resolved
232
- * 2. applied + validation.completed
233
- * → validated (pass), constraints_resolved (fail), or grounded (fail+stale)
234
- */
235
- function resolveNextState(outcome, state, event) {
236
- if (!outcome.conditional_targets || outcome.conditional_targets.length === 0) {
237
- return outcome.next_state;
238
- }
239
- const eventType = event.type;
240
- // Case 1: surface_confirmed → constraints_resolved (conditional)
241
- if (state.current_state === "surface_confirmed" &&
242
- (eventType === "constraint.decision_recorded" ||
243
- eventType === "constraint.clarify_resolved" ||
244
- eventType === "constraint.invalidated")) {
245
- // Simulate: apply this event to the pool, then check resolution
246
- const simulatedPool = simulateConstraintEvent(state, event);
247
- if (isConstraintsResolved(simulatedPool)) {
248
- return "constraints_resolved";
249
- }
250
- return "surface_confirmed";
251
- }
252
- // Case 2: applied + validation.completed → validated / constraints_resolved / grounded
253
- if (state.current_state === "applied" &&
254
- eventType === "validation.completed") {
255
- const p = event.payload;
256
- // stale → grounded (regardless of pass/fail)
257
- if (state.stale) {
258
- return "grounded";
259
- }
260
- if (p.result === "pass") {
261
- return "validated";
262
- }
263
- // fail + target issue → constraints_resolved
264
- return "constraints_resolved";
265
- }
266
- // Default: use matrix default
267
- return outcome.next_state;
268
- }
269
- // ─── Helpers ───
270
- /**
271
- * Simulate applying a constraint event to get an updated pool.
272
- * Used for conditional target resolution without mutating the original pool.
273
- */
274
- function simulateConstraintEvent(state, event) {
275
- // Deep clone the constraints array to avoid mutation
276
- const clonedConstraints = state.constraint_pool.constraints.map((c) => ({
277
- ...c,
278
- }));
279
- const eventType = event.type;
280
- if (eventType === "constraint.decision_recorded") {
281
- const p = event.payload;
282
- const entry = clonedConstraints.find((c) => c.constraint_id === p.constraint_id);
283
- if (entry) {
284
- entry.status = "decided";
285
- }
286
- }
287
- else if (eventType === "constraint.clarify_resolved") {
288
- const p = event.payload;
289
- const entry = clonedConstraints.find((c) => c.constraint_id === p.constraint_id);
290
- if (entry) {
291
- entry.status = "decided";
292
- }
293
- }
294
- else if (eventType === "constraint.invalidated") {
295
- const p = event.payload;
296
- const entry = clonedConstraints.find((c) => c.constraint_id === p.constraint_id);
297
- if (entry) {
298
- entry.status = "invalidated";
299
- }
300
- }
301
- // Recompute summary
302
- let decided = 0;
303
- let clarify_pending = 0;
304
- let invalidated = 0;
305
- let undecided = 0;
306
- let required = 0;
307
- let recommended = 0;
308
- for (const c of clonedConstraints) {
309
- if (c.severity === "required")
310
- required++;
311
- else
312
- recommended++;
313
- switch (c.status) {
314
- case "decided":
315
- decided++;
316
- break;
317
- case "clarify_pending":
318
- clarify_pending++;
319
- break;
320
- case "invalidated":
321
- invalidated++;
322
- break;
323
- case "undecided":
324
- undecided++;
325
- break;
326
- }
327
- }
328
- return {
329
- constraints: clonedConstraints,
330
- summary: {
331
- total: clonedConstraints.length,
332
- required,
333
- recommended,
334
- decided,
335
- clarify_pending,
336
- invalidated,
337
- undecided,
338
- },
339
- };
340
- }
341
- /** Extract constraint_id from event payload, if present. */
342
- function extractConstraintId(event) {
343
- const payload = event.payload;
344
- if (typeof payload.constraint_id === "string") {
345
- return payload.constraint_id;
346
- }
347
- return undefined;
348
- }