@memoarchitect/ontology 0.8.24 → 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 (182) hide show
  1. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
  2. package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
  3. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +9 -7
  4. package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
  5. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +8 -6
  6. package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
  7. package/examples/gpca-pump/memo.identity.yaml +2179 -0
  8. package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
  9. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
  10. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
  11. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
  12. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
  13. package/examples/gpca-pump/model/catalog/gpca_context.sysml +22 -20
  14. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -13
  15. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
  16. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
  17. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +121 -125
  18. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
  19. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
  20. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
  21. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
  22. package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -14
  23. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -8
  24. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
  25. package/examples/gpca-pump/model/catalog/project.sysml +3 -1
  26. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +6 -4
  27. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +5 -3
  28. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +5 -3
  29. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +5 -3
  30. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +5 -3
  31. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +5 -3
  32. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +5 -3
  33. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +5 -3
  34. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +5 -3
  35. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +5 -3
  36. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +5 -3
  37. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +5 -3
  38. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +5 -3
  39. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +5 -3
  40. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +5 -3
  41. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -3
  42. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +5 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -3
  44. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -3
  45. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +5 -3
  46. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +5 -3
  47. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +5 -3
  48. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +5 -3
  49. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +6 -4
  50. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -3
  51. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +5 -3
  52. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +9 -7
  53. package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
  54. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +6 -4
  55. package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
  56. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
  57. package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
  58. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
  59. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
  60. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
  61. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
  62. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
  63. package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
  64. package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
  65. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +17 -16
  66. package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
  67. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
  68. package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
  69. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +10 -8
  70. package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
  71. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +51 -51
  72. package/examples/surgical-robot/model/catalog/project.sysml +3 -1
  73. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
  74. package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
  75. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -8
  76. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -5
  77. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +3 -1
  78. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +2 -1
  79. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +3 -1
  80. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +8 -6
  81. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +3 -1
  82. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +2 -1
  83. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +3 -1
  84. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +11 -7
  85. package/examples/temperature-alarm/memo.identity.yaml +64 -0
  86. package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
  87. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +27 -22
  88. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
  89. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
  90. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
  91. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
  92. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
  93. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
  94. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
  95. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
  96. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
  97. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
  98. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
  99. package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
  100. package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
  101. package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
  102. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +5 -3
  103. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +5 -3
  104. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +5 -3
  105. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +3 -1
  106. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +3 -1
  107. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +3 -1
  108. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
  109. package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
  110. package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
  111. package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
  112. package/extensions/container/src/methodology/container_methodology.sysml +3 -1
  113. package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
  114. package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
  115. package/extensions/template/src/extension.sysml +3 -1
  116. package/package.json +2 -2
  117. package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
  118. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
  119. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
  120. package/src/architecture/implementation/ui/memo_ui.sysml +0 -23
  121. package/src/architecture/logical/interfaces/memo_interfaces.sysml +3 -1
  122. package/src/architecture/operational/context/use_context/memo_use_context.sysml +3 -11
  123. package/src/architecture/operational/scenarios/memo_scenarios.sysml +0 -10
  124. package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -11
  125. package/src/architecture/operational/workflows/memo_workflows.sysml +0 -20
  126. package/src/architecture/realization/deployment/memo_deployment.sysml +16 -9
  127. package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
  128. package/src/artifacts/standards/cfr_21_820.sysml +80 -89
  129. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
  130. package/src/artifacts/standards/iec_60601_1.sysml +108 -121
  131. package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
  132. package/src/artifacts/standards/iec_60812.sysml +21 -22
  133. package/src/artifacts/standards/iec_62304.sysml +150 -169
  134. package/src/artifacts/standards/iec_62366_1.sysml +80 -89
  135. package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
  136. package/src/artifacts/standards/iso_13485.sysml +80 -89
  137. package/src/artifacts/standards/iso_14971.sysml +66 -73
  138. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
  139. package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
  140. package/src/core/common/memo_common.sysml +50 -50
  141. package/src/core/enumerations/memo_enumerations.sysml +1 -1
  142. package/src/core/relationships/memo_relationships.sysml +22 -49
  143. package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
  144. package/src/methodology/core/memo_core.sysml +0 -10
  145. package/src/methodology/profiles/memo_profiles.sysml +18 -16
  146. package/src/rules/closure/closure_rules.sysml +22 -20
  147. package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
  148. package/src/rules/ontology/ontology_invariants.sysml +106 -33
  149. package/src/rules/quantitative/quantitative_rules.sysml +4 -2
  150. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -28
  151. package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
  152. package/src/viewpoints/context/context_viewpoint.sysml +5 -3
  153. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +5 -3
  154. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
  155. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -16
  156. package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
  157. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +5 -3
  158. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +5 -3
  159. package/src/viewpoints/logical/logical_viewpoint.sysml +4 -2
  160. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +5 -3
  161. package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
  162. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +5 -3
  163. package/src/viewpoints/physical/physical_viewpoint.sysml +4 -2
  164. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +5 -3
  165. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +5 -3
  166. package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
  167. package/src/viewpoints/requirements/requirements_viewpoint.sysml +4 -2
  168. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +5 -3
  169. package/src/viewpoints/risk/risk_viewpoint.sysml +4 -2
  170. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +5 -3
  171. package/src/viewpoints/software/software_viewpoint.sysml +4 -2
  172. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +5 -3
  173. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -2
  174. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
  175. package/src/viewpoints/usability/usability_viewpoint.sysml +4 -2
  176. package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
  177. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +5 -3
  178. package/templates/connected-device/model/catalog/project.sysml +3 -1
  179. package/templates/default/model/catalog/project.sysml +3 -1
  180. package/templates/infusion-pump/model/catalog/project.sysml +3 -1
  181. package/templates/monitoring-device/model/catalog/project.sysml +3 -1
  182. package/templates/samd/model/catalog/project.sysml +3 -1
