@memoarchitect/ontology 0.6.5 → 0.8.22

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 (394) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  3. package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
  4. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  5. package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
  6. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
  7. package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
  8. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  9. package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
  10. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  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/methodology/gpca_methodology.sysml +7 -8
  15. package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
  16. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +19 -9
  17. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +342 -100
  18. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +27 -13
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +329 -272
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +57 -16
  21. package/examples/gpca-pump/model/catalog/gpca_context.sysml +12 -8
  22. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -10
  23. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
  24. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +181 -264
  25. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +95 -60
  26. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -11
  27. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +102 -101
  28. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +1 -1
  29. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +47 -30
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +301 -354
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +116 -36
  33. package/examples/gpca-pump/model/catalog/project.sysml +26 -0
  34. package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
  35. package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +4 -4
  36. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
  37. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +4 -4
  38. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
  39. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +5 -5
  40. package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  41. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
  42. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
  44. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
  45. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +8 -8
  46. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
  47. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
  48. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +4 -4
  49. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
  50. package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
  51. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +3 -3
  52. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +4 -4
  53. package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
  54. package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
  55. package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  56. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +8 -8
  57. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
  58. package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  59. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +8 -5
  60. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +7 -5
  61. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +3 -3
  62. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
  64. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +4 -4
  65. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +5 -5
  66. package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
  67. package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +8 -6
  68. package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
  69. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +7 -5
  70. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +3 -3
  71. package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
  72. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  73. package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
  74. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -2
  75. package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
  76. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  77. package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
  78. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  79. package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
  80. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  81. package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
  82. package/examples/nested-architecture-dsm/README.md +49 -0
  83. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +179 -0
  84. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +165 -0
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
  86. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
  87. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +113 -0
  88. package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
  89. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +48 -0
  90. package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
  91. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +11 -8
  92. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  93. package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
  94. package/examples/ros-mobile-robot/README.md +40 -0
  95. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  96. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  97. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  98. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
  99. package/examples/software-only-medical-device/model/catalog/project.sysml +28 -0
  100. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
  101. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  102. package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
  103. package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
  104. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +57 -57
  105. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  106. package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
  107. package/examples/surgical-robot/model/catalog/project.sysml +24 -0
  108. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +6 -4
  109. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  110. package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
  111. package/examples/sysml-diagram-samples/README.md +7 -0
  112. package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
  113. package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
  114. package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
  115. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  116. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +23 -20
  117. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +11 -11
  118. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
  119. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +143 -0
  120. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +87 -0
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +109 -0
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
  124. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +6 -7
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +33 -0
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +80 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +48 -0
  128. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +15 -9
  129. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
  130. package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
  131. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +29 -21
  132. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  133. package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
  134. package/examples/ui-screen-regions/README.md +117 -0
  135. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +84 -0
  136. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +212 -0
  137. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
  138. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
  139. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
  140. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
  141. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
  142. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
  143. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
  144. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
  145. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
  146. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
  147. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
  148. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +75 -0
  149. package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
  150. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  151. package/examples/ui-screen-regions/model/catalog/traces.sysml +179 -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/extensions/LICENSES/MIT.txt +19 -0
  163. package/extensions/README.md +94 -0
  164. package/extensions/aadl/memo.package.yaml +18 -0
  165. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  166. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  167. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  168. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  169. package/extensions/clinical/memo.package.yaml +18 -0
  170. package/extensions/clinical/src/methodology/clinical_methodology.sysml +22 -0
  171. package/extensions/cloud/memo.package.yaml +18 -0
  172. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  173. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  174. package/extensions/container/memo.package.yaml +18 -0
  175. package/extensions/container/src/container_extension.sysml +37 -0
  176. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  177. package/extensions/messaging/memo.package.yaml +18 -0
  178. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  179. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  180. package/extensions/ros/memo.package.yaml +18 -0
  181. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  182. package/extensions/ros/src/ros_extension.sysml +200 -0
  183. package/extensions/template/memo.package.yaml +17 -0
  184. package/extensions/template/src/extension.sysml +37 -0
  185. package/memo.manifest.yaml +15 -2
  186. package/methodologies/default/memo.package.yaml +19 -9
  187. package/methodologies/gpca/memo.package.yaml +18 -9
  188. package/ontology/memo.package.yaml +23 -8
  189. package/package.json +6 -6
  190. package/profile/memo.package.yaml +18 -9
  191. package/src/architecture/decisions/memo_decisions.sysml +28 -0
  192. package/src/architecture/functional/behavior/memo_behavior.sysml +50 -22
  193. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  194. package/src/architecture/functional/functions/memo_functions.sysml +93 -43
  195. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -24
  196. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +52 -12
  197. package/src/architecture/implementation/ui/memo_ui.sysml +276 -53
  198. package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -13
  199. package/src/architecture/logical/structure/memo_logical_structure.sysml +92 -35
  200. package/src/architecture/operational/activities/memo_activities.sysml +10 -4
  201. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
  202. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
  203. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
  204. package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
  205. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
  206. package/src/architecture/operational/workflows/memo_workflows.sysml +28 -15
  207. package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
  208. package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
  209. package/src/artifacts/configuration_management/memo_configuration_management.sysml +35 -0
  210. package/src/artifacts/core/memo_controlled_artifacts.sysml +35 -0
  211. package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
  212. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  213. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  214. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  215. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  216. package/src/artifacts/standards/iec_60812.sysml +51 -0
  217. package/src/artifacts/standards/iec_62304.sysml +210 -0
  218. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  219. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  220. package/src/artifacts/standards/iso_13485.sysml +113 -0
  221. package/src/artifacts/standards/iso_14971.sysml +94 -0
  222. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  223. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  224. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +1 -1
  225. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +5 -5
  226. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +1 -1
  227. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +2 -2
  228. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +2 -2
  229. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +2 -2
  230. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +1 -1
  231. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +1 -1
  232. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +3 -3
  233. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +4 -4
  234. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +1 -1
  235. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +3 -2
  236. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +2 -2
  237. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +4 -4
  238. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +4 -3
  239. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  240. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +1 -1
  241. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +3 -3
  242. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +6 -5
  243. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +3 -2
  244. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +5 -4
  245. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +4 -2
  246. package/src/artifacts/templates/dhf/iec-62304/srs.md +172 -0
  247. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +3 -3
  248. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +1 -1
  249. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +1 -1
  250. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +93 -0
  251. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +1 -1
  252. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +3 -3
  253. package/src/artifacts/templates/dhf/iso-14971/fmea.md +116 -0
  254. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +3 -3
  255. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +2 -2
  256. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  257. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  258. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  259. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  260. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
  261. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  262. package/src/assurance/requirements/memo_requirements.sysml +5 -2
  263. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  264. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  265. package/src/assurance/safety_risk/memo_risk.sysml +78 -7
  266. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +27 -0
  267. package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
  268. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  269. package/src/core/annotations/memo_annotations.sysml +96 -0
  270. package/src/core/common/memo_common.sysml +140 -18
  271. package/src/core/consistency_rules/consistency_rules.sysml +7 -0
  272. package/src/core/dimensions/dimensions.sysml +17 -1
  273. package/src/core/enumerations/memo_enumerations.sysml +101 -20
  274. package/src/core/methodology_scope/methodology_scope.sysml +7 -15
  275. package/src/core/relationships/memo_relationships.sysml +199 -194
  276. package/src/memo_namespaces.sysml +127 -67
  277. package/src/methodology/core/memo_core.sysml +69 -2
  278. package/src/methodology/profiles/memo_profiles.sysml +31 -41
  279. package/src/methodology/workflow/memo_workflow.sysml +7 -2
  280. package/src/rules/closure/closure_rules.sysml +104 -31
  281. package/src/rules/coverage/coverage_rules.sysml +4 -256
  282. package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
  283. package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
  284. package/src/rules/ontology/ontology_invariants.sysml +243 -74
  285. package/src/rules/quantitative/quantitative_rules.sysml +8 -8
  286. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +10 -3
  287. package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
  288. package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
  289. package/src/viewpoints/context/context_viewpoint.sysml +4 -2
  290. package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
  291. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
  292. package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
  293. package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
  294. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +5 -0
  295. package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
  296. package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +3 -3
  297. package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +3 -3
  298. package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
  299. package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
  300. package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
  301. package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +3 -3
  302. package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
  303. package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
  304. package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
  305. package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
  306. package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
  307. package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
  308. package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
  309. package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
  310. package/src/viewpoints/software/software_viewpoint.sysml +3 -1
  311. package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
  312. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
  313. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
  314. package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
  315. package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
  316. package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
  317. package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +3 -3
  318. package/templates/connected-device/memo.package.yaml +11 -5
  319. package/templates/connected-device/model/catalog/project.sysml +28 -0
  320. package/templates/connected-device/syside.toml +1 -1
  321. package/templates/default/memo.package.yaml +11 -5
  322. package/templates/default/model/catalog/project.sysml +28 -0
  323. package/templates/default/syside.toml +1 -1
  324. package/templates/infusion-pump/memo.package.yaml +11 -5
  325. package/templates/infusion-pump/model/catalog/project.sysml +28 -0
  326. package/templates/infusion-pump/syside.toml +1 -1
  327. package/templates/monitoring-device/memo.package.yaml +11 -5
  328. package/templates/monitoring-device/model/catalog/project.sysml +28 -0
  329. package/templates/monitoring-device/syside.toml +1 -1
  330. package/templates/samd/memo.package.yaml +11 -5
  331. package/templates/samd/model/catalog/project.sysml +28 -0
  332. package/templates/samd/syside.toml +1 -1
  333. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
  334. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
  335. package/examples/extensions/README.md +0 -16
  336. package/examples/extensions/clinical/memo.package.yaml +0 -9
  337. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -14
  338. package/examples/extensions/template/memo.package.yaml +0 -9
  339. package/examples/extensions/template/src/extension.sysml +0 -15
  340. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
  341. package/examples/gpca-pump/memo.config.yaml +0 -9
  342. package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
  343. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
  344. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
  345. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
  346. package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
  347. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
  348. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
  349. package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
  350. package/examples/sysml-diagram-samples/model/samples/functional_flow_view.sysml +0 -164
  351. package/examples/sysml-diagram-samples/model/samples/interconnection_view.sysml +0 -94
  352. package/examples/sysml-diagram-samples/model/samples/operational_behaviour_view.sysml +0 -135
  353. package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +0 -109
  354. package/examples/sysml-diagram-samples/model/samples/tree_view.sysml +0 -56
  355. package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
  356. package/ontology/memo.rendering.yaml +0 -84
  357. package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
  358. package/src/compliance/change/memo_change.sysml +0 -17
  359. package/src/compliance/dhf-templates/iec-62304/srs.md +0 -138
  360. package/src/compliance/dhf-templates/iec-62366/task-analysis.md +0 -57
  361. package/src/compliance/dhf-templates/iso-14971/fmea.md +0 -93
  362. package/src/compliance/document_views/memo_document_views.sysml +0 -7
  363. package/src/compliance/iso14971/risk_management_file.sysml +0 -16
  364. package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
  365. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  366. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  367. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
  368. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
  369. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
  370. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
  371. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
  372. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
  373. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
  374. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
  375. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
  376. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
  377. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
  378. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
  379. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
  380. /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
  381. /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  382. /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  383. /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
  384. /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  385. /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
  386. /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
  387. /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  388. /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
  389. /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
  390. /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  391. /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  392. /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
  393. /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  394. /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
