onto-mcp 0.3.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 (447) hide show
  1. package/.onto/authority/core-lens-registry.yaml +134 -0
  2. package/.onto/authority/core-lexicon.yaml +1562 -0
  3. package/.onto/authority/diagnostic-codes.yaml +94 -0
  4. package/.onto/domains/accounting/competency_qs.md +384 -0
  5. package/.onto/domains/accounting/concepts.md +186 -0
  6. package/.onto/domains/accounting/conciseness_rules.md +160 -0
  7. package/.onto/domains/accounting/dependency_rules.md +239 -0
  8. package/.onto/domains/accounting/domain_scope.md +213 -0
  9. package/.onto/domains/accounting/extension_cases.md +416 -0
  10. package/.onto/domains/accounting/logic_rules.md +226 -0
  11. package/.onto/domains/accounting/structure_spec.md +298 -0
  12. package/.onto/domains/accounting-kr/competency_qs.md +562 -0
  13. package/.onto/domains/accounting-kr/concepts.md +187 -0
  14. package/.onto/domains/accounting-kr/conciseness_rules.md +125 -0
  15. package/.onto/domains/accounting-kr/dependency_rules.md +93 -0
  16. package/.onto/domains/accounting-kr/domain_scope.md +140 -0
  17. package/.onto/domains/accounting-kr/extension_cases.md +343 -0
  18. package/.onto/domains/accounting-kr/logic_rules.md +160 -0
  19. package/.onto/domains/accounting-kr/structure_spec.md +85 -0
  20. package/.onto/domains/business/competency_qs.md +263 -0
  21. package/.onto/domains/business/concepts.md +200 -0
  22. package/.onto/domains/business/conciseness_rules.md +135 -0
  23. package/.onto/domains/business/dependency_rules.md +113 -0
  24. package/.onto/domains/business/domain_scope.md +240 -0
  25. package/.onto/domains/business/extension_cases.md +249 -0
  26. package/.onto/domains/business/logic_rules.md +134 -0
  27. package/.onto/domains/business/structure_spec.md +114 -0
  28. package/.onto/domains/finance/competency_qs.md +362 -0
  29. package/.onto/domains/finance/concepts.md +194 -0
  30. package/.onto/domains/finance/conciseness_rules.md +155 -0
  31. package/.onto/domains/finance/dependency_rules.md +171 -0
  32. package/.onto/domains/finance/domain_scope.md +215 -0
  33. package/.onto/domains/finance/extension_cases.md +350 -0
  34. package/.onto/domains/finance/logic_rules.md +191 -0
  35. package/.onto/domains/finance/structure_spec.md +182 -0
  36. package/.onto/domains/llm-native-development/competency_qs.md +430 -0
  37. package/.onto/domains/llm-native-development/concepts.md +242 -0
  38. package/.onto/domains/llm-native-development/conciseness_rules.md +163 -0
  39. package/.onto/domains/llm-native-development/dependency_rules.md +216 -0
  40. package/.onto/domains/llm-native-development/domain_scope.md +197 -0
  41. package/.onto/domains/llm-native-development/extension_cases.md +474 -0
  42. package/.onto/domains/llm-native-development/logic_rules.md +123 -0
  43. package/.onto/domains/llm-native-development/prompt_interface.md +49 -0
  44. package/.onto/domains/llm-native-development/structure_spec.md +245 -0
  45. package/.onto/domains/market-intelligence/competency_qs.md +274 -0
  46. package/.onto/domains/market-intelligence/concepts.md +233 -0
  47. package/.onto/domains/market-intelligence/conciseness_rules.md +165 -0
  48. package/.onto/domains/market-intelligence/dependency_rules.md +197 -0
  49. package/.onto/domains/market-intelligence/domain_scope.md +231 -0
  50. package/.onto/domains/market-intelligence/extension_cases.md +425 -0
  51. package/.onto/domains/market-intelligence/logic_rules.md +247 -0
  52. package/.onto/domains/market-intelligence/structure_spec.md +209 -0
  53. package/.onto/domains/ontology/competency_qs.md +394 -0
  54. package/.onto/domains/ontology/concepts.md +172 -0
  55. package/.onto/domains/ontology/conciseness_rules.md +134 -0
  56. package/.onto/domains/ontology/dependency_rules.md +125 -0
  57. package/.onto/domains/ontology/domain_scope.md +114 -0
  58. package/.onto/domains/ontology/extension_cases.md +501 -0
  59. package/.onto/domains/ontology/logic_rules.md +114 -0
  60. package/.onto/domains/ontology/problem_framing_profile.md +67 -0
  61. package/.onto/domains/ontology/structure_spec.md +115 -0
  62. package/.onto/domains/palantir-foundry/RESEARCH_NOTES.md +911 -0
  63. package/.onto/domains/palantir-foundry/competency_qs.md +191 -0
  64. package/.onto/domains/palantir-foundry/competitive_comparison.md +329 -0
  65. package/.onto/domains/palantir-foundry/concepts.md +197 -0
  66. package/.onto/domains/palantir-foundry/conciseness_rules.md +245 -0
  67. package/.onto/domains/palantir-foundry/dependency_rules.md +135 -0
  68. package/.onto/domains/palantir-foundry/domain_scope.md +395 -0
  69. package/.onto/domains/palantir-foundry/extension_cases.md +210 -0
  70. package/.onto/domains/palantir-foundry/logic_rules.md +172 -0
  71. package/.onto/domains/palantir-foundry/structure_spec.md +291 -0
  72. package/.onto/domains/software-engineering/competency_qs.md +538 -0
  73. package/.onto/domains/software-engineering/concepts.md +238 -0
  74. package/.onto/domains/software-engineering/conciseness_rules.md +167 -0
  75. package/.onto/domains/software-engineering/dependency_rules.md +216 -0
  76. package/.onto/domains/software-engineering/domain_scope.md +183 -0
  77. package/.onto/domains/software-engineering/extension_cases.md +551 -0
  78. package/.onto/domains/software-engineering/logic_rules.md +240 -0
  79. package/.onto/domains/software-engineering/problem_framing_profile.md +68 -0
  80. package/.onto/domains/software-engineering/structure_spec.md +185 -0
  81. package/.onto/domains/ui-design/competency_qs.md +567 -0
  82. package/.onto/domains/ui-design/concepts.md +194 -0
  83. package/.onto/domains/ui-design/conciseness_rules.md +190 -0
  84. package/.onto/domains/ui-design/dependency_rules.md +323 -0
  85. package/.onto/domains/ui-design/domain_scope.md +340 -0
  86. package/.onto/domains/ui-design/extension_cases.md +563 -0
  87. package/.onto/domains/ui-design/logic_rules.md +349 -0
  88. package/.onto/domains/ui-design/structure_spec.md +252 -0
  89. package/.onto/domains/visual-design/competency_qs.md +472 -0
  90. package/.onto/domains/visual-design/concepts.md +147 -0
  91. package/.onto/domains/visual-design/conciseness_rules.md +186 -0
  92. package/.onto/domains/visual-design/dependency_rules.md +282 -0
  93. package/.onto/domains/visual-design/domain_scope.md +290 -0
  94. package/.onto/domains/visual-design/extension_cases.md +480 -0
  95. package/.onto/domains/visual-design/logic_rules.md +232 -0
  96. package/.onto/domains/visual-design/structure_spec.md +213 -0
  97. package/.onto/principles/llm-native-development-guideline.md +401 -0
  98. package/.onto/principles/llm-runtime-interface-principles.md +665 -0
  99. package/.onto/principles/non-specialist-communication-guideline.md +74 -0
  100. package/.onto/principles/ontology-as-code-guideline.md +243 -0
  101. package/.onto/principles/ontology-as-code-naming-charter.md +130 -0
  102. package/.onto/principles/product-locality-principle.md +129 -0
  103. package/.onto/principles/productization-charter.md +569 -0
  104. package/.onto/processes/evolve/material-kind-adapter-contract.md +113 -0
  105. package/.onto/processes/reconstruct/reconstruct-boundary-contract.md +366 -0
  106. package/.onto/processes/reconstruct/source-profile-contract.md +107 -0
  107. package/.onto/processes/reconstruct/source-profiles/code.md +72 -0
  108. package/.onto/processes/reconstruct/source-profiles/database.md +74 -0
  109. package/.onto/processes/reconstruct/source-profiles/document.md +71 -0
  110. package/.onto/processes/reconstruct/source-profiles/spreadsheet.md +79 -0
  111. package/.onto/processes/review/binding-contract.md +270 -0
  112. package/.onto/processes/review/execution-preparation-artifacts.md +281 -0
  113. package/.onto/processes/review/interpretation-contract.md +245 -0
  114. package/.onto/processes/review/issue-stance-deliberation-contract.md +761 -0
  115. package/.onto/processes/review/lens-prompt-contract.md +402 -0
  116. package/.onto/processes/review/lens-registry.md +127 -0
  117. package/.onto/processes/review/pre-dispatch-contracts.md +428 -0
  118. package/.onto/processes/review/productized-live-path.md +398 -0
  119. package/.onto/processes/review/prompt-execution-runner-contract.md +187 -0
  120. package/.onto/processes/review/record-contract.md +427 -0
  121. package/.onto/processes/review/record-field-mapping.md +337 -0
  122. package/.onto/processes/review/review-context-manifest-contract.md +356 -0
  123. package/.onto/processes/review/review-execution-ux-contract.md +809 -0
  124. package/.onto/processes/review/review-target-profile-contract.md +259 -0
  125. package/.onto/processes/review/shared-phenomenon-contract.md +129 -0
  126. package/.onto/processes/review/synthesize-prompt-contract.md +343 -0
  127. package/.onto/processes/shared/target-material-kind-contract.md +198 -0
  128. package/.onto/roles/axiology.md +81 -0
  129. package/.onto/roles/conciseness.md +36 -0
  130. package/.onto/roles/coverage.md +34 -0
  131. package/.onto/roles/dependency.md +37 -0
  132. package/.onto/roles/evolution.md +35 -0
  133. package/.onto/roles/logic.md +104 -0
  134. package/.onto/roles/pragmatics.md +32 -0
  135. package/.onto/roles/semantics.md +36 -0
  136. package/.onto/roles/structure.md +33 -0
  137. package/.onto/roles/synthesize.md +92 -0
  138. package/AGENTS.md +240 -0
  139. package/CLAUDE.md +39 -0
  140. package/README.md +287 -0
  141. package/bin/onto +92 -0
  142. package/dist/cli.js +101 -0
  143. package/dist/core-api/reconstruct-api.js +222 -0
  144. package/dist/core-api/review-api.js +1271 -0
  145. package/dist/core-runtime/cli/assemble-review-record.js +431 -0
  146. package/dist/core-runtime/cli/bootstrap-review-binding.js +186 -0
  147. package/dist/core-runtime/cli/codex-nested-dispatch.js +226 -0
  148. package/dist/core-runtime/cli/codex-nested-dispatch.test.js +390 -0
  149. package/dist/core-runtime/cli/codex-nested-teamlead-executor.js +464 -0
  150. package/dist/core-runtime/cli/codex-nested-teamlead-executor.test.js +335 -0
  151. package/dist/core-runtime/cli/codex-review-unit-executor.js +228 -0
  152. package/dist/core-runtime/cli/complete-review-session.js +64 -0
  153. package/dist/core-runtime/cli/complexity-assessment.js +153 -0
  154. package/dist/core-runtime/cli/coordinator-helpers.js +583 -0
  155. package/dist/core-runtime/cli/coordinator-state-machine-deliberation.test.js +167 -0
  156. package/dist/core-runtime/cli/coordinator-state-machine.js +794 -0
  157. package/dist/core-runtime/cli/e2e-codex-multi-agent-fixes.test.js +615 -0
  158. package/dist/core-runtime/cli/e2e-start-review-session.test.js +312 -0
  159. package/dist/core-runtime/cli/health.js +44 -0
  160. package/dist/core-runtime/cli/inline-http-review-unit-executor.js +656 -0
  161. package/dist/core-runtime/cli/inline-http-review-unit-executor.test.js +567 -0
  162. package/dist/core-runtime/cli/materialize-review-execution-preparation.js +104 -0
  163. package/dist/core-runtime/cli/materialize-review-prompt-packets.js +952 -0
  164. package/dist/core-runtime/cli/migrate-session-roots.js +118 -0
  165. package/dist/core-runtime/cli/mock-review-unit-executor.js +285 -0
  166. package/dist/core-runtime/cli/onto-tools.js +369 -0
  167. package/dist/core-runtime/cli/prepare-review-session.js +272 -0
  168. package/dist/core-runtime/cli/render-review-final-output.js +350 -0
  169. package/dist/core-runtime/cli/repo-layout-migration-replace.smoke.test.js +106 -0
  170. package/dist/core-runtime/cli/review-invoke-auto-resolution.test.js +268 -0
  171. package/dist/core-runtime/cli/review-invoke-coordinator-topology.test.js +136 -0
  172. package/dist/core-runtime/cli/review-invoke-resolver-caching.test.js +201 -0
  173. package/dist/core-runtime/cli/review-invoke-topology-dispatch.test.js +192 -0
  174. package/dist/core-runtime/cli/review-invoke.js +2030 -0
  175. package/dist/core-runtime/cli/run-review-prompt-execution.js +2152 -0
  176. package/dist/core-runtime/cli/session-root-guard.js +168 -0
  177. package/dist/core-runtime/cli/spawn-watcher.js +173 -0
  178. package/dist/core-runtime/cli/spawn-watcher.test.js +457 -0
  179. package/dist/core-runtime/cli/start-review-session.js +68 -0
  180. package/dist/core-runtime/cli/strip-wrapping-code-fence.js +56 -0
  181. package/dist/core-runtime/cli/strip-wrapping-code-fence.test.js +79 -0
  182. package/dist/core-runtime/cli/teamcreate-lens-deliberation-executor.js +412 -0
  183. package/dist/core-runtime/cli/teamcreate-lens-deliberation-executor.test.js +351 -0
  184. package/dist/core-runtime/cli/topology-executor-mapping.js +139 -0
  185. package/dist/core-runtime/cli/topology-executor-mapping.test.js +173 -0
  186. package/dist/core-runtime/cli/write-review-interpretation.js +81 -0
  187. package/dist/core-runtime/config/onto-config-cli.js +278 -0
  188. package/dist/core-runtime/config/onto-config-key-path.js +288 -0
  189. package/dist/core-runtime/config/onto-config-key-path.test.js +195 -0
  190. package/dist/core-runtime/config/onto-config-preview.js +108 -0
  191. package/dist/core-runtime/config/onto-config-preview.test.js +132 -0
  192. package/dist/core-runtime/discovery/config-chain.js +118 -0
  193. package/dist/core-runtime/discovery/config-chain.test.js +103 -0
  194. package/dist/core-runtime/discovery/config-profile.js +199 -0
  195. package/dist/core-runtime/discovery/config-profile.test.js +233 -0
  196. package/dist/core-runtime/discovery/host-detection.js +33 -0
  197. package/dist/core-runtime/discovery/host-detection.test.js +186 -0
  198. package/dist/core-runtime/discovery/installation-paths.js +21 -0
  199. package/dist/core-runtime/discovery/installation-paths.test.js +65 -0
  200. package/dist/core-runtime/discovery/lens-registry.js +60 -0
  201. package/dist/core-runtime/discovery/lens-registry.test.js +81 -0
  202. package/dist/core-runtime/discovery/onto-home.js +71 -0
  203. package/dist/core-runtime/discovery/path-normalization.js +28 -0
  204. package/dist/core-runtime/discovery/path-normalization.test.js +22 -0
  205. package/dist/core-runtime/discovery/plugin-path.js +72 -0
  206. package/dist/core-runtime/discovery/plugin-path.test.js +95 -0
  207. package/dist/core-runtime/discovery/project-root.js +47 -0
  208. package/dist/core-runtime/discovery/settings-chain.js +353 -0
  209. package/dist/core-runtime/discovery/walk-up.js +17 -0
  210. package/dist/core-runtime/evolve/adapters/code-product/compile/compile-defense.js +344 -0
  211. package/dist/core-runtime/evolve/adapters/code-product/compile/compile-defense.test.js +915 -0
  212. package/dist/core-runtime/evolve/adapters/code-product/compile/compile.js +564 -0
  213. package/dist/core-runtime/evolve/adapters/code-product/compile/compile.test.js +708 -0
  214. package/dist/core-runtime/evolve/adapters/code-product/parsers/brief-parser.js +165 -0
  215. package/dist/core-runtime/evolve/adapters/code-product/parsers/brief-parser.test.js +227 -0
  216. package/dist/core-runtime/evolve/adapters/code-product/validators/validate.js +59 -0
  217. package/dist/core-runtime/evolve/adapters/code-product/validators/validate.test.js +205 -0
  218. package/dist/core-runtime/evolve/adapters/methodology/adapter.js +16 -0
  219. package/dist/core-runtime/evolve/adapters/methodology/adapter.test.js +9 -0
  220. package/dist/core-runtime/evolve/adapters/methodology/perspectives/authority-consistency.js +298 -0
  221. package/dist/core-runtime/evolve/adapters/methodology/perspectives/authority-consistency.test.js +70 -0
  222. package/dist/core-runtime/evolve/adapters/methodology/scope-types/process.js +46 -0
  223. package/dist/core-runtime/evolve/adapters/methodology/scope-types/process.test.js +73 -0
  224. package/dist/core-runtime/evolve/adapters/registry.js +47 -0
  225. package/dist/core-runtime/evolve/adapters/registry.test.js +67 -0
  226. package/dist/core-runtime/evolve/cli.js +256 -0
  227. package/dist/core-runtime/evolve/commands/align.js +194 -0
  228. package/dist/core-runtime/evolve/commands/align.test.js +82 -0
  229. package/dist/core-runtime/evolve/commands/apply.js +161 -0
  230. package/dist/core-runtime/evolve/commands/apply.test.js +138 -0
  231. package/dist/core-runtime/evolve/commands/close.js +39 -0
  232. package/dist/core-runtime/evolve/commands/close.test.js +99 -0
  233. package/dist/core-runtime/evolve/commands/defer.js +40 -0
  234. package/dist/core-runtime/evolve/commands/defer.test.js +134 -0
  235. package/dist/core-runtime/evolve/commands/draft.js +323 -0
  236. package/dist/core-runtime/evolve/commands/draft.test.js +178 -0
  237. package/dist/core-runtime/evolve/commands/e2e-evolve-full-cycle.test.js +208 -0
  238. package/dist/core-runtime/evolve/commands/error-messages.js +125 -0
  239. package/dist/core-runtime/evolve/commands/error-messages.test.js +167 -0
  240. package/dist/core-runtime/evolve/commands/propose-align.js +222 -0
  241. package/dist/core-runtime/evolve/commands/propose-align.test.js +136 -0
  242. package/dist/core-runtime/evolve/commands/reconstruct.js +330 -0
  243. package/dist/core-runtime/evolve/commands/reconstruct.test.js +278 -0
  244. package/dist/core-runtime/evolve/commands/shared.js +22 -0
  245. package/dist/core-runtime/evolve/commands/stale-check.js +103 -0
  246. package/dist/core-runtime/evolve/commands/stale-check.test.js +84 -0
  247. package/dist/core-runtime/evolve/commands/start.js +887 -0
  248. package/dist/core-runtime/evolve/commands/start.test.js +396 -0
  249. package/dist/core-runtime/evolve/config/project-config.js +99 -0
  250. package/dist/core-runtime/evolve/config/project-config.test.js +170 -0
  251. package/dist/core-runtime/evolve/renderers/align-packet.js +280 -0
  252. package/dist/core-runtime/evolve/renderers/align-packet.test.js +332 -0
  253. package/dist/core-runtime/evolve/renderers/draft-packet.js +303 -0
  254. package/dist/core-runtime/evolve/renderers/draft-packet.test.js +377 -0
  255. package/dist/core-runtime/evolve/renderers/format.js +5 -0
  256. package/dist/core-runtime/evolve/renderers/scope-md.js +237 -0
  257. package/dist/core-runtime/evolve/renderers/scope-md.test.js +306 -0
  258. package/dist/core-runtime/govern/cli.js +369 -0
  259. package/dist/core-runtime/govern/cli.test.js +314 -0
  260. package/dist/core-runtime/govern/drift-engine.js +103 -0
  261. package/dist/core-runtime/govern/drift-engine.test.js +319 -0
  262. package/dist/core-runtime/govern/promote-principle.js +206 -0
  263. package/dist/core-runtime/govern/promote-principle.test.js +368 -0
  264. package/dist/core-runtime/govern/queue.js +81 -0
  265. package/dist/core-runtime/govern/types.js +16 -0
  266. package/dist/core-runtime/install/cli.js +530 -0
  267. package/dist/core-runtime/install/detect.js +128 -0
  268. package/dist/core-runtime/install/detect.test.js +155 -0
  269. package/dist/core-runtime/install/gitignore-update.js +74 -0
  270. package/dist/core-runtime/install/gitignore-update.test.js +64 -0
  271. package/dist/core-runtime/install/install-integration.test.js +373 -0
  272. package/dist/core-runtime/install/prompts.js +389 -0
  273. package/dist/core-runtime/install/prompts.test.js +293 -0
  274. package/dist/core-runtime/install/types.js +26 -0
  275. package/dist/core-runtime/install/validation.js +295 -0
  276. package/dist/core-runtime/install/validation.test.js +313 -0
  277. package/dist/core-runtime/install/writer.js +254 -0
  278. package/dist/core-runtime/install/writer.test.js +218 -0
  279. package/dist/core-runtime/learning/extractor.js +461 -0
  280. package/dist/core-runtime/learning/feedback.js +179 -0
  281. package/dist/core-runtime/learning/health-report.js +165 -0
  282. package/dist/core-runtime/learning/health-report.test.js +169 -0
  283. package/dist/core-runtime/learning/loader.js +388 -0
  284. package/dist/core-runtime/learning/loader.test.js +102 -0
  285. package/dist/core-runtime/learning/promote/apply-state.js +240 -0
  286. package/dist/core-runtime/learning/promote/audit-obligation.js +195 -0
  287. package/dist/core-runtime/learning/promote/collector.js +432 -0
  288. package/dist/core-runtime/learning/promote/degraded-state.js +125 -0
  289. package/dist/core-runtime/learning/promote/domain-doc-proposer.js +166 -0
  290. package/dist/core-runtime/learning/promote/e2e-promote.test.js +6385 -0
  291. package/dist/core-runtime/learning/promote/health-snapshot.js +150 -0
  292. package/dist/core-runtime/learning/promote/insight-reclassifier.js +544 -0
  293. package/dist/core-runtime/learning/promote/judgment-auditor.js +517 -0
  294. package/dist/core-runtime/learning/promote/panel-reviewer.js +1158 -0
  295. package/dist/core-runtime/learning/promote/promote-executor.js +1675 -0
  296. package/dist/core-runtime/learning/promote/promoter.js +307 -0
  297. package/dist/core-runtime/learning/promote/retirement.js +122 -0
  298. package/dist/core-runtime/learning/promote/types.js +23 -0
  299. package/dist/core-runtime/learning/prompt-sections.js +51 -0
  300. package/dist/core-runtime/learning/shared/artifact-registry-init.js +45 -0
  301. package/dist/core-runtime/learning/shared/artifact-registry.js +254 -0
  302. package/dist/core-runtime/learning/shared/audit-obligation-kernel.js +73 -0
  303. package/dist/core-runtime/learning/shared/audit-state.js +99 -0
  304. package/dist/core-runtime/learning/shared/duplicate-check.js +28 -0
  305. package/dist/core-runtime/learning/shared/llm-caller.js +831 -0
  306. package/dist/core-runtime/learning/shared/llm-caller.test.js +601 -0
  307. package/dist/core-runtime/learning/shared/llm-tool-loop.js +393 -0
  308. package/dist/core-runtime/learning/shared/mode.js +25 -0
  309. package/dist/core-runtime/learning/shared/paths.js +84 -0
  310. package/dist/core-runtime/learning/shared/paths.test.js +79 -0
  311. package/dist/core-runtime/learning/shared/patterns.js +37 -0
  312. package/dist/core-runtime/learning/shared/recoverability.js +355 -0
  313. package/dist/core-runtime/learning/shared/recovery-context.js +374 -0
  314. package/dist/core-runtime/learning/shared/scope.js +1 -0
  315. package/dist/core-runtime/learning/shared/semantic-classifier.js +94 -0
  316. package/dist/core-runtime/learning/shared/specs/apply-execution-state-spec.js +42 -0
  317. package/dist/core-runtime/learning/shared/specs/audit-state-spec.js +37 -0
  318. package/dist/core-runtime/learning/shared/specs/backup-metadata-spec.js +39 -0
  319. package/dist/core-runtime/learning/shared/specs/emergency-log-spec.js +41 -0
  320. package/dist/core-runtime/learning/shared/specs/layout-version-spec.js +38 -0
  321. package/dist/core-runtime/learning/shared/specs/promote-decisions-spec.js +43 -0
  322. package/dist/core-runtime/learning/shared/specs/promote-report-spec.js +113 -0
  323. package/dist/core-runtime/learning/shared/specs/prune-log-spec.js +36 -0
  324. package/dist/core-runtime/learning/shared/specs/recovery-resolution-spec.js +48 -0
  325. package/dist/core-runtime/learning/shared/specs/restore-manifest-spec.js +43 -0
  326. package/dist/core-runtime/learning/shared/specs/spec-helpers.js +64 -0
  327. package/dist/core-runtime/learning/usage-tracker.js +190 -0
  328. package/dist/core-runtime/learning/usage-tracker.test.js +176 -0
  329. package/dist/core-runtime/llm/llm-caller.js +649 -0
  330. package/dist/core-runtime/llm/llm-tool-loop.js +401 -0
  331. package/dist/core-runtime/llm/model-switcher.js +62 -0
  332. package/dist/core-runtime/logger.js +22 -0
  333. package/dist/core-runtime/onboard/detect-review-axes.js +122 -0
  334. package/dist/core-runtime/onboard/detect-review-axes.test.js +127 -0
  335. package/dist/core-runtime/onboard/write-review-block.js +188 -0
  336. package/dist/core-runtime/onboard/write-review-block.test.js +240 -0
  337. package/dist/core-runtime/readers/brownfield-builder.js +150 -0
  338. package/dist/core-runtime/readers/brownfield-builder.test.js +136 -0
  339. package/dist/core-runtime/readers/code-chunk-collector.js +53 -0
  340. package/dist/core-runtime/readers/code-chunk-collector.test.js +136 -0
  341. package/dist/core-runtime/readers/file-utils.js +240 -0
  342. package/dist/core-runtime/readers/file-utils.test.js +146 -0
  343. package/dist/core-runtime/readers/lexicon-citation-check.js +93 -0
  344. package/dist/core-runtime/readers/lexicon-citation-check.test.js +77 -0
  345. package/dist/core-runtime/readers/mcp-figma.js +30 -0
  346. package/dist/core-runtime/readers/mcp-figma.test.js +82 -0
  347. package/dist/core-runtime/readers/mcp-generic.js +31 -0
  348. package/dist/core-runtime/readers/mcp-generic.test.js +76 -0
  349. package/dist/core-runtime/readers/ontology-index.js +148 -0
  350. package/dist/core-runtime/readers/ontology-index.test.js +245 -0
  351. package/dist/core-runtime/readers/ontology-query.js +168 -0
  352. package/dist/core-runtime/readers/ontology-query.test.js +311 -0
  353. package/dist/core-runtime/readers/ontology-resolve.js +48 -0
  354. package/dist/core-runtime/readers/ontology-resolve.test.js +48 -0
  355. package/dist/core-runtime/readers/patterns/index.js +7 -0
  356. package/dist/core-runtime/readers/review-log.js +213 -0
  357. package/dist/core-runtime/readers/review-log.test.js +313 -0
  358. package/dist/core-runtime/readers/scan-local.js +102 -0
  359. package/dist/core-runtime/readers/scan-local.test.js +102 -0
  360. package/dist/core-runtime/readers/scan-tarball.js +121 -0
  361. package/dist/core-runtime/readers/scan-tarball.test.js +283 -0
  362. package/dist/core-runtime/readers/scan-vault.js +34 -0
  363. package/dist/core-runtime/readers/scan-vault.test.js +81 -0
  364. package/dist/core-runtime/readers/types.js +42 -0
  365. package/dist/core-runtime/readers/types.test.js +94 -0
  366. package/dist/core-runtime/readers/viewpoint-collectors.js +229 -0
  367. package/dist/core-runtime/reconstruct/artifact-types.js +1 -0
  368. package/dist/core-runtime/reconstruct/directive-validation.js +123 -0
  369. package/dist/core-runtime/reconstruct/materialize-preparation.js +251 -0
  370. package/dist/core-runtime/reconstruct/record.js +198 -0
  371. package/dist/core-runtime/reconstruct/run.js +578 -0
  372. package/dist/core-runtime/reconstruct/seed-candidate-validation.js +356 -0
  373. package/dist/core-runtime/reconstruct/source-observations.js +62 -0
  374. package/dist/core-runtime/reconstruct/source-profiles.js +73 -0
  375. package/dist/core-runtime/release-channel/release-channel.js +90 -0
  376. package/dist/core-runtime/review/artifact-types.js +13 -0
  377. package/dist/core-runtime/review/citation-audit.js +204 -0
  378. package/dist/core-runtime/review/citation-audit.test.js +165 -0
  379. package/dist/core-runtime/review/controlled-lens-deliberation.js +125 -0
  380. package/dist/core-runtime/review/execution-plan-resolver.js +247 -0
  381. package/dist/core-runtime/review/execution-plan-resolver.test.js +243 -0
  382. package/dist/core-runtime/review/execution-topology-resolver-axis-first.test.js +246 -0
  383. package/dist/core-runtime/review/execution-topology-resolver.js +401 -0
  384. package/dist/core-runtime/review/execution-topology-resolver.test.js +315 -0
  385. package/dist/core-runtime/review/failure-records.js +57 -0
  386. package/dist/core-runtime/review/inline-context-embedder.js +141 -0
  387. package/dist/core-runtime/review/inline-context-embedder.test.js +154 -0
  388. package/dist/core-runtime/review/issue-artifact-runtime.js +859 -0
  389. package/dist/core-runtime/review/legacy-mode-policy.js +88 -0
  390. package/dist/core-runtime/review/lens-completion-policy.js +17 -0
  391. package/dist/core-runtime/review/materializers-effort-persist.test.js +79 -0
  392. package/dist/core-runtime/review/materializers.js +963 -0
  393. package/dist/core-runtime/review/ontology-path-classifier.js +179 -0
  394. package/dist/core-runtime/review/ontology-path-classifier.test.js +216 -0
  395. package/dist/core-runtime/review/packet-boundary-policy.js +215 -0
  396. package/dist/core-runtime/review/packet-boundary-policy.test.js +107 -0
  397. package/dist/core-runtime/review/participating-lens-paths.js +61 -0
  398. package/dist/core-runtime/review/participating-lens-paths.test.js +73 -0
  399. package/dist/core-runtime/review/review-artifact-utils.js +287 -0
  400. package/dist/core-runtime/review/review-config-legacy-translate.js +244 -0
  401. package/dist/core-runtime/review/review-config-legacy-translate.test.js +161 -0
  402. package/dist/core-runtime/review/review-config-validator.js +289 -0
  403. package/dist/core-runtime/review/review-config-validator.test.js +236 -0
  404. package/dist/core-runtime/review/review-execution-profile.js +193 -0
  405. package/dist/core-runtime/review/review-execution-route.js +52 -0
  406. package/dist/core-runtime/review/review-progress-contract.js +123 -0
  407. package/dist/core-runtime/review/review-record-validation.js +251 -0
  408. package/dist/core-runtime/review/review-result-classification.js +379 -0
  409. package/dist/core-runtime/review/review-state-machine.js +39 -0
  410. package/dist/core-runtime/review/route-visibility.js +125 -0
  411. package/dist/core-runtime/review/shape-pipeline-audit.test.js +311 -0
  412. package/dist/core-runtime/review/shape-to-topology-id.js +117 -0
  413. package/dist/core-runtime/review/shape-to-topology-id.test.js +132 -0
  414. package/dist/core-runtime/review/topology-shape-derivation.js +155 -0
  415. package/dist/core-runtime/review/topology-shape-derivation.test.js +195 -0
  416. package/dist/core-runtime/scope-runtime/constants.js +12 -0
  417. package/dist/core-runtime/scope-runtime/constraint-pool.js +166 -0
  418. package/dist/core-runtime/scope-runtime/constraint-pool.test.js +674 -0
  419. package/dist/core-runtime/scope-runtime/domain-validation-log.js +135 -0
  420. package/dist/core-runtime/scope-runtime/domain-validation-log.test.js +156 -0
  421. package/dist/core-runtime/scope-runtime/eval-persistence.js +65 -0
  422. package/dist/core-runtime/scope-runtime/eval-persistence.test.js +84 -0
  423. package/dist/core-runtime/scope-runtime/event-pipeline.js +64 -0
  424. package/dist/core-runtime/scope-runtime/event-pipeline.test.js +450 -0
  425. package/dist/core-runtime/scope-runtime/event-store.js +39 -0
  426. package/dist/core-runtime/scope-runtime/event-store.test.js +95 -0
  427. package/dist/core-runtime/scope-runtime/gate-guard.js +348 -0
  428. package/dist/core-runtime/scope-runtime/gate-guard.test.js +1047 -0
  429. package/dist/core-runtime/scope-runtime/hash.js +4 -0
  430. package/dist/core-runtime/scope-runtime/hash.test.js +33 -0
  431. package/dist/core-runtime/scope-runtime/id.js +4 -0
  432. package/dist/core-runtime/scope-runtime/id.test.js +17 -0
  433. package/dist/core-runtime/scope-runtime/reducer.js +297 -0
  434. package/dist/core-runtime/scope-runtime/reducer.test.js +759 -0
  435. package/dist/core-runtime/scope-runtime/scope-manager.js +161 -0
  436. package/dist/core-runtime/scope-runtime/state-machine.js +309 -0
  437. package/dist/core-runtime/scope-runtime/state-machine.test.js +704 -0
  438. package/dist/core-runtime/scope-runtime/types.js +116 -0
  439. package/dist/core-runtime/scope-runtime/types.test.js +69 -0
  440. package/dist/core-runtime/target-material-kind.js +256 -0
  441. package/dist/core-runtime/translate/render-for-user.js +169 -0
  442. package/dist/core-runtime/translate/render-for-user.test.js +122 -0
  443. package/dist/mcp/server.js +1011 -0
  444. package/dist/mcp/tool-schemas.js +93 -0
  445. package/dist/providers/capability-contract.js +1 -0
  446. package/package.json +68 -0
  447. package/settings.example.json +33 -0