@@ -12,6 +12,8 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_context_
12
12
  private import memo_viewpoints_context_context_viewpoint::*;
13
13
  private import memo_core_enumerations::*;
14
14
 
15
+ private import memo_core_common::*;
16
+ private import memo_core_common::MemoIdentity;
15
17
  // The operational system of interest is intentionally represented as one
16
18
  // black box. Context diagrams show its environment and interfaces, not its
17
19
  // internal decomposition.
@@ -29,9 +31,9 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_context_
29
31
  }
30
32
  part homeContext : UseContext { attribute :>> name = "Home Care Environment"; }
31
33
 
32
- connection : InteractsWith connect contextParticipant ::> clinician to target ::> infusionSystem;
33
- connection : InteractsWith connect contextParticipant ::> patient to target ::> infusionSystem;
34
- connection : InteractsWith connect contextParticipant ::> biomedTech to target ::> infusionSystem;
34
+ connection connect clinician to infusionSystem;
35
+ connection connect patient to infusionSystem;
36
+ connection connect biomedTech to infusionSystem;
35
37
  flow from infusionSystem to pharmacySystem;
36
38
  connection : AppliesInContext connect useContext ::> homeContext to subjectElement ::> infusionSystem;
37
39
 
@@ -43,12 +45,12 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_context_
43
45
  expose pharmacySystem;
44
46
  expose homeContext;
45
47
  attribute depth = 1;
46
- attribute :>> shortDescription = "Operational system context: one black-box system boundary, its external people, peer systems, operating environment, and named boundary-crossing interactions.";
48
+ @MemoIdentity { :>> shortDescription = "Operational system context: one black-box system boundary, its external people, peer systems, operating environment, and named boundary-crossing interactions."; }
47
49
  attribute :>> viewKind = DiagramViewKind::general;
48
50
  attribute :>> diagramType = "context";
49
51
  ref :>> viewpointDefinition = contextViewpoint;
50
52
  part :>> selectionQuery {
51
- attribute :>> includeRelationshipKinds = ("InteractsWith", "flow", "AppliesInContext");
53
+ attribute :>> includeRelationshipKinds = ("connect", "flow", "AppliesInContext");
52
54
  }
53
55
  }
54
56
  }
@@ -9,6 +9,8 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_function
9
9
  private import memo_viewpoints_functional_functional_viewpoint::*;
10
10
  private import memo_core_enumerations::*;
11
11
 
12
+ private import memo_core_common::*;
13
+ private import memo_core_common::MemoIdentity;
12
14
  // ─────────────────────────────────────────────────────────────────────────
13
15
  // Sample · Functional flow — component behaviour of dose delivery
14
16
  //
@@ -134,7 +136,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_function
134
136
  expose fxDeliveryFlow::**;
135
137
  expose fxPumpSystem::**;
136
138
  attribute depth = 2;
137
- attribute :>> shortDescription = "Component behaviour: functions in swimlanes per realising component, typed data/energy/material flows, a fork/join for concurrent occlusion monitoring, and a composite 'Deliver Medication' valve sub-flow (double-click to drill in).";
139
+ @MemoIdentity { :>> shortDescription = "Component behaviour: functions in swimlanes per realising component, typed data/energy/material flows, a fork/join for concurrent occlusion monitoring, and a composite 'Deliver Medication' valve sub-flow (double-click to drill in)."; }
138
140
  attribute :>> viewKind = DiagramViewKind::actionflow;
139
141
  attribute :>> diagramType = "ffd";
140
142
  ref :>> viewpointDefinition = functionalViewpoint;
@@ -11,6 +11,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_intercon
11
11
  private import memo_viewpoints_logical_logical_viewpoint::*;
12
12
  private import memo_core_enumerations::*;
13
13
 
14
+ private import memo_core_common::MemoIdentity;
14
15
  // Ports are owned by the part whose boundary they are, which is what lets
15
16
  // a delegation be written at all: SysML v2 checks a flow's source for
16
17
  // `out`-ness relative to the owner, so a boundary port only reads as a
@@ -75,7 +76,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_intercon
75
76
  expose waterSupply::**;
76
77
  expose cup::**;
77
78
  attribute depth = 2;
78
- attribute :>> shortDescription = "Balanced internal architecture with readable boundary ports, nested service diagnostics, and external water and beverage interfaces.";
79
+ @MemoIdentity { :>> shortDescription = "Balanced internal architecture with readable boundary ports, nested service diagnostics, and external water and beverage interfaces."; }
79
80
  attribute :>> viewKind = DiagramViewKind::interconnection;
80
81
  attribute :>> diagramType = "ibd";
81
82
  ref :>> viewpointDefinition = logicalArchitectureViewpoint;
