@memoarchitect/ontology 0.6.4 → 0.7.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 (327) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
  3. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  4. package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
  5. package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
  6. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  7. package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
  8. package/examples/extensions/clinical/memo.package.yaml +18 -9
  9. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +10 -2
  10. package/examples/extensions/template/memo.package.yaml +17 -9
  11. package/examples/functional-logical-physical/model/catalog/project.sysml +24 -0
  12. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  13. package/examples/functional-logical-physical/model/{viewpoints → catalog/viewpoints/unassigned/views}/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +148 -0
  15. package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +301 -0
  16. package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +229 -0
  17. package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +200 -0
  18. package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +188 -0
  19. package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +173 -0
  20. package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +180 -0
  21. package/examples/gpca-pump/analysis/Samples/README.md +37 -0
  22. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  23. package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
  25. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
  26. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +22 -12
  27. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +2 -2
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +8 -2
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +5 -5
  30. package/examples/gpca-pump/model/catalog/gpca_context.sysml +3 -8
  31. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
  32. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
  33. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +41 -11
  34. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +19 -8
  35. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +2 -2
  36. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +1 -1
  37. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +10 -1
  38. package/examples/gpca-pump/model/catalog/gpca_system.sysml +34 -30
  39. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +59 -31
  40. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +1 -1
  41. package/examples/gpca-pump/model/catalog/project.sysml +21 -0
  42. package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
  43. package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +3 -3
  44. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
  45. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +3 -3
  46. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
  47. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +4 -4
  48. package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  49. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
  50. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
  51. package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
  52. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
  53. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +7 -7
  54. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
  55. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
  56. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +3 -3
  57. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
  58. package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
  59. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +2 -2
  60. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +3 -3
  61. package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
  62. package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
  63. package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  64. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +6 -6
  65. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
  66. package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  67. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +3 -3
  68. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +3 -3
  69. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +2 -2
  70. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
  71. package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
  72. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +3 -3
  73. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +3 -3
  74. package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
  75. package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +4 -4
  76. package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
  77. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +3 -3
  78. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +2 -2
  79. package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
  80. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  81. package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
  82. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +1 -0
  83. package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
  84. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  85. package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
  86. package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
  87. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  88. package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
  89. package/examples/nested-architecture-dsm/README.md +49 -0
  90. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +174 -0
  91. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +183 -0
  92. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
  93. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
  94. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +90 -0
  95. package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
  96. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +49 -0
  97. package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
  98. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -6
  99. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  100. package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
  101. package/examples/software-only-medical-device/model/catalog/project.sysml +24 -0
  102. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  103. package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
  104. package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
  105. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -19
  106. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  107. package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
  108. package/examples/surgical-robot/model/catalog/project.sysml +24 -0
  109. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +5 -3
  110. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  111. package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
  112. package/examples/sysml-diagram-samples/README.md +7 -0
  113. package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
  114. package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
  115. package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
  116. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  117. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +18 -10
  118. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +4 -2
  119. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
  120. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/functional_flow_view.sysml +23 -20
  121. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/interconnection_view.sysml +17 -14
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
  123. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/operational_behaviour_view.sysml +23 -20
  124. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
  125. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +3 -1
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +51 -0
  127. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/state_transition_view.sysml +3 -1
  128. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/tree_view.sysml +3 -1
  129. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +3 -1
  130. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
  131. package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
  132. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +2 -1
  133. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  134. package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
  135. package/examples/ui-screen-regions/README.md +117 -0
  136. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +60 -0
  137. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +189 -0
  138. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
  139. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
  140. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
  141. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
  142. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
  143. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
  144. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
  145. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
  146. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
  147. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
  148. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
  149. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +60 -0
  150. package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
  151. package/examples/ui-screen-regions/model/catalog/traces.sysml +276 -0
  152. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  153. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +62 -0
  154. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  155. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +62 -0
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +62 -0
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/viewpoint.sysml +8 -0
  159. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +57 -0
  160. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +52 -0
  161. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +54 -0
  162. package/memo.manifest.yaml +2 -0
  163. package/methodologies/default/memo.package.yaml +19 -9
  164. package/methodologies/gpca/memo.package.yaml +18 -9
  165. package/ontology/memo.package.yaml +23 -8
  166. package/package.json +1 -3
  167. package/profile/memo.package.yaml +18 -9
  168. package/src/architecture/decisions/memo_decisions.sysml +7 -0
  169. package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
  170. package/src/architecture/functional/functions/memo_functions.sysml +5 -12
  171. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +1 -3
  172. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +18 -5
  173. package/src/architecture/implementation/ui/memo_ui.sysml +210 -27
  174. package/src/architecture/logical/interfaces/memo_interfaces.sysml +1 -2
  175. package/src/architecture/logical/structure/memo_logical_structure.sysml +71 -15
  176. package/src/architecture/operational/activities/memo_activities.sysml +0 -1
  177. package/src/architecture/operational/scenarios/memo_scenarios.sysml +2 -2
  178. package/src/architecture/operational/workflows/memo_workflows.sysml +0 -6
  179. package/src/{compliance/change/memo_change.sysml → artifacts/configuration_management/memo_configuration_management.sysml} +5 -3
  180. package/src/artifacts/core/memo_controlled_artifacts.sysml +33 -0
  181. package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
  182. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +1 -1
  183. package/src/assurance/human_factors/memo_human_factors.sysml +1 -1
  184. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +11 -0
  185. package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
  186. package/src/assurance/verification_validation/memo_assurance.sysml +1 -1
  187. package/src/core/annotations/memo_annotations.sysml +77 -0
  188. package/src/core/common/memo_common.sysml +20 -3
  189. package/src/core/consistency_rules/consistency_rules.sysml +7 -0
  190. package/src/core/dimensions/dimensions.sysml +5 -1
  191. package/src/core/enumerations/memo_enumerations.sysml +41 -6
  192. package/src/core/methodology_scope/methodology_scope.sysml +7 -15
  193. package/src/core/relationships/memo_relationships.sysml +4 -2
  194. package/src/memo_namespaces.sysml +97 -67
  195. package/src/methodology/core/memo_core.sysml +45 -2
  196. package/src/methodology/profiles/memo_profiles.sysml +30 -40
  197. package/src/methodology/workflow/memo_workflow.sysml +7 -2
  198. package/src/rules/closure/closure_rules.sysml +104 -31
  199. package/src/rules/coverage/coverage_rules.sysml +4 -256
  200. package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
  201. package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
  202. package/src/rules/ontology/ontology_invariants.sysml +38 -68
  203. package/src/rules/quantitative/quantitative_rules.sysml +8 -8
  204. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +7 -0
  205. package/src/viewpoints/clinical/clinical_viewpoint.sysml +3 -1
  206. package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
  207. package/src/viewpoints/context/context_viewpoint.sysml +3 -1
  208. package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
  209. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +3 -1
  210. package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
  211. package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
  212. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -0
  213. package/src/viewpoints/functional/functional_viewpoint.sysml +3 -1
  214. package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +2 -2
  215. package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +2 -2
  216. package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
  217. package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
  218. package/src/viewpoints/operational/operational_viewpoint.sysml +3 -1
  219. package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +2 -2
  220. package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
  221. package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
  222. package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
  223. package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
  224. package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
  225. package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
  226. package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
  227. package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
  228. package/src/viewpoints/software/software_viewpoint.sysml +3 -1
  229. package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
  230. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
  231. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
  232. package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
  233. package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
  234. package/src/viewpoints/verification/verification_viewpoint.sysml +3 -1
  235. package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +2 -2
  236. package/templates/connected-device/memo.package.yaml +11 -5
  237. package/templates/connected-device/model/catalog/project.sysml +28 -0
  238. package/templates/connected-device/syside.toml +1 -1
  239. package/templates/default/memo.package.yaml +11 -5
  240. package/templates/default/model/catalog/project.sysml +28 -0
  241. package/templates/default/syside.toml +1 -1
  242. package/templates/infusion-pump/memo.package.yaml +11 -5
  243. package/templates/infusion-pump/model/catalog/project.sysml +28 -0
  244. package/templates/infusion-pump/syside.toml +1 -1
  245. package/templates/monitoring-device/memo.package.yaml +11 -5
  246. package/templates/monitoring-device/model/catalog/project.sysml +28 -0
  247. package/templates/monitoring-device/syside.toml +1 -1
  248. package/templates/samd/memo.package.yaml +11 -5
  249. package/templates/samd/model/catalog/project.sysml +28 -0
  250. package/templates/samd/syside.toml +1 -1
  251. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
  252. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
  253. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
  254. package/examples/gpca-pump/memo.config.yaml +0 -9
  255. package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
  256. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
  257. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
  258. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
  259. package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
  260. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
  261. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
  262. package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
  263. package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
  264. package/ontology/memo.rendering.yaml +0 -84
  265. package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
  266. package/src/compliance/document_views/memo_document_views.sysml +0 -7
  267. package/src/compliance/iso14971/risk_management_file.sysml +0 -16
  268. package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
  269. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
  270. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +0 -0
  271. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +0 -0
  272. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +0 -0
  273. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +0 -0
  274. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +0 -0
  275. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +0 -0
  276. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +0 -0
  277. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +0 -0
  278. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +0 -0
  279. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +0 -0
  280. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +0 -0
  281. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +0 -0
  282. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +0 -0
  283. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +0 -0
  284. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +0 -0
  285. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
  286. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +0 -0
  287. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +0 -0
  288. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +0 -0
  289. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +0 -0
  290. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +0 -0
  291. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +0 -0
  292. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/srs.md +0 -0
  293. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +0 -0
  294. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +0 -0
  295. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
  296. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +0 -0
  297. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/task-analysis.md +0 -0
  298. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +0 -0
  299. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
  300. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +0 -0
  301. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
  302. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fmea.md +0 -0
  303. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
  304. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +0 -0
  305. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
  306. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
  307. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +0 -0
  308. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
  309. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
  310. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
  311. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
  312. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
  313. /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
  314. /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  315. /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  316. /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
  317. /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  318. /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
  319. /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
  320. /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  321. /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
  322. /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
  323. /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  324. /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  325. /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
  326. /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  327. /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
