@memoarchitect/ontology 0.7.0 → 0.8.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  3. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
  4. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  5. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
  6. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
  7. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
  8. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
  9. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
  10. package/examples/gpca-pump/model/catalog/gpca_context.sysml +9 -0
  11. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +9 -5
  12. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
  13. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +82 -58
  14. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
  15. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
  16. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  17. package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -2
  18. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -331
  19. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
  20. package/examples/gpca-pump/model/catalog/project.sysml +5 -0
  21. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +1 -1
  22. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +1 -1
  23. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +1 -1
  24. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +1 -1
  25. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +2 -2
  26. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +1 -1
  27. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +1 -1
  28. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +1 -1
  29. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +2 -2
  30. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -2
  31. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -2
  32. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +1 -1
  33. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +1 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +2 -2
  35. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -2
  36. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +4 -2
  37. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +1 -1
  38. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +3 -2
  39. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  40. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
  41. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
  42. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
  43. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
  44. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -5
  45. package/examples/ros-mobile-robot/README.md +40 -0
  46. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  47. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  48. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  49. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
  50. package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
  51. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
  52. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -60
  53. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
  54. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -15
  55. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -9
  56. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +42 -66
  57. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +56 -66
  58. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +26 -55
  59. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +3 -6
  60. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +0 -18
  61. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +51 -82
  62. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +21 -31
  63. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -8
  64. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -21
  65. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
  66. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
  67. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
  68. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
  69. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  70. package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
  71. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -1
  72. package/extensions/LICENSES/MIT.txt +19 -0
  73. package/extensions/README.md +94 -0
  74. package/extensions/aadl/memo.package.yaml +18 -0
  75. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  76. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  77. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  78. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  79. package/extensions/cloud/memo.package.yaml +18 -0
  80. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  81. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  82. package/extensions/container/memo.package.yaml +18 -0
  83. package/extensions/container/src/container_extension.sysml +37 -0
  84. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  85. package/extensions/messaging/memo.package.yaml +18 -0
  86. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  87. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  88. package/extensions/ros/memo.package.yaml +18 -0
  89. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  90. package/extensions/ros/src/ros_extension.sysml +200 -0
  91. package/extensions/template/src/extension.sysml +37 -0
  92. package/memo.manifest.yaml +13 -2
  93. package/methodologies/default/memo.package.yaml +1 -1
  94. package/methodologies/gpca/memo.package.yaml +1 -1
  95. package/ontology/memo.package.yaml +1 -1
  96. package/package.json +5 -3
  97. package/profile/memo.package.yaml +1 -1
  98. package/src/architecture/decisions/memo_decisions.sysml +23 -2
  99. package/src/architecture/functional/behavior/memo_behavior.sysml +49 -21
  100. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  101. package/src/architecture/functional/functions/memo_functions.sysml +91 -34
  102. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
  103. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +37 -10
  104. package/src/architecture/implementation/ui/memo_ui.sysml +78 -38
  105. package/src/architecture/logical/interfaces/memo_interfaces.sysml +63 -11
  106. package/src/architecture/logical/structure/memo_logical_structure.sysml +21 -20
  107. package/src/architecture/operational/activities/memo_activities.sysml +10 -3
  108. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
  109. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
  110. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
  111. package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
  112. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
  113. package/src/architecture/operational/workflows/memo_workflows.sysml +29 -10
  114. package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
  115. package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
  116. package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
  117. package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
  118. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  119. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  120. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  121. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  122. package/src/artifacts/standards/iec_60812.sysml +51 -0
  123. package/src/artifacts/standards/iec_62304.sysml +210 -0
  124. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  125. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  126. package/src/artifacts/standards/iso_13485.sysml +113 -0
  127. package/src/artifacts/standards/iso_14971.sysml +94 -0
  128. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  129. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  130. package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
  131. package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
  132. package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
  133. package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
  134. package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
  135. package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
  136. package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
  137. package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
  138. package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
  139. package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
  140. package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
  141. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
  142. package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
  143. package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
  144. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
  145. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  146. package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
  147. package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
  148. package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
  149. package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
  150. package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
  151. package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
  152. package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
  153. package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
  154. package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
  155. package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
  156. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
  157. package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
  158. package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
  159. package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
  160. package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
  161. package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
  162. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  163. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  164. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  165. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  166. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
  167. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  168. package/src/assurance/requirements/memo_requirements.sysml +5 -2
  169. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  170. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  171. package/src/assurance/safety_risk/memo_risk.sysml +78 -7
  172. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
  173. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  174. package/src/core/annotations/memo_annotations.sysml +25 -6
  175. package/src/core/common/memo_common.sysml +121 -16
  176. package/src/core/consistency_rules/consistency_rules.sysml +1 -1
  177. package/src/core/dimensions/dimensions.sysml +12 -0
  178. package/src/core/enumerations/memo_enumerations.sysml +60 -14
  179. package/src/core/relationships/memo_relationships.sysml +199 -196
  180. package/src/memo_namespaces.sysml +30 -0
  181. package/src/methodology/core/memo_core.sysml +24 -0
  182. package/src/methodology/profiles/memo_profiles.sysml +1 -1
  183. package/src/rules/ontology/ontology_invariants.sysml +213 -1
  184. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +3 -3
  185. package/src/viewpoints/clinical/clinical_viewpoint.sysml +1 -1
  186. package/src/viewpoints/context/context_viewpoint.sysml +1 -1
  187. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -1
  188. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +1 -0
  189. package/src/viewpoints/functional/functional_viewpoint.sysml +1 -1
  190. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +1 -1
  191. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +1 -1
  192. package/src/viewpoints/operational/operational_viewpoint.sysml +1 -1
  193. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +1 -1
  194. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +1 -1
  195. package/src/viewpoints/verification/verification_viewpoint.sysml +1 -1
  196. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +1 -1
  197. package/examples/extensions/README.md +0 -16
  198. package/examples/extensions/template/src/extension.sysml +0 -15
  199. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  200. /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
  201. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  202. /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
  203. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  204. /package/{examples/extensions → extensions}/template/memo.package.yaml +0 -0