@@ -9,6 +9,8 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_operatio
9
9
  private import memo_viewpoints_operational_operational_viewpoint::*;
10
10
  private import memo_core_enumerations::*;
11
11
 
12
+ private import memo_core_common::*;
13
+ private import memo_core_common::MemoIdentity;
12
14
  // Operational activity across clinical roles. The fixture is intentionally
13
15
  // product-neutral and belongs only to the diagram-samples project.
14
16
  item def OpPrescription specializes InterfaceItem {
@@ -100,7 +102,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_operatio
100
102
  expose opSetupFlow::**;
101
103
  expose opCareSystem::**;
102
104
  attribute depth = 2;
103
- attribute :>> shortDescription = "Operational activity across clinical roles with concurrent preparation and a composite therapy step.";
105
+ @MemoIdentity { :>> shortDescription = "Operational activity across clinical roles with concurrent preparation and a composite therapy step."; }
104
106
  attribute :>> viewKind = DiagramViewKind::actionflow;
105
107
  attribute :>> diagramType = "ofd";
106
108
  ref :>> viewpointDefinition = operationalViewpoint;
@@ -11,30 +11,32 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_requirem
11
11
  private import memo_viewpoints_requirements_requirements_viewpoint::*;
12
12
  private import memo_core_enumerations::*;
13
13
 
14
+ private import memo_core_common::*;
15
+ private import memo_core_common::MemoIdentity;
14
16
  requirement needSafeTherapy : Need {
15
17
  attribute :>> needKind = NeedKind::'stakeholder';
16
- attribute :>> id = "NEED-001"; attribute :>> name = "SafeTherapy";
18
+ @MemoIdentity { :>> providedId = "NEED-001"; } attribute :>> name = "SafeTherapy";
17
19
  attribute :>> statement = "The device shall support safe patient-controlled infusion therapy.";
18
20
  }
19
21
  requirement needTimelyAlarms : Need {
20
22
  attribute :>> needKind = NeedKind::'stakeholder';
21
- attribute :>> id = "NEED-002"; attribute :>> name = "TimelyAlarms";
23
+ @MemoIdentity { :>> providedId = "NEED-002"; } attribute :>> name = "TimelyAlarms";
22
24
  attribute :>> statement = "Clinicians shall be notified promptly of any condition that endangers therapy.";
23
25
  }
24
26
 
25
27
  requirement reqDoseLimit : Requirement {
26
28
  attribute :>> requirementKind = RequirementKind::system;
27
- attribute :>> id = "REQ-001"; attribute :>> name = "DoseLimitEnforcement";
29
+ @MemoIdentity { :>> providedId = "REQ-001"; } attribute :>> name = "DoseLimitEnforcement";
28
30
  attribute :>> statement = "The pump shall not deliver more than the prescribed maximum dose in any one-hour window.";
29
31
  }
30
32
  requirement reqOcclusionAlarm : Requirement {
31
33
  attribute :>> requirementKind = RequirementKind::system;
32
- attribute :>> id = "REQ-002"; attribute :>> name = "OcclusionAlarm";
34
+ @MemoIdentity { :>> providedId = "REQ-002"; } attribute :>> name = "OcclusionAlarm";
33
35
  attribute :>> statement = "The pump shall raise an alarm within two seconds of detecting a downstream occlusion.";
34
36
  }
35
37
  requirement reqAlarmLoudness : Requirement {
36
38
  attribute :>> requirementKind = RequirementKind::system;
37
- attribute :>> id = "REQ-003"; attribute :>> name = "AlarmLoudness";
39
+ @MemoIdentity { :>> providedId = "REQ-003"; } attribute :>> name = "AlarmLoudness";
38
40
  attribute :>> statement = "An active alarm shall be audible at 65 dBA at one metre.";
39
41
  }
40
42
 
@@ -50,7 +52,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_requirem
50
52
  expose reqOcclusionAlarm;
51
53
  expose reqAlarmLoudness;
52
54
  attribute depth = 1;
53
- attribute :>> shortDescription = "Stakeholder needs deriving into system requirements, wired by DerivesFrom trace edges.";
55
+ @MemoIdentity { :>> shortDescription = "Stakeholder needs deriving into system requirements, wired by DerivesFrom trace edges."; }
54
56
  attribute :>> viewKind = DiagramViewKind::general;
55
57
  attribute :>> diagramType = "req";
56
58
  ref :>> viewpointDefinition = requirementsViewpoint;
@@ -21,10 +21,12 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_standard
21
21
 
22
22
  private import activity_example::*;
23
23
 
24
+ private import memo_core_common::*;
25
+ private import memo_core_common::MemoIdentity;
24
26
  view standardActivityView : MemoDiagramView {
25
27
  expose CustomerProcess::**;
26
28
  attribute depth = 2;
27
- attribute :>> shortDescription = "Customer login, guarded validation, shopping loop, checkout, credit approval, and explicit completion outcomes.";
29
+ @MemoIdentity { :>> shortDescription = "Customer login, guarded validation, shopping loop, checkout, credit approval, and explicit completion outcomes."; }
28
30
  attribute :>> viewKind = DiagramViewKind::actionflow;
29
31
  attribute :>> diagramType = "afd";
30
32
  ref :>> viewpointDefinition = functionalViewpoint;
@@ -11,6 +11,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_state_tr
11
11
  private import memo_core_enumerations::*;
12
12
  private import memo_core_common::*;
13
13
 
14
+ private import memo_core_common::MemoIdentity;
14
15
  state pumpModes : StateMachine {
15
16
  attribute :>> name = "Pump Operating Modes";
16
17
 
@@ -64,7 +65,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_state_tr
64
65
  view sampleStateTransitionView : MemoDiagramView {
65
66
  expose pumpModes::**;
66
67
  attribute depth = 2;
67
- attribute :>> shortDescription = "A pump-mode state machine — Idle, Infusing, Paused, Alarm — where Infusing is a composite state nesting Priming, Delivering and Holding.";
68
+ @MemoIdentity { :>> shortDescription = "A pump-mode state machine — Idle, Infusing, Paused, Alarm — where Infusing is a composite state nesting Priming, Delivering and Holding."; }
68
69
  attribute :>> viewKind = DiagramViewKind::statetransition;
69
70
  attribute :>> diagramType = "stm";
70
71
  ref :>> viewpointDefinition = functionalViewpoint;
@@ -8,6 +8,8 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_tree_vie
8
8
  private import memo_viewpoints_physical_physical_viewpoint::*;
9
9
  private import memo_core_enumerations::*;
10
10
 
11
+ private import memo_core_common::*;
12
+ private import memo_core_common::MemoIdentity;
11
13
  part rootA : HardwareAssembly {
12
14
  attribute :>> name = "Root A";
13
15
  part branchA1 : HardwareAssembly {
@@ -34,7 +36,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_tree_vie
34
36
  view sampleTreeView : MemoDiagramView {
35
37
  expose rootA::**;
36
38
  attribute depth = 2;
37
- attribute :>> shortDescription = "One connected dummy hierarchy with varied branch depths for tree layout development.";
39
+ @MemoIdentity { :>> shortDescription = "One connected dummy hierarchy with varied branch depths for tree layout development."; }
38
40
  attribute :>> viewKind = DiagramViewKind::general;
39
41
  attribute :>> diagramType = "bdd";
40
42
  ref :>> viewpointDefinition = physicalViewpoint;
@@ -7,6 +7,8 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case
7
7
  private import memo_viewpoints_operational_operational_viewpoint::*;
8
8
  private import memo_core_enumerations::*;
9
9
 
10
+ private import memo_core_common::*;
11
+ private import memo_core_common::MemoIdentity;
10
12
  // Product-neutral fixture for the UML-style use-case presentation.
11
13
  part patient : User {
12
14
  attribute :>> actorKind = ActorKind::patient;
@@ -22,7 +24,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case
22
24
  }
23
25
 
24
26
  use case reviewStatus : UseCase {
25
- attribute :>> id = "UC-SAMPLE-001";
27
+ @MemoIdentity { :>> providedId = "UC-SAMPLE-001"; }
26
28
  attribute :>> name = "Review Device Status";
27
29
  attribute :>> useCaseKind = UseCaseKind::clinical;
28
30
  include validateTherapySettings;
@@ -30,7 +32,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case
30
32
  actor patientActor = patient;
31
33
  }
32
34
  use case configureTherapy : UseCase {
33
- attribute :>> id = "UC-SAMPLE-002";
35
+ @MemoIdentity { :>> providedId = "UC-SAMPLE-002"; }
34
36
  attribute :>> name = "Configure Therapy";
35
37
  attribute :>> useCaseKind = UseCaseKind::clinical;
36
38
  include reviewStatus;
@@ -39,7 +41,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case
39
41
  actor patientActor = patient;
40
42
  }
41
43
  use case maintainDevice : UseCase {
42
- attribute :>> id = "UC-SAMPLE-003";
44
+ @MemoIdentity { :>> providedId = "UC-SAMPLE-003"; }
43
45
  attribute :>> name = "Maintain Device";
44
46
  attribute :>> useCaseKind = UseCaseKind::service;
45
47
  subject supportingSystem;
@@ -47,21 +49,23 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case
47
49
  }
48
50
 
49
51
  use case documentTreatment : UseCase {
50
- attribute :>> id = "UC-SAMPLE-004";
52
+ @MemoIdentity { :>> providedId = "UC-SAMPLE-004"; }
51
53
  attribute :>> name = "Document Treatment";
52
54
  attribute :>> useCaseKind = UseCaseKind::clinical;
53
55
  }
54
56
 
55
57
  // L2 child of Review Device Status: makes L0 → L1 → L2 selectable.
56
58
  use case validateTherapySettings : UseCase {
57
- attribute :>> id = "UC-SAMPLE-005";
59
+ @MemoIdentity { :>> providedId = "UC-SAMPLE-005"; }
58
60
  attribute :>> name = "Validate Therapy Settings";
59
61
  attribute :>> useCaseKind = UseCaseKind::clinical;
60
62
  subject supportingSystem;
61
63
  actor clinicianActor = clinician;
62
64
  }
63
65
 
64
- connection : Extends connect extendingUseCase ::> documentTreatment to extendedUseCase ::> reviewStatus;
66
+ // Was an `Extends` connection; a use case extending another is
67
+ // specialization, and `:>` inherits the base's subject and actors.
68
+ dependency from documentTreatment to reviewStatus;
65
69
 
66
70
  view sampleUseCaseView : MemoDiagramView {
67
71
  expose patient;
@@ -72,7 +76,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case
72
76
  expose maintainDevice;
73
77
  expose documentTreatment;
74
78
  expose validateTherapySettings;
75
- attribute :>> shortDescription = "Actors outside a device boundary with include, extend, hierarchy-level, and orthogonal-routing presentation.";
79
+ @MemoIdentity { :>> shortDescription = "Actors outside a device boundary with include, extend, hierarchy-level, and orthogonal-routing presentation."; }
76
80
  attribute :>> viewKind = DiagramViewKind::general;
77
81
  attribute :>> diagramType = "ucd";
78
82
  ref :>> viewpointDefinition = operationalViewpoint;
@@ -0,0 +1,64 @@
1
+ # memo.identity.yaml — element identity registry (auto-generated)
2
+ # Assigned once and never reassigned. COMMIT THIS FILE: deleting it does
3
+ # not regenerate the same identities, it mints new ones, and every
4
+ # external reference to a shortId or uuid then points at nothing.
5
+ # Entries for deleted elements are retained so their numbers stay retired.
6
+
7
+ elements:
8
+ "memo_examples_temperature_alarm::actAcknowledgeAlarm":
9
+ shortId: "OPR-1"
10
+ uuid: "ea2b4f6a-a25b-5c93-84a2-2c149dc5b870"
11
+ "memo_examples_temperature_alarm::chMonitor":
12
+ shortId: "LGC-1"
13
+ uuid: "0f804fdc-4ead-5205-a108-91ce7e4b4d04"
14
+ "memo_examples_temperature_alarm::chPrimary":
15
+ shortId: "LGC-2"
16
+ uuid: "be43f8c3-dbdc-505e-8c8e-b62571f179fb"
17
+ "memo_examples_temperature_alarm::elAlarmBanner":
18
+ shortId: "UIE-1"
19
+ uuid: "cb4a788e-08c4-5ac7-b68e-25fcbac3af7e"
20
+ "memo_examples_temperature_alarm::evLatencyReport":
21
+ shortId: "MMX-1"
22
+ uuid: "6ed38946-dcb2-5c1b-b97d-58db3d0c884c"
23
+ "memo_examples_temperature_alarm::fnDetectDeviation":
24
+ shortId: "SYS-1"
25
+ uuid: "b22e14c8-57b0-5ed9-8167-5a1a35e2e7e3"
26
+ "memo_examples_temperature_alarm::hzUndetectedDeviation":
27
+ shortId: "HZD-1"
28
+ uuid: "f7884ad4-503c-5eb1-a779-f02d4602817a"
29
+ "memo_examples_temperature_alarm::icuNurse":
30
+ shortId: "USR-1"
31
+ uuid: "f7b9403f-66c9-55f4-b6f5-a0f78c055260"
32
+ "memo_examples_temperature_alarm::rcReAnnunciate":
33
+ shortId: "RSK-1"
34
+ uuid: "6f1dbdd1-5eef-54e0-81d4-78a4001af7b3"
35
+ "memo_examples_temperature_alarm::taskAckAlarm":
36
+ shortId: "OPR-2"
37
+ uuid: "2a25bec5-50f6-5bef-ad59-750b277515db"
38
+ "memo_examples_temperature_alarm::ucMonitorTemp":
39
+ shortId: "USE-1"
40
+ uuid: "3e0d59fc-eda9-581e-a7d8-aafb2f466ea5"
41
+ "memo_examples_temperature_alarm::ueSilenceAndForget":
42
+ shortId: "USE-2"
43
+ uuid: "74eae9e0-1297-5ba9-b38c-b3500ce7745c"
44
+ "memo_examples_temperature_alarm::uiBedside":
45
+ shortId: "USR-2"
46
+ uuid: "664f0cf3-a7f3-536b-a078-470be588e6f3"
47
+ "memo_examples_temperature_alarm::uiaAcknowledge":
48
+ shortId: "UXX-1"
49
+ uuid: "bbcaba4d-4cb7-554c-8797-6e27f6dacfcb"
50
+ "memo_examples_temperature_alarm::uvAckTask":
51
+ shortId: "MMX-3"
52
+ uuid: "d268c19e-41da-5657-ac04-2f9bcdc29713"
53
+ "memo_examples_temperature_alarm::vcAlarmLatency":
54
+ shortId: "VRF-1"
55
+ uuid: "e4853bd5-0672-5040-af70-0c7f9177ee7a"
56
+ "memo_examples_temperature_alarm::vsAlarmLatency":
57
+ shortId: "OPR-3"
58
+ uuid: "a66d2a6f-8b2e-5302-a2e2-14a32f08e85e"
59
+ "memo_examples_temperature_alarm_project::projectBinding":
60
+ shortId: "PRJ-1"
61
+ uuid: "27e78a8e-0e34-5569-8d7d-06c416fbbbd6"
62
+ "memo_examples_temperature_alarm_viewpoints_unassigned_views_temperature_alarm_overview::temperatureAlarmOverview":
63
+ shortId: "MMX-2"
64
+ uuid: "e9653f71-dc0b-55aa-951c-469b402afad3"
@@ -14,8 +14,10 @@ package memo_examples_temperature_alarm_project {
14
14
  private import memo_examples_temperature_alarm_viewpoints_unassigned::*;
15
15
  private import memo_examples_temperature_alarm_viewpoints_unassigned_views_temperature_alarm_overview::*;
16
16
 
17
+ private import memo_core_common::*;
18
+ private import memo_core_common::MemoIdentity;
17
19
  part projectBinding : ProjectMethodBinding {
18
- attribute :>> id = "PMB-TEMPERATURE-ALARM-001";
20
+ @MemoIdentity { :>> providedId = "PMB-TEMPERATURE-ALARM-001"; }
19
21
  attribute :>> name = "TemperatureAlarmProjectMethodBinding";
20
22
  attribute :>> projectName = "Temperature Alarm";
21
23
  ref :>> selectedMethodology = mdDefaultDefinition;
@@ -25,26 +25,27 @@ package memo_examples_temperature_alarm {
25
25
  private import memo_core_relationships::*;
26
26
  private import memo_assurance_safety_risk_analysis::*;
27
27
 
28
+ private import memo_core_common::MemoIdentity;
28
29
  // ── Operational intent ──────────────────────────────────────
29
30
  part icuNurse : User {
30
31
  attribute :>> actorKind = ActorKind::clinician;
31
- attribute :>> id = "TA-USR-001"; attribute :>> name = "ICUNurse";
32
+ @MemoIdentity { :>> providedId = "TA-USR-001"; } attribute :>> name = "ICUNurse";
32
33
  }
33
34
  use case ucMonitorTemp : UseCase {
34
35
  attribute :>> useCaseKind = UseCaseKind::clinical;
35
- attribute :>> id = "TA-UC-001";
36
+ @MemoIdentity { :>> providedId = "TA-UC-001"; }
36
37
  attribute :>> name = "MonitorPatientTemperature";
37
38
  attribute :>> goalStatement = "Continuously monitor core temperature and be alerted when it leaves the safe range.";
38
39
  subject supportingSystem;
39
40
  actor icuNurseInitiator = icuNurse;
40
41
  }
41
42
  action actAcknowledgeAlarm : OperativeAction {
42
- attribute :>> id = "TA-ACT-001"; attribute :>> name = "ReviewAndAcknowledgeAlarm";
43
+ @MemoIdentity { :>> providedId = "TA-ACT-001"; } attribute :>> name = "ReviewAndAcknowledgeAlarm";
43
44
  attribute :>> criticality = CriticalityKind::high;
44
45
 
45
46
  action taskAckAlarm : OperativeAction {
46
47
  attribute :>> criticality = CriticalityKind::high;
47
- attribute :>> id = "TA-TASK-001"; attribute :>> name = "AcknowledgeTemperatureAlarm";
48
+ @MemoIdentity { :>> providedId = "TA-TASK-001"; } attribute :>> name = "AcknowledgeTemperatureAlarm";
48
49
  attribute :>> taskGoal = "recognize, assess, and acknowledge the alarm";
49
50
  attribute :>> potentialHarm = "delayed intervention for hypo-/hyperthermia";
50
51
  attribute :>> severityIfFailed = SeverityKind::serious;
@@ -53,18 +54,18 @@ package memo_examples_temperature_alarm {
53
54
 
54
55
  // ── Functional and logical slices ───────────────────────────
55
56
  action fnDetectDeviation : SystemFunction {
56
- attribute :>> id = "TA-FN-001"; attribute :>> name = "DetectTemperatureDeviation";
57
+ @MemoIdentity { :>> providedId = "TA-FN-001"; } attribute :>> name = "DetectTemperatureDeviation";
57
58
  attribute :>> criticality = CriticalityKind::high;
58
59
  // This function is owned by the functional architecture layer (its
59
60
  // package). Its safety and verification character are typed
60
61
  // relationships to assurance-owned elements, not tags on the function.
61
62
  }
62
63
  part chMonitor : LogicalComponent {
63
- attribute :>> id = "TA-LC-001"; attribute :>> name = "TemperatureMonitorChannel";
64
+ @MemoIdentity { :>> providedId = "TA-LC-001"; } attribute :>> name = "TemperatureMonitorChannel";
64
65
  attribute :>> channelRole = ChannelRoleKind::monitor;
65
66
  }
66
67
  part chPrimary : LogicalComponent {
67
- attribute :>> id = "TA-LC-002"; attribute :>> name = "MeasurementChannel";
68
+ @MemoIdentity { :>> providedId = "TA-LC-002"; } attribute :>> name = "MeasurementChannel";
68
69
  attribute :>> channelRole = ChannelRoleKind::primary;
69
70
  }
70
71
  connection : IndependentOf connect channel ::> chMonitor to otherChannel ::> chPrimary {
@@ -73,38 +74,40 @@ package memo_examples_temperature_alarm {
73
74
  allocate fnDetectDeviation to chMonitor;
74
75
  // ── UI: alarm element and acknowledgement action ────────────
75
76
  part uiBedside : UserInterface {
76
- attribute :>> id = "TA-UI-001"; attribute :>> name = "BedsideDisplay";
77
+ @MemoIdentity { :>> providedId = "TA-UI-001"; } attribute :>> name = "BedsideDisplay";
77
78
  attribute :>> modality = "visual + audible";
78
79
  }
79
80
  part elAlarmBanner : UIElement {
80
- attribute :>> id = "TA-EL-001"; attribute :>> name = "TempAlarmBanner";
81
+ @MemoIdentity { :>> providedId = "TA-EL-001"; } attribute :>> name = "TempAlarmBanner";
81
82
  attribute :>> alarmPriority = NotificationPriorityKind::high;
82
83
  attribute :>> annunciationModality = "flashing banner + tone";
83
84
  attribute :>> silenceable = true;
84
85
  }
85
86
  action uiaAcknowledge : UIAction {
86
- attribute :>> id = "TA-UIA-001"; attribute :>> name = "AcknowledgeAlarm";
87
+ @MemoIdentity { :>> providedId = "TA-UIA-001"; } attribute :>> name = "AcknowledgeAlarm";
87
88
  attribute :>> intent = InteractionIntentKind::acknowledgement;
88
89
  attribute :>> confirmationRequired = true;
89
90
  perform fnDetectDeviation;
90
91
  }
91
92
  connection : ElementTriggersAction connect element ::> elAlarmBanner to triggeredAction ::> uiaAcknowledge;
92
- connection : Supports { connect supporter ::> uiBedside to supported ::> actAcknowledgeAlarm.taskAckAlarm; }
93
+ // Was `Supports`, a zero-attribute duplicate of both `Enables` and the
94
+ // native `dependency`.
95
+ dependency from uiBedside to actAcknowledgeAlarm::taskAckAlarm;
93
96
 
94
97
  // ── Risk chain with use error ───────────────────────────────
95
98
  part ueSilenceAndForget : UseError {
96
- attribute :>> id = "TA-UE-001"; attribute :>> name = "SilenceWithoutAssessment";
99
+ @MemoIdentity { :>> providedId = "TA-UE-001"; } attribute :>> name = "SilenceWithoutAssessment";
97
100
  attribute :>> errorCategory = UseErrorCategoryKind::memoryRecall;
98
101
  attribute :>> severity = SeverityKind::serious;
99
102
  }
100
103
  item hzUndetectedDeviation : Hazard {
101
- attribute :>> id = "TA-HZ-001"; attribute :>> name = "UndetectedTemperatureDeviation";
104
+ @MemoIdentity { :>> providedId = "TA-HZ-001"; } attribute :>> name = "UndetectedTemperatureDeviation";
102
105
  attribute :>> hazardType = HazardTypeKind::informationError;
103
106
  attribute :>> severity = SeverityKind::serious;
104
107
  attribute :>> foreseeable = true;
105
108
  }
106
109
  part rcReAnnunciate : RiskControlMeasure {
107
- attribute :>> id = "TA-RC-001"; attribute :>> name = "AutoReAnnunciationAfterSilence";
110
+ @MemoIdentity { :>> providedId = "TA-RC-001"; } attribute :>> name = "AutoReAnnunciationAfterSilence";
108
111
  attribute :>> controlKind = RiskControlKind::alarm;
109
112
  attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
110
113
  }
@@ -115,30 +118,32 @@ package memo_examples_temperature_alarm {
115
118
 
116
119
  // ── Verification, validation, evidence ──────────────────────
117
120
  action vsAlarmLatency : OperativeScenario {
118
- attribute :>> id = "TA-VS-001"; attribute :>> name = "AlarmLatencyScenario";
121
+ @MemoIdentity { :>> providedId = "TA-VS-001"; } attribute :>> name = "AlarmLatencyScenario";
119
122
  attribute :>> pathSummary = "Induce out-of-range temperature; measure detection-to-annunciation latency.";
120
123
  }
121
124
  verification vcAlarmLatency : VerificationCase {
122
- attribute :>> id = "TA-VC-001"; attribute :>> name = "VerifyAlarmLatency";
123
- attribute :>> methodKind = VerificationMethodKind::test;
125
+ @MemoIdentity { :>> providedId = "TA-VC-001"; } attribute :>> name = "VerifyAlarmLatency";
126
+ attribute :>> methodKind = MemoVerificationMethodKind::test;
124
127
  attribute :>> acceptanceCriteria = "annunciation within 2 s of sustained deviation";
125
128
 
126
129
  subject verified : Base::Anything[*] = (fnDetectDeviation);
130
+
131
+ // Native `perform`: OperativeScenario is an action def, so executing a
132
+ // scenario is the language's own perform-action, not a MEMO relation.
133
+ perform vsAlarmLatency;
127
134
  }
128
135
  part uvAckTask : MemoEvidence {
129
136
  attribute :>> evidenceKind = EvidenceKind::usabilityValidation;
130
- attribute :>> id = "TA-UV-001"; attribute :>> name = "SummativeAlarmAcknowledgement";
137
+ @MemoIdentity { :>> providedId = "TA-UV-001"; } attribute :>> name = "SummativeAlarmAcknowledgement";
131
138
  attribute :>> participantProfile = "15 ICU nurses, representative shift conditions";
132
139
  attribute :>> participantCount = 15;
133
140
  attribute :>> acceptanceCriteria = "no critical-task failures; all alarms assessed before silencing";
134
141
  }
135
142
  part evLatencyReport : MemoEvidence {
136
143
  attribute :>> evidenceKind = EvidenceKind::evidence;
137
- attribute :>> id = "TA-EV-001"; attribute :>> name = "AlarmLatencyTestReport";
144
+ @MemoIdentity { :>> providedId = "TA-EV-001"; } attribute :>> name = "AlarmLatencyTestReport";
138
145
  attribute :>> evidenceType = "test report";
139
146
  }
140
- connection : ExecutesScenario connect verificationCase ::> vcAlarmLatency to scenario ::> vsAlarmLatency;
141
-
142
- connection : Validates connect validationCase ::> uvAckTask to validationTarget ::> actAcknowledgeAlarm.taskAckAlarm;
147
+ connection : Validates connect validationTarget ::> actAcknowledgeAlarm.taskAckAlarm to validationCase ::> uvAckTask;
143
148
  connection : ProducesEvidence connect producer ::> vcAlarmLatency to producedEvidence ::> evLatencyReport;
144
149
  }
@@ -16,43 +16,45 @@ package memo_examples_ui_screen_regions_architecture_functional_functions {
16
16
  private import memo_core_enumerations::*;
17
17
  private import memo_architecture_functional_functions::*;
18
18
 
19
+ private import memo_core_common::*;
20
+ private import memo_core_common::MemoIdentity;
19
21
  action fnManageInfusionDisplay : SystemFunction {
20
- attribute :>> id = "UIR-FN-002"; attribute :>> name = "ManageInfusionDisplay";
21
- attribute :>> shortDescription = "Coordinate the running-infusion display and its interactive regions.";
22
+ @MemoIdentity { :>> providedId = "UIR-FN-002"; } attribute :>> name = "ManageInfusionDisplay";
23
+ @MemoIdentity { :>> shortDescription = "Coordinate the running-infusion display and its interactive regions."; }
22
24
  attribute :>> description = "Maintains the clinician-facing infusion state and delegates rate programming, drug selection, and status presentation to focused child functions.";
23
25
  attribute :>> criticality = CriticalityKind::high;
24
26
 
25
27
  action fnSetInfusionRate : SystemFunction {
26
- attribute :>> id = "UIR-FN-001"; attribute :>> name = "SetInfusionRate";
27
- attribute :>> shortDescription = "Apply a clinician-entered rate to the pump controller.";
28
+ @MemoIdentity { :>> providedId = "UIR-FN-001"; } attribute :>> name = "SetInfusionRate";
29
+ @MemoIdentity { :>> shortDescription = "Apply a clinician-entered rate to the pump controller."; }
28
30
  attribute :>> description = "Validates a requested infusion rate against the drug library limits and the pump's mechanical range, then commits it to the controller as the active setpoint.";
29
31
  attribute :>> criticality = CriticalityKind::high;
30
32
  }
31
33
 
32
34
  action fnValidateDrugSelection : SystemFunction {
33
- attribute :>> id = "UIR-FN-003"; attribute :>> name = "ValidateDrugSelection";
34
- attribute :>> shortDescription = "Validate a selected drug and concentration against the active care-area library.";
35
+ @MemoIdentity { :>> providedId = "UIR-FN-003"; } attribute :>> name = "ValidateDrugSelection";
36
+ @MemoIdentity { :>> shortDescription = "Validate a selected drug and concentration against the active care-area library."; }
35
37
  attribute :>> description = "Accepts only a drug and concentration present in the active drug library, then supplies its dosing limits to rate validation.";
36
38
  attribute :>> criticality = CriticalityKind::high;
37
39
  }
38
40
 
39
41
  action fnPresentDeliveryStatus : SystemFunction {
40
- attribute :>> id = "UIR-FN-004"; attribute :>> name = "PresentDeliveryStatus";
41
- attribute :>> shortDescription = "Present current rate and cumulative delivered volume.";
42
+ @MemoIdentity { :>> providedId = "UIR-FN-004"; } attribute :>> name = "PresentDeliveryStatus";
43
+ @MemoIdentity { :>> shortDescription = "Present current rate and cumulative delivered volume."; }
42
44
  attribute :>> description = "Refreshes the rate and volume-delivered indicators from controller state at the specified display update interval.";
43
45
  attribute :>> criticality = CriticalityKind::medium;
44
46
  }
45
47
 
46
48
  action fnPresentLocalTime : SystemFunction {
47
- attribute :>> id = "UIR-FN-005"; attribute :>> name = "PresentLocalTime";
48
- attribute :>> shortDescription = "Read the synchronized clock and present local time.";
49
+ @MemoIdentity { :>> providedId = "UIR-FN-005"; } attribute :>> name = "PresentLocalTime";
50
+ @MemoIdentity { :>> shortDescription = "Read the synchronized clock and present local time."; }
49
51
  attribute :>> description = "Formats the device clock as local 24-hour time and refreshes the status-bar value once per second.";
50
52
  attribute :>> criticality = CriticalityKind::medium;
51
53
  }
52
54
 
53
55
  action fnPresentBatteryStatus : SystemFunction {
54
- attribute :>> id = "UIR-FN-006"; attribute :>> name = "PresentBatteryStatus";
55
- attribute :>> shortDescription = "Present battery state of charge and low-battery status.";
56
+ @MemoIdentity { :>> providedId = "UIR-FN-006"; } attribute :>> name = "PresentBatteryStatus";
57
+ @MemoIdentity { :>> shortDescription = "Present battery state of charge and low-battery status."; }
56
58
  attribute :>> description = "Converts battery telemetry into percentage, icon state, and low-battery prominence for the running-infusion screen.";
57
59
  attribute :>> criticality = CriticalityKind::medium;
58
60
  }