@memoarchitect/ontology 0.8.24 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
  3. package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
  4. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +9 -7
  5. package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
  6. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +8 -6
  7. package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
  8. package/examples/gpca-pump/memo.identity.yaml +2185 -0
  9. package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
  10. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
  11. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
  12. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
  13. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
  14. package/examples/gpca-pump/model/catalog/gpca_context.sysml +29 -24
  15. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -13
  16. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
  17. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
  18. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +121 -125
  19. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
  20. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +390 -388
  21. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
  22. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
  23. package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -14
  24. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -8
  25. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
  26. package/examples/gpca-pump/model/catalog/project.sysml +3 -1
  27. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +6 -4
  28. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +5 -3
  29. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +5 -3
  30. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +5 -3
  31. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +5 -3
  32. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +5 -3
  33. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +5 -3
  34. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +5 -3
  35. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +5 -3
  36. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +5 -3
  37. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +5 -3
  38. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +5 -3
  39. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +5 -3
  40. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +5 -3
  41. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +5 -3
  42. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +5 -3
  44. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -3
  45. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -3
  46. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +5 -3
  47. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +5 -3
  48. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +5 -3
  49. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +5 -3
  50. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +6 -4
  51. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -3
  52. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +5 -3
  53. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +9 -7
  54. package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
  55. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +6 -4
  56. package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
  57. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
  58. package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
  59. package/examples/nested-architecture-dsm/memo.identity.yaml +181 -0
  60. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
  61. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
  62. package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +34 -0
  63. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +11 -6
  64. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +16 -14
  65. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
  66. package/examples/nested-architecture-dsm/model/catalog/project.sysml +4 -1
  67. package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
  68. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +17 -16
  69. package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
  70. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
  71. package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
  72. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +10 -8
  73. package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
  74. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +54 -51
  75. package/examples/surgical-robot/model/catalog/project.sysml +3 -1
  76. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
  77. package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
  78. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -8
  79. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -5
  80. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +3 -1
  81. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +2 -1
  82. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +3 -1
  83. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +11 -9
  84. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +3 -1
  85. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +2 -1
  86. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +3 -1
  87. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +11 -7
  88. package/examples/temperature-alarm/memo.identity.yaml +64 -0
  89. package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
  90. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +27 -22
  91. package/examples/ui-screen-regions/memo.identity.yaml +205 -0
  92. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
  93. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
  94. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
  95. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
  96. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
  97. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
  98. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
  99. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
  100. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +26 -24
  101. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
  102. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
  103. package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
  104. package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
  105. package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
  106. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +5 -3
  107. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +5 -3
  108. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +5 -3
  109. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +3 -1
  110. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +3 -1
  111. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +3 -1
  112. package/extensions/aadl/memo.package.yaml +1 -1
  113. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
  114. package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
  115. package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
  116. package/extensions/cloud/memo.package.yaml +1 -1
  117. package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
  118. package/extensions/container/memo.package.yaml +1 -1
  119. package/extensions/container/src/methodology/container_methodology.sysml +3 -1
  120. package/extensions/messaging/memo.package.yaml +1 -1
  121. package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
  122. package/extensions/ros/memo.package.yaml +1 -1
  123. package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
  124. package/extensions/template/src/extension.sysml +3 -1
  125. package/methodologies/default/memo.package.yaml +1 -1
  126. package/methodologies/gpca/memo.package.yaml +1 -1
  127. package/ontology/memo.package.yaml +1 -1
  128. package/package.json +2 -2
  129. package/profile/memo.package.yaml +1 -1
  130. package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
  131. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
  132. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
  133. package/src/architecture/implementation/ui/memo_ui.sysml +0 -23
  134. package/src/architecture/logical/interfaces/memo_interfaces.sysml +3 -1
  135. package/src/architecture/operational/context/use_context/memo_use_context.sysml +3 -11
  136. package/src/architecture/operational/scenarios/memo_scenarios.sysml +1 -12
  137. package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -11
  138. package/src/architecture/operational/workflows/memo_workflows.sysml +0 -20
  139. package/src/architecture/realization/deployment/memo_deployment.sysml +16 -9
  140. package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
  141. package/src/artifacts/standards/cfr_21_820.sysml +80 -89
  142. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
  143. package/src/artifacts/standards/iec_60601_1.sysml +108 -121
  144. package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
  145. package/src/artifacts/standards/iec_60812.sysml +21 -22
  146. package/src/artifacts/standards/iec_62304.sysml +150 -169
  147. package/src/artifacts/standards/iec_62366_1.sysml +80 -89
  148. package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
  149. package/src/artifacts/standards/iso_13485.sysml +80 -89
  150. package/src/artifacts/standards/iso_14971.sysml +66 -73
  151. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
  152. package/src/artifacts/templates/dhf/iec-60601/hrs.md +6 -6
  153. package/src/artifacts/templates/dhf/iec-62304/srs.md +10 -10
  154. package/src/artifacts/templates/dhf/system/syrs.md +6 -6
  155. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +0 -1
  156. package/src/assurance/human_factors/memo_human_factors.sysml +0 -1
  157. package/src/assurance/requirements/memo_requirements.sysml +20 -16
  158. package/src/assurance/requirements/needs/memo_needs.sysml +33 -5
  159. package/src/assurance/safety_risk/memo_risk.sysml +20 -0
  160. package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
  161. package/src/core/common/memo_common.sysml +50 -50
  162. package/src/core/enumerations/memo_enumerations.sysml +1 -1
  163. package/src/core/relationships/memo_relationships.sysml +22 -49
  164. package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
  165. package/src/methodology/core/memo_core.sysml +0 -10
  166. package/src/methodology/profiles/memo_profiles.sysml +18 -16
  167. package/src/rules/closure/closure_rules.sysml +58 -22
  168. package/src/rules/crosslayer/cross_layer_rules.sysml +5 -3
  169. package/src/rules/ontology/ontology_invariants.sysml +119 -35
  170. package/src/rules/quantitative/quantitative_rules.sysml +4 -2
  171. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -28
  172. package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
  173. package/src/viewpoints/context/context_viewpoint.sysml +5 -3
  174. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +5 -3
  175. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
  176. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -16
  177. package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
  178. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +5 -3
  179. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +5 -3
  180. package/src/viewpoints/logical/logical_viewpoint.sysml +4 -2
  181. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +5 -3
  182. package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
  183. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +5 -3
  184. package/src/viewpoints/physical/physical_viewpoint.sysml +4 -2
  185. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +5 -3
  186. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +5 -3
  187. package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
  188. package/src/viewpoints/requirements/requirements_viewpoint.sysml +4 -2
  189. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +5 -3
  190. package/src/viewpoints/risk/risk_viewpoint.sysml +4 -2
  191. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +5 -3
  192. package/src/viewpoints/software/software_viewpoint.sysml +4 -2
  193. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +5 -3
  194. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -2
  195. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
  196. package/src/viewpoints/usability/usability_viewpoint.sysml +4 -2
  197. package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
  198. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +5 -3
  199. package/templates/connected-device/model/catalog/project.sysml +3 -1
  200. package/templates/default/model/catalog/project.sysml +3 -1
  201. package/templates/infusion-pump/model/catalog/project.sysml +3 -1
  202. package/templates/monitoring-device/model/catalog/project.sysml +3 -1
  203. package/templates/samd/model/catalog/project.sysml +3 -1