@@ -2,7 +2,9 @@
2
2
  // panel they run on. One part tree carries geometry and design record — there
3
3
  // is no separate region type.
4
4
  package memo_examples_ui_screen_regions_architecture_implementation_ui {
5
+ private import memo_examples_ui_screen_regions_assurance_requirements::*;
5
6
  private import ScalarValues::*;
7
+ private import memo_examples_ui_screen_regions_architecture_functional_functions::*;
6
8
 
7
9
  private import memo_core_relationships::*;
8
10
  private import memo_core_annotations::*;
@@ -46,69 +48,74 @@ package memo_examples_ui_screen_regions_architecture_implementation_ui {
46
48
  }
47
49
  attribute :>> boundaryColor = "#1B3A4B";
48
50
  attribute :>> detectionMethod = BoundsDetectionKind::manual;
49
- }
50
51
 
51
- // ── A recursively inspectable dynamic region ─────────────────
52
- // The reusable region is the parent. Closed and expanded presentations are
53
- // siblings beneath it, so a renderer (including a 3-D renderer) can reuse
54
- // the region and select the state appropriate to its scene. The region has
55
- // its own capture; geometry views stop at that boundary on the main screen
56
- // and let the reviewer double-click to recurse into its children.
57
- part elDrugSelectorRegion : UIElement {
58
- attribute redefines name = "DrugSelectorRegion";
59
- attribute redefines id = "UIE-005";
60
- attribute redefines shortDescription = "Reusable region containing drug-selector states.";
61
- attribute redefines description = "Parent geometry region for the drug selector. Its state presentations are sibling UI elements, permitting the same region definition to be reused in flat, spatial, or 3-D renderings.";
62
- attribute redefines formKind = UIElementFormKind::panel;
63
- attribute redefines safetyClass = SafetyClassKind::C;
64
- attribute redefines labelText = "DRUG";
65
- attribute redefines disclosureKind = UIDisclosureKind::inline;
66
- attribute redefines boundaryColor = "#F59E0B";
67
- attribute redefines detectionMethod = BoundsDetectionKind::manual;
68
- attribute redefines confirmedBy = "j.okafor";
69
- attribute redefines confirmedAt = "2026-07-15";
70
- attribute redefines bounds {
71
- attribute redefines x = 0.03;
72
- attribute redefines y = 0.43;
73
- attribute redefines width = 0.47;
74
- attribute redefines height = 0.18;
75
- }
76
- }
52
+ // ── A recursively inspectable dynamic region ─────────────
53
+ // The reusable region is the parent. Closed and expanded presentations
54
+ // are siblings beneath it, so a renderer (including a 3-D renderer)
55
+ // can reuse the region and select the state appropriate to its scene.
56
+ // The region has its own capture; geometry views stop at that
57
+ // boundary on the main screen and let the reviewer double-click to
58
+ // recurse into its children.
59
+ part elDrugSelectorRegion : UIElement {
60
+ attribute redefines name = "DrugSelectorRegion";
61
+ attribute redefines id = "UIE-005";
62
+ attribute redefines shortDescription = "Reusable region containing drug-selector states.";
63
+ attribute redefines description = "Parent geometry region for the drug selector. Its state presentations are sibling UI elements, permitting the same region definition to be reused in flat, spatial, or 3-D renderings.";
64
+ attribute redefines formKind = UIElementFormKind::panel;
65
+ attribute redefines safetyClass = SafetyClassKind::C;
66
+ attribute redefines labelText = "DRUG";
67
+ attribute redefines disclosureKind = UIDisclosureKind::inline;
68
+ attribute redefines boundaryColor = "#F59E0B";
69
+ attribute redefines detectionMethod = BoundsDetectionKind::manual;
70
+ attribute redefines confirmedBy = "j.okafor";
71
+ attribute redefines confirmedAt = "2026-07-15";
72
+ attribute redefines bounds {
73
+ attribute redefines x = 0.03;
74
+ attribute redefines y = 0.43;
75
+ attribute redefines width = 0.47;
76
+ attribute redefines height = 0.18;
77
+ }
77
78
 
78
- part elDrugSelectorClosed : UIElement {
79
- attribute :>> id = "UIE-010"; attribute :>> name = "ClosedDrugSelector";
80
- attribute :>> shortDescription = "Closed drug selector shown on the main screen.";
81
- attribute :>> description = "The compact, normal-state selector. It is a sibling of the expanded menu rather than a different identity for the parent region.";
82
- attribute :>> formKind = UIElementFormKind::selector;
83
- attribute :>> safetyClass = SafetyClassKind::C;
84
- attribute :>> labelText = "Norepinephrine 8 mg / 250 mL";
85
- attribute :>> disclosureKind = UIDisclosureKind::conditional;
86
- attribute :>> visibilityCondition = "drug selector inactive";
87
- attribute :>> bounds {
88
- attribute :>> x = 0.0; attribute :>> y = 0.0;
89
- attribute :>> width = 1.0; attribute :>> height = 0.25;
90
- }
91
- attribute :>> boundaryColor = "#F59E0B";
92
- attribute :>> detectionMethod = BoundsDetectionKind::manual;
93
- }
79
+ part elDrugSelectorClosed : UIElement {
80
+ attribute :>> id = "UIE-010"; attribute :>> name = "ClosedDrugSelector";
81
+ attribute :>> shortDescription = "Closed drug selector shown on the main screen.";
82
+ attribute :>> description = "The compact, normal-state selector. It is a sibling of the expanded menu rather than a different identity for the parent region.";
83
+ attribute :>> formKind = UIElementFormKind::selector;
84
+ attribute :>> safetyClass = SafetyClassKind::C;
85
+ attribute :>> labelText = "Norepinephrine 8 mg / 250 mL";
86
+ attribute :>> disclosureKind = UIDisclosureKind::conditional;
87
+ attribute :>> visibilityCondition = "drug selector inactive";
88
+ attribute :>> bounds {
89
+ attribute :>> x = 0.0; attribute :>> y = 0.0;
90
+ attribute :>> width = 1.0; attribute :>> height = 0.25;
91
+ }
92
+ attribute :>> boundaryColor = "#F59E0B";
93
+ attribute :>> detectionMethod = BoundsDetectionKind::manual;
94
+ }
94
95
 
95
- // Open, this sibling overlays the same parent region. `overlay` states that
96
- // covering adjacent content is intended dropdown behaviour, not a defect.
97
- part elDrugMenuExpanded : UIElement {
98
- attribute :>> id = "UIE-011"; attribute :>> name = "ExpandedDrugMenu";
99
- attribute :>> shortDescription = "Expanded drug library choices.";
100
- attribute :>> description = "Expanded state listing Norepinephrine, Dopamine, and Heparin. It shares the DrugSelectorRegion parent with the closed state and can extend beyond that parent's normal inline allocation.";
101
- attribute :>> formKind = UIElementFormKind::selector;
102
- attribute :>> safetyClass = SafetyClassKind::C;
103
- attribute :>> labelText = "Norepinephrine; Dopamine; Heparin";
104
- attribute :>> disclosureKind = UIDisclosureKind::overlay;
105
- attribute :>> visibilityCondition = "drug selector activated";
106
- attribute :>> bounds {
107
- attribute :>> x = 0.0; attribute :>> y = 0.20;
108
- attribute :>> width = 1.0; attribute :>> height = 0.80;
96
+ // Open, this sibling overlays the same parent region. `overlay`
97
+ // states that covering adjacent content is intended dropdown
98
+ // behaviour, not a defect.
99
+ part elDrugMenuExpanded : UIElement {
100
+ attribute redefines name = "ExpandedDrugMenu";
101
+ attribute redefines id = "UIE-011";
102
+ attribute redefines shortDescription = "Expanded drug library choices.";
103
+ attribute redefines description = "Expanded state listing Norepinephrine, Dopamine, and Heparin. It shares the DrugSelectorRegion parent with the closed state and can extend beyond that parent's normal inline allocation.";
104
+ attribute redefines formKind = UIElementFormKind::selector;
105
+ attribute redefines safetyClass = SafetyClassKind::C;
106
+ attribute redefines labelText = "Norepinephrine; Dopamine; Heparin";
107
+ attribute redefines disclosureKind = UIDisclosureKind::overlay;
108
+ attribute redefines visibilityCondition = "drug selector activated";
109
+ attribute redefines boundaryColor = "#d97706";
110
+ attribute redefines detectionMethod = BoundsDetectionKind::manual;
111
+ attribute redefines bounds {
112
+ attribute redefines x = 0.0;
113
+ attribute redefines y = 0.20;
114
+ attribute redefines width = 1.0;
115
+ attribute redefines height = 0.80;
116
+ }
117
+ }
109
118
  }
110
- attribute :>> boundaryColor = "#D97706";
111
- attribute :>> detectionMethod = BoundsDetectionKind::manual;
112
119
  }
113
120
 
114
121
  // ── The settings screen: a sibling root, not a child ────────
@@ -126,28 +133,28 @@ package memo_examples_ui_screen_regions_architecture_implementation_ui {
126
133
  }
127
134
  attribute :>> boundaryColor = "#1B3A4B";
128
135
  attribute :>> detectionMethod = BoundsDetectionKind::manual;
129
- }
130
136
 
