@memoarchitect/ontology 0.8.22 → 0.10.9

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 (240) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
  4. package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
  5. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +11 -9
  8. package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
  9. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +9 -7
  12. package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
  13. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/memo.identity.yaml +2179 -0
  15. package/examples/gpca-pump/memo.package.yaml +3 -0
  16. package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
  17. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
  18. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
  21. package/examples/gpca-pump/model/catalog/gpca_context.sysml +27 -23
  22. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +15 -15
  23. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
  24. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
  25. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +146 -180
  26. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
  27. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
  28. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
  29. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +21 -33
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -11
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
  33. package/examples/gpca-pump/model/catalog/project.sysml +3 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +7 -7
  35. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +7 -7
  36. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +6 -7
  37. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +7 -8
  38. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +6 -6
  39. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +6 -6
  40. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +6 -6
  41. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +8 -9
  42. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +6 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +6 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +6 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +6 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +7 -7
  47. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +6 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +6 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +8 -9
  50. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +6 -6
  51. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -7
  52. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +6 -7
  53. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +6 -6
  54. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +6 -6
  55. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +6 -7
  56. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +6 -6
  57. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +8 -9
  58. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +6 -7
  59. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +6 -6
  60. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  61. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +10 -8
  62. package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
  63. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  64. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  65. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +7 -5
  66. package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
  67. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  68. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  69. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
  70. package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
  71. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  72. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  73. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
  74. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
  75. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
  76. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
  77. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
  78. package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
  79. package/examples/reusable-instrument/memo.package.yaml +3 -0
  80. package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
  81. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +23 -31
  82. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  83. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  84. package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
  85. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
  86. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
  87. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  88. package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
  89. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -9
  90. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  91. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  92. package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
  93. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -69
  94. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  95. package/examples/surgical-robot/memo.package.yaml +3 -0
  96. package/examples/surgical-robot/model/catalog/project.sysml +3 -1
  97. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
  98. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  99. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  100. package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
  101. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -11
  102. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -7
  103. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +4 -3
  104. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +3 -3
  105. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +17 -16
  106. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +9 -8
  107. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +4 -3
  108. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +3 -3
  109. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +4 -3
  110. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -9
  111. package/examples/temperature-alarm/memo.identity.yaml +64 -0
  112. package/examples/temperature-alarm/memo.package.yaml +3 -0
  113. package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
  114. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +30 -29
  115. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  116. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  117. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
  118. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
  119. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
  120. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
  121. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
  122. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
  123. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
  124. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
  125. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
  126. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
  127. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
  128. package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
  129. package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
  130. package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
  131. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +6 -5
  132. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +6 -5
  133. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +6 -5
  134. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +4 -3
  135. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +4 -3
  136. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +4 -3
  137. package/extensions/aadl/memo.package.yaml +1 -1
  138. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
  139. package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
  140. package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
  141. package/extensions/cloud/memo.package.yaml +1 -1
  142. package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
  143. package/extensions/container/memo.package.yaml +1 -1
  144. package/extensions/container/src/container_extension.sysml +2 -2
  145. package/extensions/container/src/methodology/container_methodology.sysml +3 -1
  146. package/extensions/messaging/memo.package.yaml +1 -1
  147. package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
  148. package/extensions/ros/memo.package.yaml +1 -1
  149. package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
  150. package/extensions/template/src/extension.sysml +3 -1
  151. package/methodologies/default/memo.package.yaml +1 -1
  152. package/methodologies/gpca/memo.package.yaml +1 -1
  153. package/ontology/memo.package.yaml +1 -1
  154. package/package.json +2 -2
  155. package/profile/memo.package.yaml +1 -1
  156. package/src/architecture/functional/behavior/memo_behavior.sysml +5 -5
  157. package/src/architecture/functional/functions/memo_functions.sysml +6 -6
  158. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
  159. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
  160. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
  161. package/src/architecture/implementation/ui/memo_ui.sysml +8 -31
  162. package/src/architecture/logical/interfaces/memo_interfaces.sysml +4 -2
  163. package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
  164. package/src/architecture/operational/activities/memo_activities.sysml +19 -28
  165. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
  166. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
  167. package/src/architecture/operational/context/use_context/memo_use_context.sysml +5 -14
  168. package/src/architecture/operational/scenarios/memo_scenarios.sysml +12 -104
  169. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  170. package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -12
  171. package/src/architecture/operational/workflows/memo_workflows.sysml +20 -42
  172. package/src/architecture/realization/deployment/memo_deployment.sysml +26 -19
  173. package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
  174. package/src/artifacts/standards/cfr_21_820.sysml +80 -89
  175. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
  176. package/src/artifacts/standards/iec_60601_1.sysml +108 -121
  177. package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
  178. package/src/artifacts/standards/iec_60812.sysml +21 -22
  179. package/src/artifacts/standards/iec_62304.sysml +150 -169
  180. package/src/artifacts/standards/iec_62366_1.sysml +80 -89
  181. package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
  182. package/src/artifacts/standards/iso_13485.sysml +80 -89
  183. package/src/artifacts/standards/iso_14971.sysml +66 -73
  184. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
  185. package/src/artifacts/templates/dhf/system/sad.md +3 -3
  186. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
  187. package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
  188. package/src/assurance/requirements/memo_requirements.sysml +2 -18
  189. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
  190. package/src/assurance/safety_risk/memo_risk.sysml +12 -0
  191. package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
  192. package/src/core/common/memo_common.sysml +59 -55
  193. package/src/core/enumerations/memo_enumerations.sysml +1 -1
  194. package/src/core/relationships/memo_relationships.sysml +29 -56
  195. package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
  196. package/src/methodology/core/memo_core.sysml +0 -10
  197. package/src/methodology/profiles/memo_profiles.sysml +18 -16
  198. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  199. package/src/rules/closure/closure_rules.sysml +22 -20
  200. package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
  201. package/src/rules/ontology/ontology_invariants.sysml +121 -48
  202. package/src/rules/quantitative/quantitative_rules.sysml +4 -2
  203. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +58 -57
  204. package/src/viewpoints/clinical/clinical_viewpoint.sysml +5 -4
  205. package/src/viewpoints/context/context_viewpoint.sysml +6 -5
  206. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +6 -5
  207. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +6 -6
  208. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +36 -4
  209. package/src/viewpoints/functional/functional_viewpoint.sysml +6 -5
  210. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +6 -5
  211. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +6 -5
  212. package/src/viewpoints/logical/logical_viewpoint.sysml +5 -4
  213. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +6 -5
  214. package/src/viewpoints/operational/operational_viewpoint.sysml +6 -5
  215. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +7 -6
  216. package/src/viewpoints/physical/physical_viewpoint.sysml +5 -4
  217. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +6 -5
  218. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +6 -5
  219. package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
  220. package/src/viewpoints/requirements/requirements_viewpoint.sysml +5 -4
  221. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +6 -5
  222. package/src/viewpoints/risk/risk_viewpoint.sysml +5 -4
  223. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +6 -5
  224. package/src/viewpoints/software/software_viewpoint.sysml +5 -4
  225. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +6 -5
  226. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +5 -4
  227. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
  228. package/src/viewpoints/usability/usability_viewpoint.sysml +5 -4
  229. package/src/viewpoints/verification/verification_viewpoint.sysml +5 -4
  230. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +6 -5
  231. package/templates/connected-device/memo.package.yaml +2 -0
  232. package/templates/connected-device/model/catalog/project.sysml +3 -1
  233. package/templates/default/memo.package.yaml +2 -0
  234. package/templates/default/model/catalog/project.sysml +3 -1
  235. package/templates/infusion-pump/memo.package.yaml +2 -0
  236. package/templates/infusion-pump/model/catalog/project.sysml +3 -1
  237. package/templates/monitoring-device/memo.package.yaml +2 -0
  238. package/templates/monitoring-device/model/catalog/project.sysml +3 -1
  239. package/templates/samd/memo.package.yaml +2 -0
  240. package/templates/samd/model/catalog/project.sysml +3 -1