@@ -0,0 +1,27 @@
1
+ package memo_assurance_safety_risk_postmarket_surveillance {
2
+ private import Metaobjects::SemanticMetadata;
3
+ private import ScalarValues::*;
4
+ private import memo_core_relationships::*; // MemoRelationship
5
+
6
+ private import memo_core_common::*;
7
+
8
+ part def PostMarketSurveillance :> MemoPart {
9
+ attribute surveillanceKind : String;
10
+ attribute dataSource : String;
11
+ attribute reportingObligation : String;
12
+ }
13
+
14
+ // ── Relations owned by this package ─────────────────────────────
15
+ // Moved out of memo_core_relationships: their ends are typed against
16
+ // types declared here, and core must not depend on a domain package.
17
+ connection def FeedsBackTo :> MemoRelationship {
18
+ end feedbackItem : PostMarketSurveillance :>> source;
19
+ end designElement : MemoPart :>> target;
20
+ }
21
+ abstract connection feedsBackToLinks : FeedsBackTo[*];
22
+ metadata def <feedsBackTo> FeedsBackToMetadata :> SemanticMetadata {
23
+ :> annotatedElement : SysML::ConnectionDefinition;
24
+ :> annotatedElement : SysML::ConnectionUsage;
25
+ :>> baseType = feedsBackToLinks meta SysML::Usage;
26
+ }
27
+ }
@@ -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
+ }
@@ -1,4 +1,5 @@
1
1
  package memo_assurance_verification_validation {
2
+ private import Metaobjects::SemanticMetadata;
2
3
  private import ScalarValues::*;
3
4
 
4
5
  private import memo_core_common::*;
@@ -10,10 +11,17 @@ package memo_assurance_verification_validation {
10
11
  // Verification and validation cases are SysML v2 verification cases
11
12
  // (behaviours that check requirements), not verifiable structures — they
12
13
  // derive from the MemoVerificationCase foundation, not MemoPart.
14
+ // `status` is NOT redeclared here. It used to be re-declared as a String,
15
+ // which shadowed the `status : ElementStatusKind` every MEMO base carries
16
+ // and let a verification case hold an editorial status no other element
17
+ // could hold — against the "one status vocabulary in MEMO" rule stated in
18
+ // memo_requirements.sysml. The values it actually held ("planned") were an
19
+ // EXECUTION state, not an editorial one; execution state belongs in an
20
+ // attribute of its own (see RiskControlMeasure.verificationStatus), not in
21
+ // a second spelling of `status`.
13
22
  verification def VerificationCase :> MemoVerificationCase {
14
23
  attribute methodKind : VerificationMethodKind;
15
24
  attribute acceptanceCriteria : String;
16
- attribute status : String;
17
25
  }
18
26
  verification def ValidationCase :> MemoVerificationCase {
19
27
  attribute validationMethod : ValidationMethodKind;
@@ -21,29 +29,17 @@ package memo_assurance_verification_validation {
21
29
  attribute acceptanceCriteria : String;
22
30
  attribute clinicalContext : String;
23
31
  }
24
- part def TestArtifact specializes MemoEvidence {
25
- attribute version : String;
26
- attribute artifactKind : ArtifactKind;
27
- attribute resultSummary : String;
28
- }
29
- part def Evidence specializes MemoEvidence {
30
- attribute version : String;
31
- attribute evidenceType : String;
32
- attribute integrityStatus : String;
33
- }
34
-
35
- // A scenario executed to verify — selected path with purpose
36
- // 'verification'.
37
- part def VerificationScenario specializes MemoScenario {
38
- attribute verificationEnvironment : String;
39
- attribute stimulusSummary : String;
40
- }
41
-
42
32
  // Operational validation confirms the user's goal is achieved in the
43
33
  // use environment (§5): ValidationCase validates a UseCase.
44
34
  // Safety-critical functions must trace to verification (rules/coverage).
45
35
  connection def ExecutesScenario :> MemoRelationship {
46
- end verificationCase : VerificationCase;
47
- end scenario : MemoScenario;
36
+ end verificationCase : VerificationCase :>> source;
37
+ end scenario : MemoScenario :>> target;
38
+ }
39
+ abstract connection executesScenarioLinks : ExecutesScenario[*];
40
+ metadata def <executesScenario> ExecutesScenarioMetadata :> SemanticMetadata {
41
+ :> annotatedElement : SysML::ConnectionDefinition;
42
+ :> annotatedElement : SysML::ConnectionUsage;
43
+ :>> baseType = executesScenarioLinks meta SysML::Usage;
48
44
  }
49
45
  }
@@ -0,0 +1,96 @@
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 Metaobjects::SemanticMetadata;
18
+ private import ScalarValues::*;
19
+
20
+ private import memo_core_common::*;
21
+ private import memo_core_enumerations::*;
22
+ private import memo_core_relationships::*;
23
+
24
+ abstract part def ModelAnnotation specializes MemoPart {
25
+ // `body` is the annotation content; `shortDescription` is the one-line
26
+ // form shown in badges, tables, and generated indexes.
27
+ attribute body : String;
28
+ attribute author : String;
29
+ // ISO 8601. Strings, not a date type: MEMO stays portable content and
30
+ // does not depend on a tool's date library.
31
+ attribute createdAt : String;
32
+ // Optional pinpoint inside the annotated element: an attribute name,
33
+ // requirement clause, diagram node, or other stable local reference.
34
+ attribute anchor : String;
35
+ }
36
+
37
+ part def ModelComment specializes ModelAnnotation {
38
+ attribute commentStatus : CommentStatusKind;
39
+ // Why the comment closed. Required in practice for `resolved` and
40
+ // `rejected` — a closed review point with no stated disposition is an
41
+ // audit gap.
42
+ attribute resolution : String;
43
+ attribute resolvedBy : String;
44
+ attribute resolvedAt : String;
45
+ }
46
+
47
+ part def ModelRationale specializes ModelAnnotation {
48
+ // Decision, trade-off, standard clause, or evidence that the rationale
49
+ // rests on. The body explains the reasoning in full.
50
+ attribute basis : String;
51
+ }
52
+
53
+ part def ModelNote specializes ModelAnnotation {
54
+ // A lightweight category for filtering notes without constraining their
55
+ // content (for example assumption, usage, implementation, or warning).
56
+ attribute noteKind : String;
57
+ }
58
+
59
+ // Replies form a thread through the ordinary Composes relation (parent
60
+ // comment → reply), so CR-ONT-001's acyclicity invariant already covers
61
+ // comment threads and no thread-specific relation is needed.
62
+ // The end is `remark`, not `comment`: `comment` is a reserved KerML
63
+ // keyword and cannot name a feature.
64
+ connection def CommentsOn :> MemoRelationship {
65
+ end remark : ModelComment :>> source;
66
+ end annotatedElement :>> target;
67
+ }
68
+ abstract connection commentsOnLinks : CommentsOn[*];
69
+ metadata def <commentsOn> CommentsOnMetadata :> SemanticMetadata {
70
+ :> annotatedElement : SysML::ConnectionDefinition;
71
+ :> annotatedElement : SysML::ConnectionUsage;
72
+ :>> baseType = commentsOnLinks meta SysML::Usage;
73
+ }
74
+
75
+ connection def RationaleFor :> MemoRelationship {
76
+ end rationaleRecord : ModelRationale :>> source;
77
+ end justifiedElement :>> target;
78
+ }
79
+ abstract connection rationaleForLinks : RationaleFor[*];
80
+ metadata def <rationaleFor> RationaleForMetadata :> SemanticMetadata {
81
+ :> annotatedElement : SysML::ConnectionDefinition;
82
+ :> annotatedElement : SysML::ConnectionUsage;
83
+ :>> baseType = rationaleForLinks meta SysML::Usage;
84
+ }
85
+
86
+ connection def NotesOn :> MemoRelationship {
87
+ end noteRecord : ModelNote :>> source;
88
+ end notedElement :>> target;
89
+ }
90
+ abstract connection notesOnLinks : NotesOn[*];
91
+ metadata def <notesOn> NotesOnMetadata :> SemanticMetadata {
92
+ :> annotatedElement : SysML::ConnectionDefinition;
93
+ :> annotatedElement : SysML::ConnectionUsage;
94
+ :>> baseType = notesOnLinks meta SysML::Usage;
95
+ }
96
+ }
@@ -1,9 +1,32 @@
1
1
  // MEMO base hierarchy. Construct-specific foundations: one base per
2
- // SysML v2 metaclass family (part, action, port, interface, item, requirement,
3
- // connection), each carrying the shared MEMO semantics. Common inheritance
2
+ // SysML v2 metaclass family (part, action, port, interface, item, use case,
3
+ // requirement, constraint, verification, state, connection), each carrying
4
+ // the shared MEMO semantics. Common inheritance
4
5
  // across metaclasses is not portable, so non-part bases re-declare the small
5
6
  // identification core and share classification through the metadata defs in
6
7
  // memo_core_dimensions.
8
+ //
9
+ // ─── The identification core ────────────────────────────────────────────
10
+ // Every MEMO base below declares the SAME attributes, in the same order,
11
+ // with no exceptions:
12
+ //
13
+ // id, uuid, name, shortDescription, description,
14
+ // rationale, sourceReference, status
15
+ //
16
+ // They are re-declared per metaclass only because KerML will not let an
17
+ // action, port, item, requirement, or connection inherit from a part def.
18
+ // The duplication is a language constraint, not a design choice — so treat
19
+ // the block as one unit: anything added or removed here is added or removed
20
+ // in all of them. The drift this replaces was real (MemoPort carried no
21
+ // sourceReference and no status; MemoRequirement and MemoNeed each invented
22
+ // their own status attribute), and drift here shows up as an element whose
23
+ // properties panel is missing fields its neighbours have.
24
+ //
25
+ // `uuid` is the stable technical identity: never displayed, never used as a
26
+ // label, never reused. Authors normally leave it unset and let the compiler
27
+ // derive it (memo-tools assigns a v5 UUID over file+kind+id); set it
28
+ // explicitly on an element whose file or id must be free to change without
29
+ // breaking external references to it, and the authored value wins.
7
30
  package memo_core_common {
8
31
  private import ScalarValues::*;
9
32
 
@@ -26,7 +49,16 @@ package memo_core_common {
26
49
  abstract part def MemoPart {
27
50
  // identity
28
51
  attribute id : String;
52
+ attribute uuid : String;
29
53
  attribute name : String;
54
+ // Two description registers on every MEMO element, because views have
55
+ // two densities. `shortDescription` is the one-line form a table cell,
56
+ // matrix header, chip, or diagram node can show whole; `description` is
57
+ // the full prose a properties panel or a generated document section
58
+ // renders. A view picks the register that fits — it never truncates
59
+ // the long one, because a silently clipped sentence in a DHF table is
60
+ // a defect, not a layout choice.
61
+ attribute shortDescription : String;
30
62
  attribute description : String;
31
63
  // traceability
32
64
  attribute rationale : String;
@@ -48,13 +80,36 @@ package memo_core_common {
48
80
  abstract part def VerifiableElement specializes MemoPart;
49
81
  abstract part def ArchitectureElement specializes MemoPart;
50
82
  part def InterfaceElement specializes MemoPart;
51
- part def MemoEvidence specializes MemoPart;
83
+ enum def EvidenceKind { enum testArtifact; enum evidence; enum formativeEvaluation; enum usabilityValidation; enum securityClaim; }
84
+ part def MemoEvidence specializes MemoPart {
85
+ attribute evidenceKind : EvidenceKind;
86
+ attribute version : String;
87
+ attribute artifactKind : ArtifactKind[0..1];
88
+ attribute resultSummary : String;
89
+ attribute evidenceType : String;
90
+ attribute integrityStatus : String;
91
+ // Promoted from the retired `UsabilityValidation` and
92
+ // `FormativeEvaluation` specializations. The collapse in `02083c5`
93
+ // deleted both subclasses without carrying their fields up, so an
94
+ // IEC 62366-1 evaluation record lost what it actually reports.
95
+ // Promoted on the standard's terms, not on in-tree usage: MEMO is a
96
+ // library, so what its own examples happen to set says nothing about
97
+ // what an adopter's usability file needs.
98
+ attribute participantProfile : String;
99
+ attribute participantCount : Integer;
100
+ attribute acceptanceCriteria : String;
101
+ attribute evaluationMethod : String;
102
+ attribute findingsSummary : String;
103
+ attribute designChangesTriggered : String;
104
+ }
52
105
  abstract part def AnalysisArtifact specializes MemoPart;
53
106
 
107
+ // Document-bound elements add only what a document needs beyond the two
108
+ // description registers every MemoPart now carries: a title and its place
109
+ // in a document. The former `shortDescription`/`longDescription` pair is
110
+ // gone — short is inherited, and `description` IS the long form.
54
111
  part def DocumentedElement specializes MemoPart {
55
112
  attribute title : String;
56
- attribute shortDescription : String;
57
- attribute longDescription : String;
58
113
  attribute documentUsage : String[*];
59
114
  attribute sectionIdentifier : String;
60
115
  }
@@ -65,7 +120,9 @@ package memo_core_common {
65
120
  // and interaction steps specialize MemoAction.
66
121
  action def MemoAction {
67
122
  attribute id : String;
123
+ attribute uuid : String;
68
124
  attribute name : String;
125
+ attribute shortDescription : String;
69
126
  attribute description : String;
70
127
  attribute rationale : String;
71
128
  attribute sourceReference : String;
@@ -75,9 +132,13 @@ package memo_core_common {
75
132
  // Boundary feature foundation for typed ports.
76
133
  port def MemoPort {
77
134
  attribute id : String;
135
+ attribute uuid : String;
78
136
  attribute name : String;
137
+ attribute shortDescription : String;
79
138
  attribute description : String;
80
- attribute direction : DirectionKind;
139
+ attribute rationale : String;
140
+ attribute sourceReference : String;
141
+ attribute status : ElementStatusKind;
81
142
  }
82
143
 
83
144
  // Interaction-contract foundation for interface definitions between ports.
@@ -85,20 +146,33 @@ package memo_core_common {
85
146
  end source;
86
147
  end target;
87
148
  attribute id : String;
149
+ attribute uuid : String;
88
150
  attribute name : String;
151
+ attribute shortDescription : String;
89
152
  attribute description : String;
90
153
  attribute rationale : String;
91
154
  attribute sourceReference : String;
92
155
  }
93
156
 
94
- // Exchange-content foundation: everything that flows — information,
95
- // command, material, energy — is an item, not a part.
96
- item def MemoExchangeItem {
157
+ // Single item foundation. Standards, hazards, stored software data, and
158
+ // message payloads are all item-native concepts. Whether an item is
159
+ // exchanged is expressed by its use in a port or flow, not by a second
160
+ // ontology root.
161
+ abstract item def MemoItem {
97
162
  attribute id : String;
163
+ attribute uuid : String;
98
164
  attribute name : String;
165
+ attribute shortDescription : String;
99
166
  attribute description : String;
100
167
  attribute rationale : String;
101
168
  attribute sourceReference : String;
169
+ attribute status : ElementStatusKind;
170
+ // What the item CARRIES, as distinct from what it is called. Removed
171
+ // by `595bfac` while modelling native wrappers; nothing replaced them,
172
+ // and every exchange item in the examples went on setting them. A
173
+ // measured value without its unit, its range, or its terminology code
174
+ // is not a regulated data item — an IVD result is "5.5 mg/dL, LOINC
175
+ // 2345-7", not "5.5".
102
176
  attribute semantics : String;
103
177
  attribute unit : String;
104
178
  attribute minValue : String;
@@ -108,23 +182,58 @@ package memo_core_common {
108
182
  attribute codes : TerminologyCode[0..*];
109
183
  }
110
184
 
185
+ // Use-case foundation. The domain UseCase adds its goal and actor
186
+ // references; identity is carried here so use cases do not maintain a
187
+ // partial hand-written copy of the MEMO identification core.
188
+ abstract use case def MemoUseCase {
189
+ attribute id : String;
190
+ attribute uuid : String;
191
+ attribute name : String;
192
+ attribute shortDescription : String;
193
+ attribute description : String;
194
+ attribute rationale : String;
195
+ attribute sourceReference : String;
196
+ attribute status : ElementStatusKind;
197
+ }
198
+
199
+ // General constraint foundation. Executable consistency rules and
200
+ // reusable quantitative constraints are both native constraint defs.
201
+ abstract constraint def MemoConstraint {
202
+ attribute id : String;
203
+ attribute uuid : String;
204
+ attribute name : String;
205
+ attribute shortDescription : String;
206
+ attribute description : String;
207
+ attribute rationale : String;
208
+ attribute sourceReference : String;
209
+ attribute status : ElementStatusKind;
210
+ }
211
+
111
212
  // Requirement-family foundations. MemoNeed captures a problem-space
112
213
  // expectation in stakeholder language; MemoRequirement a testable
113
214
  // solution-space obligation.
114
- requirement def MemoNeed {
115
- attribute needId : String;
215
+ // Shared base of the requirement family. It exists so a relation end can
216
+ // say "a need or a requirement" with one type name — before it, every end
217
+ // that had to accept both was left untyped.
218
+ abstract requirement def MemoRequirementElement {
219
+ attribute id : String;
220
+ attribute uuid : String;
221
+ attribute name : String;
222
+ attribute shortDescription : String;
223
+ attribute description : String;
224
+ attribute rationale : String;
225
+ attribute sourceReference : String;
226
+ attribute status : ElementStatusKind;
116
227
  attribute statement : String;
117
- attribute needRationale : String;
228
+ }
229
+
230
+ requirement def MemoNeed :> MemoRequirementElement {
118
231
  attribute needSource : String;
119
232
  attribute priority : String;
120
- attribute needStatus : ElementStatusKind;
121
233
  }
122
234
 
123
- requirement def MemoRequirement {
124
- attribute requirementId : String;
125
- attribute statement : String;
235
+ requirement def MemoRequirement :> MemoRequirementElement {
126
236
  attribute acceptanceCriteria : String;
127
- attribute requirementStatus : ElementStatusKind;
128
237
  }
129
238
 
130
239
  // Verification-case foundation. A SysML v2 verification case is a behaviour
@@ -133,10 +242,13 @@ package memo_core_common {
133
242
  // identification core rather than inheriting it.
134
243
  verification def MemoVerificationCase {
135
244
  attribute id : String;
245
+ attribute uuid : String;
136
246
  attribute name : String;
247
+ attribute shortDescription : String;
137
248
  attribute description : String;
138
249
  attribute rationale : String;
139
250
  attribute sourceReference : String;
251
+ attribute status : ElementStatusKind;
140
252
  }
141
253
 
142
254
  // State foundation. SysML v2 states (state machines and their mode states)
@@ -144,12 +256,22 @@ package memo_core_common {
144
256
  // re-declare the identification core instead of specializing MemoPart
145
257
  // Transitions stay part-based to keep their traceable safety
146
258
  // attributes (id, sourceReference, priority, sameStepCritical).
147
- abstract state def MemoState {
259
+ enum def StateKind { enum mode; enum logical; }
260
+
261
+ state def MemoState {
262
+ attribute stateKind : StateKind;
148
263
  attribute id : String;
264
+ attribute uuid : String;
149
265
  attribute name : String;
266
+ attribute shortDescription : String;
150
267
  attribute description : String;
151
268
  attribute rationale : String;
152
269
  attribute sourceReference : String;
270
+ attribute status : ElementStatusKind;
271
+ attribute modeKind : String;
272
+ attribute entryCondition : String;
273
+ attribute exitCondition : String;
274
+ attribute modePurpose : String;
153
275
  }
154
276
 
155
277
  part def Citation specializes MemoPart {
@@ -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 :> MemoConstraint;
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;
@@ -35,7 +39,19 @@ package memo_core_dimensions {
35
39
 
36
40
  // Editorial status of the model element itself (distinct from the
37
41
  // lifecycle of the thing the element describes).
42
+ // This is the ONE status vocabulary in MEMO: every element carries
43
+ // `status : ElementStatusKind`, whatever its metaclass. The former
44
+ // per-family variants (RequirementStatusKind, LinkStatusKind,
45
+ // MemoNeed::needStatus) are gone — three overlapping status dropdowns on
46
+ // one element was cognitive load, not precision.
47
+ //
48
+ // The V&V states the requirement variant carried (implemented, verified,
49
+ // validated) are deliberately NOT here: they are facts about links, not
50
+ // editorial states. An element is implemented when a Realizes link exists,
51
+ // verified when VerifiedBy does, validated when Validates does. Duplicating
52
+ // them as an attribute lets the attribute disagree with the graph.
38
53
  enum def ElementStatusKind {
54
+ enum proposed;
39
55
  enum draft;
40
56
  enum inReview;
41
57
  enum approved;