131
- // A modal child of the settings screen. It is visible only while a pending
132
- // rate change awaits explicit confirmation and intentionally covers the
133
- // settings form beneath it.
134
- part elRateConfirmDialog : UIElement {
135
- attribute :>> id = "UIE-009"; attribute :>> name = "RateChangeConfirmationDialog";
136
- attribute :>> shortDescription = "Modal confirmation popup for a new infusion rate.";
137
- attribute :>> description = "Restates the pending infusion rate above the settings screen and requires an explicit confirm or cancel disposition before the value can reach the controller.";
138
- attribute :>> formKind = UIElementFormKind::dialog;
139
- attribute :>> safetyClass = SafetyClassKind::C;
140
- attribute :>> labelText = "Confirm rate change?";
141
- attribute :>> disclosureKind = UIDisclosureKind::overlay;
142
- attribute :>> visibilityCondition = "pending rate change";
143
- attribute :>> bounds {
144
- attribute :>> x = 0.28; attribute :>> y = 0.22;
145
- attribute :>> width = 0.44; attribute :>> height = 0.56;
137
+ // A modal child of the settings screen. It is visible only while a
138
+ // pending rate change awaits explicit confirmation and intentionally
139
+ // covers the settings form beneath it.
140
+ part elRateConfirmDialog : UIElement {
141
+ attribute :>> id = "UIE-009"; attribute :>> name = "RateChangeConfirmationDialog";
142
+ attribute :>> shortDescription = "Modal confirmation popup for a new infusion rate.";
143
+ attribute :>> description = "Restates the pending infusion rate above the settings screen and requires an explicit confirm or cancel disposition before the value can reach the controller.";
144
+ attribute :>> formKind = UIElementFormKind::dialog;
145
+ attribute :>> safetyClass = SafetyClassKind::C;
146
+ attribute :>> labelText = "Confirm rate change?";
147
+ attribute :>> disclosureKind = UIDisclosureKind::overlay;
148
+ attribute :>> visibilityCondition = "pending rate change";
149
+ attribute :>> bounds {
150
+ attribute :>> x = 0.28; attribute :>> y = 0.22;
151
+ attribute :>> width = 0.44; attribute :>> height = 0.56;
152
+ }
153
+ attribute :>> boundaryColor = "#D59000";
154
+ attribute :>> detectionMethod = BoundsDetectionKind::manual;
155
+ attribute :>> confirmedBy = "j.okafor";
156
+ attribute :>> confirmedAt = "2026-07-16";
146
157
  }
147
- attribute :>> boundaryColor = "#D59000";
148
- attribute :>> detectionMethod = BoundsDetectionKind::manual;
149
- attribute :>> confirmedBy = "j.okafor";
150
- attribute :>> confirmedAt = "2026-07-16";
151
158
  }
152
159
 
153
160
  // ── UI actions and the functions they invoke ────────────────
@@ -156,18 +163,21 @@ package memo_examples_ui_screen_regions_architecture_implementation_ui {
156
163
  attribute :>> intent = InteractionIntentKind::userInput;
157
164
  attribute :>> confirmationRequired = true;
158
165
  attribute :>> feedbackProvided = "new rate echoed on a confirmation dialog before it is applied";
166
+ perform fnManageInfusionDisplay.fnSetInfusionRate;
159
167
  }
160
168
 
161
169
  action uiaOpenSettings : UIAction {
162
170
  attribute :>> id = "UIR-UIA-002"; attribute :>> name = "OpenInfusionSettings";
163
171
  attribute :>> intent = InteractionIntentKind::navigation;
164
172
  attribute :>> confirmationRequired = false;
173
+ perform fnManageInfusionDisplay;
165
174
  }
166
175
 
167
176
  action uiaSelectDrug : UIAction {
168
177
  attribute :>> id = "UIR-UIA-003"; attribute :>> name = "SelectDrug";
169
178
  attribute :>> intent = InteractionIntentKind::userInput;
170
179
  attribute :>> confirmationRequired = true;
180
+ perform fnManageInfusionDisplay.fnValidateDrugSelection;
171
181
  }
172
182
 
173
183
  part uiElement12 : UIElement {
@@ -178,6 +188,7 @@ package memo_examples_ui_screen_regions_architecture_implementation_ui {
178
188
  attribute redefines detectionMethod = BoundsDetectionKind::manual;
179
189
  attribute redefines boundaryColor = "#14B8A6";
180
190
  attribute redefines boundaryOpacity = 0.12;
191
+ attribute redefines boundaryWidth = 5;
181
192
  attribute redefines bounds {
182
193
  attribute redefines x = 0.52234;
183
194
  attribute redefines y = 0.11311;
@@ -186,4 +197,16 @@ package memo_examples_ui_screen_regions_architecture_implementation_ui {
186
197
  }
187
198
  }
188
199
 
200
+
201
+ satisfy reqRateLegibility by elMainScreen;
202
+
203
+ satisfy reqRateEntry by elSettingsScreen;
204
+
205
+ satisfy reqRateEntry by elSettingsScreen.elRateConfirmDialog;
206
+
207
+ satisfy reqDrugLibrarySelection by elMainScreen.elDrugSelectorRegion;
208
+
209
+ satisfy reqDrugIdentityDisplay by elMainScreen.elDrugSelectorRegion.elDrugSelectorClosed;
210
+
211
+ satisfy reqDrugSelectionPerformance by elMainScreen.elDrugSelectorRegion;
189
212
  }
@@ -22,7 +22,7 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
22
22
  attribute :>> foreseeable = true;
23
23
  }
24
24
 
25
- item rcRateConfirm : RiskControlMeasure {
25
+ part rcRateConfirm : RiskControlMeasure {
26
26
  attribute :>> id = "UIR-RC-001"; attribute :>> name = "RateChangeConfirmationDialog";
27
27
  attribute :>> shortDescription = "Explicit confirmation step before a rate change applies.";
28
28
  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.";
@@ -37,7 +37,7 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
37
37
  attribute :>> foreseeable = true;
38
38
  }
39
39
 
40
- item rcDrugLibraryGuard : RiskControlMeasure {
40
+ part rcDrugLibraryGuard : RiskControlMeasure {
41
41
  attribute :>> id = "UIR-RC-002"; attribute :>> name = "CareAreaDrugLibraryGuard";
42
42
  attribute :>> shortDescription = "Restrict selection to enabled care-area drug-library entries.";
43
43
  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.";
@@ -52,7 +52,7 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
52
52
  attribute :>> foreseeable = true;
53
53
  }
54
54
 
55
- item rcLowBatteryProminence : RiskControlMeasure {
55
+ part rcLowBatteryProminence : RiskControlMeasure {
56
56
  attribute :>> id = "UIR-RC-003"; attribute :>> name = "ProminentLowBatteryStatus";
57
57
  attribute :>> shortDescription = "Update and emphasize low remaining battery status within one second.";
58
58
  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.";
@@ -67,7 +67,7 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
67
67
  attribute :>> foreseeable = true;
68
68
  }
69
69
 
70
- item rcDisplayFreshnessMonitor : RiskControlMeasure {
70
+ part rcDisplayFreshnessMonitor : RiskControlMeasure {
71
71
  attribute :>> id = "UIR-RC-004"; attribute :>> name = "InfusionDisplayFreshnessMonitor";
72
72
  attribute :>> shortDescription = "Refresh displayed rate and volume at 1 Hz and detect stale telemetry.";
73
73
  attribute :>> description = "Maintains a one-second display age budget for infusion status and detects a missed telemetry refresh before stale values can persist.";
@@ -82,7 +82,7 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
82
82
  attribute :>> foreseeable = true;
83
83
  }
84
84
 
85
- item rcClockFreshnessCheck : RiskControlMeasure {
85
+ part rcClockFreshnessCheck : RiskControlMeasure {
86
86
  attribute :>> id = "UIR-RC-005"; attribute :>> name = "SynchronizedClockFreshnessCheck";
87
87
  attribute :>> shortDescription = "Synchronize the display clock and bound visible time error.";
88
88
  attribute :>> description = "Checks the displayed clock against the synchronized device clock and refreshes the visible minute at rollover.";
@@ -1,6 +1,10 @@
1
1
  // Verification and validation: cases and the evidence they produce.
2
2
  package memo_examples_ui_screen_regions_assurance_verification_validation {
3
+ private import memo_examples_ui_screen_regions_assurance_safety_risk::*;
4
+ private import memo_examples_ui_screen_regions_architecture_functional_functions::*;
5
+ private import memo_examples_ui_screen_regions_assurance_requirements::*;
3
6
  private import ScalarValues::*;
7
+ private import memo_core_dimensions::*; // ElementStatusKind
4
8
 
5
9
  private import memo_core_relationships::*;
6
10
  private import memo_core_annotations::*;
@@ -13,16 +17,20 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
13
17
  private import memo_artifacts_core::*;
14
18
 
15
19
  private import memo_core_enumerations::*;
20
+ private import memo_core_common::*;
16
21
  private import memo_assurance_verification_validation::*;
17
22
 
18
23
  verification vcRateChange : VerificationCase {
19
24
  attribute :>> id = "UIR-VER-001"; attribute :>> name = "VerifyRateChangeConfirmation";
20
25
  attribute :>> methodKind = VerificationMethodKind::test;
21
26
  attribute :>> acceptanceCriteria = "A rate change cannot reach the controller until the displayed value is explicitly confirmed.";
22
- attribute :>> status = "planned";
27
+ attribute :>> status = ElementStatusKind::approved;
28
+
29
+ subject verified : Base::Anything[*] = (rcRateConfirm, fnManageInfusionDisplay.fnSetInfusionRate, fnManageInfusionDisplay);
23
30
  }
24
31
 
25
- part evRateChange : Evidence {
32
+ part evRateChange : MemoEvidence {
33
+ attribute :>> evidenceKind = EvidenceKind::evidence;
26
34
  attribute :>> id = "UIR-EV-001"; attribute :>> name = "RateChangeConfirmationTestRecord";
27
35
  attribute :>> version = "planned";
28
36
  attribute :>> evidenceType = "test record";
@@ -33,10 +41,13 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
33
41
  attribute :>> id = "VER-002"; attribute :>> name = "VerifyCareAreaDrugLibrarySelection";
34
42
  attribute :>> methodKind = VerificationMethodKind::test;
35
43
  attribute :>> acceptanceCriteria = "Only enabled care-area drug and concentration records are selectable, and every selection supplies the matching dosing limits.";
36
- attribute :>> status = "planned";
44
+ attribute :>> status = ElementStatusKind::approved;
45
+
46
+ subject verified : Base::Anything[*] = (rcDrugLibraryGuard, fnManageInfusionDisplay.fnValidateDrugSelection);
37
47
  }
38
48
 
39
- part evDrugLibrarySelection : Evidence {
49
+ part evDrugLibrarySelection : MemoEvidence {
50
+ attribute :>> evidenceKind = EvidenceKind::evidence;
40
51
  attribute :>> id = "EVD-002"; attribute :>> name = "DrugLibrarySelectionTestRecord";
41
52
  attribute :>> version = "planned";
42
53
  attribute :>> evidenceType = "test record";
@@ -47,10 +58,14 @@ package memo_examples_ui_screen_regions_assurance_verification_validation {
47
58
  attribute :>> id = "VER-003"; attribute :>> name = "VerifyInfusionStatusContentAndFreshness";
48
59
  attribute :>> methodKind = VerificationMethodKind::test;
49
60
  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.";
50
- attribute :>> status = "planned";
61
+ attribute :>> status = ElementStatusKind::approved;
62
+
63
+ objective { verify reqActiveRateDisplay; verify reqDrugIdentityDisplay; verify reqVolumeDisplay; verify reqTimeDisplay; verify reqTimeAccuracy; verify reqBatteryStatusDisplay; verify reqBatteryWarningPerformance; }
64
+ subject verified : Base::Anything[*] = (rcLowBatteryProminence, rcDisplayFreshnessMonitor, rcClockFreshnessCheck, fnManageInfusionDisplay.fnPresentDeliveryStatus, fnManageInfusionDisplay.fnPresentLocalTime, fnManageInfusionDisplay.fnPresentBatteryStatus);
51
65
  }
52
66
 
53
- part evInfusionStatusContent : Evidence {
67
+ part evInfusionStatusContent : MemoEvidence {
68
+ attribute :>> evidenceKind = EvidenceKind::evidence;
54
69
  attribute :>> id = "EVD-003"; attribute :>> name = "InfusionStatusDisplayTestRecord";
55
70
  attribute :>> version = "planned";
56
71
  attribute :>> evidenceType = "test record";
@@ -0,0 +1,8 @@
1
+ package memo_examples_ui_screen_regions_relationships {
2
+ private import memo_artifacts_configuration_management::*;
3
+ private import memo_assurance_safety_risk::*;
4
+ private import memo_examples_ui_screen_regions_architecture_implementation_ui::*;
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;
8
+ }
@@ -29,73 +29,20 @@ package memo_examples_ui_screen_regions_traces {
29
29
  private import memo_examples_ui_screen_regions_artifacts_reviews_comments::*;
30
30
  private import memo_examples_ui_screen_regions_artifacts_reviews_rationales::*;
31
31
  private import memo_examples_ui_screen_regions_artifacts_reviews_notes::*;
32
+ private import memo_assurance_safety_risk_analysis::*;
32
33
 
33
- // One tree. Spatial containment only.
34
- connection : Composes connect parent ::> elMainScreen to child ::> elDrugSelectorRegion;
34
+ // The UI-element and function trees are native nesting now (see
35
+ // architecture/implementation/ui.sysml and architecture/functional/
36
+ // functions.sysml); no Composes edge is written for either. The two that
37
+ // remain below are the ones nesting cannot express: a tool-drawn region
38
+ // (uiElement12, appended by memo-architect's canvas editor as a flat
39
+ // element plus a Composes edge, not by hand) and a comment-reply thread
40
+ // (a review feature with the same runtime-append shape).
41
+ connection : ElementTriggersAction connect element ::> elMainScreen.elDrugSelectorRegion to triggeredAction ::> uiaSelectDrug;
35
42
 
36
- connection : Composes connect parent ::> elDrugSelectorRegion to child ::> elDrugSelectorClosed;
43
+ connection : ElementTriggersAction connect element ::> elMainScreen.elDrugSelectorRegion.elDrugSelectorClosed to triggeredAction ::> uiaSelectDrug;
37
44
 
38
- connection : Composes connect parent ::> elDrugSelectorRegion to child ::> elDrugMenuExpanded;
39
-
40
- connection : Composes connect parent ::> elSettingsScreen to child ::> elRateConfirmDialog;
41
-
42
- connection : Composes connect parent ::> fnManageInfusionDisplay to child ::> fnSetInfusionRate;
43
-
44
- connection : Composes connect parent ::> fnManageInfusionDisplay to child ::> fnValidateDrugSelection;
45
-
46
- connection : Composes connect parent ::> fnManageInfusionDisplay to child ::> fnPresentDeliveryStatus;
47
-
48
- connection : Composes connect parent ::> fnManageInfusionDisplay to child ::> fnPresentLocalTime;
49
-
50
- connection : Composes connect parent ::> fnManageInfusionDisplay to child ::> fnPresentBatteryStatus;
51
-
52
- connection : ActionInvokesFunction connect uiAction ::> uiaEditRate to systemFunction ::> fnSetInfusionRate;
53
-
54
- connection : ElementTriggersAction connect element ::> elDrugSelectorRegion to triggeredAction ::> uiaSelectDrug;
55
-
56
- connection : ElementTriggersAction connect element ::> elDrugSelectorClosed to triggeredAction ::> uiaSelectDrug;
57
-
58
- connection : ElementTriggersAction connect element ::> elDrugMenuExpanded to triggeredAction ::> uiaSelectDrug;
59
-
60
- connection : ActionInvokesFunction connect uiAction ::> uiaSelectDrug to systemFunction ::> fnValidateDrugSelection;
61
-
62
- connection : ActionInvokesFunction connect uiAction ::> uiaOpenSettings to systemFunction ::> fnManageInfusionDisplay;
63
-
64
- connection : SatisfiedBy connect requiredElement ::> reqRateEntry to satisfyingElement ::> fnSetInfusionRate;
65
-
66
- connection : SatisfiedBy connect requiredElement ::> reqRateLegibility to satisfyingElement ::> fnPresentDeliveryStatus;
67
-
68
- connection : SatisfiedBy connect requiredElement ::> reqVolumeDisplay to satisfyingElement ::> fnPresentDeliveryStatus;
69
-
70
- connection : SatisfiedBy connect requiredElement ::> reqRateLegibility to satisfyingElement ::> elMainScreen;
71
-
72
- connection : SatisfiedBy connect requiredElement ::> reqRateEntry to satisfyingElement ::> elSettingsScreen;
73
-
74
- connection : SatisfiedBy connect requiredElement ::> reqRateEntry to satisfyingElement ::> elRateConfirmDialog;
75
-
76
- connection : SatisfiedBy connect requiredElement ::> reqDrugLibrarySelection to satisfyingElement ::> elDrugSelectorRegion;
77
-
78
- connection : SatisfiedBy connect requiredElement ::> reqDrugLibrarySelection to satisfyingElement ::> fnValidateDrugSelection;
79
-
80
- connection : SatisfiedBy connect requiredElement ::> reqDisplayFreshness to satisfyingElement ::> fnPresentDeliveryStatus;
81
-
82
- connection : SatisfiedBy connect requiredElement ::> reqActiveRateDisplay to satisfyingElement ::> fnPresentDeliveryStatus;
83
-
84
- connection : SatisfiedBy connect requiredElement ::> reqDrugIdentityDisplay to satisfyingElement ::> elDrugSelectorClosed;
85
-
86
- connection : SatisfiedBy connect requiredElement ::> reqDrugIdentityDisplay to satisfyingElement ::> fnValidateDrugSelection;
87
-
88
- connection : SatisfiedBy connect requiredElement ::> reqTimeDisplay to satisfyingElement ::> fnPresentLocalTime;
89
-
90
- connection : SatisfiedBy connect requiredElement ::> reqTimeAccuracy to satisfyingElement ::> fnPresentLocalTime;
91
-
92
- connection : SatisfiedBy connect requiredElement ::> reqBatteryStatusDisplay to satisfyingElement ::> fnPresentBatteryStatus;
93
-
94
- connection : SatisfiedBy connect requiredElement ::> reqBatteryWarningPerformance to satisfyingElement ::> fnPresentBatteryStatus;
95
-
96
- connection : SatisfiedBy connect requiredElement ::> reqDrugSelectionPerformance to satisfyingElement ::> elDrugSelectorRegion;
97
-
98
- connection : SatisfiedBy connect requiredElement ::> reqDrugSelectionPerformance to satisfyingElement ::> fnValidateDrugSelection;
45
+ connection : ElementTriggersAction connect element ::> elMainScreen.elDrugSelectorRegion.elDrugMenuExpanded to triggeredAction ::> uiaSelectDrug;
99
46
 
100
47
  connection : DerivesFrom connect sourceDriver ::> needReadableProgramming to targetRequirement ::> reqRateLegibility;
101
48
 
@@ -123,7 +70,7 @@ package memo_examples_ui_screen_regions_traces {
123
70
 
124
71
  connection : ErrorAtElement connect useError ::> ueMisreadRate to element ::> elMainScreen;
125
72
 
126
- connection : ControlImplementedBy connect riskControl ::> rcRateConfirm to implementingElement ::> elRateConfirmDialog;
73
+ connection : ControlImplementedBy connect riskControl ::> rcRateConfirm to implementingElement ::> elSettingsScreen.elRateConfirmDialog;
127
74
 
128
75
  connection : Causes connect cause ::> ueMisreadRate to effect ::> hzWrongRate {
129
76
  attribute :>> causeKind = CauseKind::useErrorLeadsToHazard;
@@ -135,7 +82,7 @@ package memo_examples_ui_screen_regions_traces {
135
82
 
136
83
  connection : DerivesFrom connect sourceDriver ::> hzWrongRate to targetRequirement ::> reqRateEntry;
137
84
 
138
- connection : ErrorAtElement connect useError ::> ueSelectWrongDrug to element ::> elDrugSelectorRegion;
85
+ connection : ErrorAtElement connect useError ::> ueSelectWrongDrug to element ::> elMainScreen.elDrugSelectorRegion;
139
86
 
140
87
  connection : Causes connect cause ::> ueSelectWrongDrug to effect ::> hzWrongDrug {
141
88
  attribute :>> causeKind = CauseKind::useErrorLeadsToHazard;
@@ -145,9 +92,9 @@ package memo_examples_ui_screen_regions_traces {
145
92
  attribute :>> mitigationKind = MitigationKind::hazard;
146
93
  }
147
94
 
148
- connection : ControlImplementedBy connect riskControl ::> rcDrugLibraryGuard to implementingElement ::> elDrugSelectorRegion;
95
+ connection : ControlImplementedBy connect riskControl ::> rcDrugLibraryGuard to implementingElement ::> elMainScreen.elDrugSelectorRegion;
149
96
 
150
- connection : ControlImplementedBy connect riskControl ::> rcDrugLibraryGuard to implementingElement ::> fnValidateDrugSelection;
97
+ connection : ControlImplementedBy connect riskControl ::> rcDrugLibraryGuard to implementingElement ::> fnManageInfusionDisplay.fnValidateDrugSelection;
151
98
 
152
99
  connection : DerivesFrom connect sourceDriver ::> hzWrongDrug to targetRequirement ::> reqDrugLibrarySelection;
153
100
 
@@ -161,7 +108,7 @@ package memo_examples_ui_screen_regions_traces {
161
108
  attribute :>> mitigationKind = MitigationKind::hazard;
162
109
  }
163
110
 
164
- connection : ControlImplementedBy connect riskControl ::> rcLowBatteryProminence to implementingElement ::> fnPresentBatteryStatus;
111
+ connection : ControlImplementedBy connect riskControl ::> rcLowBatteryProminence to implementingElement ::> fnManageInfusionDisplay.fnPresentBatteryStatus;
165
112
 
166
113
  connection : DerivesFrom connect sourceDriver ::> hzUnexpectedPowerLoss to targetRequirement ::> reqBatteryWarningPerformance;
167
114
 
@@ -175,7 +122,7 @@ package memo_examples_ui_screen_regions_traces {
175
122
  attribute :>> mitigationKind = MitigationKind::hazard;
176
123
  }
177
124
 
178
- connection : ControlImplementedBy connect riskControl ::> rcDisplayFreshnessMonitor to implementingElement ::> fnPresentDeliveryStatus;
125
+ connection : ControlImplementedBy connect riskControl ::> rcDisplayFreshnessMonitor to implementingElement ::> fnManageInfusionDisplay.fnPresentDeliveryStatus;
179
126
 
180
127
  connection : DerivesFrom connect sourceDriver ::> hzIncorrectDeliveredVolumeAssessment to targetRequirement ::> reqDisplayFreshness;
181
128
 
@@ -189,81 +136,37 @@ package memo_examples_ui_screen_regions_traces {
189
136
  attribute :>> mitigationKind = MitigationKind::hazard;
190
137
  }
191
138
 
192
- connection : ControlImplementedBy connect riskControl ::> rcClockFreshnessCheck to implementingElement ::> fnPresentLocalTime;
139
+ connection : ControlImplementedBy connect riskControl ::> rcClockFreshnessCheck to implementingElement ::> fnManageInfusionDisplay.fnPresentLocalTime;
193
140
 
194
141
  connection : DerivesFrom connect sourceDriver ::> hzIncorrectEventChronology to targetRequirement ::> reqTimeAccuracy;
195
142
 
196
- connection : VerifiedBy connect verificationTarget ::> rcRateConfirm to verificationCase ::> vcRateChange;
197
-
198
- connection : VerifiedBy connect verificationTarget ::> fnSetInfusionRate to verificationCase ::> vcRateChange;
199
-
200
- connection : VerifiedBy connect verificationTarget ::> fnManageInfusionDisplay to verificationCase ::> vcRateChange;
201
-
202
- connection : VerifiedBy connect verificationTarget ::> rcDrugLibraryGuard to verificationCase ::> vcDrugLibrarySelection;
203
-
204
- connection : VerifiedBy connect verificationTarget ::> fnValidateDrugSelection to verificationCase ::> vcDrugLibrarySelection;
205
-
206
- connection : VerifiedBy connect verificationTarget ::> rcLowBatteryProminence to verificationCase ::> vcInfusionStatusContent;
207
-
208
- connection : VerifiedBy connect verificationTarget ::> rcDisplayFreshnessMonitor to verificationCase ::> vcInfusionStatusContent;
209
-
210
- connection : VerifiedBy connect verificationTarget ::> rcClockFreshnessCheck to verificationCase ::> vcInfusionStatusContent;
211
-
212
- connection : VerifiedBy connect verificationTarget ::> reqActiveRateDisplay to verificationCase ::> vcInfusionStatusContent;
213
-
214
- connection : VerifiedBy connect verificationTarget ::> reqDrugIdentityDisplay to verificationCase ::> vcInfusionStatusContent;
215
-
216
- connection : VerifiedBy connect verificationTarget ::> reqVolumeDisplay to verificationCase ::> vcInfusionStatusContent;
217
-
218
- connection : VerifiedBy connect verificationTarget ::> reqTimeDisplay to verificationCase ::> vcInfusionStatusContent;
219
-
220
- connection : VerifiedBy connect verificationTarget ::> reqTimeAccuracy to verificationCase ::> vcInfusionStatusContent;
221
-
222
- connection : VerifiedBy connect verificationTarget ::> reqBatteryStatusDisplay to verificationCase ::> vcInfusionStatusContent;
223
-
224
- connection : VerifiedBy connect verificationTarget ::> reqBatteryWarningPerformance to verificationCase ::> vcInfusionStatusContent;
225
-
226
- connection : VerifiedBy connect verificationTarget ::> fnPresentDeliveryStatus to verificationCase ::> vcInfusionStatusContent;
227
-
228
- connection : VerifiedBy connect verificationTarget ::> fnPresentLocalTime to verificationCase ::> vcInfusionStatusContent;
229
-
230
- connection : VerifiedBy connect verificationTarget ::> fnPresentBatteryStatus to verificationCase ::> vcInfusionStatusContent;
231
-
232
143
  connection : ProducesEvidence connect producer ::> vcRateChange to producedEvidence ::> evRateChange;
233
144
 
234
145
  connection : ProducesEvidence connect producer ::> vcDrugLibrarySelection to producedEvidence ::> evDrugLibrarySelection;
235
146
 
236
147
  connection : ProducesEvidence connect producer ::> vcInfusionStatusContent to producedEvidence ::> evInfusionStatusContent;
237
148
 
238
- connection : AllocatedTo connect function ::> fnSetInfusionRate to allocatedElement ::> uiPumpPanel;
239
-
240
- connection : AllocatedTo connect function ::> fnManageInfusionDisplay to allocatedElement ::> uiPumpPanel;
241
-
242
- connection : AllocatedTo connect function ::> fnValidateDrugSelection to allocatedElement ::> uiPumpPanel;
243
-
244
- connection : AllocatedTo connect function ::> fnPresentDeliveryStatus to allocatedElement ::> uiPumpPanel;
245
-
246
- connection : AllocatedTo connect function ::> fnPresentLocalTime to allocatedElement ::> uiPumpPanel;
247
-
248
- connection : AllocatedTo connect function ::> fnPresentBatteryStatus to allocatedElement ::> uiPumpPanel;
249
-
149
+ allocate fnManageInfusionDisplay.fnSetInfusionRate to uiPumpPanel;
150
+ allocate fnManageInfusionDisplay to uiPumpPanel;
151
+ allocate fnManageInfusionDisplay.fnValidateDrugSelection to uiPumpPanel;
152
+ allocate fnManageInfusionDisplay.fnPresentDeliveryStatus to uiPumpPanel;
153
+ allocate fnManageInfusionDisplay.fnPresentLocalTime to uiPumpPanel;
154
+ allocate fnManageInfusionDisplay.fnPresentBatteryStatus to uiPumpPanel;
250
155
  // Two seeded function-to-region traces for exercising relationship editing
251
156
  // in the UI. Newly drawn regions can be linked the same way.
252
- connection : AllocatedTo connect function ::> fnValidateDrugSelection to allocatedElement ::> elDrugSelectorRegion;
253
-
254
- connection : AllocatedTo connect function ::> fnSetInfusionRate to allocatedElement ::> elRateConfirmDialog;
255
-
157
+ allocate fnManageInfusionDisplay.fnValidateDrugSelection to elMainScreen.elDrugSelectorRegion;
158
+ allocate fnManageInfusionDisplay.fnSetInfusionRate to elSettingsScreen.elRateConfirmDialog;
256
159
  connection : CapturesScreen connect capture ::> capMain to screen ::> elMainScreen;
257
160
 
258
161
  connection : CapturesScreen connect capture ::> capSettings to screen ::> elSettingsScreen;
259
162
 
260
- connection : CapturesScreen connect capture ::> capDrugSelector to screen ::> elDrugSelectorRegion;
163
+ connection : CapturesScreen connect capture ::> capDrugSelector to screen ::> elMainScreen.elDrugSelectorRegion;
261
164
 
262
165
  connection : CommentsOn connect remark ::> cmtDecimalSalience to annotatedElement ::> elMainScreen;
263
166
 
264
167
  connection : CommentsOn connect remark ::> cmtStatusBarScope to annotatedElement ::> elMainScreen;
265
168
 
266
- connection : RationaleFor connect rationaleRecord ::> ratOverlayGeometry to justifiedElement ::> elDrugMenuExpanded;
169
+ connection : RationaleFor connect rationaleRecord ::> ratOverlayGeometry to justifiedElement ::> elMainScreen.elDrugSelectorRegion.elDrugMenuExpanded;
267
170
 
268
171
  connection : NotesOn connect noteRecord ::> noteCaptureReview to notedElement ::> capMain;
269
172
 
@@ -53,7 +53,7 @@ package memo_examples_ui_screen_regions_viewpoints_functional_views_ui_functiona
53
53
  attribute :>> id = "QRY-102";
54
54
  attribute :>> name = "UIFunctionalTreeQuery";
55
55
  attribute :>> includeElementKinds = ("SystemFunction", "UIAction", "UIElement", "UserInterface");
56
- attribute :>> includeRelationshipKinds = ("Composes", "ElementTriggersAction", "ActionInvokesFunction", "AllocatedTo");
56
+ attribute :>> includeRelationshipKinds = ("Composes", "ElementTriggersAction", "Performs", "AllocatedTo");
57
57
  attribute :>> includeLayers = ("functions", "implementation");
58
58
  attribute :>> rationaleText = "Show function decomposition from interaction to allocated user interface.";
59
59
  }
@@ -0,0 +1,19 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 memoarchitect
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE.