onto-mcp 0.3.2 → 0.4.1

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 +149 -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 +174 -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 +214 -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
@@ -0,0 +1,934 @@
1
+ # Reconstruct Actionable Ontology Seed Contract
2
+
3
+ > Status: active seed contract.
4
+ > Purpose: define the target `ActionableOntologySeed` produced by
5
+ > `reconstruct`.
6
+
7
+ ## 1. Position
8
+
9
+ An `ActionableOntologySeed` is the smallest evidence-backed semantic contract
10
+ that can support decision-making and action design for the declared purpose.
11
+
12
+ It is intentionally smaller than a full ontology. It must still be operational:
13
+ it needs objects, actors, actions, permissions, data bindings, validation
14
+ questions, and handoff limits in addition to orientation concepts.
15
+
16
+ ```text
17
+ ActionableOntologySeed
18
+ = purpose
19
+ + decision context
20
+ + conceptual frame
21
+ + semantic layer
22
+ + kinetic layer
23
+ + dynamic layer
24
+ + data binding layer
25
+ + validation layer
26
+ + candidate disposition authority ref
27
+ + ontology-facing handoff mapping
28
+ + source authority
29
+ + handoff limitations
30
+ ```
31
+
32
+ ## 2. Design Rationale
33
+
34
+ Ontology is useful here because it turns source material into a basis for later
35
+ decisions and actions.
36
+
37
+ A concept map can explain a service, but it cannot by itself answer:
38
+
39
+ - who can act
40
+ - what object is acted on
41
+ - what state changes
42
+ - what permission or policy controls the action
43
+ - where the data is read from or written to
44
+ - which external question and assessment artifacts test the seed
45
+
46
+ The reconstruct run must therefore preserve every high-salience object, actor,
47
+ action, workflow, data source, and constraint candidate through the canonical
48
+ candidate-disposition artifact. A candidate may be promoted into a seed layer,
49
+ represented as a property or link, deferred, or rejected for the declared
50
+ purpose, but it must not vanish.
51
+
52
+ ## 3. Ownership
53
+
54
+ The host LLM authors seed meaning. Runtime validates shape, ids, evidence refs,
55
+ layer closure, and handoff consistency.
56
+
57
+ Runtime may reject or mark a seed invalid. Runtime must not invent missing seed
58
+ content to make validation pass.
59
+
60
+ ## 4. Seed Shape
61
+
62
+ The target artifact is `ontology-seed.yaml`.
63
+
64
+ Required root fields:
65
+
66
+ ```yaml
67
+ seed_identity:
68
+ schema_version:
69
+ seed_id:
70
+ title:
71
+ target_refs: []
72
+ generated_at:
73
+ authoring_profile:
74
+
75
+ purpose:
76
+ declared_purpose:
77
+ intended_decisions: []
78
+ intended_actions: []
79
+ non_goals: []
80
+ evidence_refs: []
81
+
82
+ decision_context:
83
+ principal_user:
84
+ downstream_use:
85
+ decision_boundary:
86
+ risk_notes: []
87
+
88
+ conceptual_frame:
89
+ concepts: []
90
+ associations: []
91
+
92
+ semantic_layer:
93
+ object_types: []
94
+ link_types: []
95
+ value_types: []
96
+ constraints: []
97
+
98
+ kinetic_layer:
99
+ action_types: []
100
+ functions: []
101
+ workflows: []
102
+
103
+ dynamic_layer:
104
+ actor_types: []
105
+ actor_roles: []
106
+ permission_policies: []
107
+ state_models: []
108
+ lifecycle_rules: []
109
+
110
+ data_binding_layer:
111
+ source_bindings: []
112
+ read_models: []
113
+ writebacks: []
114
+ provenance_bindings: []
115
+
116
+ validation_layer:
117
+ question_authority_ref:
118
+ authority_scope:
119
+ projection_policy:
120
+ coverage_axes: []
121
+ unsupported_question_candidates: []
122
+ runtime_validation_refs: []
123
+
124
+ candidate_disposition_authority_ref:
125
+ authority_scope:
126
+ projection_policy:
127
+ ontology_handoff:
128
+ readiness_claim:
129
+ classification_mapping:
130
+ entity_identity_mapping:
131
+ instance_assertion_mapping:
132
+ terminology_mapping:
133
+ relation_type_mapping:
134
+ constraint_mapping:
135
+ modularity_boundary:
136
+ reasoning_or_formalism_profile:
137
+ application_context_mapping:
138
+ metadata_mapping:
139
+ provenance_mapping:
140
+ change_tracking_mapping:
141
+ competency_scope_mapping:
142
+ alignment_mapping:
143
+ modeling_concern_applicability:
144
+ reference_standard_mapping:
145
+ pattern_catalog_mapping:
146
+ query_access_contract:
147
+ visualization_contract:
148
+ graph_exploration_contract:
149
+ graph_connectivity:
150
+ limitation_refs: []
151
+ source_authority:
152
+ evidence_scope:
153
+ permission_scope:
154
+ trust_boundary:
155
+ instruction_authority:
156
+ external_content_handling:
157
+ included_source_refs: []
158
+ excluded_source_refs: []
159
+ restricted_source_refs: []
160
+ source_gaps: []
161
+ rationale:
162
+ handoff_limitations:
163
+ - limitation_id:
164
+ limitation_kind:
165
+ description:
166
+ affected_refs: []
167
+ missing_source_refs: []
168
+ mitigation_or_next_action:
169
+ evidence_refs: []
170
+ ```
171
+
172
+ ## 5. Conceptual Frame
173
+
174
+ The conceptual frame orients a reader. It is not the full seed authority.
175
+
176
+ ```yaml
177
+ conceptual_frame:
178
+ concepts:
179
+ - concept_id:
180
+ name:
181
+ definition:
182
+ purpose_role:
183
+ evidence_refs: []
184
+ confidence: confirmed | provisional | unsupported
185
+ associations:
186
+ - association_id:
187
+ source_concept_id:
188
+ target_concept_id:
189
+ association_kind:
190
+ statement:
191
+ evidence_refs: []
192
+ ```
193
+
194
+ Use this layer to explain the service or material in compact language. Do not
195
+ use it to hide objects, actors, actions, permissions, or data bindings that need
196
+ their own operational representation.
197
+
198
+ ## 6. Semantic Layer
199
+
200
+ The semantic layer answers "what exists?"
201
+
202
+ ```yaml
203
+ semantic_layer:
204
+ object_types:
205
+ - object_type_id:
206
+ name:
207
+ object_kind: entity | event | document | dataset | surface | service | other
208
+ description:
209
+ primary_key:
210
+ property_id:
211
+ name:
212
+ value_type:
213
+ evidence_refs: []
214
+ properties:
215
+ - property_id:
216
+ name:
217
+ value_type:
218
+ nullable:
219
+ description:
220
+ constraints: []
221
+ evidence_refs: []
222
+ backing_source_refs: []
223
+ evidence_refs: []
224
+ status: confirmed | provisional | deferred
225
+ link_types:
226
+ - link_type_id:
227
+ source_object_type_id:
228
+ target_object_type_id:
229
+ cardinality: one_to_one | one_to_many | many_to_many | unknown
230
+ business_meaning:
231
+ evidence_refs: []
232
+ value_types:
233
+ - value_type_id:
234
+ name:
235
+ representation:
236
+ constraints: []
237
+ evidence_refs: []
238
+ constraints:
239
+ - constraint_id:
240
+ target_ref:
241
+ constraint_kind:
242
+ statement:
243
+ evidence_refs: []
244
+ ```
245
+
246
+ Object types must represent business or operational meaning, not merely copy
247
+ file names, table names, sheet names, or component names.
248
+
249
+ ## 7. Kinetic Layer
250
+
251
+ The kinetic layer answers "what can be done?"
252
+
253
+ ```yaml
254
+ kinetic_layer:
255
+ action_types:
256
+ - action_type_id:
257
+ name:
258
+ description:
259
+ actor_type_ids: []
260
+ target_object_type_ids: []
261
+ affected_object_type_ids: []
262
+ parameters:
263
+ - parameter_id:
264
+ name:
265
+ value_source: user_input | object_property | static_value | current_user | current_time | unknown
266
+ value_type:
267
+ required:
268
+ preconditions:
269
+ - precondition_id:
270
+ statement:
271
+ evidence_refs: []
272
+ postconditions:
273
+ - postcondition_id:
274
+ statement:
275
+ evidence_refs: []
276
+ side_effects:
277
+ - side_effect_id:
278
+ statement:
279
+ failure_behavior: cancels_action | records_failure | unknown
280
+ evidence_refs: []
281
+ writeback_behavior:
282
+ writes: true | false | unknown
283
+ writeback_source_refs: []
284
+ rationale:
285
+ evidence_refs: []
286
+ status: confirmed | provisional | deferred
287
+ functions:
288
+ - function_id:
289
+ name:
290
+ input_type_refs: []
291
+ return_type_ref:
292
+ purity: read_only | state_changing | unknown
293
+ evidence_refs: []
294
+ workflows:
295
+ - workflow_id:
296
+ name:
297
+ ordered_action_type_ids: []
298
+ trigger:
299
+ terminal_state:
300
+ evidence_refs: []
301
+ ```
302
+
303
+ An action without actor binding and object binding is not action-ready. It may
304
+ remain in the seed only if the missing binding is recorded as a limitation.
305
+
306
+ ## 8. Dynamic Layer
307
+
308
+ The dynamic layer answers "who can do what, and under what state or policy?"
309
+
310
+ ```yaml
311
+ dynamic_layer:
312
+ actor_types:
313
+ - actor_type_id:
314
+ name:
315
+ actor_kind: human_user | system_service | ai_agent | organization | external_system | unknown
316
+ role_refs: []
317
+ description:
318
+ evidence_refs: []
319
+ actor_roles:
320
+ - role_id:
321
+ name:
322
+ holder_actor_type_ids: []
323
+ authority_scope_refs: []
324
+ evidence_refs: []
325
+ permission_policies:
326
+ - policy_id:
327
+ actor_type_id:
328
+ action_type_id:
329
+ object_type_id:
330
+ permission_kind: allowed | denied | conditional | unknown
331
+ condition:
332
+ evidence_refs: []
333
+ state_models:
334
+ - state_model_id:
335
+ object_type_id:
336
+ states: []
337
+ transitions:
338
+ - transition_id:
339
+ from_state:
340
+ to_state:
341
+ action_type_id:
342
+ evidence_refs: []
343
+ lifecycle_rules:
344
+ - rule_id:
345
+ target_ref:
346
+ statement:
347
+ evidence_refs: []
348
+ ```
349
+
350
+ `actor_kind` is limited to bearer categories. Administrative authority, owner
351
+ status, approver status, reviewer status, and similar authorization posture must
352
+ be represented as `actor_roles[]`, `permission_policies[]`, or candidate
353
+ disposition evidence, not as actor bearer kinds.
354
+
355
+ Sensitive actions or sensitive data must not be left without actor and
356
+ permission treatment. If source material does not expose this treatment, the
357
+ gap belongs in `handoff_limitations`.
358
+
359
+ ## 9. Data Binding Layer
360
+
361
+ The data binding layer answers "where does the seed touch source data?"
362
+
363
+ ```yaml
364
+ data_binding_layer:
365
+ source_bindings:
366
+ - binding_id:
367
+ seed_ref:
368
+ source_ref:
369
+ binding_kind: evidence | storage | read_source | write_target | derived_projection | configuration
370
+ statement:
371
+ evidence_refs: []
372
+ read_models:
373
+ - read_model_id:
374
+ name:
375
+ object_type_ids: []
376
+ source_refs: []
377
+ transformation_summary:
378
+ evidence_refs: []
379
+ writebacks:
380
+ - writeback_id:
381
+ action_type_id:
382
+ target_source_refs: []
383
+ write_mode: create | update | delete | append | none | unknown
384
+ evidence_refs: []
385
+ provenance_bindings:
386
+ - provenance_id:
387
+ seed_ref:
388
+ source_ref:
389
+ author_or_system:
390
+ timestamp_ref:
391
+ evidence_refs: []
392
+ ```
393
+
394
+ The seed must distinguish source evidence from operational storage. A file,
395
+ table, sheet, or document section can be evidence without being the operational
396
+ place where an object lives.
397
+
398
+ ## 10. Validation Layer
399
+
400
+ The validation layer declares how the seed should be tested. It does not own
401
+ pass/fail gate status and it does not own the authoritative competency-question
402
+ set.
403
+
404
+ Canonical authority:
405
+
406
+ - `competency-questions.yaml` owns the question set.
407
+ - `competency-question-assessment.yaml` owns answerability results.
408
+ - runtime-owned validation artifacts own gate status.
409
+ - `ontology-seed.yaml.validation_layer` owns only seed-side requirements,
410
+ references, unsupported candidates, and expected coverage axes.
411
+
412
+ ```yaml
413
+ validation_layer:
414
+ question_authority_ref:
415
+ artifact_ref: competency-questions.yaml
416
+ authority_scope: canonical_question_set
417
+ coverage_axes:
418
+ - purpose
419
+ - semantic_layer
420
+ - kinetic_layer
421
+ - dynamic_layer
422
+ - data_binding_layer
423
+ - ontology_handoff
424
+ - limitation
425
+ - source_authority
426
+ unsupported_question_candidates:
427
+ - candidate_id:
428
+ question:
429
+ unsupported_reason:
430
+ needed_source_or_confirmation:
431
+ runtime_validation_refs:
432
+ - artifact_ref: ontology-seed-validation.yaml
433
+ authority_scope: seed_shape_validation
434
+ - artifact_ref: competency-questions-validation.yaml
435
+ authority_scope: question_coverage_validation
436
+ - artifact_ref: competency-question-assessment-validation.yaml
437
+ authority_scope: question_assessment_validation
438
+ - artifact_ref: seed-confirmation-validation.yaml
439
+ authority_scope: seed_confirmation_validation
440
+ - artifact_ref: handoff-decision-validation.yaml
441
+ authority_scope: handoff_validation
442
+ ```
443
+
444
+ `coverage_axis_refs[]` is the coarse question-level coverage axis projection for
445
+ `competency-questions.yaml`; seed-side expected axes remain in
446
+ `ontology-seed.yaml.validation_layer.coverage_axes[]`. The
447
+ allowed values are the `coverage_axis_registry` values in
448
+ `reconstruct-contract-registry.yaml`. Detailed operational proof belongs to
449
+ seed refs and validation gates, not to a second coverage-axis vocabulary.
450
+ Detailed ontology-facing coverage must use `ontology_handoff_axis_refs[]` on the
451
+ authoritative competency-question rows; do not reintroduce detailed
452
+ `ontology_*` values into `coverage_axis_refs[]`.
453
+
454
+ Competency questions must cover:
455
+
456
+ - declared purpose
457
+ - object identity and boundaries
458
+ - action availability and state effect
459
+ - actor and permission treatment
460
+ - data source, read, write, and provenance treatment
461
+ - ontology-facing mapping or limitation when the seed is used for ontology work,
462
+ including classification, entity identity, terminology, relation typing, constraints,
463
+ modularity, reasoning/formalism profile, application context, provenance,
464
+ change tracking, competency scope, alignment, and graph connectivity
465
+ - known limitations
466
+
467
+ ## 11. Candidate Disposition Authority
468
+
469
+ `candidate-disposition.yaml` is the canonical disposition authority. The seed
470
+ must reference that authority and may summarize its result in prose, but it must
471
+ not carry an independent disposition ledger that can drift.
472
+
473
+ ```yaml
474
+ candidate_disposition_authority_ref:
475
+ authority_scope: external_candidate_disposition
476
+ projection_policy: reference_only
477
+ ```
478
+
479
+ Every high-salience candidate must have exactly one row in
480
+ `candidate-disposition.yaml`. Concrete artifact refs live in
481
+ `reconstruct-record.yaml` and `reconstruct-run-manifest.yaml`, not inside the
482
+ seed. For `promoted_to_seed_layer`, `target_seed_refs[]` are planned canonical
483
+ seed refs that the later `ontology-seed.yaml` must realize. Runtime first
484
+ validates that every disposition has allowed shape, rationale, and evidence
485
+ refs, then validates that the seed realizes each planned promoted target.
486
+
487
+ ## 12. Ontology-Facing Handoff
488
+
489
+ `ActionableOntologySeed` is not a full formal ontology. When the declared
490
+ downstream use is ontology review, ontology extension, or ontology-as-code work,
491
+ the seed must still disclose how it maps to ontology-facing expectations or why
492
+ those expectations remain limitations.
493
+
494
+ If `readiness_claim` is `ready`, each mapping object below must contain
495
+ substantive mapping content or explicit `limitation_refs[]`. Empty mapping
496
+ shells such as `{ limitation_refs: [] }` are invalid because they do not provide
497
+ handoff evidence.
498
+
499
+ ```yaml
500
+ ontology_handoff:
501
+ readiness_claim: ready | limited | not_ready | blocked
502
+ classification_mapping:
503
+ ontology_scope_kind:
504
+ classification_axis_policy:
505
+ classification_level_axis_refs: []
506
+ inheritance_model:
507
+ mece_status:
508
+ seed_refs: []
509
+ limitation_refs: []
510
+ entity_identity_mapping:
511
+ entity_id_policy:
512
+ uri_or_iri_policy:
513
+ canonical_identifier_refs: []
514
+ alias_identifier_refs: []
515
+ primitive_vs_defined_status:
516
+ definition_criteria_refs: []
517
+ limitation_refs: []
518
+ instance_assertion_mapping:
519
+ instance_availability_status: present | absent | unknown | not_applicable
520
+ instance_refs: []
521
+ example_assertion_refs: []
522
+ abox_assertion_refs: []
523
+ limitation_refs: []
524
+ terminology_mapping:
525
+ canonical_label_policy:
526
+ alias_policy:
527
+ hidden_label_policy:
528
+ homonym_policy:
529
+ multilingual_label_policy:
530
+ language_tag_policy:
531
+ limitation_refs: []
532
+ relation_type_mapping:
533
+ relation_type_refs: []
534
+ formal_relation_semantics:
535
+ domain_range_declaration_refs: []
536
+ relation_property_constraint_refs: []
537
+ unsupported_relation_candidates: []
538
+ limitation_refs: []
539
+ constraint_mapping:
540
+ constraint_refs: []
541
+ tbox_constraint_refs: []
542
+ abox_assertion_constraint_refs: []
543
+ shape_or_validation_constraint_refs: []
544
+ policy_constraint_refs: []
545
+ unsupported_constraint_candidates: []
546
+ limitation_refs: []
547
+ modularity_boundary:
548
+ module_candidates: []
549
+ import_or_reuse_refs: []
550
+ limitation_refs: []
551
+ reasoning_or_formalism_profile:
552
+ representation_formalism: <registry:reasoning_or_formalism_profile_contract.representation_formalism_values>
553
+ vocabulary_systems: []
554
+ validation_formalisms: []
555
+ ontology_type: <registry:reasoning_or_formalism_profile_contract.ontology_type_values>
556
+ owl_profile: <registry:reasoning_or_formalism_profile_contract.owl_profile_values>
557
+ alignment_posture: <registry:reasoning_or_formalism_profile_contract.alignment_posture_values>
558
+ reasoning_expectations: []
559
+ validation_expectations: []
560
+ limitation_refs: []
561
+ application_context_mapping:
562
+ application_context_refs: []
563
+ actor_or_surface_refs: []
564
+ limitation_refs: []
565
+ metadata_mapping:
566
+ descriptive_metadata_refs: []
567
+ bibliographic_metadata_refs: []
568
+ resource_metadata_refs: []
569
+ limitation_refs: []
570
+ provenance_mapping:
571
+ provenance_binding_refs: []
572
+ evidence_scope_refs: []
573
+ limitation_refs: []
574
+ change_tracking_mapping:
575
+ state_model_refs: []
576
+ lifecycle_rule_refs: []
577
+ migration_or_versioning_refs: []
578
+ limitation_refs: []
579
+ competency_scope_mapping:
580
+ expected_coverage_axes: []
581
+ required_handoff_axes: []
582
+ unsupported_axes: []
583
+ limitation_refs: []
584
+ alignment_mapping:
585
+ external_vocab_or_domain_refs: []
586
+ mapped_seed_refs: []
587
+ limitation_refs: []
588
+ modeling_concern_applicability:
589
+ rows:
590
+ - concern_id:
591
+ applies: true | false | unknown | not_applicable
592
+ applicability_predicate_ref:
593
+ trace_refs: []
594
+ limitation_refs: []
595
+ reference_standard_mapping:
596
+ standard_refs: []
597
+ mapped_concern_refs: []
598
+ limitation_refs: []
599
+ pattern_catalog_mapping:
600
+ pattern_catalog_refs: []
601
+ mapped_concern_refs: []
602
+ limitation_refs: []
603
+ query_access_contract:
604
+ applies: true | false | unknown | not_applicable
605
+ limitation_refs: []
606
+ visualization_contract:
607
+ applies: true | false | unknown | not_applicable
608
+ limitation_refs: []
609
+ graph_exploration_contract:
610
+ applies: true | false | unknown | not_applicable
611
+ limitation_refs: []
612
+ graph_connectivity:
613
+ connected_seed_refs: []
614
+ isolated_seed_refs: []
615
+ isolation_rationale_refs: []
616
+ limitation_refs: []
617
+ handoff_limitations:
618
+ - limitation_id:
619
+ limitation_kind: missing_source | unsupported_axis | insufficient_evidence | unresolved_confirmation | runtime_capability_gap | external_standard_unselected
620
+ description:
621
+ affected_refs: []
622
+ missing_source_refs: []
623
+ mitigation_or_next_action:
624
+ evidence_refs: []
625
+ ```
626
+
627
+ If ontology-facing readiness is not claimed, `readiness_claim` may be `limited`
628
+ or `not_ready`, but the limitation must be explicit. Use `blocked` when missing
629
+ source or user confirmation prevents an honest ontology-facing readiness answer.
630
+ If `representation_formalism` is `owl` or `mixed`, `owl_profile` must be
631
+ explicit or the profile must cite a limitation explaining why the OWL profile is
632
+ not known. Vocabulary systems such as SKOS and validation formalisms such as
633
+ SHACL must be declared through their own fields, not collapsed into
634
+ `representation_formalism`. When ontology-facing handoff is claimed,
635
+ `ontology_type` must be explicit or limitation-backed.
636
+
637
+ `handoff_limitations[]` is the canonical limitation authority. Every
638
+ `limitation_refs[]` value in the seed, competency questions, assessments,
639
+ confirmation, terminal handoff readiness validation, query proof, visualization proof, or graph
640
+ exploration proof
641
+ must resolve to a `handoff_limitations[].limitation_id`; a free-text limitation
642
+ reference is invalid.
643
+
644
+ ## 13. Query Proof Authority Contract
645
+
646
+ `query-proofs.yaml` is required when the seed claims executable queryability,
647
+ API access, implementation access, or another explicit ontology access surface.
648
+ It is separate from the seed so runtime can validate observed execution results
649
+ without making `ontology-seed.yaml` a transcript.
650
+
651
+ ```yaml
652
+ query_proofs:
653
+ - query_proof_id:
654
+ question_ids: []
655
+ query_language_or_api:
656
+ query_engine_or_runtime_refs: []
657
+ query_artifact_refs: []
658
+ query_test_fixture_refs: []
659
+ expected_answer_shape_refs: []
660
+ observed_execution_result_refs: []
661
+ evidence_refs: []
662
+ limitation_refs: []
663
+ ```
664
+
665
+ Runtime validates that every `query_proof_id` is unique, every `question_ids[]`
666
+ value points to `competency-questions.yaml`, and every `limitation_refs[]` value
667
+ points to `handoff_limitations[].limitation_id`. Proof rows own the canonical
668
+ question-to-proof relation through `question_ids[]`; competency-question rows and
669
+ seed-side handoff contracts do not duplicate proof refs.
670
+
671
+ `visualization-proofs.yaml` and `graph-exploration-proofs.yaml` are separate
672
+ conditional proof authorities. Visualization proves concrete visual surfaces or
673
+ overview shapes; graph exploration proves navigation, traversal, scale, or
674
+ expand/collapse capability. A run may satisfy one without satisfying the other.
675
+
676
+ ```yaml
677
+ visualization_proofs:
678
+ - visualization_proof_id:
679
+ question_ids: []
680
+ visualization_surface_refs: []
681
+ expected_visualization_shape_refs: []
682
+ observed_visualization_result_refs: []
683
+ evidence_refs: []
684
+ limitation_refs: []
685
+
686
+ graph_exploration_proofs:
687
+ - graph_exploration_proof_id:
688
+ question_ids: []
689
+ graph_exploration_capability_refs: []
690
+ scale_or_navigation_constraint_refs: []
691
+ observed_exploration_result_refs: []
692
+ evidence_refs: []
693
+ limitation_refs: []
694
+ ```
695
+
696
+ ## 14. Competency-Question Authority Contract
697
+
698
+ `competency-questions.yaml` is the question-set authority. Each question row must
699
+ be concrete enough for runtime to validate coverage and for the host LLM to
700
+ assess answerability without inventing hidden scope.
701
+
702
+ ```yaml
703
+ questions:
704
+ - question_id:
705
+ question:
706
+ linked_claim_ids: []
707
+ coverage_axis_refs: <registry:coverage_axis_registry.axis_id[]>
708
+ ontology_handoff_axis_refs: <registry:ontology_handoff_axis_registry.axis_id[]>
709
+ seed_ref_refs: []
710
+ limitation_refs: []
711
+ reasoning_or_formalism_facets: <registry:reasoning_or_formalism_profile_contract.facet_registry.facet_id[]>
712
+ entity_identity_facets: <registry:ontology_handoff_facet_contract.entity_identity_facet_registry.facet_id[]>
713
+ instance_assertion_facets: <registry:ontology_handoff_facet_contract.instance_assertion_facet_registry.facet_id[]>
714
+ terminology_facets: <registry:ontology_handoff_facet_contract.terminology_facet_registry.facet_id[]>
715
+ relation_type_facets: <registry:ontology_handoff_facet_contract.relation_type_facet_registry.facet_id[]>
716
+ classification_facets: <registry:ontology_handoff_facet_contract.classification_facet_registry.facet_id[]>
717
+ constraint_facets: <registry:ontology_handoff_facet_contract.constraint_facet_registry.facet_id[]>
718
+ modeling_concern_facets: <registry:ontology_handoff_facet_contract.modeling_concern_applicability_registry.concern_id[]>
719
+ reference_standard_refs: []
720
+ pattern_catalog_refs: []
721
+ query_access_contract_refs: []
722
+ visualization_contract_refs: []
723
+ graph_exploration_contract_refs: []
724
+ domain_competency_trace_refs: []
725
+ coverage_disposition: covered | limited | unsupported | deferred | not_applicable
726
+ expected_answer_kind: yes_no | explanation | list | mapping | gap_statement
727
+ handoff_relevance: required | supporting | diagnostic
728
+ lifecycle_status: active | deferred | unsupported_candidate
729
+ rationale:
730
+ ```
731
+
732
+ `coverage_disposition` answers whether the question's covered scope is satisfied,
733
+ limited, unsupported, deferred, or not applicable. `handoff_relevance` answers
734
+ how strongly the question affects handoff. `lifecycle_status` answers whether
735
+ the row itself is active, deferred, or retained only as an unsupported candidate.
736
+ These fields are intentionally non-overlapping.
737
+ `required_evidence_scope` is runtime-owned and is emitted by
738
+ `competency-questions-validation.yaml.required_evidence_scope_projection[]`.
739
+ It is derived from the row's explicit reference fields rather than authored as a
740
+ second independent ref list.
741
+
742
+ Required ontology-handoff question coverage is validated from
743
+ `ontology_handoff_axis_refs[]`. The required axes are classification, entity identity,
744
+ instance assertion coverage, terminology, relation typing, constraints,
745
+ modularity, reasoning/formalism profile, application context, provenance, change
746
+ tracking, competency scope, alignment, graph connectivity, and explicit
747
+ limitations. If an axis is unsupported, the
748
+ question row must include that axis with `coverage_disposition: unsupported` or
749
+ `deferred` and cite the limitation or missing source instead of silently omitting
750
+ the axis.
751
+
752
+ Runtime validates that every `question_id` is unique, every `coverage_axis_refs[]`
753
+ value is allowed, every `ontology_handoff_axis_refs[]` value is allowed when
754
+ `coverage_axis_refs[]` includes `ontology_handoff`, every `seed_ref_refs[]` value
755
+ points to a known seed ref, every `limitation_refs[]` value points to
756
+ `handoff_limitations[].limitation_id`, and every required ontology-handoff axis
757
+ is either represented by an active question or recorded as unsupported/deferred
758
+ with a limitation ref.
759
+ When `ontology_handoff_axis_refs[]` includes `reasoning_or_formalism_profile`, the
760
+ question row must declare `reasoning_or_formalism_facets[]` from the registry
761
+ facet values. The question set must cover representation formalism, vocabulary
762
+ systems, validation formalisms, ontology type, alignment posture, and the OWL
763
+ profile when `representation_formalism` is `owl` or `mixed`, or it must cite the
764
+ limitation that makes those details unavailable.
765
+ When `ontology_handoff_axis_refs[]` includes `entity_identity`, question rows must
766
+ cover or limitation-back entity id policy, URI/IRI policy, canonical and alias
767
+ identifier refs, primitive-vs-defined status, and definition criteria refs.
768
+ When `ontology_handoff_axis_refs[]` includes `instance_assertion_coverage`, question
769
+ rows must cover or limitation-back instance availability status, concrete
770
+ instance refs, example assertion refs, and ABox assertion refs. If
771
+ `instance_availability_status` is `absent` or `unknown`, the seed must cite a
772
+ limitation explaining how that affects validation and downstream readiness.
773
+ When `ontology_handoff_axis_refs[]` includes `terminology`, question rows must cover
774
+ or limitation-back canonical label policy, alias policy, hidden-label/search
775
+ label policy, homonym policy, multilingual label policy, and language-tag
776
+ policy.
777
+ When `ontology_handoff_axis_refs[]` includes `relation_typing`, question rows must
778
+ cover or limitation-back relation type refs, formal relation semantics, formal
779
+ domain/range declarations, and relation-property constraints.
780
+ When `ontology_handoff_axis_refs[]` includes `classification`, question rows must
781
+ cover or limitation-back ontology scope kind, classification axis policy,
782
+ per-level classification axis refs, inheritance model, and MECE status. When
783
+ `ontology_handoff_axis_refs[]` includes
784
+ `constraints`, question rows must cover or limitation-back TBox constraints,
785
+ ABox assertion constraints, shape/validation constraints, and policy
786
+ constraints. When a `modeling_concern_applicability.rows[]` item has
787
+ `applies: true`, the question set must include a matching
788
+ `modeling_concern_facets[]` entry and, when a concrete reference standard is
789
+ selected, cite it through `reference_standard_refs[]`. When applicability is
790
+ `unknown`, the handoff must cite the missing source or confirmation needed to
791
+ decide it. Formalism, vocabulary, validation, metadata, dataset/catalog, and
792
+ queryability claims must cite registry-owned `reference_standard_refs[]` when a
793
+ standard such as OWL 2, RDFS, SKOS, SHACL, Dublin Core Terms, DCAT, PROV-O,
794
+ GeoSPARQL, QUDT, OM, W3C Time, RDF Data Cube, SOSA/SSN, or SPARQL is selected.
795
+ When the source or downstream use treats classes, properties, relation types,
796
+ shapes, or ontology design rules themselves as modeled things, the
797
+ `meta_modeling` concern must be covered or explicitly limitation-backed.
798
+ Ontology design pattern catalog selections are pattern-catalog refs, not
799
+ normative standard refs; they are recorded in
800
+ `ontology_handoff.pattern_catalog_mapping.pattern_catalog_refs[]` and may be
801
+ cited by question-level `pattern_catalog_refs[]` when
802
+ `concern_id: ontology_design_pattern` applies. Runtime validates those refs
803
+ against `reference_pattern_catalog_registry` and the selected run-manifest
804
+ pattern catalog snapshot. Pattern catalog canonical URIs are run-manifest facts:
805
+ the registry owns the policy that a selected catalog URI must be recorded,
806
+ non-empty, and bound to the selected catalog id and snapshot for that run.
807
+ When downstream use claims heterogeneous data integration, semantic
808
+ reconciliation, ontology-based ETL, or ontology-based data access, the
809
+ `data_integration` concern must be covered through data-binding, alignment, and
810
+ source-authority evidence or explicitly limitation-backed.
811
+ `query_interface` is
812
+ required when downstream use claims
813
+ queryability, API access, implementation access, or another explicit ontology
814
+ access surface; it must cite `query_access_contract_refs[]` with executable
815
+ proof-contract ids; `query-proofs.yaml` rows then own the question-to-proof
816
+ coverage through `question_ids[]`. Otherwise it must be limitation-backed.
817
+ `visualization_interface` is required when downstream use
818
+ claims static, hierarchical, dashboard, or overview visualization; it must cite
819
+ `visualization_contract_refs[]`; `visualization-proofs.yaml` rows own the
820
+ question-to-proof coverage through `question_ids[]`, or the question must be
821
+ marked not applicable or limitation-backed. `graph_exploration_interface` is
822
+ required when
823
+ downstream use claims large-graph navigation, traversal, graph exploration, or
824
+ expand/collapse behavior; it must cite `graph_exploration_contract_refs[]`;
825
+ `graph-exploration-proofs.yaml` rows own the question-to-proof coverage through
826
+ `question_ids[]`, or the question must be marked not applicable or
827
+ limitation-backed.
828
+ `domain_competency_trace_refs[]` records the admitted domain competency id that
829
+ makes the question necessary. Runtime validates those refs only against
830
+ `reconstruct-run-manifest.yaml#governing_snapshot.required_admitted_competency_ids`;
831
+ domain admission refs and source document refs are not trace refs. Untraced
832
+ generated questions must be diagnostic or limitation-backed. For every admitted
833
+ domain competency snapshot, runtime derives the admitted competency id set from
834
+ that snapshot: every P1 id is required, while P2 and P3 ids remain admitted
835
+ metadata until an explicit downstream promotion policy makes a row required or
836
+ supporting. Every required admitted id must be represented by exactly one
837
+ `competency-questions.yaml.questions[]` row.
838
+ Unsupported, deferred, and not-applicable cases are still question rows, using
839
+ `coverage_disposition`, `lifecycle_status`, `domain_competency_trace_refs[]`, and
840
+ `limitation_refs[]` as the single lookup path. Ontology handoff axes are
841
+ complementary coverage groups; they do not replace domain-competency
842
+ disposition completeness.
843
+
844
+ ## 15. Competency-Question Assessment Contract
845
+
846
+ `competency-question-assessment.yaml` is the answerability result authority.
847
+ Each authoritative question must have exactly one assessment row.
848
+
849
+ ```yaml
850
+ assessments:
851
+ - question_id:
852
+ answer_status: answerable | partially_answerable | unsupported | deferred | contradicted | not_applicable
853
+ answer_summary:
854
+ required_seed_refs: []
855
+ evidence_refs: []
856
+ missing_source_or_confirmation:
857
+ ambiguity_notes: []
858
+ downstream_effect: ready | limited | blocks_handoff | blocked_by_missing_source_or_confirmation | not_applicable
859
+ ```
860
+
861
+ Runtime validates that `question_id` points to `competency-questions.yaml`, every
862
+ `required_seed_refs[]` is closed against the question row's `seed_ref_refs[]`,
863
+ every `evidence_refs[]` points to question-scoped observed source evidence, and
864
+ `downstream_effect` is consistent with `answer_status`.
865
+
866
+ ## 16. Readiness Projection Contract
867
+
868
+ Runtime projects artifact-specific readiness fields into one canonical readiness
869
+ value before presenting status, final output, or result payloads.
870
+
871
+ | Canonical readiness | Meaning |
872
+ |---|---|
873
+ | `ready` | Required gates pass and the seed is safe for the declared downstream purpose |
874
+ | `limited` | Required gates pass or are explicitly bounded, and named limitations must travel with the seed |
875
+ | `not_ready` | Required gates failed or required ontology-facing coverage is unsupported |
876
+ | `blocked` | Missing source, unsupported runtime capability, or missing user confirmation prevents a valid readiness answer |
877
+
878
+ Mapping rules:
879
+
880
+ | Source field | Source value | Canonical readiness effect |
881
+ |---|---|---|
882
+ | `ontology_handoff.readiness_claim` | `ready` | `ready` |
883
+ | `ontology_handoff.readiness_claim` | `limited` | `limited` |
884
+ | `ontology_handoff.readiness_claim` | `not_ready` | `not_ready` |
885
+ | `ontology_handoff.readiness_claim` | `blocked` | `blocked` |
886
+ | `competency-question-assessment.downstream_effect` | `ready` | `ready` |
887
+ | `competency-question-assessment.downstream_effect` | `limited` | `limited` |
888
+ | `competency-question-assessment.downstream_effect` | `blocks_handoff` | `not_ready` |
889
+ | `competency-question-assessment.downstream_effect` | `blocked_by_missing_source_or_confirmation` | `blocked` |
890
+ | `competency-question-assessment.downstream_effect` | `not_applicable` | excluded from blockers |
891
+
892
+ `handoff-decision-validation.yaml` is the runtime authority that proves the
893
+ stop decision and readiness projection agree with validation artifacts before
894
+ final output and reconstruct record projection. It consumes
895
+ `reconstruct-run-manifest.pre-handoff-validation.yaml`; terminal output must not rely on an
896
+ unvalidated registry, contract, source-profile, validator, reference-standard,
897
+ version, or migration snapshot.
898
+ When readiness signals conflict, runtime projects the strictest value by this
899
+ order: `blocked`, `not_ready`, `limited`, `ready`. A missing required validation
900
+ artifact projects `blocked` only when its `required_when` condition applies; an
901
+ unmet `required_when` condition projects `not_applicable` for that artifact and
902
+ does not lower readiness by itself. A failed applicable validation artifact
903
+ projects `not_ready`; a skipped optional validation artifact projects `limited`.
904
+
905
+ Seed confirmation is required whenever seed validity or handoff readiness is
906
+ projected. If `seed-confirmation.yaml` or `seed-confirmation-validation.yaml` is
907
+ absent at that lifecycle point, runtime projects `blocked`. A limitation state is
908
+ allowed only when both artifacts exist and `seed-confirmation-validation.yaml`
909
+ proves the confirmation or limitation state against the validated seed. Assessment-aware
910
+ terminal readiness belongs to `handoff-decision-validation.yaml`.
911
+
912
+ ## 17. Seed Validity
913
+
914
+ A seed is valid for handoff only when all required conditions are satisfied:
915
+
916
+ | Condition | Meaning |
917
+ |---|---|
918
+ | Purpose is explicit | The seed names the declared purpose, intended decisions, intended actions, and non-goals |
919
+ | Evidence closes | Every evidence ref points to an observed source record |
920
+ | Candidate disposition is complete | Every salient candidate has exactly one disposition |
921
+ | Objects are bounded | Every object type has a definition, evidence, and either a primary key or a limitation |
922
+ | Links close | Every link references known object types |
923
+ | Actions are bound | Every action references actors and affected objects or records a limitation |
924
+ | Dynamic treatment is explicit | Sensitive actions and data have permission treatment or a limitation |
925
+ | Data binding is explicit | Object and action state has source, read, write, or provenance treatment or a limitation |
926
+ | Ontology-facing handoff is explicit | Ontology-facing mapping or limitations cover the registry-owned `ontology_handoff_axis_registry`, including instance/ABox assertion coverage, reasoning/formalism profile, modeling concerns, reference-standard mapping, query access, visualization, graph exploration, graph connectivity, and limitations |
927
+ | Questions test the seed | `competency-questions.yaml` covers purpose, semantic, kinetic, dynamic, data, ontology-handoff, and limitation axes |
928
+ | Query proof is executable when claimed | `query-proofs-validation.yaml` proves query/API proof ids, fixtures, expected answer shapes, and observed results close to questions and evidence |
929
+ | Assessment is traceable | `competency-question-assessment.yaml` has exactly one traceable result per authoritative question |
930
+ | Seed confirmation is explicit | `seed-confirmation-validation.yaml` proves confirmation or limitation state matches the validated seed and derives CQ eligibility |
931
+ | Handoff is honest | `handoff-decision-validation.yaml` proves stop decision and readiness projection match validation results, including the validated pre-handoff run-manifest snapshot, before final output and record emission |
932
+
933
+ Validity does not mean the ontology is complete. It means the current seed is
934
+ safe to use for its declared downstream purpose with its limitations visible.