@@ -34,6 +34,56 @@ package memo_core_common {
34
34
  private import memo_core_terminology::*;
35
35
  private import memo_core_enumerations::*;
36
36
 
37
+ // The metaclass-agnostic carrier for MEMO's identity fields.
38
+ //
39
+ // A `metadata def` annotates an element of ANY metaclass — restriction is
40
+ // opt-in through `annotatedElement`, and this one declares none. That is
41
+ // what the per-metaclass base definitions below cannot do: KerML will not
42
+ // let an action, port, item, requirement or connection inherit from a part
43
+ // def, which is why the identification core is currently declared ten
44
+ // times. Metadata has no such limit, so one declaration replaces ten.
45
+ //
46
+ // An element has five identities and they are not interchangeable:
47
+ //
48
+ // 1. code reference `sfnAcquireMap` native declaredName
49
+ // 2. display label "Acquire EA Map" `label`, below
50
+ // 3. number id `SFN-1` assigned, never authored
51
+ // 4. provided id `SPEC-4471` `providedId`, below
52
+ // 5. technical uuid `e2f75cf6-…` `uuid`, below
53
+ //
54
+ // 1 is native and needs no field here. 3 is generated by the compiler and
55
+ // recorded in `memo.identity.yaml`: it is monotonic, gaps are kept, and a
56
+ // retired number is never reused, so nothing authors it by hand.
57
+ //
58
+ // `label` is NOT a duplicate of the native name, which is the reading that
59
+ // nearly deleted it: the native name is a lowerCamelCase identifier and
60
+ // must be unique in its namespace, while a label is free text that
61
+ // legitimately repeats — measured 2026-08-18, 1278 labels across the
62
+ // ontology and examples share only 1216 distinct values, because seven
63
+ // different ports are all correctly labelled "TLM_MODE_IN". A label
64
+ // therefore cannot live in a name slot, native or otherwise.
65
+ //
66
+ // `providedId` is the identifier an EXTERNAL system knows the element by,
67
+ // and it exists because that system's scheme is not MEMO's: a customer
68
+ // numbering software requirements `SPEC-4471` cannot be made to use `SWR-`,
69
+ // and overwriting the generated number to please them would break the
70
+ // guarantee that numbers are never reassigned.
71
+ //
72
+ // `uuid` is machine identity. Authored values win over the registry, which
73
+ // wins over derivation — so an element whose file must move can pin its own
74
+ // uuid, which is what the attribute always advertised.
75
+ //
76
+ // Deliberately absent: `name` and `description` (native name and `doc`),
77
+ // `rationale` (standard `@Rationale`), and `id` — superseded by the
78
+ // generated number id and by `providedId`.
79
+ metadata def MemoIdentity {
80
+ attribute label : String[0..1];
81
+ attribute providedId : String[0..1];
82
+ attribute uuid : String[0..1];
83
+ attribute shortDescription : String[0..1];
84
+ attribute sourceReference : String[0..1];
85
+ }
86
+
37
87
  // ─── Single abstract part root ──────────────────────────────────
38
88
  // Every structural MEMO concept specializes MemoPart. Identity and
39
89
  // traceability are attributes of this one root — MEMO has no separate
@@ -48,8 +98,6 @@ package memo_core_common {
48
98
  // cross-cutting concern, and editorial status.
49
99
  abstract part def MemoPart {
50
100
  // identity
51
- attribute id : String;
52
- attribute uuid : String;
53
101
  attribute name : String;
54
102
  // Two description registers on every MEMO element, because views have
55
103
  // two densities. `shortDescription` is the one-line form a table cell,
@@ -58,11 +106,8 @@ package memo_core_common {
58
106
  // renders. A view picks the register that fits — it never truncates
59
107
  // the long one, because a silently clipped sentence in a DHF table is
60
108
  // a defect, not a layout choice.
61
- attribute shortDescription : String;
62
109
  attribute description : String;
63
110
  // traceability
64
- attribute rationale : String;
65
- attribute sourceReference : String;
66
111
  // editorial status and lifecycle
67
112
  attribute status : ElementStatusKind;
68
113
  attribute lifecycleState : LifecycleStateKind;
@@ -78,7 +123,6 @@ package memo_core_common {
78
123
  // MemoPart so all existing content inherits the dimensions. ───
79
124
  part def RequirementDriver specializes MemoPart;
80
125
  abstract part def VerifiableElement specializes MemoPart;
81
- abstract part def ArchitectureElement specializes MemoPart;
82
126
  part def InterfaceElement specializes MemoPart;
83
127
  enum def EvidenceKind { enum testArtifact; enum evidence; enum formativeEvaluation; enum usabilityValidation; enum securityClaim; }
84
128
  part def MemoEvidence specializes MemoPart {
@@ -108,10 +152,15 @@ package memo_core_common {
108
152
  // description registers every MemoPart now carries: a title and its place
109
153
  // in a document. The former `shortDescription`/`longDescription` pair is
110
154
  // gone — short is inherited, and `description` IS the long form.
111
- part def DocumentedElement specializes MemoPart {
112
- attribute title : String;
113
- attribute documentUsage : String[*];
114
- attribute sectionIdentifier : String;
155
+ // Top-level goal a system or operation exists to fulfil, with its success
156
+ // criteria and context. Domain layers specialize it; the medical-device
157
+ // intended use (memo_architecture_operational_structure::IntendedUse) is a
158
+ // MemoMission. Specializes MemoPart directly — name/description/rationale
159
+ // already live there, so no DocumentedElement layer is needed.
160
+ abstract part def MemoMission specializes MemoPart {
161
+ attribute missionKind : String;
162
+ attribute successCriteria : String;
163
+ attribute operationalContext : String;
115
164
  }
116
165
 
117
166
  // ─── Construct-specific foundations (non-part metaclasses) ───────
@@ -119,25 +168,15 @@ package memo_core_common {
119
168
  // Behavioral foundation: operational activities, tasks, system actions,
120
169
  // and interaction steps specialize MemoAction.
121
170
  action def MemoAction {
122
- attribute id : String;
123
- attribute uuid : String;
124
171
  attribute name : String;
125
- attribute shortDescription : String;
126
172
  attribute description : String;
127
- attribute rationale : String;
128
- attribute sourceReference : String;
129
173
  attribute status : ElementStatusKind;
130
174
  }
131
175
 
132
176
  // Boundary feature foundation for typed ports.
133
177
  port def MemoPort {
134
- attribute id : String;
135
- attribute uuid : String;
136
178
  attribute name : String;
137
- attribute shortDescription : String;
138
179
  attribute description : String;
139
- attribute rationale : String;
140
- attribute sourceReference : String;
141
180
  attribute status : ElementStatusKind;
142
181
  }
143
182
 
@@ -145,13 +184,8 @@ package memo_core_common {
145
184
  abstract interface def MemoInterface {
146
185
  end source;
147
186
  end target;
148
- attribute id : String;
149
- attribute uuid : String;
150
187
  attribute name : String;
151
- attribute shortDescription : String;
152
188
  attribute description : String;
153
- attribute rationale : String;
154
- attribute sourceReference : String;
155
189
  }
156
190
 
157
191
  // Single item foundation. Standards, hazards, stored software data, and
@@ -159,13 +193,8 @@ package memo_core_common {
159
193
  // exchanged is expressed by its use in a port or flow, not by a second
160
194
  // ontology root.
161
195
  abstract item def MemoItem {
162
- attribute id : String;
163
- attribute uuid : String;
164
196
  attribute name : String;
165
- attribute shortDescription : String;
166
197
  attribute description : String;
167
- attribute rationale : String;
168
- attribute sourceReference : String;
169
198
  attribute status : ElementStatusKind;
170
199
  // What the item CARRIES, as distinct from what it is called. Removed
171
200
  // by `595bfac` while modelling native wrappers; nothing replaced them,
@@ -186,26 +215,16 @@ package memo_core_common {
186
215
  // references; identity is carried here so use cases do not maintain a
187
216
  // partial hand-written copy of the MEMO identification core.
188
217
  abstract use case def MemoUseCase {
189
- attribute id : String;
190
- attribute uuid : String;
191
218
  attribute name : String;
192
- attribute shortDescription : String;
193
219
  attribute description : String;
194
- attribute rationale : String;
195
- attribute sourceReference : String;
196
220
  attribute status : ElementStatusKind;
197
221
  }
198
222
 
199
223
  // General constraint foundation. Executable consistency rules and
200
224
  // reusable quantitative constraints are both native constraint defs.
201
225
  abstract constraint def MemoConstraint {
202
- attribute id : String;
203
- attribute uuid : String;
204
226
  attribute name : String;
205
- attribute shortDescription : String;
206
227
  attribute description : String;
207
- attribute rationale : String;
208
- attribute sourceReference : String;
209
228
  attribute status : ElementStatusKind;
210
229
  }
211
230
 
@@ -216,13 +235,8 @@ package memo_core_common {
216
235
  // say "a need or a requirement" with one type name — before it, every end
217
236
  // that had to accept both was left untyped.
218
237
  abstract requirement def MemoRequirementElement {
219
- attribute id : String;
220
- attribute uuid : String;
221
238
  attribute name : String;
222
- attribute shortDescription : String;
223
239
  attribute description : String;
224
- attribute rationale : String;
225
- attribute sourceReference : String;
226
240
  attribute status : ElementStatusKind;
227
241
  attribute statement : String;
228
242
  }
@@ -241,13 +255,8 @@ package memo_core_common {
241
255
  // the part-based MemoPart — so, like MemoAction, it re-declares the small
242
256
  // identification core rather than inheriting it.
243
257
  verification def MemoVerificationCase {
244
- attribute id : String;
245
- attribute uuid : String;
246
258
  attribute name : String;
247
- attribute shortDescription : String;
248
259
  attribute description : String;
249
- attribute rationale : String;
250
- attribute sourceReference : String;
251
260
  attribute status : ElementStatusKind;
252
261
  }
253
262
 
@@ -260,13 +269,8 @@ package memo_core_common {
260
269
 
261
270
  state def MemoState {
262
271
  attribute stateKind : StateKind;
263
- attribute id : String;
264
- attribute uuid : String;
265
272
  attribute name : String;
266
- attribute shortDescription : String;
267
273
  attribute description : String;
268
- attribute rationale : String;
269
- attribute sourceReference : String;
270
274
  attribute status : ElementStatusKind;
271
275
  attribute modeKind : String;
272
276
  attribute entryCondition : String;
@@ -142,7 +142,7 @@ package memo_core_enumerations {
142
142
  enum maintenance;
143
143
  enum obsolete;
144
144
  }
145
- enum def VerificationMethodKind {
145
+ enum def MemoVerificationMethodKind {
146
146
  enum inspection;
147
147
  enum analytical;
148
148
  enum demonstration;
@@ -7,6 +7,7 @@ package memo_core_relationships {
7
7
  private import memo_core_common::*;
8
8
  private import memo_core_enumerations::*;
9
9
 
10
+ private import Allocations::Allocation;
10
11
  // All MEMO relations are native SysML v2 `connection def`s (each is a
11
12
  // Connection/Association), specializing the MemoRelationship base. The
12
13
  // relationship name is the verb; the RelationshipRegistry derives the
@@ -79,12 +80,12 @@ package memo_core_relationships {
79
80
  // SystemFunction a part def with its behaviour stapled on through a
80
81
  // separate action def, and what makes `allocate <function> to <actor>` —
81
82
  // ARCADIA's own System Analysis mechanism — illegal, since Actor is a
82
- // MemoPart but not an ArchitectureElement.
83
+ // MemoPart but not a narrower part subtype.
83
84
  //
84
85
  // Several of the relaxed ends were ALREADY being violated by real content
85
- // before they were relaxed: `composes` links parts to WorkflowStep and
86
- // OperationalActivity (action defs) and to SoftwarePort/PhysicalPort;
87
- // `precedes` links OperationalActivity to OperationalActivity; `allocatedTo`
86
+ // before they were relaxed: `composes` links parts to OperativeAction
87
+ // (an action def) and to SoftwarePort/PhysicalPort;
88
+ // `precedes` links OperativeAction to OperativeAction; `allocatedTo`
88
89
  // has ActionUsage sources; `bindsToInterface` targets an `interface def`,
89
90
  // which an InterfaceElement-typed end cannot hold. The types were not
90
91
  // buying the strictness they appeared to buy.
@@ -107,17 +108,6 @@ package memo_core_relationships {
107
108
  // only when no specific relation carries the meaning, and say why in the
108
109
  // inherited `rationale` — an untyped link with no stated reason is an
109
110
  // audit gap, not a model fact.
110
- connection def MemoLink :> MemoRelationship {
111
- doc /* Generic association between any two model elements. */
112
- end linkSource :>> source;
113
- end linkTarget :>> target;
114
- }
115
- abstract connection memoLinkLinks : MemoLink[*];
116
- metadata def <memoLink> MemoLinkMetadata :> SemanticMetadata {
117
- :> annotatedElement : SysML::ConnectionDefinition;
118
- :> annotatedElement : SysML::ConnectionUsage;
119
- :>> baseType = memoLinkLinks meta SysML::Usage;
120
- }
121
111
 
122
112
  connection def DerivesFrom :> MemoRelationship {
123
113
  // Drivers span metaclasses — a need is a requirement def, a hazard an
@@ -160,7 +150,7 @@ package memo_core_relationships {
160
150
 
161
151
  connection def ThreatenedBy :> MemoRelationship {
162
152
  attribute threatRole : String;
163
- end protectedAsset : ArchitectureElement :>> source;
153
+ end protectedAsset : MemoPart :>> source;
164
154
  end realizedThreat : RequirementDriver :>> target;
165
155
  }
166
156
  abstract connection threatenedByLinks : ThreatenedBy[*];
@@ -206,57 +196,40 @@ package memo_core_relationships {
206
196
 
207
197
  // Enables unifies the former EnablesWorkflow / EnablesActivity synonyms
208
198
  // (an enabling system/function enables a workflow/activity).
209
- connection def Enables :> MemoRelationship {
210
- end enabling :>> source;
211
- end enabled : MemoAction :>> target;
212
- }
213
- abstract connection enablesLinks : Enables[*];
214
- metadata def <enables> EnablesMetadata :> SemanticMetadata {
215
- :> annotatedElement : SysML::ConnectionDefinition;
216
- :> annotatedElement : SysML::ConnectionUsage;
217
- :>> baseType = enablesLinks meta SysML::Usage;
218
- }
199
+ // `Enables` is native `dependency` (2026-08-18): write
200
+ // `dependency from <enabling> to <enabled>;`. Same call as `Supports`,
201
+ // which was deleted as a duplicate of both `dependency` and `Enables`.
219
202
 
220
- connection def HostedBy :> MemoRelationship {
221
- end processingNode : ArchitectureElement :>> source;
222
- end hostAssembly : ArchitectureElement :>> target;
203
+ // A processing node hosted by an assembly is allocated to it. The end
204
+ // NAMES were already right; two of the three usages wrote them in reverse
205
+ // order, and the builder binds by position, so those two edges pointed the
206
+ // wrong way. See the reversed-end-name lint in memo-tools.
207
+ allocation def HostedBy :> MemoRelationship, Allocations::Allocation {
208
+ end processingNode : MemoPart :>> source;
209
+ end hostAssembly : MemoPart :>> target;
223
210
  }
224
211
  abstract connection hostedByLinks : HostedBy[*];
225
212
  metadata def <hostedBy> HostedByMetadata :> SemanticMetadata {
226
- :> annotatedElement : SysML::ConnectionDefinition;
227
- :> annotatedElement : SysML::ConnectionUsage;
213
+ :> annotatedElement : SysML::AllocationDefinition;
214
+ :> annotatedElement : SysML::AllocationUsage;
228
215
  :>> baseType = hostedByLinks meta SysML::Usage;
229
216
  }
230
217
 
231
218
 
232
219
 
233
220
 
234
- // Composes is the single whole/part decomposition relation. It unifies the
235
- // former ComposesLogical / AssemblyComprises / Contains{Component,Element} /
236
- // {Workflow,Task,Activity,Scenario}Comprises* / FlowComprisesSpec /
237
- // Collection membership is carried by the end instance.
238
- // types, so the ends are generic MemoPart.
239
- connection def Composes :> MemoRelationship {
240
- end parent :>> source;
241
- end child :>> target;
242
- }
243
- abstract connection composesLinks : Composes[*];
244
- metadata def <composes> ComposesMetadata :> SemanticMetadata {
245
- :> annotatedElement : SysML::ConnectionDefinition;
246
- :> annotatedElement : SysML::ConnectionUsage;
247
- :>> baseType = composesLinks meta SysML::Usage;
248
- }
221
+ // `Composes` is deleted (R10-S7). Containment is NESTING — the child is
222
+ // declared inside the parent — which is how SysML v2 models composition:
223
+ // composite feature ownership, not a link. The relation specialized
224
+ // `Connections::BinaryConnection`, "a link between two things WITHIN some
225
+ // containing structure", so it was the wrong category for the containment
226
+ // itself, and the corpus has no composition connection to specialize.
227
+ //
228
+ // Nothing is lost: the builder synthesizes a `composes` edge from every
229
+ // nested part and item, so rules, the DSM and traceability read exactly the
230
+ // graph they read before. The edge type is registered natively in
231
+ // memo-tools' relationship registry.
249
232
 
250
- connection def AnalyzedBy :> MemoRelationship {
251
- end element : ArchitectureElement :>> source;
252
- end analysisArtifact : AnalysisArtifact :>> target;
253
- }
254
- abstract connection analyzedByLinks : AnalyzedBy[*];
255
- metadata def <analyzedBy> AnalyzedByMetadata :> SemanticMetadata {
256
- :> annotatedElement : SysML::ConnectionDefinition;
257
- :> annotatedElement : SysML::ConnectionUsage;
258
- :>> baseType = analyzedByLinks meta SysML::Usage;
259
- }
260
233
 
261
234
  connection def BindsToInterface :> MemoRelationship {
262
235
  end portElement :>> source;
@@ -3,8 +3,10 @@ package memo_methodology_archetypes {
3
3
 
4
4
  private import memo_methodology_core::*;
5
5
 
6
+ private import memo_core_common::*;
7
+ private import memo_core_common::MemoIdentity;
6
8
  part minimal : Archetype {
7
- attribute :>> id = "ARCH-MINIMAL";
9
+ @MemoIdentity { :>> providedId = "ARCH-MINIMAL"; }
8
10
  attribute :>> name = "Minimal";
9
11
  attribute :>> label = "Minimal";
10
12
  attribute :>> description = "Core ontology only — requirements, hazards, basic architecture (~53 kinds)";
@@ -15,7 +17,7 @@ package memo_methodology_archetypes {
15
17
  }
16
18
 
17
19
  part standardArchetype : Archetype {
18
- attribute :>> id = "ARCH-STANDARD";
20
+ @MemoIdentity { :>> providedId = "ARCH-STANDARD"; }
19
21
  attribute :>> name = "Standard";
20
22
  attribute :>> label = "Standard";
21
23
  attribute :>> description = "Core + risk + software + DHF — covers most Class II devices (~120 kinds)";
@@ -26,7 +28,7 @@ package memo_methodology_archetypes {
26
28
  }
27
29
 
28
30
  part full : Archetype {
29
- attribute :>> id = "ARCH-FULL";
31
+ @MemoIdentity { :>> providedId = "ARCH-FULL"; }
30
32
  attribute :>> name = "Full";
31
33
  attribute :>> label = "Full";
32
34
  attribute :>> description = "All architecture layers, standards, and extensions (~200+ kinds)";
@@ -37,7 +39,7 @@ package memo_methodology_archetypes {
37
39
  }
38
40
 
39
41
  part samd : Archetype {
40
- attribute :>> id = "ARCH-SAMD";
42
+ @MemoIdentity { :>> providedId = "ARCH-SAMD"; }
41
43
  attribute :>> name = "SaMD";
42
44
  attribute :>> label = "Software as Medical Device (SaMD)";
43
45
  attribute :>> description = "Clinical decision support, diagnostic algorithm, AI/ML tool, mobile medical app";
@@ -48,7 +50,7 @@ package memo_methodology_archetypes {
48
50
  }
49
51
 
50
52
  part connected : Archetype {
51
- attribute :>> id = "ARCH-CONNECTED";
53
+ @MemoIdentity { :>> providedId = "ARCH-CONNECTED"; }
52
54
  attribute :>> name = "Connected";
53
55
  attribute :>> label = "Connected / IoT Device";
54
56
  attribute :>> description = "Remote monitoring, wearable, smart device with cloud connectivity and cybersecurity requirements";
@@ -59,7 +61,7 @@ package memo_methodology_archetypes {
59
61
  }
60
62
 
61
63
  part monitoring : Archetype {
62
- attribute :>> id = "ARCH-MONITORING";
64
+ @MemoIdentity { :>> providedId = "ARCH-MONITORING"; }
63
65
  attribute :>> name = "Monitoring";
64
66
  attribute :>> label = "Monitoring / Diagnostic Device";
65
67
  attribute :>> description = "Patient monitor, ECG, SpO2, vital signs, bedside diagnostic equipment";
@@ -70,7 +72,7 @@ package memo_methodology_archetypes {
70
72
  }
71
73
 
72
74
  part infusion_pump : Archetype {
73
- attribute :>> id = "ARCH-INFUSION";
75
+ @MemoIdentity { :>> providedId = "ARCH-INFUSION"; }
74
76
  attribute :>> name = "InfusionPump";
75
77
  attribute :>> label = "Infusion / Drug Delivery Device";
76
78
  attribute :>> description = "Infusion pump, syringe driver, implantable drug delivery, dosing device";
@@ -81,7 +83,7 @@ package memo_methodology_archetypes {
81
83
  }
82
84
 
83
85
  part blank : Archetype {
84
- attribute :>> id = "ARCH-BLANK";
86
+ @MemoIdentity { :>> providedId = "ARCH-BLANK"; }
85
87
  attribute :>> name = "Blank";
86
88
  attribute :>> label = "Blank Project";
87
89
  attribute :>> description = "Start from scratch with a minimal SysML shell";
@@ -113,14 +113,4 @@ package memo_methodology_core {
113
113
  // ── Relations owned by this package ─────────────────────────────
114
114
  // Moved out of memo_core_relationships: their ends are typed against
115
115
  // types declared here, and core must not depend on a domain package.
116
- connection def ResolvesToMethodology :> MemoRelationship {
117
- end boundModelElement : MemoPart :>> source;
118
- end resolvedMethodology : MethodologyDefinition :>> target;
119
- }
120
- abstract connection resolvesToMethodologyLinks : ResolvesToMethodology[*];
121
- metadata def <resolvesToMethodology> ResolvesToMethodologyMetadata :> SemanticMetadata {
122
- :> annotatedElement : SysML::ConnectionDefinition;
123
- :> annotatedElement : SysML::ConnectionUsage;
124
- :>> baseType = resolvesToMethodologyLinks meta SysML::Usage;
125
- }
126
116
  }
@@ -9,8 +9,10 @@ package memo_methodology_profiles {
9
9
  private import memo_core_enumerations::*;
10
10
  private import memo_core_methodology_scope::*;
11
11
 
12
+ private import memo_core_common::*;
13
+ private import memo_core_common::MemoIdentity;
12
14
  part mdCoreLibrary : MethodologyLibrary {
13
- attribute :>> id = "METHLIB-001";
15
+ @MemoIdentity { :>> providedId = "METHLIB-001"; }
14
16
  attribute :>> name = "MedicalDeviceMethodologyLibrary";
15
17
  attribute :>> version = "0.1";
16
18
  attribute :>> domain = "medical device modeling";
@@ -31,7 +33,7 @@ package memo_methodology_profiles {
31
33
  // that into `allAvailable` preserves the effective result and removes the
32
34
  // second scope authority.
33
35
  part mdDefaultDefinition : MethodologyDefinition {
34
- attribute :>> id = "METH-MD-DEFAULT";
36
+ @MemoIdentity { :>> providedId = "METH-MD-DEFAULT"; }
35
37
  attribute :>> name = "MedicalDeviceDefault";
36
38
  attribute :>> version = "0.6.5";
37
39
  attribute :>> domain = "medical device modeling";
@@ -40,7 +42,7 @@ package memo_methodology_profiles {
40
42
  }
41
43
 
42
44
  part useRiskAndResidualRule : ElementUsageRule {
43
- attribute :>> id = "RULE-001";
45
+ @MemoIdentity { :>> providedId = "RULE-001"; }
44
46
  attribute :>> name = "UseRiskAndResidualRisk";
45
47
  attribute :>> elementTypeName = "Risk,ResidualRisk,RiskMatrix";
46
48
  attribute :>> strength = RuleStrengthKind::recommended;
@@ -48,7 +50,7 @@ package memo_methodology_profiles {
48
50
  }
49
51
 
50
52
  part requireVerifiedByRule : RelationUsageRule {
51
- attribute :>> id = "RULE-002";
53
+ @MemoIdentity { :>> providedId = "RULE-002"; }
52
54
  attribute :>> name = "VerifiedBysRequired";
53
55
  attribute :>> relationTypeName = "verify";
54
56
  attribute :>> strength = RuleStrengthKind::required;
@@ -56,7 +58,7 @@ package memo_methodology_profiles {
56
58
  }
57
59
 
58
60
  part lightRiskPattern : ModelingPattern {
59
- attribute :>> id = "PAT-001";
61
+ @MemoIdentity { :>> providedId = "PAT-001"; }
60
62
  attribute :>> name = "LightRiskBeforeAfterPattern";
61
63
  attribute :>> intent = "Model hazard chain, before/after mitigation risk, controls, and residual evaluation in a lightweight way.";
62
64
  attribute :>> stage = WorkflowStageKind::risk;
@@ -64,7 +66,7 @@ package memo_methodology_profiles {
64
66
  }
65
67
 
66
68
  part lightTracePattern : ModelingPattern {
67
- attribute :>> id = "PAT-002";
69
+ @MemoIdentity { :>> providedId = "PAT-002"; }
68
70
  attribute :>> name = "CoreTracePattern";
69
71
  attribute :>> intent = "Need or risk to requirement, requirement to architecture, requirement/control to verification.";
70
72
  attribute :>> stage = WorkflowStageKind::requirements;
@@ -72,7 +74,7 @@ package memo_methodology_profiles {
72
74
  }
73
75
 
74
76
  action stepRequirements : MethodologyWorkflowStep {
75
- attribute :>> id = "STEP-001";
77
+ @MemoIdentity { :>> providedId = "STEP-001"; }
76
78
  attribute :>> name = "CaptureRequirements";
77
79
  attribute :>> stage = WorkflowStageKind::requirements;
78
80
  attribute :>> objectiveDescription = "Capture stakeholder needs and derive requirements.";
@@ -81,7 +83,7 @@ package memo_methodology_profiles {
81
83
  }
82
84
 
83
85
  action stepArchitecture : MethodologyWorkflowStep {
84
- attribute :>> id = "STEP-002";
86
+ @MemoIdentity { :>> providedId = "STEP-002"; }
85
87
  attribute :>> name = "DefineArchitecture";
86
88
  attribute :>> stage = WorkflowStageKind::architecture;
87
89
  attribute :>> objectiveDescription = "Define key software and hardware architecture elements and interfaces.";
@@ -90,7 +92,7 @@ package memo_methodology_profiles {
90
92
  }
91
93
 
92
94
  action stepRisk : MethodologyWorkflowStep {
93
- attribute :>> id = "STEP-003";
95
+ @MemoIdentity { :>> providedId = "STEP-003"; }
94
96
  attribute :>> name = "PerformRiskAnalysis";
95
97
  attribute :>> stage = WorkflowStageKind::risk;
96
98
  attribute :>> objectiveDescription = "Create core risk chain and controls.";
@@ -99,7 +101,7 @@ package memo_methodology_profiles {
99
101
  }
100
102
 
101
103
  action stepVerification : MethodologyWorkflowStep {
102
- attribute :>> id = "STEP-004";
104
+ @MemoIdentity { :>> providedId = "STEP-004"; }
103
105
  attribute :>> name = "PlanVerification";
104
106
  attribute :>> stage = WorkflowStageKind::verificationStage;
105
107
  attribute :>> objectiveDescription = "Define verification and evidence expectations.";
@@ -111,7 +113,7 @@ package memo_methodology_profiles {
111
113
  first stepRisk then stepVerification;
112
114
 
113
115
  part gateLightComplete : QualityGate {
114
- attribute :>> id = "GATE-001";
116
+ @MemoIdentity { :>> providedId = "GATE-001"; }
115
117
  attribute :>> name = "LightMethodReady";
116
118
  attribute :>> gateStage = WorkflowStageKind::verificationStage;
117
119
  attribute :>> passCriteria = "Core traceability, risk, verification, and RMF view support are present.";
@@ -123,7 +125,7 @@ package memo_methodology_profiles {
123
125
  // references its methodology with a typed SysML reference.
124
126
 
125
127
  part rmpDoc : DhfDocumentBinding {
126
- attribute :>> id = "DHF-001";
128
+ @MemoIdentity { :>> providedId = "DHF-001"; }
127
129
  attribute :>> name = "RiskManagementPlan";
128
130
  attribute :>> documentTitle = "Risk Management Plan";
129
131
  attribute :>> groupLabel = "Risk Management";
@@ -135,7 +137,7 @@ package memo_methodology_profiles {
135
137
  }
136
138
 
137
139
  part harDoc : DhfDocumentBinding {
138
- attribute :>> id = "DHF-002";
140
+ @MemoIdentity { :>> providedId = "DHF-002"; }
139
141
  attribute :>> name = "HazardAnalysisReport";
140
142
  attribute :>> documentTitle = "Hazard Analysis Report";
141
143
  attribute :>> groupLabel = "Risk Management";
@@ -147,7 +149,7 @@ package memo_methodology_profiles {
147
149
  }
148
150
 
149
151
  part sadDoc : DhfDocumentBinding {
150
- attribute :>> id = "DHF-003";
152
+ @MemoIdentity { :>> providedId = "DHF-003"; }
151
153
  attribute :>> name = "SoftwareArchitectureDescription";
152
154
  attribute :>> documentTitle = "Software Architecture Description";
153
155
  attribute :>> groupLabel = "Software";
@@ -159,7 +161,7 @@ package memo_methodology_profiles {
159
161
  }
160
162
 
161
163
  part threatModelDoc : DhfDocumentBinding {
162
- attribute :>> id = "DHF-004";
164
+ @MemoIdentity { :>> providedId = "DHF-004"; }
163
165
  attribute :>> name = "CybersecurityThreatModel";
164
166
  attribute :>> documentTitle = "Threat Model";
165
167
  attribute :>> groupLabel = "Cybersecurity";
@@ -171,7 +173,7 @@ package memo_methodology_profiles {
171
173
  }
172
174
 
173
175
  part vvPlanDoc : DhfDocumentBinding {
174
- attribute :>> id = "DHF-005";
176
+ @MemoIdentity { :>> providedId = "DHF-005"; }
175
177
  attribute :>> name = "VerificationValidationPlan";
176
178
  attribute :>> documentTitle = "V&V Plan";
177
179
  attribute :>> groupLabel = "Verification & Validation";
@@ -5,11 +5,11 @@ package memo_methodology_workflow {
5
5
  private import memo_core_enumerations::*;
6
6
 
7
7
  // Named for its axis: this is a step in a METHODOLOGY workflow (a lifecycle
8
- // stage with entry/exit criteria), distinct from
9
- // memo_architecture_operational_workflows::WorkflowStep, which is a step in
10
- // an OPERATIONAL workflow performed by users. The two carry different
11
- // attributes and must not share a short name — an overloaded name resolves
12
- // by load order and silently validates a usage against the wrong type.
8
+ // stage with entry/exit criteria), distinct from an OPERATIONAL workflow's
9
+ // steps, which are OperativeActions performed by users or the system. The
10
+ // two carry different attributes and must not share a short name — an
11
+ // overloaded name resolves by load order and silently validates a usage
12
+ // against the wrong type.
13
13
  action def MethodologyWorkflowStep :> MemoAction {
14
14
  attribute stage : WorkflowStageKind;
15
15
  attribute objectiveDescription : String;