@@ -0,0 +1,323 @@
1
+ ---
2
+ version: 2
3
+ last_updated: "2026-03-31"
4
+ source: manual
5
+ status: established
6
+ ---
7
+
8
+ # UI Design Domain — Dependency Rules
9
+
10
+ Classification axis: **linkage type** — dependencies classified by the type of relationship between UI components and systems.
11
+
12
+ ## Information Architecture–Navigation Dependency
13
+
14
+ ### IA → Navigation Patterns
15
+
16
+ - Information Architecture (IA) → Navigation Patterns: content classification and hierarchy must be defined before navigation structure can be determined. Designing navigation without IA causes menus to reflect system structure, conflicting with the user's mental model
17
+ - Dependency chain: Content Inventory → Content Categorization → Hierarchy Definition → Navigation Pattern Selection → Navigation Implementation
18
+ - Violation example: a SaaS product built its navigation directly from its database schema (Users, Sessions, Logs, Configurations). Users expected task-based navigation (Dashboard, Team Management, Activity, Settings). The system-structure navigation forced users to learn the internal architecture to use the product. Rebuilding navigation from a user-centered IA resolved the usability issues
19
+
20
+ ### IA → Search
21
+
22
+ - Information Architecture → Search: content must be structured for search results to be meaningfully classified and displayed
23
+ - Dependency: search result categories, facets, and filters derive from IA categories. If the IA does not define categories, search results are an unstructured flat list
24
+ - Search result structure requirements: results must be groupable by IA category, and each result must display enough context (title, category, snippet) for the user to evaluate relevance without clicking
25
+
26
+ ### Navigation Change → Secondary Navigation Update
27
+
28
+ - Navigation Change → Breadcrumb/Sitemap Update: when navigation hierarchy changes, secondary navigation (breadcrumbs, sitemaps, footer links) must be updated synchronously
29
+ - Failure mode: breadcrumbs showing a path that no longer exists in the navigation hierarchy. Users clicking a breadcrumb segment and reaching a 404 or unexpected page
30
+ - Update checklist when navigation hierarchy changes: (1) breadcrumb path definitions, (2) sitemap entries, (3) footer navigation links, (4) search scope categories, (5) URL structure (if URL reflects hierarchy)
31
+
32
+ ### Navigation Depth → Wayfinding Aids
33
+
34
+ - Navigation Depth → Wayfinding Aids: when hierarchy is 3 levels or deeper, current location indicators and upward navigation are mandatory
35
+ - Depth thresholds:
36
+ - **1–2 levels**: wayfinding aids optional (active state on navigation item is sufficient)
37
+ - **3 levels**: breadcrumbs mandatory, current page title must reflect position in hierarchy
38
+ - **4+ levels**: breadcrumbs mandatory + section-level sidebar navigation showing siblings and parent, or equivalent persistent context indicator
39
+ - Violation example: a documentation site with 5-level hierarchy (Product → Category → Topic → Article → Section) showed only the article title with no breadcrumbs or section context. Users landing from search could not determine their position or navigate to related articles
40
+
41
+ ## Action–Feedback Dependency
42
+
43
+ ### User Action → System Feedback
44
+
45
+ - User Action → System Feedback: every user action must have a corresponding feedback. An action without feedback creates the perception that "the system is not responding"
46
+ - Completeness verification: for each interactive element (button, link, toggle, input, drag target), define (1) immediate feedback (visual state change), (2) process feedback (loading if async), and (3) outcome feedback (success/failure)
47
+ - Minimum feedback: even if no async operation occurs, a button must show a pressed/active state (visual confirmation that the click registered). Flat buttons with no state change on click feel unresponsive
48
+
49
+ ### Asynchronous Action Chain
50
+
51
+ - Asynchronous Action → Loading State → Success/Failure State: asynchronous operations must have at least 3 states defined (requesting/success/failure)
52
+ - Extended chain for long operations: Requesting → Progress Update → Success/Failure → Post-Success Action Guidance
53
+ - Timeout dependency: if an operation can time out, a fourth state (Timeout) must be defined, distinct from Failure. Timeout should offer retry with context ("Request timed out. Your data was not lost. Try again?")
54
+ - Violation example: a file upload feature showed a spinner on upload start and a success message on completion, but had no failure state defined. When uploads failed due to file size limits, the spinner continued indefinitely. Adding a failure state with file size guidance and retry resolved the confusion
55
+
56
+ ### Destructive Action Protection Chain
57
+
58
+ - Destructive Action → Confirmation or Undo: irreversible actions require at least one of pre-execution confirmation or post-execution undo
59
+ - Decision chain: Is the action reversible? → Yes: Use undo pattern (immediate execution + undo toast, 5–10 seconds). No: Is the action high-impact (affects other users, deletes data permanently)? → Yes: Use explicit confirmation with specific label. No: Use soft-delete with recovery period
60
+ - Protection depth by severity:
61
+ - **Low severity** (archive, hide): no confirmation needed, provide undo
62
+ - **Medium severity** (delete single item): confirmation dialog with specific action label, or undo
63
+ - **High severity** (delete account, bulk delete, publish to all users): confirmation dialog + typing confirmation (type the item name or "DELETE") + cooldown period
64
+ - Violation example: a project management tool allowed bulk deletion of tasks with a single "OK" button. A user accidentally selected all tasks (Ctrl+A) and clicked delete. 200+ tasks were permanently deleted with no recovery. Adding type-to-confirm ("Type DELETE to confirm removing 237 tasks") and a 30-day soft-delete recovery prevented recurrence
65
+
66
+ ### Optimistic Update → Rollback UX
67
+
68
+ - When UI is updated before server confirmation, a rollback scenario and user guidance for failure must be designed together
69
+ - Rollback chain: Optimistic UI Update → Server Rejection → Rollback Animation → Explanatory Message → Recovery Option
70
+ - Rollback must be visible: silently reverting a change (e.g., a "liked" heart icon quietly returning to unliked) without explanation causes users to think the interface is buggy. The rollback must include a brief explanatory message ("Could not save. Try again?")
71
+
72
+ ### Feedback Type → Persistence
73
+
74
+ - Success is transient (toast), errors are persistent (inline message), warnings persist until user acknowledgment. Displaying errors as toasts causes users to miss them
75
+ - Persistence chain: Feedback Type → Display Method → Persistence Duration → Dismissal Mechanism → Post-Dismissal State
76
+ - Post-dismissal requirement: after a user dismisses a warning, the warning must not immediately reappear (unless the condition that triggered it recurs). Dismissed warnings should be accessible in a notification center or log for later reference
77
+
78
+ ## Form–Validation Dependency
79
+
80
+ ### Input Field → Validation Rules
81
+
82
+ - All input fields must have their allowed value range/format defined. Accepting input without rules makes validation impossible
83
+ - Validation rule categories: (1) presence (required vs optional), (2) format (email, phone, URL patterns), (3) range (min/max length, numeric bounds), (4) business rules (unique username, valid address, future date only)
84
+ - Cross-field dependencies: when field B's valid values depend on field A's value (e.g., state/province depends on country), the dependency must be explicitly defined and the dependent field must revalidate when the source field changes
85
+
86
+ ### Validation → Error Display
87
+
88
+ - On validation failure, error messages must be visually proximate to the relevant field (Gestalt proximity). Displaying errors only at the top of the page makes it difficult to identify which field is affected
89
+ - Error display chain: Validation Failure → Error Message Generation → Error Placement (inline below field) → Field Visual State Change (red border) → Focus Management (move focus to first error field on submit)
90
+ - Multiple error handling: when a form has multiple validation errors on submit, (1) display all errors simultaneously (not one at a time), (2) scroll to and focus on the first error field, (3) show an error summary at the top of the form linking to each error field
91
+
92
+ ### Form Submission → Result Feedback
93
+
94
+ - After form submission, feedback on the result (success/server error/validation error) and next-action guidance must be provided
95
+ - Success chain: Form Submit → Loading State → Success Feedback → Next Action Guidance ("Your account has been created. Go to your dashboard?")
96
+ - Failure chain: Form Submit → Loading State → Error Feedback → Recovery Guidance (server error: retry button; validation error: highlighted fields with messages)
97
+ - Data preservation on failure: if a server error occurs after form submission, all entered data must be preserved. Clearing the form on error forces complete re-entry
98
+
99
+ ### Multi-Step Form Dependencies
100
+
101
+ - Multi-step Form → Progress Indicator: when steps are divided, the current step, total number of steps, and previous/next navigation availability must be displayed
102
+ - Multi-step Form → Data Preservation: when returning to a previous step, entered data must be preserved. Otherwise, re-entry is forced
103
+ - Step dependency rules:
104
+ - **Independent steps**: steps can be completed in any order. Progress indicator should allow direct navigation to any step. Example: profile setup (avatar, bio, preferences can be done in any order)
105
+ - **Sequential steps**: step N requires data from step N-1. Progress indicator shows completed/current/locked states. Forward-only navigation until all preceding steps are complete. Example: checkout flow (shipping → payment → review)
106
+ - **Branching steps**: step N's content depends on a choice in step M. The progress indicator must update to reflect the actual path. Example: insurance quote (different questions based on insurance type selected)
107
+
108
+ ## Data–Display Dependency
109
+
110
+ ### Data Characteristics → Display Pattern
111
+
112
+ - Data requiring comparison uses tables; browsing-oriented data uses cards; order-important data uses lists. Mismatch between data characteristics and display pattern reduces usage efficiency
113
+ - Dependency chain: Data Schema (fields, types, cardinality) → User Task Analysis (compare, browse, search, drill-down) → Display Pattern Selection → Layout Configuration
114
+ - Violation example: a product comparison feature used card layout, making users scroll back and forth to compare attributes. Switching to a table layout with products as columns and attributes as rows enabled direct comparison and measurably reduced time-on-task
115
+
116
+ ### Data Volume → Pagination Method
117
+
118
+ - If total item count is finite and specific position access is needed, use pagination; if browsing-focused, use infinite scroll
119
+ - Volume thresholds:
120
+ - **< 20 items**: no pagination needed; display all items
121
+ - **20–100 items**: pagination or "load more" button, depending on use case
122
+ - **100–1000 items**: pagination with page size selector (10/25/50/100)
123
+ - **1000+ items**: pagination + search/filter required; infinite scroll inappropriate for this volume (scroll position becomes meaningless)
124
+
125
+ ### Sort/Filter Change → Data Refresh
126
+
127
+ - When sort criteria or filters change, data must be refreshed immediately (or after explicit apply). The selection criteria for refresh method (immediate/apply button) must be defined
128
+ - Dependency: filter change → data request → loading state → result display → active filter update. If any step in this chain is missing, the UI becomes inconsistent (e.g., showing old data with new filter indicators)
129
+ - URL synchronization: filter and sort state should be reflected in the URL (query parameters). If the state is not in the URL, users cannot bookmark or share filtered views, and browser back does not restore the previous filter state
130
+
131
+ ### Empty Results → Empty State UI
132
+
133
+ - When filter/search results are empty, the empty state must provide appropriate guidance (suggesting filter adjustments, search term changes)
134
+ - Dependency chain: Query → Zero Results → Empty State Display → Suggested Actions (modify filters, broaden search, clear all filters)
135
+ - Contextual empty states:
136
+ - **Search empty**: "No results for '[query]'. Try different keywords or check your spelling"
137
+ - **Filter empty**: "No items match your filters. [Clear filters] or [adjust criteria]" with specific filter names that could be changed
138
+ - **Category empty**: "This category has no items yet. [Browse all items] or [Add the first item]"
139
+
140
+ ## Modal–Focus Dependency
141
+
142
+ ### Modal Open → Focus Management
143
+
144
+ - Modal Open → Focus Move: when a modal opens, focus must move inside the modal
145
+ - Focus target: first focusable element in the modal (typically the close button or the first form field). If the modal has a primary action, focusing that action may be appropriate for confirmation dialogs
146
+ - Implementation chain: Modal Trigger Click → Modal Render → `aria-modal="true"` Set → Background `inert` Applied → Focus Moved to Modal → Focus Trap Activated
147
+
148
+ ### Modal → Focus Trap
149
+
150
+ - Modal Open → Focus Trap: Tab key within a modal must cycle only within the modal. If focus escapes to the background, screen reader users cannot perceive the modal
151
+ - Focus trap requirements: (1) Tab from last focusable element returns to first, (2) Shift+Tab from first returns to last, (3) no element outside the modal is reachable by Tab while modal is open
152
+ - Implementation note: the `inert` attribute on background content is the preferred mechanism over managing tabindex on individual elements
153
+
154
+ ### Modal Close → Focus Restore
155
+
156
+ - Modal Close → Focus Restore: when a modal closes, focus must return to the element that triggered the modal. Lost focus causes keyboard users to lose their position
157
+ - Edge case: if the trigger element no longer exists when the modal closes (e.g., the modal was triggered by a list item that was deleted within the modal), focus should move to the nearest logical container or the element that now occupies the trigger's position
158
+
159
+ ### Modal → Background Deactivation
160
+
161
+ - While a modal is open, the background must be treated as non-interactive (inert). Apply `aria-hidden` or `inert` attribute
162
+ - Requirement: all interactive elements in the background must be unreachable by keyboard and invisible to screen readers while the modal is open. Mouse/touch clicks on the background should either be ignored or close the modal (based on data loss risk — see logic_rules.md §Modal Close Mechanisms)
163
+
164
+ ## Responsive–Component Dependency
165
+
166
+ ### Viewport Size → Component Pattern Transition
167
+
168
+ - The criteria for components transitioning to different patterns at specific viewports must be defined
169
+ - Dependency chain: Viewport Width → Breakpoint Threshold → Component Pattern Switch → Content Reflow → Priority Reassertion
170
+ - Breakpoint definitions must be explicit: define the exact pixel values where transitions occur. Common breakpoints: 320px (small mobile), 375px (standard mobile), 768px (tablet), 1024px (small desktop), 1440px (standard desktop). The specific values should be project-defined, but must be documented
171
+ - Content loss prohibition: no content may be permanently hidden in responsive transitions. Content may be reorganized, collapsed behind expand controls, or moved to alternative locations, but information available at desktop must be accessible at mobile
172
+
173
+ ### Touch Environment → Hover Alternative
174
+
175
+ - Hover-dependent interactions (tooltips, mega menus, etc.) must have alternatives defined for touch environments (long press, tap, dedicated button)
176
+ - Dependency chain: Hover Interaction Defined → Touch Alternative Defined → Consistent Information Access Guaranteed
177
+ - Common alternatives: tooltip on hover → tap popover with close button; mega menu on hover → tap to expand with tap-outside to close; hover preview → tap to expand in-place
178
+
179
+ ### Screen Reduction → Content Priority
180
+
181
+ - Priorities for which information to keep and which to reduce/rearrange must be defined. Reducing without priorities pushes critical information aside
182
+ - Content priority matrix requirement: for each screen, define a priority ranking for all content sections. When viewport narrows, lower-priority content collapses first
183
+ - Violation example: a real estate listing page at desktop showed price, photos, description, map, agent contact, and similar listings. At mobile, the responsive layout stacked them in DOM order, pushing the agent contact button (high priority for conversion) below three scrolls of content. Reordering the mobile stack by priority (photos → price → agent contact → description → map → similar) significantly improved contact rates
184
+
185
+ ## Accessibility–Interaction Dependency
186
+
187
+ ### Custom Component → ARIA Specification
188
+
189
+ - Custom components not using native HTML elements must specify appropriate ARIA roles, states, and properties
190
+ - Dependency chain: Custom Component Design → ARIA Role Assignment → ARIA State/Property Definition → Keyboard Interaction Definition → Screen Reader Testing
191
+ - Common role mappings: custom dropdown → `role="listbox"` + `role="option"`; custom tabs → `role="tablist"` + `role="tab"` + `role="tabpanel"`; custom accordion → `role="region"` with `aria-expanded`; custom toggle → `role="switch"` with `aria-checked`
192
+ - Violation example: a custom "tag selector" component was built as a series of styled `<div>` elements. Screen readers announced it as "group" with no indication that items were selectable. Adding `role="listbox"` to the container and `role="option"` with `aria-selected` to each tag made the component usable with screen readers
193
+
194
+ ### Dynamic Content → Live Region
195
+
196
+ - Content that changes without user action (notifications, counters, status changes) must be communicated to screen readers via ARIA live regions
197
+ - Dependency chain: Dynamic Content Identified → Update Frequency Assessed → `aria-live` Value Selected → Live Region Container Positioned in DOM
198
+ - Frequency-based decisions: updates every few seconds (stock prices, counters) → do not use live regions (too noisy); use on-demand query instead. Updates on user actions (form save result, search count) → `aria-live="polite"`. Urgent system alerts (session timeout, error) → `aria-live="assertive"`
199
+
200
+ ### Drag-and-Drop → Keyboard Alternative
201
+
202
+ - Drag-and-drop cannot be operated with keyboard/screen reader. Alternative interactions such as arrow key movement and context menus are needed
203
+ - Alternative chain: Drag-and-Drop UI → Keyboard Alternative (arrow keys to move, Enter to pick up / drop) → Screen Reader Announcements ("Item 3 of 5. Press Enter to pick up, then arrow keys to move") → Equivalent Outcome Verification
204
+ - Requirement: the keyboard alternative must achieve the same outcome as drag-and-drop. If drag-and-drop allows reordering, the keyboard alternative must also allow reordering to any position, not just up/down by one
205
+
206
+ ### Time Limit → Extension Mechanism
207
+
208
+ <!-- derived-from: WCAG 2.2, SC 2.2.1 -->
209
+ - If time limits exist (session timeout, auto-logout), users must be warned and provided with an extension mechanism (WCAG 2.2.1)
210
+ - Warning chain: Time Limit Defined → Warning Threshold Defined (warn at least 20 seconds before expiration) → Warning UI Displayed → Extension Mechanism Available → Extension Applied → Timer Reset
211
+ - Exception: time limits inherent to the activity (real-time auctions, live events) may not be extendable, but the user must be informed of the time limit before starting the activity
212
+
213
+ ## Circular Dependency Detection and Classification
214
+
215
+ In UI design, some apparent circular dependencies are intentional design patterns, while others indicate structural defects.
216
+
217
+ ### Intentional Circular Patterns
218
+
219
+ These are recognized patterns where bidirectional influence is expected and managed:
220
+
221
+ - **Filter ↔ Display**: changing filters updates the display; the display's empty state suggests filter changes. This is not a defect — it is a feedback loop. Management: the filter state is the source of truth; the display reacts to it and may suggest changes, but never modifies filters directly
222
+ - **Navigation ↔ Content**: navigation determines what content is shown; content (e.g., "related items" links) provides additional navigation. Management: the IA hierarchy is the source of truth for primary navigation; in-content links are secondary navigation and must not contradict the IA
223
+ - **Form ↔ Validation**: form input triggers validation; validation results modify form display (error states, field disabling). Management: the form data model is the source of truth; validation reads the model and writes to a separate error state, which the form displays
224
+
225
+ ### Unintentional Circular Dependencies (Defects)
226
+
227
+ These indicate structural problems that must be resolved:
228
+
229
+ - **State ↔ State**: screen A's state depends on screen B's state, and screen B's state depends on screen A's state, with no clear source of truth. Resolution: identify which screen owns the state and make the other screen read from it
230
+ - **Navigation ↔ Navigation**: menu A links to menu B, and menu B links back to menu A, creating a loop with no content screens. Resolution: ensure every navigation path reaches a content endpoint
231
+ - **Modal ↔ Modal**: modal A opens modal B, and modal B has a path back to modal A (stacked modal violation). Resolution: flatten to a single modal with step transitions or convert to page navigation
232
+
233
+ ### Detection Method
234
+
235
+ For any bidirectional dependency between components X and Y:
236
+ 1. **Identify the source of truth**: is there a clear owner of the shared state/concept? If yes → intentional pattern (document the SoT). If no → unintentional circular dependency (resolve it)
237
+ 2. **Trace the data flow**: does data flow X → Y → X in a managed loop (each direction serves a different purpose)? If yes → intentional feedback loop. Does data flow X → Y → X in an unmanaged loop (same data bouncing)? If yes → defect
238
+ 3. **Test for infinite loops**: in the described interaction, could a user be stuck in an endless cycle with no exit? If yes → structural defect regardless of intent
239
+
240
+ ## Referential Integrity
241
+
242
+ Referential integrity in UI design means that every reference from one UI element to another points to something that exists, is accessible, and is in a consistent state.
243
+
244
+ ### Cross-Screen References
245
+
246
+ - A link, button, or CTA on screen A that navigates to screen B requires screen B to exist, be accessible to the same user, and display content consistent with what screen A promised
247
+ - Violation types:
248
+ - **Broken reference**: screen A links to screen B, but screen B does not exist (404, missing route)
249
+ - **Permission mismatch**: screen A shows a link to screen B visible to all users, but screen B requires admin permission. Non-admin users see the link, click it, and receive a permission error
250
+ - **Content mismatch**: screen A says "View your invoices (3)" but screen B shows 5 invoices because the count on screen A is stale
251
+ - Verification: for each cross-screen reference, confirm (1) the target exists, (2) the user has permission, (3) any preview data (counts, names, summaries) on the source matches the target
252
+
253
+ ### Component–Design System References
254
+
255
+ - Every component used in the UI must reference a defined component in the design system or pattern library
256
+ - Violation: a developer creates a custom date picker because the design system's date picker does not support range selection. The custom component has different styling, different keyboard behavior, and no ARIA support. It violates design system consistency and accessibility
257
+ - Resolution: extend the design system component to support the needed capability, or create a new design system component. Never use ad-hoc components that bypass the design system
258
+
259
+ ### State References
260
+
261
+ - When one component displays data that originates from another component or screen, the data must be current or indicate staleness
262
+ - Stale data indicators: if a cached value is displayed while fresh data loads, show a visual indicator (e.g., greyed-out text, "Updating..." label, timestamp of last refresh)
263
+ - Real-time dependency: components displaying real-time data (notifications badge showing count, dashboard metrics) must define a refresh mechanism (polling interval, WebSocket subscription, or manual refresh button)
264
+
265
+ ### Navigation–URL References
266
+
267
+ - If the UI uses URL-based routing, every navigable screen must have a corresponding URL, and every URL in the system must resolve to a valid screen or redirect
268
+ - URL integrity rules: (1) no dead URLs (URL exists but renders no content), (2) no orphan screens (screen exists but no URL reaches it), (3) URL changes must include redirects from old URLs for at least 90 days
269
+ - Deep linking: every screen that a user might want to bookmark, share, or return to via browser history must be addressable by URL. Modal states and filter configurations should be encoded in URL parameters or hash fragments when they represent shareable states
270
+
271
+ ## Source of Truth Management
272
+
273
+ This section serves as the external consistency endpoint for competency verification (CQ-CO inference path). It defines which authoritative sources govern UI design decisions and how conflicts between sources are resolved.
274
+
275
+ ### Internal Source of Truth
276
+
277
+ - **UI pattern decisions**: source of truth is the UI pattern library or design system pattern documentation. If the design system defines a modal pattern, all modals in the product must conform to it or document a deviation
278
+ - **Interaction specifications**: source of truth is the interaction specification document (design tool prototypes, specification documents, or annotated wireframes). If code implementation conflicts with spec, spec takes precedence (but if technical constraints exist, update the spec — never leave the conflict undocumented)
279
+ - **Content/copy**: source of truth is the content management system or UX writing guidelines. If the spec says "Submit" but the copy guidelines say action-specific labels, the copy guidelines take precedence for label text
280
+
281
+ ### External Source of Truth
282
+
283
+ - **Accessibility standards**: WCAG 2.2 AA (minimum), WAI-ARIA 1.2, and applicable accessibility laws (ADA Section 508, European Accessibility Act). These define the non-negotiable baseline for accessible interaction
284
+ - **Platform guidelines**: Material Design (Android), Human Interface Guidelines (iOS/macOS), Fluent Design (Windows), GNOME HIG (Linux). These define platform-specific conventions that users expect
285
+ - **Web standards**: HTML specification (semantic elements), CSS specification (layout, animation), and relevant W3C specifications (Pointer Events, Touch Events). These define what the platform supports
286
+
287
+ ### Conflict Resolution Priority
288
+
289
+ When sources of truth conflict, the following priority order applies:
290
+
291
+ 1. **Accessibility standards** (Tier-1a): legal and ethical obligation. Non-negotiable
292
+ 2. **Platform guidelines** (Tier-1b): enforced by app store review and user expectation. Override internal decisions when they conflict
293
+ 3. **Internal pattern library / design system** (Tier-2): enforced by design system linting and review. Represents intentional internal decisions
294
+ 4. **Industry principles / heuristics** (Tier-3): enforced by design review and usability testing. Provides guidance when no higher-tier rule applies
295
+
296
+ - Example conflict: the internal design system specifies toast notifications for all feedback. But accessibility standards require error messages to be persistent (not transient toasts). Accessibility takes precedence → errors must be persistent inline messages, even if the design system says toast
297
+ - Documentation requirement: when a higher-priority source overrides a lower-priority source, document the conflict and resolution in the design decision log
298
+
299
+ ### Cross-Domain Source of Truth Boundaries
300
+
301
+ - When UI design decisions depend on data from other domains (API response structure from SE, brand guidelines from visual design, user research from UX research), the dependency and the authoritative source must be documented
302
+ - Change propagation: when an external source of truth changes (platform guideline update, accessibility standard revision, API schema change), all dependent UI design decisions must be reviewed for impact
303
+ - Version tracking: external standard versions referenced (e.g., "WCAG 2.2" not just "WCAG," "Material Design 3" not just "Material Design") must be specified in domain_scope.md and kept current
304
+
305
+ ## SE Transfer Verification
306
+
307
+ The following SE dependency patterns were evaluated for transfer to UI Design and found to differ in application context:
308
+
309
+ | SE Pattern | UI Design Equivalent | Key Difference |
310
+ |---|---|---|
311
+ | Acyclic Dependencies Principle (module DAG) | Circular Dependency Detection/Classification | SE prohibits all cycles; UI Design distinguishes intentional feedback loops from unintentional cycles |
312
+ | Dependency Inversion Principle (depend on abstractions) | Design System abstraction (depend on pattern library, not ad-hoc implementation) | SE uses interfaces; UI Design uses design system components as the abstraction layer |
313
+ | Stable Dependencies Principle (depend toward stability) | Source of Truth Priority (depend toward higher-tier standards) | SE measures stability by coupling metrics; UI Design measures by enforcement mechanism strength |
314
+ | API Versioning | Design System Versioning | SE versions at endpoint level; UI Design versions at component/token level |
315
+ | Diamond Dependencies (version conflict) | Design System Token Conflicts (same token, different values in different contexts) | SE resolves with version managers; UI Design resolves with context-specific token overrides |
316
+ | Referential Integrity (foreign keys, schema alignment) | Cross-Screen Referential Integrity (links, permissions, data consistency) | SE enforces at database level; UI Design verifies at design review and QA level |
317
+
318
+ ## Related Documents
319
+ - concepts.md — Navigation, form, feedback, modal, accessibility term definitions
320
+ - structure_spec.md — Screen structure, state system, navigation structure, required relationships
321
+ - logic_rules.md — Navigation/form/feedback/modal/accessibility behavioral logic, constraint conflict resolution
322
+ - domain_scope.md — Normative hierarchy (Tier-1a/1b/2/3), source of truth priority, cross-cutting concerns
323
+ - competency_qs.md — Dependency-related verification questions (CQ-CO references this file's Source of Truth Management section)