@@ -67,8 +67,7 @@ package memo_architecture_logical_interfaces {
67
67
  attribute interfaceKind : InterfaceKind;
68
68
  attribute protocolSemantics : String;
69
69
  }
70
- port def DataPort {
71
- attribute direction : DirectionKind;
70
+ port def DataPort specializes MemoPort {
72
71
  attribute interfaceType : String;
73
72
  }
74
73
  port def SensorPort specializes DataPort { attribute sensorDomain : String; }
@@ -37,13 +37,15 @@ package memo_architecture_logical_structure {
37
37
  }
38
38
 
39
39
  // The role a logical component plays. Was a subclass branch
40
- // (LogicalSystem / LogicalSubsystem / LogicalChannel / LogicalDataStore /
41
- // LogicalControlElement / LogicalUserInterface / LogicalExternalSystem);
42
- // now one attribute, because all of them share the same relationships and
43
- // differed only by a couple of descriptive attributes.
40
+ // (LogicalChannel / LogicalDataStore / LogicalControlElement /
41
+ // LogicalUserInterface / LogicalExternalSystem); now one attribute, because
42
+ // those all share the same relationships and differed only by a couple of
43
+ // descriptive attributes.
44
+ //
45
+ // System / Subsystem / SystemOfSystems are types below, not values here:
46
+ // each admits a different set of children, and a value on an attribute
47
+ // cannot carry containment legality.
44
48
  enum def ComponentRoleKind {
45
- enum system;
46
- enum subsystem;
47
49
  enum channel;
48
50
  enum dataStore;
49
51
  enum controlElement;
@@ -52,17 +54,73 @@ package memo_architecture_logical_structure {
52
54
  enum generic;
53
55
  }
54
56
 
55
- // One logical component. `componentRole` selects what it is; the role-
56
- // specific attributes below are all optional so a component carries only
57
- // the ones its role needs. A channel claiming independence must still be
58
- // linked by IndependentOf with its basis stated.
57
+ // The discipline a logical block is realized in. Orthogonal to
58
+ // `componentRole`: a subsystem may be software, a system may be hardware,
59
+ // and a block whose realization is not yet decided stays `logical`.
60
+ //
61
+ // This does NOT relocate the element. The block remains logical-layer —
62
+ // MEMO encodes layer by owning package, and this one is
63
+ // memo_architecture_logical_structure. `systemType` records what the block
64
+ // WILL BE realized in, which is a logical-architecture decision made
65
+ // before any software or hardware element exists. Once those elements do
66
+ // exist, AllocatedTo carries the actual allocation and this attribute
67
+ // stays as the stated intent.
68
+ enum def SystemTypeKind {
69
+ enum logical;
70
+ enum software;
71
+ enum hardware;
72
+ }
73
+
74
+ // ─── System hierarchy ────────────────────────────────────────
75
+ // Three types rather than three role values, because they differ in what
76
+ // they may CONTAIN — and containment legality cannot live on an attribute.
77
+ //
78
+ // The allowed children are declared as typed part features, which is how
79
+ // SysML v2 already states "what may be contained". No new relationship is
80
+ // introduced: `Composes` remains the single containment relation for
81
+ // instances, exactly as everywhere else in MEMO. The features below say
82
+ // which types are admissible; Composes records the actual links.
83
+
84
+ part def SystemOfSystems specializes LogicalComponent {
85
+ // Constituent systems are independently operated and independently
86
+ // managed, collaborating for a capability none delivers alone
87
+ // (ISO/IEC/IEEE 21841). A connected pump talking to a hospital
88
+ // infusion-management server is one; a pump and its own pole-mounted
89
+ // battery are not — which is why ownership is recorded here and is the
90
+ // attribute that distinguishes an SoS from a merely large system.
91
+ attribute systemBoundaryDescription : String;
92
+ attribute constituentOwnership : String;
93
+ // A constituent may itself coordinate systems-of-systems, or it may be
94
+ // an independently operated system. Subsystems and components remain
95
+ // inside one of those constituent systems.
96
+ part constituentSystemOfSystems : SystemOfSystems[0..*];
97
+ part constituentSystem : System[0..*];
98
+ }
99
+
100
+ part def System specializes LogicalComponent {
101
+ attribute systemBoundaryDescription : String;
102
+ part system : System[0..*];
103
+ part subsystem : Subsystem[0..*];
104
+ part component : LogicalComponent[0..*];
105
+ }
106
+
107
+ part def Subsystem specializes LogicalComponent {
108
+ attribute systemBoundaryDescription : String;
109
+ part subsystem : Subsystem[0..*];
110
+ part component : LogicalComponent[0..*];
111
+ }
112
+
113
+ // One logical component. `componentRole` selects what it is, `systemType`
114
+ // what it is realized in; the role-specific attributes below are all
115
+ // optional so a component carries only the ones its role needs. A channel
116
+ // claiming independence must still be linked by IndependentOf with its
117
+ // basis stated.
59
118
  part def LogicalComponent specializes ArchitectureElement {
60
119
  attribute componentRole : ComponentRoleKind;
120
+ attribute systemType : SystemTypeKind[0..1];
61
121
  attribute responsibility : String;
62
122
  attribute decompositionLevel : String;
63
123
  attribute safetyPartition : String;
64
- // system / subsystem
65
- attribute systemBoundaryDescription : String;
66
124
  // channel (safety role + diversity)
67
125
  attribute channelRole : ChannelRoleKind[0..1];
68
126
  attribute diversityBasis : String;
@@ -79,9 +137,7 @@ package memo_architecture_logical_structure {
79
137
  }
80
138
 
81
139
  // Boundary features and contracts.
82
- port def LogicalPort specializes MemoPort {
83
- attribute contentKind : FlowContentKind;
84
- }
140
+ port def LogicalPort specializes MemoPort;
85
141
  interface def LogicalInterface specializes MemoInterface {
86
142
  attribute contentKind : FlowContentKind;
87
143
  attribute interactionPattern : String;
@@ -50,7 +50,6 @@ package memo_architecture_operational_activities {
50
50
  // An elementary perceptual/cognitive/motor step within a user task
51
51
  // (task analysis granularity: grasp needle, drive needle, tie knot …).
52
52
  action def TaskStep specializes MemoAction {
53
- attribute stepOrder : Integer;
54
53
  attribute perceptualCue : String;
55
54
  attribute feedbackExpected : String;
56
55
  }
@@ -51,7 +51,7 @@ package memo_architecture_operational_scenarios {
51
51
  // or invariants differ (OperativeScenario here; FunctionalScenario in
52
52
  // memo_functions; UIScenario in memo_architecture_implementation_ui;
53
53
  // VerificationScenario / ThreatScenario in assurance packages).
54
- abstract part def MemoScenario specializes MemoPart {
54
+ abstract action def MemoScenario specializes MemoAction {
55
55
  attribute variantKind : ScenarioVariantKind;
56
56
  attribute operationalCondition : OperationalConditionKind;
57
57
  attribute scenarioPurpose : ScenarioPurposeKind[0..*];
@@ -76,7 +76,7 @@ package memo_architecture_operational_scenarios {
76
76
  // by its own architecture layer and linked by typed realization
77
77
  // relationships — never by copying the path. Workflow stays operational;
78
78
  // only the scenario is layered.
79
- part def OperativeScenario specializes MemoScenario {
79
+ action def OperativeScenario specializes MemoScenario {
80
80
  ref parentWorkflow : OperationalWorkflow[0..1];
81
81
  ref parentUseCase : UseCase[0..1];
82
82
  // Each scenario owns the operational activity/action flow for its
@@ -43,7 +43,6 @@ package memo_architecture_operational_workflows {
43
43
  // A step in a workflow wraps an operational activity or user task by
44
44
  // reference — the same activity may appear in several workflows.
45
45
  action def WorkflowStep specializes MemoAction {
46
- attribute stepOrder : Integer;
47
46
  attribute entryCondition : String;
48
47
  attribute exitCondition : String;
49
48
  ref performedActivity : OperationalActivity[0..1];
@@ -97,11 +96,6 @@ package memo_architecture_operational_workflows {
97
96
  end supporter;
98
97
  end supported;
99
98
  }
100
- connection def StepPrecedes :> MemoRelationship {
101
- attribute guardCondition : String;
102
- end predecessor : WorkflowStep;
103
- end successor : WorkflowStep;
104
- }
105
99
  connection def RequiresResource :> MemoRelationship {
106
100
  end workflow : OperationalWorkflow;
107
101
  end resource : WorkflowResource;
@@ -1,15 +1,17 @@
1
- package memo_compliance_change {
1
+ package memo_artifacts_configuration_management {
2
2
  private import ScalarValues::*;
3
3
 
4
4
  private import memo_core_common::*;
5
5
  private import memo_core_enumerations::*;
6
- part def ChangeRequest specializes MemoPart {
6
+
7
+ part def ChangeRequest :> MemoPart {
7
8
  attribute changeType : ChangeTypeKind;
8
9
  attribute impactAssessment : String;
9
10
  attribute approvalStatus : String;
10
11
  attribute affectedBaseline : String;
11
12
  }
12
- part def ConfigurationItem specializes MemoPart {
13
+
14
+ part def ConfigurationItem :> MemoPart {
13
15
  attribute version : String;
14
16
  attribute baseline : String;
15
17
  attribute controlLevel : String;
@@ -0,0 +1,33 @@
1
+ package memo_artifacts_core {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+ private import memo_core_enumerations::*;
6
+
7
+ item def ControlledArtifact :> MemoPart {
8
+ attribute version : String;
9
+ attribute artifactKind : ArtifactKind;
10
+ attribute owner : String;
11
+ attribute approvalStatus : String;
12
+ }
13
+
14
+ part def ModelOwnedArtifact :> ControlledArtifact {
15
+ attribute uri : String;
16
+ attribute mediaType : String;
17
+ attribute contentHash : String;
18
+ attribute artifactVersion : String[0..1];
19
+ attribute authoredLanguage : String[0..1];
20
+ attribute executionEnvironment : String[0..1];
21
+ attribute generated : Boolean;
22
+ }
23
+
24
+ part def ADRArtifact :> ModelOwnedArtifact {
25
+ attribute decisionId : String;
26
+ }
27
+
28
+ part def MarkdownDocumentSource :> ModelOwnedArtifact {}
29
+ part def ModelQueryScript :> ModelOwnedArtifact {}
30
+ part def AnalysisNotebook :> ModelOwnedArtifact {}
31
+ part def ModelDataset :> ModelOwnedArtifact {}
32
+ part def GeneratedReport :> ModelOwnedArtifact {}
33
+ }
@@ -0,0 +1,12 @@
1
+ package memo_artifacts_documents_risk_management {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_artifacts_core::*;
5
+
6
+ part def RiskManagementFile :> ModelOwnedArtifact {
7
+ attribute standardReference : String;
8
+ attribute clause : String;
9
+ attribute edition : String;
10
+ attribute completenessStatus : String;
11
+ }
12
+ }
@@ -49,7 +49,7 @@ package memo_assurance_cybersecurity {
49
49
  // A scenario specialization: an attack path through the
50
50
  // system, classified by the shared scenario dimensions with purpose
51
51
  // `cybersecurity`.
52
- part def ThreatScenario specializes MemoScenario {
52
+ action def ThreatScenario specializes MemoScenario {
53
53
  attribute actorDescription : String;
54
54
  attribute assumptionSummary : String;
55
55
  attribute guaranteeSummary : String;
@@ -21,7 +21,7 @@ package memo_assurance_human_factors {
21
21
 
22
22
  // A use scenario whose performance could lead to a hazardous situation
23
23
  // (IEC 62366-1 3.9); selected for summative evaluation.
24
- part def HazardRelatedUseScenario specializes MemoScenario {
24
+ action def HazardRelatedUseScenario specializes MemoScenario {
25
25
  attribute hazardReference : String;
26
26
  attribute selectionRationale : String;
27
27
  }
@@ -0,0 +1,11 @@
1
+ package memo_assurance_safety_risk_postmarket_surveillance {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+
6
+ part def PostMarketSurveillance :> MemoPart {
7
+ attribute surveillanceKind : String;
8
+ attribute dataSource : String;
9
+ attribute reportingObligation : String;
10
+ }
11
+ }
@@ -0,0 +1,11 @@
1
+ package memo_assurance_verification_validation_clinical_evaluation {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_common::*;
5
+
6
+ part def ClinicalEvaluation :> MemoPart {
7
+ attribute evaluationStage : String;
8
+ attribute clinicalDataSource : String;
9
+ attribute conclusion : String;
10
+ }
11
+ }
@@ -34,7 +34,7 @@ package memo_assurance_verification_validation {
34
34
 
35
35
  // A scenario executed to verify — selected path with purpose
36
36
  // 'verification'.
37
- part def VerificationScenario specializes MemoScenario {
37
+ action def VerificationScenario specializes MemoScenario {
38
38
  attribute verificationEnvironment : String;
39
39
  attribute stimulusSummary : String;
40
40
  }
@@ -0,0 +1,77 @@
1
+ // Universal model annotations carried as model content rather than source-text
2
+ // `doc` / `comment` annotations. Comments capture review conversation, notes
3
+ // preserve useful context, and rationales explain why an engineering choice was
4
+ // made. Each is independently traceable, queryable, and exportable.
5
+ //
6
+ // The distinction is deliberate and load-bearing: `description` is what an
7
+ // element IS, a ModelComment is what someone SAID ABOUT IT. A design review
8
+ // needs an author, a timestamp, a thread, and a resolution state, and none of
9
+ // those survive inside a documentation string. Merging the two would put
10
+ // unresolved review chatter into a generated DHF section, so they never merge.
11
+ //
12
+ // Annotations attach to every metaclass — parts, actions, requirements, views,
13
+ // connections, and MEMO specializations — so CommentsOn, RationaleFor, and
14
+ // NotesOn leave their subject ends untyped, following the MemoLink precedent in
15
+ // memo_core_relationships.
16
+ package memo_core_annotations {
17
+ private import ScalarValues::*;
18
+
19
+ private import memo_core_common::*;
20
+ private import memo_core_enumerations::*;
21
+ private import memo_core_relationships::*;
22
+
23
+ abstract part def ModelAnnotation specializes MemoPart {
24
+ // `body` is the annotation content; `shortDescription` is the one-line
25
+ // form shown in badges, tables, and generated indexes.
26
+ attribute body : String;
27
+ attribute author : String;
28
+ // ISO 8601. Strings, not a date type: MEMO stays portable content and
29
+ // does not depend on a tool's date library.
30
+ attribute createdAt : String;
31
+ // Optional pinpoint inside the annotated element: an attribute name,
32
+ // requirement clause, diagram node, or other stable local reference.
33
+ attribute anchor : String;
34
+ }
35
+
36
+ part def ModelComment specializes ModelAnnotation {
37
+ attribute commentStatus : CommentStatusKind;
38
+ // Why the comment closed. Required in practice for `resolved` and
39
+ // `rejected` — a closed review point with no stated disposition is an
40
+ // audit gap.
41
+ attribute resolution : String;
42
+ attribute resolvedBy : String;
43
+ attribute resolvedAt : String;
44
+ }
45
+
46
+ part def ModelRationale specializes ModelAnnotation {
47
+ // Decision, trade-off, standard clause, or evidence that the rationale
48
+ // rests on. The body explains the reasoning in full.
49
+ attribute basis : String;
50
+ }
51
+
52
+ part def ModelNote specializes ModelAnnotation {
53
+ // A lightweight category for filtering notes without constraining their
54
+ // content (for example assumption, usage, implementation, or warning).
55
+ attribute noteKind : String;
56
+ }
57
+
58
+ // Replies form a thread through the ordinary Composes relation (parent
59
+ // comment → reply), so CR-ONT-001's acyclicity invariant already covers
60
+ // comment threads and no thread-specific relation is needed.
61
+ // The end is `remark`, not `comment`: `comment` is a reserved KerML
62
+ // keyword and cannot name a feature.
63
+ connection def CommentsOn :> MemoRelationship {
64
+ end remark : ModelComment;
65
+ end annotatedElement;
66
+ }
67
+
68
+ connection def RationaleFor :> MemoRelationship {
69
+ end rationaleRecord : ModelRationale;
70
+ end justifiedElement;
71
+ }
72
+
73
+ connection def NotesOn :> MemoRelationship {
74
+ end noteRecord : ModelNote;
75
+ end notedElement;
76
+ }
77
+ }
@@ -27,6 +27,14 @@ package memo_core_common {
27
27
  // identity
28
28
  attribute id : String;
29
29
  attribute name : String;
30
+ // Two description registers on every MEMO element, because views have
31
+ // two densities. `shortDescription` is the one-line form a table cell,
32
+ // matrix header, chip, or diagram node can show whole; `description` is
33
+ // the full prose a properties panel or a generated document section
34
+ // renders. A view picks the register that fits — it never truncates
35
+ // the long one, because a silently clipped sentence in a DHF table is
36
+ // a defect, not a layout choice.
37
+ attribute shortDescription : String;
30
38
  attribute description : String;
31
39
  // traceability
32
40
  attribute rationale : String;
@@ -51,10 +59,12 @@ package memo_core_common {
51
59
  part def MemoEvidence specializes MemoPart;
52
60
  abstract part def AnalysisArtifact specializes MemoPart;
53
61
 
62
+ // Document-bound elements add only what a document needs beyond the two
63
+ // description registers every MemoPart now carries: a title and its place
64
+ // in a document. The former `shortDescription`/`longDescription` pair is
65
+ // gone — short is inherited, and `description` IS the long form.
54
66
  part def DocumentedElement specializes MemoPart {
55
67
  attribute title : String;
56
- attribute shortDescription : String;
57
- attribute longDescription : String;
58
68
  attribute documentUsage : String[*];
59
69
  attribute sectionIdentifier : String;
60
70
  }
@@ -66,6 +76,7 @@ package memo_core_common {
66
76
  action def MemoAction {
67
77
  attribute id : String;
68
78
  attribute name : String;
79
+ attribute shortDescription : String;
69
80
  attribute description : String;
70
81
  attribute rationale : String;
71
82
  attribute sourceReference : String;
@@ -76,8 +87,8 @@ package memo_core_common {
76
87
  port def MemoPort {
77
88
  attribute id : String;
78
89
  attribute name : String;
90
+ attribute shortDescription : String;
79
91
  attribute description : String;
80
- attribute direction : DirectionKind;
81
92
  }
82
93
 
83
94
  // Interaction-contract foundation for interface definitions between ports.
@@ -86,6 +97,7 @@ package memo_core_common {
86
97
  end target;
87
98
  attribute id : String;
88
99
  attribute name : String;
100
+ attribute shortDescription : String;
89
101
  attribute description : String;
90
102
  attribute rationale : String;
91
103
  attribute sourceReference : String;
@@ -96,6 +108,7 @@ package memo_core_common {
96
108
  item def MemoExchangeItem {
97
109
  attribute id : String;
98
110
  attribute name : String;
111
+ attribute shortDescription : String;
99
112
  attribute description : String;
100
113
  attribute rationale : String;
101
114
  attribute sourceReference : String;
@@ -113,6 +126,7 @@ package memo_core_common {
113
126
  // solution-space obligation.
114
127
  requirement def MemoNeed {
115
128
  attribute needId : String;
129
+ attribute shortDescription : String;
116
130
  attribute statement : String;
117
131
  attribute needRationale : String;
118
132
  attribute needSource : String;
@@ -122,6 +136,7 @@ package memo_core_common {
122
136
 
123
137
  requirement def MemoRequirement {
124
138
  attribute requirementId : String;
139
+ attribute shortDescription : String;
125
140
  attribute statement : String;
126
141
  attribute acceptanceCriteria : String;
127
142
  attribute requirementStatus : ElementStatusKind;
@@ -134,6 +149,7 @@ package memo_core_common {
134
149
  verification def MemoVerificationCase {
135
150
  attribute id : String;
136
151
  attribute name : String;
152
+ attribute shortDescription : String;
137
153
  attribute description : String;
138
154
  attribute rationale : String;
139
155
  attribute sourceReference : String;
@@ -147,6 +163,7 @@ package memo_core_common {
147
163
  abstract state def MemoState {
148
164
  attribute id : String;
149
165
  attribute name : String;
166
+ attribute shortDescription : String;
150
167
  attribute description : String;
151
168
  attribute rationale : String;
152
169
  attribute sourceReference : String;
@@ -6,6 +6,13 @@ package memo_core_consistency_rules {
6
6
  private import memo_core_common::*;
7
7
  private import memo_core_enumerations::*;
8
8
 
9
+ // Common supertype of every executable MEMO rule. It carries no members of
10
+ // its own: a rule's metadata is declared on the rule, and a shared member
11
+ // here would be shadowed by every rule that sets it. Its job is to give
12
+ // RulePolicy a type to reference, so a policy names a rule the way SysML
13
+ // names anything else rather than through a parallel string-ID namespace.
14
+ abstract constraint def MemoConsistencyRule;
15
+
9
16
  part def ConsistencyRule specializes MemoPart {
10
17
  attribute appliesTo : String;
11
18
  attribute predicate : RulePredicateKind;
@@ -10,9 +10,13 @@ package memo_core_dimensions {
10
10
  private import ScalarValues::*;
11
11
 
12
12
  // Realization stages of one element identity across the product
13
- // lifecycle (specification through retirement). Orthogonal to the axis:
13
+ // lifecycle (proposal through retirement). Orthogonal to the axis:
14
14
  // a single identity progresses through stages without changing its owner.
15
15
  enum def RealizationStageKind {
16
+ // Put forward but not yet specified — a candidate under consideration,
17
+ // so a design alternative can be modelled and traced without implying
18
+ // it has been accepted into the specification.
19
+ enum proposed;
16
20
  enum specified;
17
21
  enum designed;
18
22
  enum built;
@@ -83,7 +83,6 @@ package memo_core_enumerations {
83
83
  enum input;
84
84
  enum output;
85
85
  enum inputOutput;
86
- enum bidirectional;
87
86
  }
88
87
  enum def CriticalityKind {
89
88
  enum low;
@@ -192,11 +191,11 @@ package memo_core_enumerations {
192
191
  enum SDD;
193
192
  enum RMF;
194
193
  enum VV;
195
- enum ArchitectureDescription;
196
- enum CybersecurityAssessment;
197
- enum ThreatModel;
198
- enum Clinical;
199
- enum Usability;
194
+ enum architectureDescription;
195
+ enum cybersecurityAssessment;
196
+ enum threatModel;
197
+ enum clinical;
198
+ enum usability;
200
199
  }
201
200
  enum def SchedulingPolicyKind {
202
201
  enum nonRealTime;
@@ -264,6 +263,29 @@ package memo_core_enumerations {
264
263
  enum crossLayer;
265
264
  enum quantitative;
266
265
  }
266
+ // How far a methodology may tailor a rule. `invariant` rules hold the
267
+ // ontology's own consistency and may only change in an ontology release;
268
+ // `assurance` and `methodology` rules may be disabled or replaced through
269
+ // an explicit RulePolicy carrying rationale and authority.
270
+ enum def RuleTailoringKind {
271
+ enum invariant;
272
+ enum assurance;
273
+ enum methodology;
274
+ }
275
+ enum def RuleDispositionKind {
276
+ enum enabled;
277
+ enum disabled;
278
+ enum replaced;
279
+ }
280
+ // Whether a methodology's inclusion lists are the whole selection or a
281
+ // deliberate subset. An empty list under `explicit` selects nothing; it
282
+ // never means "everything". `allAvailable` is the only way to say "all",
283
+ // and it is always deliberate. (SysML v2 reserves `all`, so the literal is
284
+ // spelled `allAvailable`.)
285
+ enum def ScopeModeKind {
286
+ enum allAvailable;
287
+ enum explicit;
288
+ }
267
289
  enum def WorkflowStageKind {
268
290
  enum context;
269
291
  enum requirements;
@@ -337,6 +359,9 @@ package memo_core_enumerations {
337
359
  enum riskTable;
338
360
  enum traceMatrix;
339
361
  enum narrativeSection;
362
+ // A captured screen with its regions drawn over it — the presentation
363
+ // of the geometry view kind.
364
+ enum screenLayout;
340
365
  enum custom;
341
366
  }
342
367
  enum def DeploymentKind {
@@ -570,4 +595,14 @@ package memo_core_enumerations {
570
595
  enum actionCategory;
571
596
  enum memoryRecall;
572
597
  }
598
+ // Lifecycle of a review remark on a model element. `rejected` is a closed
599
+ // state with a stated reason, not a deletion: a design review that
600
+ // considered a point and declined it is a record the DHF wants to keep.
601
+ enum def CommentStatusKind {
602
+ enum open;
603
+ enum acknowledged;
604
+ enum addressed;
605
+ enum resolved;
606
+ enum rejected;
607
+ }
573
608
  }
@@ -1,25 +1,17 @@
1
1
  // Methodology scope helpers.
2
- // Instances use repeated scalar attribute usages to enumerate set entries, for
3
- // example: `attribute :>> includedArchLayer = "operational";`.
2
+ //
3
+ // `MethodologyScope` and `MethodologyLayerSet` were removed when the semantic
4
+ // contract flipped. A methodology's effective selection is declared on
5
+ // `MethodologyDefinition` itself — `scopeMode` plus the `included*` lists — so
6
+ // that one element answers "what is in scope". A second scope part sitting
7
+ // beside the methodology meant two authorities for the same question, and the
8
+ // tools read the one the methodology definition did not declare.
4
9
  package memo_core_methodology_scope {
5
10
  private import ScalarValues::*;
6
11
 
7
12
  private import memo_core_common::*;
8
13
  private import memo_core_dimensions::*;
9
14
 
10
- part def MethodologyLayerSet specializes MemoPart {
11
- attribute setName : String;
12
- attribute layer : String;
13
- }
14
-
15
- part def MethodologyScope specializes MemoPart {
16
- attribute scopeName : String;
17
- attribute includedArchLayer : String[0..*];
18
- // Qualified package names may resolve to MEMO, project, supplier, or
19
- // other externally provided ontology modules.
20
- attribute includedModule : String[0..*];
21
- }
22
-
23
15
  part def ElementKindAlias specializes MemoPart {
24
16
  attribute methodTerm : String;
25
17
  attribute concreteKind : String;
@@ -85,8 +85,10 @@ package memo_core_relationships {
85
85
  // Implements{Component,Procedure}, UIRealizesFunctional,
86
86
  // FunctionalRealizesOper{ative,ational} and ScenarioRealizesUseCase.
87
87
  connection def Realizes :> MemoRelationship {
88
- end realizing : MemoPart;
89
- end realized : MemoPart;
88
+ // Realization crosses structural and behavioral metaclasses (for
89
+ // example a FunctionalFlow route realizing a FunctionalScenario).
90
+ end realizing;
91
+ end realized;
90
92
  }
91
93
  connection def VerifiedBy :> MemoRelationship {
92
94
  // Requirements, risk controls, and architecture components are