@@ -18,10 +18,12 @@ package memo_examples_ui_screen_regions_artifacts_assets {
18
18
  private import memo_artifacts_core::*;
19
19
  private import memo_architecture_implementation_ui::*;
20
20
 
21
+ private import memo_core_common::*;
22
+ private import memo_core_common::MemoIdentity;
21
23
  // ── The captures ────────────────────────────────────────────
22
24
  part capMain : ScreenCapture {
23
- attribute :>> id = "UIR-CAP-001"; attribute :>> name = "MainScreenCapture_v2.4.1";
24
- attribute :>> shortDescription = "Main infusion screen, build 2.4.1.";
25
+ @MemoIdentity { :>> providedId = "UIR-CAP-001"; } attribute :>> name = "MainScreenCapture_v2.4.1";
26
+ @MemoIdentity { :>> shortDescription = "Main infusion screen, build 2.4.1."; }
25
27
  attribute :>> description = "Screenshot of the running-infusion screen taken from release candidate 2.4.1 on the 7-inch panel at 1024×600, English (US), daylight theme, clinician role.";
26
28
  attribute :>> imageUri = "model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png";
27
29
  attribute :>> imageHash = "sha256:086d8a3c2956ad8ed81f1e565a97308b55ba8a384c22c1b2138626ad8928a88a";
@@ -33,8 +35,8 @@ package memo_examples_ui_screen_regions_artifacts_assets {
33
35
  }
34
36
 
35
37
  part capDrugSelector : ScreenCapture {
36
- attribute :>> id = "UIC-003"; attribute :>> name = "ExpandedDrugSelectorCapture_v2.4.1";
37
- attribute :>> shortDescription = "Expanded drug-selector region crop.";
38
+ @MemoIdentity { :>> providedId = "UIC-003"; } attribute :>> name = "ExpandedDrugSelectorCapture_v2.4.1";
39
+ @MemoIdentity { :>> shortDescription = "Expanded drug-selector region crop."; }
38
40
  attribute :>> description = "Focused capture of the reusable DrugSelectorRegion in its expanded state, used when a reviewer drills into the region from the main layout.";
39
41
  attribute :>> imageUri = "model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png";
40
42
  attribute :>> imageHash = "sha256:2265b48864be8561a86099a99cf8aea2f4fcf06c19ccacbcc55784fbb1c37975";
@@ -46,8 +48,8 @@ package memo_examples_ui_screen_regions_artifacts_assets {
46
48
  }
47
49
 
48
50
  part capSettings : ScreenCapture {
49
- attribute :>> id = "UIR-CAP-002"; attribute :>> name = "SettingsScreenCapture_v2.4.1";
50
- attribute :>> shortDescription = "Infusion settings screen, build 2.4.1.";
51
+ @MemoIdentity { :>> providedId = "UIR-CAP-002"; } attribute :>> name = "SettingsScreenCapture_v2.4.1";
52
+ @MemoIdentity { :>> shortDescription = "Infusion settings screen, build 2.4.1."; }
51
53
  attribute :>> description = "Screenshot of the settings screen reached from the main screen's settings row, same build and capture conditions as the main screen capture.";
52
54
  attribute :>> imageUri = "model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png";
53
55
  attribute :>> imageHash = "sha256:2ad7f11427fdb2eb179cf94d96a1679a2ece31505d247ee0b659bec06a669dbf";
@@ -16,13 +16,15 @@ package memo_examples_ui_screen_regions_artifacts_reviews_comments {
16
16
  private import memo_core_enumerations::*;
17
17
  private import memo_core_annotations::*;
18
18
 
19
+ private import memo_core_common::*;
20
+ private import memo_core_common::MemoIdentity;
19
21
  // ── Review commentary ───────────────────────────────────────
20
22
  // Commentary is model content with an author and a disposition, kept
21
23
  // separate from `description`: what the element IS versus what someone
22
24
  // SAID about it. A generated DHF section renders the former only.
23
25
  part cmtDecimalSalience : ModelComment {
24
- attribute :>> id = "UIR-CMT-001"; attribute :>> name = "DecimalSalienceReview";
25
- attribute :>> shortDescription = "Decimal point too small at 1 m — raised in HF review.";
26
+ @MemoIdentity { :>> providedId = "UIR-CMT-001"; } attribute :>> name = "DecimalSalienceReview";
27
+ @MemoIdentity { :>> shortDescription = "Decimal point too small at 1 m — raised in HF review."; }
26
28
  attribute :>> body = "In the 2026-07-16 formative session, 3 of 8 participants hesitated over 12.5 vs 125 at bedside distance. Recommend enlarging the decimal separator or splitting the fractional digit into a smaller trailing glyph.";
27
29
  attribute :>> author = "r.mehta";
28
30
  attribute :>> createdAt = "2026-07-16T14:20:00Z";
@@ -31,21 +33,20 @@ package memo_examples_ui_screen_regions_artifacts_reviews_comments {
31
33
  }
32
34
 
33
35
  part cmtStatusBarScope : ModelComment {
34
- attribute :>> id = "UIR-CMT-002"; attribute :>> name = "StatusBarScopeQuery";
35
- attribute :>> shortDescription = "Is the battery icon really decoration?";
36
+ @MemoIdentity { :>> providedId = "UIR-CMT-002"; } attribute :>> name = "StatusBarScopeQuery";
37
+ @MemoIdentity { :>> shortDescription = "Is the battery icon really decoration?"; }
36
38
  attribute :>> body = "Battery state is arguably an indicator, not chrome — a depleted battery during infusion is a hazard path. Should the battery icon be split out as its own indicator element with its own bounds?";
37
39
  attribute :>> author = "j.okafor";
38
40
  attribute :>> createdAt = "2026-07-16T09:05:00Z";
39
41
  attribute :>> commentStatus = CommentStatusKind::acknowledged;
40
- }
41
-
42
- part cmtStatusBarReply : ModelComment {
43
- attribute :>> id = "UIR-CMT-003"; attribute :>> name = "StatusBarScopeReply";
44
- attribute :>> shortDescription = "Agreed — split in the next markup pass.";
45
- attribute :>> body = "Agreed. Battery indication is in the alarm system's scope and will become its own indicator element once that requirement lands. Keeping the strip as decoration until then rather than classifying it as something it is not.";
46
- attribute :>> author = "r.mehta";
47
- attribute :>> createdAt = "2026-07-16T11:40:00Z";
48
- attribute :>> commentStatus = CommentStatusKind::addressed;
42
+ part cmtStatusBarReply : ModelComment {
43
+ @MemoIdentity { :>> providedId = "UIR-CMT-003"; } attribute :>> name = "StatusBarScopeReply";
44
+ @MemoIdentity { :>> shortDescription = "Agreed — split in the next markup pass."; }
45
+ attribute :>> body = "Agreed. Battery indication is in the alarm system's scope and will become its own indicator element once that requirement lands. Keeping the strip as decoration until then rather than classifying it as something it is not.";
46
+ attribute :>> author = "r.mehta";
47
+ attribute :>> createdAt = "2026-07-16T11:40:00Z";
48
+ attribute :>> commentStatus = CommentStatusKind::addressed;
49
+ }
49
50
  }
50
51
 
51
52
  }
@@ -15,9 +15,11 @@ package memo_examples_ui_screen_regions_artifacts_reviews_notes {
15
15
  private import memo_core_enumerations::*;
16
16
  private import memo_core_annotations::*;
17
17
 
18
+ private import memo_core_common::*;
19
+ private import memo_core_common::MemoIdentity;
18
20
  part noteCaptureReview : ModelNote {
19
- attribute :>> id = "UIR-NOTE-001"; attribute :>> name = "CaptureReviewNote";
20
- attribute :>> shortDescription = "Reconfirm automatic regions after every capture replacement.";
21
+ @MemoIdentity { :>> providedId = "UIR-NOTE-001"; } attribute :>> name = "CaptureReviewNote";
22
+ @MemoIdentity { :>> shortDescription = "Reconfirm automatic regions after every capture replacement."; }
21
23
  attribute :>> body = "Normalized manual bounds migrate between captures; automatically detected regions require renewed reviewer confirmation.";
22
24
  attribute :>> author = "r.mehta";
23
25
  attribute :>> createdAt = "2026-07-16T12:10:00Z";
@@ -15,9 +15,11 @@ package memo_examples_ui_screen_regions_artifacts_reviews_rationales {
15
15
  private import memo_core_enumerations::*;
16
16
  private import memo_core_annotations::*;
17
17
 
18
+ private import memo_core_common::*;
19
+ private import memo_core_common::MemoIdentity;
18
20
  part ratOverlayGeometry : ModelRationale {
19
- attribute :>> id = "UIR-RAT-001"; attribute :>> name = "OverlayGeometryRationale";
20
- attribute :>> shortDescription = "The drug menu intentionally escapes its parent bounds.";
21
+ @MemoIdentity { :>> providedId = "UIR-RAT-001"; } attribute :>> name = "OverlayGeometryRationale";
22
+ @MemoIdentity { :>> shortDescription = "The drug menu intentionally escapes its parent bounds."; }
21
23
  attribute :>> body = "The open drug selector overlays adjacent content, so disclosureKind carries the intended behavior and the renderer must not clip it to RatePanel.";
22
24
  attribute :>> author = "j.okafor";
23
25
  attribute :>> createdAt = "2026-07-16T12:00:00Z";
@@ -15,42 +15,44 @@ package memo_examples_ui_screen_regions_assurance_human_factors {
15
15
  private import memo_core_enumerations::*;
16
16
  private import memo_assurance_human_factors::*;
17
17
 
18
+ private import memo_core_common::*;
19
+ private import memo_core_common::MemoIdentity;
18
20
  // ── The risk side ───────────────────────────────────────────
19
21
  part ueMisreadRate : UseError {
20
- attribute :>> id = "UIR-UE-001"; attribute :>> name = "MisreadRateDecimalPoint";
21
- attribute :>> shortDescription = "Decimal point missed; rate read 10× high or low.";
22
+ @MemoIdentity { :>> providedId = "UIR-UE-001"; } attribute :>> name = "MisreadRateDecimalPoint";
23
+ @MemoIdentity { :>> shortDescription = "Decimal point missed; rate read 10× high or low."; }
22
24
  attribute :>> description = "The clinician reads 12.5 mL/h as 125 mL/h, or the reverse, because the decimal point is not salient at a glance from the bedside.";
23
25
  attribute :>> errorCategory = UseErrorCategoryKind::perception;
24
26
  attribute :>> severity = SeverityKind::serious;
25
27
  }
26
28
 
27
29
  part ueSelectWrongDrug : UseError {
28
- attribute :>> id = "UIR-UE-002"; attribute :>> name = "SelectWrongDrugConcentration";
29
- attribute :>> shortDescription = "Clinician selects the wrong drug or concentration from the expanded list.";
30
+ @MemoIdentity { :>> providedId = "UIR-UE-002"; } attribute :>> name = "SelectWrongDrugConcentration";
31
+ @MemoIdentity { :>> shortDescription = "Clinician selects the wrong drug or concentration from the expanded list."; }
30
32
  attribute :>> description = "A visually adjacent drug-library entry is selected during programming and is not detected before delivery parameters are calculated.";
31
33
  attribute :>> errorCategory = UseErrorCategoryKind::actionCategory;
32
34
  attribute :>> severity = SeverityKind::serious;
33
35
  }
34
36
 
35
37
  part ueMissLowBattery : UseError {
36
- attribute :>> id = "UIR-UE-003"; attribute :>> name = "MissLowBatteryStatus";
37
- attribute :>> shortDescription = "Clinician does not notice that remaining battery operation is limited.";
38
+ @MemoIdentity { :>> providedId = "UIR-UE-003"; } attribute :>> name = "MissLowBatteryStatus";
39
+ @MemoIdentity { :>> shortDescription = "Clinician does not notice that remaining battery operation is limited."; }
38
40
  attribute :>> description = "During transport or a mains outage, an inconspicuous or stale battery indicator is not noticed before the pump loses power.";
39
41
  attribute :>> errorCategory = UseErrorCategoryKind::perception;
40
42
  attribute :>> severity = SeverityKind::critical;
41
43
  }
42
44
 
43
45
  part ueRelyOnStaleVolume : UseError {
44
- attribute :>> id = "UIR-UE-004"; attribute :>> name = "RelyOnStaleDeliveredVolume";
45
- attribute :>> shortDescription = "Clinician bases a therapy decision on a stale delivered-volume value.";
46
+ @MemoIdentity { :>> providedId = "UIR-UE-004"; } attribute :>> name = "RelyOnStaleDeliveredVolume";
47
+ @MemoIdentity { :>> shortDescription = "Clinician bases a therapy decision on a stale delivered-volume value."; }
46
48
  attribute :>> description = "The displayed cumulative volume stops refreshing while the controller continues delivery, causing the clinician to underestimate administered therapy.";
47
49
  attribute :>> errorCategory = UseErrorCategoryKind::cognition;
48
50
  attribute :>> severity = SeverityKind::serious;
49
51
  }
50
52
 
51
53
  part ueMisreadDisplayedTime : UseError {
52
- attribute :>> id = "UIR-UE-005"; attribute :>> name = "RelyOnIncorrectDisplayedTime";
53
- attribute :>> shortDescription = "Clinician associates a therapy observation with an incorrect time.";
54
+ @MemoIdentity { :>> providedId = "UIR-UE-005"; } attribute :>> name = "RelyOnIncorrectDisplayedTime";
55
+ @MemoIdentity { :>> shortDescription = "Clinician associates a therapy observation with an incorrect time."; }
54
56
  attribute :>> description = "A stale or unsynchronized screen clock causes an observation to be correlated with the wrong therapy event during handoff or incident review.";
55
57
  attribute :>> errorCategory = UseErrorCategoryKind::cognition;
56
58
  attribute :>> severity = SeverityKind::minor;
@@ -15,8 +15,10 @@ package memo_examples_ui_screen_regions_assurance_requirements_needs {
15
15
  private import memo_core_enumerations::*;
16
16
  private import memo_assurance_requirements_needs::*;
17
17
 
18
+ private import memo_core_common::*;
19
+ private import memo_core_common::MemoIdentity;
18
20
  requirement needReadableProgramming : Need {
19
- attribute :>> id = "UIR-NEED-001"; attribute :>> name = "ReadableAndConfirmableProgramming";
21
+ @MemoIdentity { :>> providedId = "UIR-NEED-001"; } attribute :>> name = "ReadableAndConfirmableProgramming";
20
22
  attribute :>> needKind = NeedKind::'stakeholder';
21
23
  attribute :>> statement = "Clinicians need infusion programming to be readable and explicitly confirmed before therapy changes.";
22
24
  attribute :>> priority = "high";
@@ -16,10 +16,12 @@ package memo_examples_ui_screen_regions_assurance_requirements {
16
16
  private import memo_core_enumerations::*;
17
17
  private import memo_assurance_requirements::*;
18
18
 
19
+ private import memo_core_common::*;
20
+ private import memo_core_common::MemoIdentity;
19
21
  // ── The spec side ───────────────────────────────────────────
20
22
  requirement reqRateEntry : Requirement {
21
- attribute :>> id = "UIR-REQ-001"; attribute :>> name = "RateEntryConfirmation";
22
- attribute :>> requirementKind = RequirementKind::software;
23
+ @MemoIdentity { :>> providedId = "UIR-REQ-001"; } attribute :>> name = "RateEntryConfirmation";
24
+ attribute :>> requirementType = RequirementTypeKind::software;
23
25
  attribute :>> statement = "When the clinician enters a new infusion rate, the pump shall display the entered rate for explicit confirmation before applying it.";
24
26
  attribute :>> notation = RequirementNotationKind::ears;
25
27
  attribute :>> earsPattern = EarsPatternKind::eventDriven;
@@ -31,8 +33,8 @@ package memo_examples_ui_screen_regions_assurance_requirements {
31
33
  }
32
34
 
33
35
  requirement reqRateLegibility : Requirement {
34
- attribute :>> id = "UIR-REQ-002"; attribute :>> name = "RateLegibility";
35
- attribute :>> requirementKind = RequirementKind::system;
36
+ @MemoIdentity { :>> providedId = "UIR-REQ-002"; } attribute :>> name = "RateLegibility";
37
+ attribute :>> requirementType = RequirementTypeKind::system;
36
38
  attribute :>> statement = "The pump shall display the active infusion rate legibly at 1 m under 100–1000 lux ambient illumination.";
37
39
  attribute :>> notation = RequirementNotationKind::sophist;
38
40
  attribute :>> obligation = ObligationKind::shall;
@@ -45,8 +47,8 @@ package memo_examples_ui_screen_regions_assurance_requirements {
45
47
  }
46
48
 
47
49
  requirement reqVolumeDisplay : Requirement {
48
- attribute :>> id = "UIR-REQ-003"; attribute :>> name = "VolumeDeliveredDisplay";
49
- attribute :>> requirementKind = RequirementKind::software;
50
+ @MemoIdentity { :>> providedId = "UIR-REQ-003"; } attribute :>> name = "VolumeDeliveredDisplay";
51
+ attribute :>> requirementType = RequirementTypeKind::software;
50
52
  attribute :>> statement = "The pump shall display cumulative volume delivered for the active infusion, updated at least once per second.";
51
53
  attribute :>> notation = RequirementNotationKind::ears;
52
54
  attribute :>> earsPattern = EarsPatternKind::stateDriven;
@@ -57,8 +59,8 @@ package memo_examples_ui_screen_regions_assurance_requirements {
57
59
  }
58
60
 
59
61
  requirement reqDrugLibrarySelection : Requirement {
60
- attribute :>> id = "UIR-REQ-004"; attribute :>> name = "DrugLibrarySelection";
61
- attribute :>> requirementKind = RequirementKind::software;
62
+ @MemoIdentity { :>> providedId = "UIR-REQ-004"; } attribute :>> name = "DrugLibrarySelection";
63
+ attribute :>> requirementType = RequirementTypeKind::software;
62
64
  attribute :>> statement = "The pump shall permit selection only from drug and concentration entries enabled for the active care area.";
63
65
  attribute :>> notation = RequirementNotationKind::ears;
64
66
  attribute :>> earsPattern = EarsPatternKind::stateDriven;
@@ -70,8 +72,8 @@ package memo_examples_ui_screen_regions_assurance_requirements {
70
72
  }
71
73
 
72
74
  requirement reqDisplayFreshness : Requirement {
73
- attribute :>> id = "UIR-REQ-005"; attribute :>> name = "InfusionStatusFreshness";
74
- attribute :>> requirementKind = RequirementKind::system;
75
+ @MemoIdentity { :>> providedId = "UIR-REQ-005"; } attribute :>> name = "InfusionStatusFreshness";
76
+ attribute :>> requirementType = RequirementTypeKind::system;
75
77
  attribute :>> statement = "The pump shall refresh the displayed active rate and cumulative delivered volume at least once per second while an infusion is running.";
76
78
  attribute :>> notation = RequirementNotationKind::sophist;
77
79
  attribute :>> obligation = ObligationKind::shall;
@@ -84,8 +86,8 @@ package memo_examples_ui_screen_regions_assurance_requirements {
84
86
  }
85
87
 
86
88
  requirement reqActiveRateDisplay : Requirement {
87
- attribute :>> id = "UIR-REQ-006"; attribute :>> name = "ActiveInfusionRateDisplay";
88
- attribute :>> requirementKind = RequirementKind::software;
89
+ @MemoIdentity { :>> providedId = "UIR-REQ-006"; } attribute :>> name = "ActiveInfusionRateDisplay";
90
+ attribute :>> requirementType = RequirementTypeKind::software;
89
91
  attribute :>> statement = "While an infusion is running, the pump shall display the active infusion rate value and its mL/h unit.";
90
92
  attribute :>> notation = RequirementNotationKind::ears;
91
93
  attribute :>> earsPattern = EarsPatternKind::stateDriven;
@@ -97,8 +99,8 @@ package memo_examples_ui_screen_regions_assurance_requirements {
97
99
  }
98
100
 
99
101
  requirement reqDrugIdentityDisplay : Requirement {
100
- attribute :>> id = "UIR-REQ-007"; attribute :>> name = "ActiveDrugIdentityDisplay";
101
- attribute :>> requirementKind = RequirementKind::software;
102
+ @MemoIdentity { :>> providedId = "UIR-REQ-007"; } attribute :>> name = "ActiveDrugIdentityDisplay";
103
+ attribute :>> requirementType = RequirementTypeKind::software;
102
104
  attribute :>> statement = "Where a drug-library entry is active, the pump shall display the selected drug name and concentration on the running-infusion screen.";
103
105
  attribute :>> notation = RequirementNotationKind::ears;
104
106
  attribute :>> earsPattern = EarsPatternKind::optionalFeature;
@@ -110,8 +112,8 @@ package memo_examples_ui_screen_regions_assurance_requirements {
110
112
  }
111
113
 
112
114
  requirement reqTimeDisplay : Requirement {
113
- attribute :>> id = "UIR-REQ-008"; attribute :>> name = "LocalTimeDisplay";
114
- attribute :>> requirementKind = RequirementKind::software;
115
+ @MemoIdentity { :>> providedId = "UIR-REQ-008"; } attribute :>> name = "LocalTimeDisplay";
116
+ attribute :>> requirementType = RequirementTypeKind::software;
115
117
  attribute :>> statement = "While the running-infusion screen is visible, the pump shall display synchronized local time in 24-hour HH:mm format.";
116
118
  attribute :>> notation = RequirementNotationKind::ears;
117
119
  attribute :>> earsPattern = EarsPatternKind::stateDriven;
@@ -122,8 +124,8 @@ package memo_examples_ui_screen_regions_assurance_requirements {
122
124
  }
123
125
 
124
126
  requirement reqTimeAccuracy : Requirement {
125
- attribute :>> id = "UIR-REQ-009"; attribute :>> name = "DisplayedTimeAccuracy";
126
- attribute :>> requirementKind = RequirementKind::system;
127
+ @MemoIdentity { :>> providedId = "UIR-REQ-009"; } attribute :>> name = "DisplayedTimeAccuracy";
128
+ attribute :>> requirementType = RequirementTypeKind::system;
127
129
  attribute :>> statement = "The running-infusion display shall present local time within 2 seconds of the synchronized device clock and refresh the visible minute within 1 second of rollover.";
128
130
  attribute :>> notation = RequirementNotationKind::sophist;
129
131
  attribute :>> obligation = ObligationKind::shall;
@@ -136,8 +138,8 @@ package memo_examples_ui_screen_regions_assurance_requirements {
136
138
  }
137
139
 
138
140
  requirement reqBatteryStatusDisplay : Requirement {
139
- attribute :>> id = "UIR-REQ-010"; attribute :>> name = "BatteryStatusDisplay";
140
- attribute :>> requirementKind = RequirementKind::software;
141
+ @MemoIdentity { :>> providedId = "UIR-REQ-010"; } attribute :>> name = "BatteryStatusDisplay";
142
+ attribute :>> requirementType = RequirementTypeKind::software;
141
143
  attribute :>> statement = "While the pump is operating, the pump shall display battery state of charge as a percentage and graphical icon.";
142
144
  attribute :>> notation = RequirementNotationKind::ears;
143
145
  attribute :>> earsPattern = EarsPatternKind::stateDriven;
@@ -149,8 +151,8 @@ package memo_examples_ui_screen_regions_assurance_requirements {
149
151
  }
150
152
 
151
153
  requirement reqBatteryWarningPerformance : Requirement {
152
- attribute :>> id = "UIR-REQ-011"; attribute :>> name = "LowBatteryStatusLatency";
153
- attribute :>> requirementKind = RequirementKind::system;
154
+ @MemoIdentity { :>> providedId = "UIR-REQ-011"; } attribute :>> name = "LowBatteryStatusLatency";
155
+ attribute :>> requirementType = RequirementTypeKind::system;
154
156
  attribute :>> statement = "When estimated battery operating time falls below 30 minutes, the pump shall present a visually prominent low-battery state within 1 second.";
155
157
  attribute :>> notation = RequirementNotationKind::sophist;
156
158
  attribute :>> obligation = ObligationKind::shall;
@@ -163,8 +165,8 @@ package memo_examples_ui_screen_regions_assurance_requirements {
163
165
  }
164
166
 
165
167
  requirement reqDrugSelectionPerformance : Requirement {
166
- attribute :>> id = "UIR-REQ-012"; attribute :>> name = "DrugSelectorResponseTime";
167
- attribute :>> requirementKind = RequirementKind::software;
168
+ @MemoIdentity { :>> providedId = "UIR-REQ-012"; } attribute :>> name = "DrugSelectorResponseTime";
169
+ attribute :>> requirementType = RequirementTypeKind::software;
168
170
  attribute :>> statement = "When the clinician activates the drug selector, the pump shall display the enabled drug list within 250 milliseconds.";
169
171
  attribute :>> notation = RequirementNotationKind::ears;
170
172
  attribute :>> earsPattern = EarsPatternKind::eventDriven;
@@ -15,76 +15,78 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
15
15
  private import memo_core_enumerations::*;
16
16
  private import memo_assurance_safety_risk::*;
17
17
 
18
+ private import memo_core_common::*;
19
+ private import memo_core_common::MemoIdentity;
18
20
  item hzWrongRate : Hazard {
19
- attribute :>> id = "UIR-HZ-001"; attribute :>> name = "InfusionAtIncorrectRate";
21
+ @MemoIdentity { :>> providedId = "UIR-HZ-001"; } attribute :>> name = "InfusionAtIncorrectRate";
20
22
  attribute :>> hazardType = HazardTypeKind::informationError;
21
23
  attribute :>> severity = SeverityKind::serious;
22
24
  attribute :>> foreseeable = true;
23
25
  }
24
26
 
25
27
  part rcRateConfirm : RiskControlMeasure {
26
- attribute :>> id = "UIR-RC-001"; attribute :>> name = "RateChangeConfirmationDialog";
27
- attribute :>> shortDescription = "Explicit confirmation step before a rate change applies.";
28
+ @MemoIdentity { :>> providedId = "UIR-RC-001"; } attribute :>> name = "RateChangeConfirmationDialog";
29
+ @MemoIdentity { :>> shortDescription = "Explicit confirmation step before a rate change applies."; }
28
30
  attribute :>> description = "A confirmation dialog restates the requested rate in words and numerals before the change is committed, so a mis-set decimal point has a second chance to be caught.";
29
31
  attribute :>> controlKind = RiskControlKind::protectiveMeasure;
30
32
  attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
31
33
  }
32
34
 
33
35
  item hzWrongDrug : Hazard {
34
- attribute :>> id = "UIR-HZ-002"; attribute :>> name = "TherapyConfiguredForWrongDrug";
36
+ @MemoIdentity { :>> providedId = "UIR-HZ-002"; } attribute :>> name = "TherapyConfiguredForWrongDrug";
35
37
  attribute :>> hazardType = HazardTypeKind::informationError;
36
38
  attribute :>> severity = SeverityKind::serious;
37
39
  attribute :>> foreseeable = true;
38
40
  }
39
41
 
40
42
  part rcDrugLibraryGuard : RiskControlMeasure {
41
- attribute :>> id = "UIR-RC-002"; attribute :>> name = "CareAreaDrugLibraryGuard";
42
- attribute :>> shortDescription = "Restrict selection to enabled care-area drug-library entries.";
43
+ @MemoIdentity { :>> providedId = "UIR-RC-002"; } attribute :>> name = "CareAreaDrugLibraryGuard";
44
+ @MemoIdentity { :>> shortDescription = "Restrict selection to enabled care-area drug-library entries."; }
43
45
  attribute :>> description = "Filters the dynamic selector to the active care-area formulary and validates the selected drug and concentration before its dosing limits are used.";
44
46
  attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
45
47
  attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
46
48
  }
47
49
 
48
50
  item hzUnexpectedPowerLoss : Hazard {
49
- attribute :>> id = "UIR-HZ-003"; attribute :>> name = "UnexpectedTherapyInterruptionFromPowerLoss";
51
+ @MemoIdentity { :>> providedId = "UIR-HZ-003"; } attribute :>> name = "UnexpectedTherapyInterruptionFromPowerLoss";
50
52
  attribute :>> hazardType = HazardTypeKind::energyExposure;
51
53
  attribute :>> severity = SeverityKind::critical;
52
54
  attribute :>> foreseeable = true;
53
55
  }
54
56
 
55
57
  part rcLowBatteryProminence : RiskControlMeasure {
56
- attribute :>> id = "UIR-RC-003"; attribute :>> name = "ProminentLowBatteryStatus";
57
- attribute :>> shortDescription = "Update and emphasize low remaining battery status within one second.";
58
+ @MemoIdentity { :>> providedId = "UIR-RC-003"; } attribute :>> name = "ProminentLowBatteryStatus";
59
+ @MemoIdentity { :>> shortDescription = "Update and emphasize low remaining battery status within one second."; }
58
60
  attribute :>> description = "Monitors battery telemetry and changes the status indicator's color and icon state at the low-runtime threshold so the clinician can restore power before therapy interruption.";
59
61
  attribute :>> controlKind = RiskControlKind::monitoring;
60
62
  attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
61
63
  }
62
64
 
63
65
  item hzIncorrectDeliveredVolumeAssessment : Hazard {
64
- attribute :>> id = "UIR-HZ-004"; attribute :>> name = "IncorrectDeliveredVolumeAssessment";
66
+ @MemoIdentity { :>> providedId = "UIR-HZ-004"; } attribute :>> name = "IncorrectDeliveredVolumeAssessment";
65
67
  attribute :>> hazardType = HazardTypeKind::informationError;
66
68
  attribute :>> severity = SeverityKind::serious;
67
69
  attribute :>> foreseeable = true;
68
70
  }
69
71
 
70
72
  part rcDisplayFreshnessMonitor : RiskControlMeasure {
71
- attribute :>> id = "UIR-RC-004"; attribute :>> name = "InfusionDisplayFreshnessMonitor";
72
- attribute :>> shortDescription = "Refresh displayed rate and volume at 1 Hz and detect stale telemetry.";
73
+ @MemoIdentity { :>> providedId = "UIR-RC-004"; } attribute :>> name = "InfusionDisplayFreshnessMonitor";
74
+ @MemoIdentity { :>> shortDescription = "Refresh displayed rate and volume at 1 Hz and detect stale telemetry."; }
73
75
  attribute :>> description = "Maintains a one-second display age budget for infusion status and detects a missed telemetry refresh before stale values can persist.";
74
76
  attribute :>> controlKind = RiskControlKind::monitoring;
75
77
  attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
76
78
  }
77
79
 
78
80
  item hzIncorrectEventChronology : Hazard {
79
- attribute :>> id = "UIR-HZ-005"; attribute :>> name = "IncorrectTherapyEventChronology";
81
+ @MemoIdentity { :>> providedId = "UIR-HZ-005"; } attribute :>> name = "IncorrectTherapyEventChronology";
80
82
  attribute :>> hazardType = HazardTypeKind::informationError;
81
83
  attribute :>> severity = SeverityKind::minor;
82
84
  attribute :>> foreseeable = true;
83
85
  }
84
86
 
85
87
  part rcClockFreshnessCheck : RiskControlMeasure {
86
- attribute :>> id = "UIR-RC-005"; attribute :>> name = "SynchronizedClockFreshnessCheck";
87
- attribute :>> shortDescription = "Synchronize the display clock and bound visible time error.";
88
+ @MemoIdentity { :>> providedId = "UIR-RC-005"; } attribute :>> name = "SynchronizedClockFreshnessCheck";
89
+ @MemoIdentity { :>> shortDescription = "Synchronize the display clock and bound visible time error."; }
88
90
  attribute :>> description = "Checks the displayed clock against the synchronized device clock and refreshes the visible minute at rollover.";
89
91
  attribute :>> controlKind = RiskControlKind::plausibilityCheck;
90
92
  attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
@@ -20,9 +20,10 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
20
20
  private import memo_core_common::*;
21
21
  private import memo_assurance_verification_validation::*;
22
22
 
23
+ private import memo_core_common::MemoIdentity;
23
24
  verification vcRateChange : VerificationCase {
24
- attribute :>> id = "UIR-VER-001"; attribute :>> name = "VerifyRateChangeConfirmation";
25
- attribute :>> methodKind = VerificationMethodKind::test;
25
+ @MemoIdentity { :>> providedId = "UIR-VER-001"; } attribute :>> name = "VerifyRateChangeConfirmation";
26
+ attribute :>> methodKind = MemoVerificationMethodKind::test;
26
27
  attribute :>> acceptanceCriteria = "A rate change cannot reach the controller until the displayed value is explicitly confirmed.";
27
28
  attribute :>> status = ElementStatusKind::approved;
28
29
 
@@ -31,15 +32,15 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
31
32
 
32
33
  part evRateChange : MemoEvidence {
33
34
  attribute :>> evidenceKind = EvidenceKind::evidence;
34
- attribute :>> id = "UIR-EV-001"; attribute :>> name = "RateChangeConfirmationTestRecord";
35
+ @MemoIdentity { :>> providedId = "UIR-EV-001"; } attribute :>> name = "RateChangeConfirmationTestRecord";
35
36
  attribute :>> version = "planned";
36
37
  attribute :>> evidenceType = "test record";
37
38
  attribute :>> integrityStatus = "planned";
38
39
  }
39
40
 
40
41
  verification vcDrugLibrarySelection : VerificationCase {
41
- attribute :>> id = "VER-002"; attribute :>> name = "VerifyCareAreaDrugLibrarySelection";
42
- attribute :>> methodKind = VerificationMethodKind::test;
42
+ @MemoIdentity { :>> providedId = "VER-002"; } attribute :>> name = "VerifyCareAreaDrugLibrarySelection";
43
+ attribute :>> methodKind = MemoVerificationMethodKind::test;
43
44
  attribute :>> acceptanceCriteria = "Only enabled care-area drug and concentration records are selectable, and every selection supplies the matching dosing limits.";
44
45
  attribute :>> status = ElementStatusKind::approved;
45
46
 
@@ -48,15 +49,15 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
48
49
 
49
50
  part evDrugLibrarySelection : MemoEvidence {
50
51
  attribute :>> evidenceKind = EvidenceKind::evidence;
51
- attribute :>> id = "EVD-002"; attribute :>> name = "DrugLibrarySelectionTestRecord";
52
+ @MemoIdentity { :>> providedId = "EVD-002"; } attribute :>> name = "DrugLibrarySelectionTestRecord";
52
53
  attribute :>> version = "planned";
53
54
  attribute :>> evidenceType = "test record";
54
55
  attribute :>> integrityStatus = "planned";
55
56
  }
56
57
 
57
58
  verification vcInfusionStatusContent : VerificationCase {
58
- attribute :>> id = "VER-003"; attribute :>> name = "VerifyInfusionStatusContentAndFreshness";
59
- attribute :>> methodKind = VerificationMethodKind::test;
59
+ @MemoIdentity { :>> providedId = "VER-003"; } attribute :>> name = "VerifyInfusionStatusContentAndFreshness";
60
+ attribute :>> methodKind = MemoVerificationMethodKind::test;
60
61
  attribute :>> acceptanceCriteria = "Time, battery, active rate, drug identity, and total delivered volume satisfy their content, accuracy, and latency criteria under normal and threshold-transition conditions.";
61
62
  attribute :>> status = ElementStatusKind::approved;
62
63
 
@@ -66,7 +67,7 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
66
67
 
67
68
  part evInfusionStatusContent : MemoEvidence {
68
69
  attribute :>> evidenceKind = EvidenceKind::evidence;
69
- attribute :>> id = "EVD-003"; attribute :>> name = "InfusionStatusDisplayTestRecord";
70
+ @MemoIdentity { :>> providedId = "EVD-003"; } attribute :>> name = "InfusionStatusDisplayTestRecord";
70
71
  attribute :>> version = "planned";
71
72
  attribute :>> evidenceType = "test record";
72
73
  attribute :>> integrityStatus = "planned";
@@ -31,8 +31,10 @@ package memo_examples_ui_screen_regions_project {
31
31
  private import memo_examples_ui_screen_regions_viewpoints_functional::*;
32
32
  private import memo_examples_ui_screen_regions_viewpoints_risk::*;
33
33
 
34
+ private import memo_core_common::*;
35
+ private import memo_core_common::MemoIdentity;
34
36
  part uiScreenRegionsBinding : ProjectMethodBinding {
35
- attribute :>> id = "PMB-UIR-001";
37
+ @MemoIdentity { :>> providedId = "PMB-UIR-001"; }
36
38
  attribute :>> name = "UIScreenRegionsProjectMethodBinding";
37
39
  attribute :>> projectName = "UI Screen Regions";
38
40
  // The default methodology selects everything the resolved ontology
@@ -3,6 +3,6 @@ package memo_examples_ui_screen_regions_relationships {
3
3
  private import memo_assurance_safety_risk::*;
4
4
  private import memo_examples_ui_screen_regions_architecture_implementation_ui::*;
5
5
  private import memo_examples_ui_screen_regions_assurance_requirements::*;
6
- connection rel_tracesRisk_uiElement12_reqDrugIdentityDisplay : TracesRisk connect sourceRiskElement ::> uiElement12 to targetRiskElement ::> reqDrugIdentityDisplay;
7
- connection rel_changes_uiElement12_reqDrugIdentityDisplay : Changes connect changeRequest ::> uiElement12 to changedElement ::> reqDrugIdentityDisplay;
6
+ connection rel_tracesRisk_uiElement12_reqDrugIdentityDisplay : TracesRisk connect sourceRiskElement ::> elMainScreen::uiElement12 to targetRiskElement ::> reqDrugIdentityDisplay;
7
+ connection rel_changes_uiElement12_reqDrugIdentityDisplay : Changes connect changeRequest ::> elMainScreen::uiElement12 to changedElement ::> reqDrugIdentityDisplay;
8
8
  }
@@ -172,8 +172,6 @@ package memo_examples_ui_screen_regions_traces {
172
172
 
173
173
  // A reply is a child of the comment it answers — ordinary Composes, so
174
174
  // thread cycles are already forbidden by CR-ONT-001.
175
- connection : Composes connect parent ::> cmtStatusBarScope to child ::> cmtStatusBarReply;
176
175
 
177
- connection rel_composes_elMainScreen_uiElement12 : Composes connect parent ::> elMainScreen to child ::> uiElement12;
178
176
 
179
177
  }
@@ -29,6 +29,8 @@ package memo_examples_ui_screen_regions_viewpoints_functional_views_ui_functiona
29
29
  private import memo_examples_ui_screen_regions_artifacts_reviews_notes::*;
30
30
  private import memo_examples_ui_screen_regions_traces::*;
31
31
 
32
+ private import memo_core_common::*;
33
+ private import memo_core_common::MemoIdentity;
32
34
  view uiFunctionalTree : MemoDiagramView {
33
35
  expose memo_examples_ui_screen_regions_architecture_implementation_ui::*;
34
36
  expose memo_examples_ui_screen_regions_architecture_functional_functions::*;
@@ -43,13 +45,13 @@ package memo_examples_ui_screen_regions_viewpoints_functional_views_ui_functiona
43
45
  expose memo_examples_ui_screen_regions_artifacts_reviews_notes::*;
44
46
  expose memo_examples_ui_screen_regions_traces::*;
45
47
  attribute depth = 3;
46
- attribute :>> id = "FUN-101";
47
- attribute :>> shortDescription = "Display-management functions, invoked actions, and UI allocation.";
48
+ @MemoIdentity { :>> providedId = "FUN-101"; }
49
+ @MemoIdentity { :>> shortDescription = "Display-management functions, invoked actions, and UI allocation."; }
48
50
  attribute :>> viewKind = DiagramViewKind::general;
49
51
  attribute :>> diagramType = "bdd";
50
52
  attribute :>> autoPopulate = true;
51
53
  part :>> selectionQuery {
52
- attribute :>> id = "QRY-102";
54
+ @MemoIdentity { :>> providedId = "QRY-102"; }
53
55
  attribute :>> name = "UIFunctionalTreeQuery";
54
56
  attribute :>> includeElementKinds = ("SystemFunction", "UIAction", "UIElement", "UserInterface");
55
57
  attribute :>> includeRelationshipKinds = ("Composes", "ElementTriggersAction", "Performs", "AllocatedTo");
@@ -29,6 +29,8 @@ package memo_examples_ui_screen_regions_viewpoints_requirements_views_ui_require
29
29
  private import memo_examples_ui_screen_regions_artifacts_reviews_notes::*;
30
30
  private import memo_examples_ui_screen_regions_traces::*;
31
31
 
32
+ private import memo_core_common::*;
33
+ private import memo_core_common::MemoIdentity;
32
34
  view uiRequirementsTrace : MemoDiagramView {
33
35
  expose memo_examples_ui_screen_regions_architecture_implementation_ui::*;
34
36
  expose memo_examples_ui_screen_regions_architecture_functional_functions::*;
@@ -43,13 +45,13 @@ package memo_examples_ui_screen_regions_viewpoints_requirements_views_ui_require
43
45
  expose memo_examples_ui_screen_regions_artifacts_reviews_notes::*;
44
46
  expose memo_examples_ui_screen_regions_traces::*;
45
47
  attribute depth = 3;
46
- attribute :>> id = "REQ-101";
47
- attribute :>> shortDescription = "Clinical need through UI requirements to satisfying regions and functions.";
48
+ @MemoIdentity { :>> providedId = "REQ-101"; }
49
+ @MemoIdentity { :>> shortDescription = "Clinical need through UI requirements to satisfying regions and functions."; }
48
50
  attribute :>> viewKind = DiagramViewKind::grid;
49
51
  attribute :>> diagramType = "req";
50
52
  attribute :>> autoPopulate = true;
51
53
  part :>> selectionQuery {
52
- attribute :>> id = "QRY-101";
54
+ @MemoIdentity { :>> providedId = "QRY-101"; }
53
55
  attribute :>> name = "UIRequirementsTraceQuery";
54
56
  attribute :>> includeElementKinds = ("Need", "Requirement", "UIElement", "SystemFunction", "VerificationCase");
55
57
  attribute :>> includeRelationshipKinds = ("DerivesFrom", "SatisfiedBy", "VerifiedBy");
@@ -29,6 +29,8 @@ package memo_examples_ui_screen_regions_viewpoints_risk_views_ui_risk_chain {
29
29
  private import memo_examples_ui_screen_regions_artifacts_reviews_notes::*;
30
30
  private import memo_examples_ui_screen_regions_traces::*;
31
31
 
32
+ private import memo_core_common::*;
33
+ private import memo_core_common::MemoIdentity;
32
34
  view uiRiskChain : MemoDiagramView {
33
35
  expose memo_examples_ui_screen_regions_architecture_implementation_ui::*;
34
36
  expose memo_examples_ui_screen_regions_architecture_functional_functions::*;
@@ -43,13 +45,13 @@ package memo_examples_ui_screen_regions_viewpoints_risk_views_ui_risk_chain {
43
45
  expose memo_examples_ui_screen_regions_artifacts_reviews_notes::*;
44
46
  expose memo_examples_ui_screen_regions_traces::*;
45
47
  attribute depth = 3;
46
- attribute :>> id = "RSK-101";
47
- attribute :>> shortDescription = "Use errors through UI hazards to implemented controls and requirements.";
48
+ @MemoIdentity { :>> providedId = "RSK-101"; }
49
+ @MemoIdentity { :>> shortDescription = "Use errors through UI hazards to implemented controls and requirements."; }
48
50
  attribute :>> viewKind = DiagramViewKind::general;
49
51
  attribute :>> diagramType = "risk";
50
52
  attribute :>> autoPopulate = true;
51
53
  part :>> selectionQuery {
52
- attribute :>> id = "QRY-103";
54
+ @MemoIdentity { :>> providedId = "QRY-103"; }
53
55
  attribute :>> name = "UIRiskChainQuery";
54
56
  attribute :>> includeElementKinds = ("UseError", "Hazard", "RiskControlMeasure", "Requirement", "UIElement", "SystemFunction", "VerificationCase");
55
57
  attribute :>> includeRelationshipKinds = ("ErrorAtElement", "Causes", "Mitigates", "ControlImplementedBy", "DerivesFrom", "VerifiedBy");