@memoarchitect/ontology 0.8.24 → 0.10.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
  2. package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
  3. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +9 -7
  4. package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
  5. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +8 -6
  6. package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
  7. package/examples/gpca-pump/memo.identity.yaml +2179 -0
  8. package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
  9. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
  10. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
  11. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
  12. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
  13. package/examples/gpca-pump/model/catalog/gpca_context.sysml +22 -20
  14. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -13
  15. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
  16. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
  17. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +121 -125
  18. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
  19. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
  20. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
  21. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
  22. package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -14
  23. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -8
  24. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
  25. package/examples/gpca-pump/model/catalog/project.sysml +3 -1
  26. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +6 -4
  27. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +5 -3
  28. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +5 -3
  29. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +5 -3
  30. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +5 -3
  31. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +5 -3
  32. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +5 -3
  33. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +5 -3
  34. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +5 -3
  35. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +5 -3
  36. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +5 -3
  37. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +5 -3
  38. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +5 -3
  39. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +5 -3
  40. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +5 -3
  41. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -3
  42. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +5 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -3
  44. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -3
  45. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +5 -3
  46. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +5 -3
  47. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +5 -3
  48. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +5 -3
  49. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +6 -4
  50. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -3
  51. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +5 -3
  52. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +9 -7
  53. package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
  54. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +6 -4
  55. package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
  56. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
  57. package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
  58. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
  59. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
  60. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
  61. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
  62. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
  63. package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
  64. package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
  65. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +17 -16
  66. package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
  67. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
  68. package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
  69. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +10 -8
  70. package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
  71. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +51 -51
  72. package/examples/surgical-robot/model/catalog/project.sysml +3 -1
  73. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
  74. package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
  75. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -8
  76. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -5
  77. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +3 -1
  78. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +2 -1
  79. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +3 -1
  80. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +8 -6
  81. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +3 -1
  82. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +2 -1
  83. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +3 -1
  84. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +11 -7
  85. package/examples/temperature-alarm/memo.identity.yaml +64 -0
  86. package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
  87. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +27 -22
  88. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
  89. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
  90. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
  91. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
  92. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
  93. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
  94. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
  95. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
  96. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
  97. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
  98. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
  99. package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
  100. package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
  101. package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
  102. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +5 -3
  103. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +5 -3
  104. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +5 -3
  105. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +3 -1
  106. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +3 -1
  107. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +3 -1
  108. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
  109. package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
  110. package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
  111. package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
  112. package/extensions/container/src/methodology/container_methodology.sysml +3 -1
  113. package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
  114. package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
  115. package/extensions/template/src/extension.sysml +3 -1
  116. package/package.json +2 -2
  117. package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
  118. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
  119. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
  120. package/src/architecture/implementation/ui/memo_ui.sysml +0 -23
  121. package/src/architecture/logical/interfaces/memo_interfaces.sysml +3 -1
  122. package/src/architecture/operational/context/use_context/memo_use_context.sysml +3 -11
  123. package/src/architecture/operational/scenarios/memo_scenarios.sysml +0 -10
  124. package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -11
  125. package/src/architecture/operational/workflows/memo_workflows.sysml +0 -20
  126. package/src/architecture/realization/deployment/memo_deployment.sysml +16 -9
  127. package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
  128. package/src/artifacts/standards/cfr_21_820.sysml +80 -89
  129. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
  130. package/src/artifacts/standards/iec_60601_1.sysml +108 -121
  131. package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
  132. package/src/artifacts/standards/iec_60812.sysml +21 -22
  133. package/src/artifacts/standards/iec_62304.sysml +150 -169
  134. package/src/artifacts/standards/iec_62366_1.sysml +80 -89
  135. package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
  136. package/src/artifacts/standards/iso_13485.sysml +80 -89
  137. package/src/artifacts/standards/iso_14971.sysml +66 -73
  138. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
  139. package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
  140. package/src/core/common/memo_common.sysml +50 -50
  141. package/src/core/enumerations/memo_enumerations.sysml +1 -1
  142. package/src/core/relationships/memo_relationships.sysml +22 -49
  143. package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
  144. package/src/methodology/core/memo_core.sysml +0 -10
  145. package/src/methodology/profiles/memo_profiles.sysml +18 -16
  146. package/src/rules/closure/closure_rules.sysml +22 -20
  147. package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
  148. package/src/rules/ontology/ontology_invariants.sysml +106 -33
  149. package/src/rules/quantitative/quantitative_rules.sysml +4 -2
  150. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -28
  151. package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
  152. package/src/viewpoints/context/context_viewpoint.sysml +5 -3
  153. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +5 -3
  154. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
  155. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -16
  156. package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
  157. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +5 -3
  158. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +5 -3
  159. package/src/viewpoints/logical/logical_viewpoint.sysml +4 -2
  160. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +5 -3
  161. package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
  162. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +5 -3
  163. package/src/viewpoints/physical/physical_viewpoint.sysml +4 -2
  164. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +5 -3
  165. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +5 -3
  166. package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
  167. package/src/viewpoints/requirements/requirements_viewpoint.sysml +4 -2
  168. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +5 -3
  169. package/src/viewpoints/risk/risk_viewpoint.sysml +4 -2
  170. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +5 -3
  171. package/src/viewpoints/software/software_viewpoint.sysml +4 -2
  172. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +5 -3
  173. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -2
  174. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
  175. package/src/viewpoints/usability/usability_viewpoint.sysml +4 -2
  176. package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
  177. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +5 -3
  178. package/templates/connected-device/model/catalog/project.sysml +3 -1
  179. package/templates/default/model/catalog/project.sysml +3 -1
  180. package/templates/infusion-pump/model/catalog/project.sysml +3 -1
  181. package/templates/monitoring-device/model/catalog/project.sysml +3 -1
  182. package/templates/samd/model/catalog/project.sysml +3 -1
@@ -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");
@@ -29,6 +29,8 @@ package memo_examples_ui_screen_regions_viewpoints_ui_layout_views_main_screen_l
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
  // The geometry view: the capture as backdrop, elements drawn at their
33
35
  // authored bounds. Images for a layout view live in
34
36
  // `model/assets/<viewName>/`, so this view's backdrop is under
@@ -50,7 +52,7 @@ package memo_examples_ui_screen_regions_viewpoints_ui_layout_views_main_screen_l
50
52
  expose memo_examples_ui_screen_regions_artifacts_reviews_rationales::*;
51
53
  expose memo_examples_ui_screen_regions_artifacts_reviews_notes::*;
52
54
  expose memo_examples_ui_screen_regions_traces::*;
53
- attribute :>> id = "UIE-001";
55
+ @MemoIdentity { :>> providedId = "UIE-001"; }
54
56
  ref :>> viewpointDefinition = uiLayoutViewpoint;
55
57
  }
56
58
  }
@@ -29,6 +29,8 @@ package memo_examples_ui_screen_regions_viewpoints_ui_layout_views_settings_scre
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
  // The settings screen reached by NavigatesTo, rendered on its own capture.
33
35
  // One layout view per captured screen, and the view's name is the folder
34
36
  // its images live in — `model/assets/settingsScreenLayout/`.
@@ -45,7 +47,7 @@ package memo_examples_ui_screen_regions_viewpoints_ui_layout_views_settings_scre
45
47
  expose memo_examples_ui_screen_regions_artifacts_reviews_rationales::*;
46
48
  expose memo_examples_ui_screen_regions_artifacts_reviews_notes::*;
47
49
  expose memo_examples_ui_screen_regions_traces::*;
48
- attribute :>> id = "UIE-008";
50
+ @MemoIdentity { :>> providedId = "UIE-008"; }
49
51
  ref :>> viewpointDefinition = uiLayoutViewpoint;
50
52
  }
51
53
  }
@@ -29,6 +29,8 @@ package memo_examples_ui_screen_regions_viewpoints_ui_layout_views_ui_region_tra
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
  // The same content as a graph, for reviewers who want to read the trace
33
35
  // chain rather than look at the screen.
34
36
  view uiRegionTrace : MemoDiagramView {
@@ -44,7 +46,7 @@ package memo_examples_ui_screen_regions_viewpoints_ui_layout_views_ui_region_tra
44
46
  expose memo_examples_ui_screen_regions_artifacts_reviews_rationales::*;
45
47
  expose memo_examples_ui_screen_regions_artifacts_reviews_notes::*;
46
48
  expose memo_examples_ui_screen_regions_traces::*;
47
- attribute :>> id = "UIV-001";
49
+ @MemoIdentity { :>> providedId = "UIV-001"; }
48
50
  attribute depth = 3;
49
51
  attribute :>> viewKind = DiagramViewKind::general;
50
52
  attribute :>> diagramType = "bdd";
@@ -19,42 +19,44 @@ package memo_extension_aadl_correspondence {
19
19
 
20
20
  private import memo_architecture_operational_context_stakeholders::*;
21
21
 
22
+ private import memo_core_common::*;
23
+ private import memo_core_common::MemoIdentity;
22
24
  // ── Component categories ────────────────────────────────────────────
23
25
  part aadlCorrProcess : CorrespondenceRule {
24
- attribute :>> id = "EXT-AADL-C-001";
26
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-001"; }
25
27
  attribute :>> name = "ProcessCorrespondence";
26
28
  attribute :>> ruleExpression = "memo_extension_aadl_runtime::AadlProcess <-> AADL component category `process`";
27
29
  attribute :>> description = "A MEMO SoftwareComponent with runtimeKind = process, carrying addressSpaceIsolated.";
28
30
  }
29
31
  part aadlCorrThread : CorrespondenceRule {
30
- attribute :>> id = "EXT-AADL-C-002";
32
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-002"; }
31
33
  attribute :>> name = "ThreadCorrespondence";
32
34
  attribute :>> ruleExpression = "memo_extension_aadl_runtime::AadlThread <-> AADL component category `thread`";
33
35
  attribute :>> description = "Schedulable unit inside one process; owningProcessName names the containing process.";
34
36
  }
35
37
  part aadlCorrVirtualProcessor : CorrespondenceRule {
36
- attribute :>> id = "EXT-AADL-C-003";
38
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-003"; }
37
39
  attribute :>> name = "VirtualProcessorCorrespondence";
38
40
  attribute :>> ruleExpression = "memo_extension_aadl_runtime::AadlVirtualProcessor <-> AADL component category `virtual processor`";
39
41
  attribute :>> description = "An ARINC 653 partition. partitionBudget is the guaranteed time and memory; isolationMechanism is what enforces it.";
40
42
  }
41
43
  part aadlCorrProcessor : CorrespondenceRule {
42
- attribute :>> id = "EXT-AADL-C-004";
44
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-004"; }
43
45
  attribute :>> name = "ProcessorCorrespondence";
44
46
  attribute :>> ruleExpression = "memo_architecture_realization_physical::ProcessingNode <-> AADL component category `processor`";
45
47
  }
46
48
  part aadlCorrMemory : CorrespondenceRule {
47
- attribute :>> id = "EXT-AADL-C-005";
49
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-005"; }
48
50
  attribute :>> name = "MemoryCorrespondence";
49
51
  attribute :>> ruleExpression = "memo_architecture_realization_physical::MemoryDevice <-> AADL component category `memory`";
50
52
  }
51
53
  part aadlCorrBus : CorrespondenceRule {
52
- attribute :>> id = "EXT-AADL-C-006";
54
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-006"; }
53
55
  attribute :>> name = "BusCorrespondence";
54
56
  attribute :>> ruleExpression = "memo_architecture_implementation_hardware_electrical::NetworkMedium <-> AADL component category `bus`";
55
57
  }
56
58
  part aadlCorrSystem : CorrespondenceRule {
57
- attribute :>> id = "EXT-AADL-C-007";
59
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-007"; }
58
60
  attribute :>> name = "SystemCorrespondence";
59
61
  attribute :>> ruleExpression = "memo_architecture_logical_structure::System <-> AADL component category `system`";
60
62
  attribute :>> description = "AADL's system is the composition unit, which is MEMO's logical System rather than any runtime element.";
@@ -64,17 +66,17 @@ package memo_extension_aadl_correspondence {
64
66
  // something, and the binding is where latency, bandwidth, and fault
65
67
  // propagation accrue. MEMO has all three (plan C1). ────────────────────
66
68
  part aadlCorrProcessorBinding : CorrespondenceRule {
67
- attribute :>> id = "EXT-AADL-C-010";
69
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-010"; }
68
70
  attribute :>> name = "ActualProcessorBindingCorrespondence";
69
71
  attribute :>> ruleExpression = "memo_architecture_realization_deployment::DeploysTo <-> AADL property `Actual_Processor_Binding`";
70
72
  }
71
73
  part aadlCorrMemoryBinding : CorrespondenceRule {
72
- attribute :>> id = "EXT-AADL-C-011";
74
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-011"; }
73
75
  attribute :>> name = "ActualMemoryBindingCorrespondence";
74
76
  attribute :>> ruleExpression = "memo_architecture_realization_deployment::MemoryBinding <-> AADL property `Actual_Memory_Binding`";
75
77
  }
76
78
  part aadlCorrConnectionBinding : CorrespondenceRule {
77
- attribute :>> id = "EXT-AADL-C-012";
79
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-012"; }
78
80
  attribute :>> name = "ActualConnectionBindingCorrespondence";
79
81
  attribute :>> ruleExpression = "memo_architecture_realization_deployment::ConnectionBinding <-> AADL property `Actual_Connection_Binding`";
80
82
  attribute :>> description = "The bound element is the ComponentExchange, because the exchange is what owns the budget the medium spends.";
@@ -82,18 +84,18 @@ package memo_extension_aadl_correspondence {
82
84
 
83
85
  // ── Ports and flows ─────────────────────────────────────────────────
84
86
  part aadlCorrPortCategory : CorrespondenceRule {
85
- attribute :>> id = "EXT-AADL-C-020";
87
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-020"; }
86
88
  attribute :>> name = "PortCategoryCorrespondence";
87
89
  attribute :>> ruleExpression = "memo_core_enumerations::PortCategoryKind (data | 'event' | eventData) <-> AADL `data port` | `event port` | `event data port`";
88
90
  attribute :>> description = "Determines whether a missed deadline loses a sample or grows a queue — two failure modes with two mitigations.";
89
91
  }
90
92
  part aadlCorrFlowSpec : CorrespondenceRule {
91
- attribute :>> id = "EXT-AADL-C-021";
93
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-021"; }
92
94
  attribute :>> name = "FlowSpecificationCorrespondence";
93
95
  attribute :>> ruleExpression = "memo_architecture_realization_deployment::FlowSpecification (FlowSpecKind source | sink | path) <-> AADL `flow source` | `flow sink` | `flow path`";
94
96
  }
95
97
  part aadlCorrEndToEndFlow : CorrespondenceRule {
96
- attribute :>> id = "EXT-AADL-C-022";
98
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-022"; }
97
99
  attribute :>> name = "EndToEndFlowCorrespondence";
98
100
  attribute :>> ruleExpression = "memo_architecture_realization_deployment::EndToEndFlow <-> AADL `end to end flow`";
99
101
  }
@@ -101,45 +103,45 @@ package memo_extension_aadl_correspondence {
101
103
  // ── Properties. AADL's property sets are the technology-specific half of
102
104
  // the language; these are the ones MEMO already carries by another name.
103
105
  part aadlCorrPeriod : CorrespondenceRule {
104
- attribute :>> id = "EXT-AADL-C-030";
106
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-030"; }
105
107
  attribute :>> name = "PeriodCorrespondence";
106
108
  attribute :>> ruleExpression = "SoftwareComponent.periodMs <-> AADL `Timing_Properties::Period` (ms)";
107
109
  }
108
110
  part aadlCorrDeadline : CorrespondenceRule {
109
- attribute :>> id = "EXT-AADL-C-031";
111
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-031"; }
110
112
  attribute :>> name = "DeadlineCorrespondence";
111
113
  attribute :>> ruleExpression = "SoftwareComponent.deadlineMs <-> AADL `Timing_Properties::Deadline` (ms)";
112
114
  }
113
115
  part aadlCorrComputeExecutionTime : CorrespondenceRule {
114
- attribute :>> id = "EXT-AADL-C-032";
116
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-032"; }
115
117
  attribute :>> name = "ComputeExecutionTimeCorrespondence";
116
118
  attribute :>> ruleExpression = "SoftwareComponent.wcetMs <-> upper bound of AADL `Timing_Properties::Compute_Execution_Time` (ms)";
117
119
  attribute :>> description = "AADL records a range; MEMO records the worst case, which is the bound a schedulability argument uses.";
118
120
  }
119
121
  part aadlCorrPriority : CorrespondenceRule {
120
- attribute :>> id = "EXT-AADL-C-033";
122
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-033"; }
121
123
  attribute :>> name = "PriorityCorrespondence";
122
124
  attribute :>> ruleExpression = "SoftwareComponent.priority <-> AADL `Thread_Properties::Priority`";
123
125
  }
124
126
  part aadlCorrSchedulingProtocol : CorrespondenceRule {
125
- attribute :>> id = "EXT-AADL-C-034";
127
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-034"; }
126
128
  attribute :>> name = "SchedulingProtocolCorrespondence";
127
129
  attribute :>> ruleExpression = "SoftwareComponent.schedulingPolicy <-> AADL `Deployment_Properties::Scheduling_Protocol`";
128
130
  }
129
131
  part aadlCorrLatency : CorrespondenceRule {
130
- attribute :>> id = "EXT-AADL-C-035";
132
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-035"; }
131
133
  attribute :>> name = "LatencyCorrespondence";
132
134
  attribute :>> ruleExpression = "EndToEndFlow.latencyBudgetMs <-> AADL `Communication_Properties::Latency` upper bound (ms)";
133
135
  }
134
136
  part aadlCorrBandwidth : CorrespondenceRule {
135
- attribute :>> id = "EXT-AADL-C-036";
137
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-036"; }
136
138
  attribute :>> name = "BandwidthCorrespondence";
137
139
  attribute :>> ruleExpression = "ConnectionBinding.allocatedBandwidth <-> AADL `Communication_Properties::Bandwidth_Budget`";
138
140
  }
139
141
 
140
142
  // ── Where the correspondence stops ──────────────────────────────────
141
143
  part aadlCorrNoCounterpart : CorrespondenceRule {
142
- attribute :>> id = "EXT-AADL-C-090";
144
+ @MemoIdentity { :>> providedId = "EXT-AADL-C-090"; }
143
145
  attribute :>> name = "NoCounterpartNote";
144
146
  attribute :>> ruleExpression = "no correspondence: AADL `subprogram`, `device`, `abstract`; MEMO's five assurance disciplines";
145
147
  attribute :>> description = "Recorded so the gap is a stated boundary of the profile rather than an omission a reader has to discover.";
@@ -4,8 +4,10 @@ package memo_extension_aadl_methodology {
4
4
  private import memo_methodology_profiles::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
7
9
  part aadlExtensionMethod : MethodologyDefinition {
8
- attribute :>> id = "EXT-AADL-001";
10
+ @MemoIdentity { :>> providedId = "EXT-AADL-001"; }
9
11
  attribute :>> name = "AadlCorrespondenceExtension";
10
12
  attribute :>> version = "0.7.0";
11
13
  attribute :>> domain = "AADL (SAE AS5506) software runtime";
@@ -4,8 +4,10 @@ package memo_extension_clinical_methodology {
4
4
  private import memo_methodology_profiles::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
7
9
  part clinicalExtensionMethod : MethodologyDefinition {
8
- attribute :>> id = "EXT-CLINICAL-001";
10
+ @MemoIdentity { :>> providedId = "EXT-CLINICAL-001"; }
9
11
  attribute :>> name = "ClinicalProcedureExtension";
10
12
  attribute :>> version = "0.6.5";
11
13
  attribute :>> domain = "clinical procedures";
@@ -4,8 +4,10 @@ package memo_extension_cloud_methodology {
4
4
  private import memo_methodology_profiles::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
7
9
  part cloudExtensionMethod : MethodologyDefinition {
8
- attribute :>> id = "EXT-CLOUD-001";
10
+ @MemoIdentity { :>> providedId = "EXT-CLOUD-001"; }
9
11
  attribute :>> name = "CloudRuntimeExtension";
10
12
  attribute :>> version = "0.7.0";
11
13
  attribute :>> domain = "networked services and managed data stores";
@@ -4,8 +4,10 @@ package memo_extension_container_methodology {
4
4
  private import memo_methodology_profiles::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
7
9
  part containerExtensionMethod : MethodologyDefinition {
8
- attribute :>> id = "EXT-CONTAINER-001";
10
+ @MemoIdentity { :>> providedId = "EXT-CONTAINER-001"; }
9
11
  attribute :>> name = "ContainerDeploymentExtension";
10
12
  attribute :>> version = "0.7.0";
11
13
  attribute :>> domain = "containerized deployment";
@@ -4,8 +4,10 @@ package memo_extension_messaging_methodology {
4
4
  private import memo_methodology_profiles::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
7
9
  part messagingExtensionMethod : MethodologyDefinition {
8
- attribute :>> id = "EXT-MESSAGING-001";
10
+ @MemoIdentity { :>> providedId = "EXT-MESSAGING-001"; }
9
11
  attribute :>> name = "MessagingExtension";
10
12
  attribute :>> version = "0.7.0";
11
13
  attribute :>> domain = "publish/subscribe messaging";
@@ -4,12 +4,14 @@ package memo_extension_ros_methodology {
4
4
  private import memo_methodology_profiles::*;
5
5
  private import memo_core_enumerations::*;
6
6
 
7
+ private import memo_core_common::*;
8
+ private import memo_core_common::MemoIdentity;
7
9
  // An extension that builds on other extensions names them all here.
8
10
  // `baseMethodology` is [0..1] — single inheritance, deliberate — but
9
11
  // `includedModule` is [0..*], so this is how a dependency between
10
12
  // extensions is expressed. There is no chaining and no second base.
11
13
  part rosExtensionMethod : MethodologyDefinition {
12
- attribute :>> id = "EXT-ROS-001";
14
+ @MemoIdentity { :>> providedId = "EXT-ROS-001"; }
13
15
  attribute :>> name = "Ros2Extension";
14
16
  attribute :>> version = "0.7.0";
15
17
  attribute :>> domain = "ROS 2 robotics middleware";
@@ -21,8 +21,10 @@ package memo_extension_template {
21
21
  private import memo_methodology_core::*;
22
22
  private import memo_methodology_profiles::*;
23
23
 
24
+ private import memo_core_common::*;
25
+ private import memo_core_common::MemoIdentity;
24
26
  part extensionMethod : MethodologyDefinition {
25
- attribute :>> id = "EXT-METH-001";
27
+ @MemoIdentity { :>> providedId = "EXT-METH-001"; }
26
28
  attribute :>> name = "ExtensionMethod";
27
29
  attribute :>> version = "0.1.0";
28
30
  attribute :>> domain = "project extension";
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@memoarchitect/ontology",
3
- "version": "0.8.24",
3
+ "version": "0.10.9",
4
4
  "packageManager": "pnpm@9.15.0",
5
- "description": "MEMO \u2014 Medical Engineering Modelling Ontology. Pure SysML v2 medical-device ontology with native constraints, portable to any conformant SysML v2 tool (SysIDE, SysON, sysand).",
5
+ "description": "MEMO — Medical Engineering Modelling Ontology. Pure SysML v2 medical-device ontology with native constraints, portable to any conformant SysML v2 tool (SysIDE, SysON, sysand).",
6
6
  "scripts": {
7
7
  "build": "bash scripts/build-kpar.sh",
8
8
  "check": "bash scripts/build-kpar.sh && npm run lint",
@@ -89,6 +89,6 @@ package memo_architecture_functional_behavior {
89
89
  attribute minMs : String;
90
90
  attribute maxMs : String;
91
91
  ref referenceElement : MemoPart[1];
92
- attribute verificationMethod : VerificationMethodKind;
92
+ attribute verificationMethod : MemoVerificationMethodKind;
93
93
  }
94
94
  }
@@ -13,7 +13,17 @@ package memo_architecture_implementation_hardware_common {
13
13
  private import memo_core_enumerations::*;
14
14
  private import memo_core_relationships::*;
15
15
 
16
- part def PhysicalAssembly specializes MemoPart {
16
+ // The shared root of the physical family.
17
+ //
18
+ // `PhysicalAssembly` and `PhysicalComponent` each specialized `MemoPart`
19
+ // directly, so the family had two roots and no single type that means
20
+ // "a physical thing". A containment rule has to name one type, and
21
+ // `conformsTo(MemoPart)` is far too wide — it admits a requirement or a
22
+ // hazard. This is that type, and it carries nothing of its own: the split
23
+ // between an assembly and a component is what the two subtypes are for.
24
+ abstract part def PhysicalElement specializes MemoPart { }
25
+
26
+ part def PhysicalAssembly specializes PhysicalElement {
17
27
  attribute responsibility : String;
18
28
  attribute safetyRole : String;
19
29
  attribute partNumber : String;
@@ -25,7 +35,7 @@ package memo_architecture_implementation_hardware_common {
25
35
  // Retained name from 0.4; an electronics-centred assembly.
26
36
  part def HardwareAssembly specializes PhysicalAssembly;
27
37
 
28
- part def PhysicalComponent specializes MemoPart {
38
+ part def PhysicalComponent specializes PhysicalElement {
29
39
  attribute partNumber : String;
30
40
  attribute materialSummary : String;
31
41
  // ISO 10993-1 contact characterization; required when true.
@@ -78,15 +78,4 @@ package memo_architecture_implementation_software_runtime {
78
78
  // a component belongs to without claiming to describe it.
79
79
  }
80
80
 
81
- connection def ComponentConnects :> MemoRelationship {
82
- attribute protocolSummary : String;
83
- end sourceComponent : SoftwareComponent :>> source;
84
- end targetComponent : SoftwareComponent :>> target;
85
- }
86
- abstract connection componentConnectsLinks : ComponentConnects[*];
87
- metadata def <componentConnects> ComponentConnectsMetadata :> SemanticMetadata {
88
- :> annotatedElement : SysML::ConnectionDefinition;
89
- :> annotatedElement : SysML::ConnectionUsage;
90
- :>> baseType = componentConnectsLinks meta SysML::Usage;
91
- }
92
81
  }
@@ -280,18 +280,6 @@ package memo_architecture_implementation_ui {
280
280
  attribute exitPoint : String;
281
281
  }
282
282
 
283
- connection def DataBinding :> MemoRelationship {
284
- attribute bindingExpression : String;
285
- attribute refreshPolicy : String;
286
- end boundElement : InteractionElement :>> source;
287
- end dataSource : MemoItem :>> target;
288
- }
289
- abstract connection dataBindingLinks : DataBinding[*];
290
- metadata def <dataBinding> DataBindingMetadata :> SemanticMetadata {
291
- :> annotatedElement : SysML::ConnectionDefinition;
292
- :> annotatedElement : SysML::ConnectionUsage;
293
- :>> baseType = dataBindingLinks meta SysML::Usage;
294
- }
295
283
  // `PresentsState` had zero usages anywhere in the tree (R10-S6). Its
296
284
  // audited native form, `exhibit state`, does not actually fit: `UIState`
297
285
  // is a `part def` with plain string attributes, not a `state def`, and
@@ -320,17 +308,6 @@ package memo_architecture_implementation_ui {
320
308
  // Conflating the two was the mistake that made "clicking takes you to a
321
309
  // child view" look like spatial nesting; it is a separate frame reached
322
310
  // from here, and only this relation says so.
323
- connection def NavigatesTo :> MemoRelationship {
324
- attribute triggerGesture : String;
325
- end sourceElement : UIElement :>> source;
326
- end targetScreen : UIElement :>> target;
327
- }
328
- abstract connection navigatesToLinks : NavigatesTo[*];
329
- metadata def <navigatesTo> NavigatesToMetadata :> SemanticMetadata {
330
- :> annotatedElement : SysML::ConnectionDefinition;
331
- :> annotatedElement : SysML::ConnectionUsage;
332
- :>> baseType = navigatesToLinks meta SysML::Usage;
333
- }
334
311
 
335
312
  // ── §18 traceability ─────────────────────────────────────────
336
313
  connection def ElementTriggersAction :> MemoRelationship {
@@ -15,7 +15,9 @@ package memo_architecture_logical_interfaces {
15
15
  // DigitalInterface / SPIInterface / RestInterface … hierarchy: those were
16
16
  // 20+ classes that differed only in the value of `protocol`.
17
17
 
18
- interface def Interface specializes MemoInterface {
18
+ // Specializes the standard library interface as well as MEMO's base,
19
+ // rather than shadowing it — see the note on UseCase.
20
+ interface def Interface specializes MemoInterface, Interfaces::Interface {
19
21
  attribute interfaceKind : InterfaceKind; // semantic + signaling family
20
22
  attribute direction : DirectionKind;
21
23
  attribute protocol : String; // "SPI", "CAN", "Ethernet", "REST", "4-20mA"
@@ -66,17 +66,9 @@ package memo_architecture_operational_context_use_context {
66
66
  :>> baseType = interactsInContextLinks meta SysML::Usage;
67
67
  }
68
68
 
69
- connection def InteractsWith :> MemoRelationship {
70
- end contextParticipant : OperationalParticipant :>> source;
71
- // Untyped so operational activities (action def) can be targets as well as parts.
72
- end target;
73
- }
74
- abstract connection interactsWithLinks : InteractsWith[*];
75
- metadata def <interactsWith> InteractsWithMetadata :> SemanticMetadata {
76
- :> annotatedElement : SysML::ConnectionDefinition;
77
- :> annotatedElement : SysML::ConnectionUsage;
78
- :>> baseType = interactsWithLinks meta SysML::Usage;
79
- }
69
+ // `InteractsWith` is native `connect` (2026-08-18): write
70
+ // `connection connect <participant> to <target>;`. It carried no
71
+ // attributes, and the operational-context package already scopes the ends.
80
72
  // `ConnectsPhysically` is native `connect` (R10-S6): write
81
73
  // `connection connect source ::> <a> to target ::> <b>;` — the ordinary
82
74
  // untyped binary connection — instead of a connection def for it.
@@ -55,14 +55,4 @@ package memo_architecture_operational_scenarios {
55
55
  // A workflow is composed of one or more scenarios (nominal + alternate
56
56
  // paths). ScenarioOccurrence/Executes were removed: an actual execution is
57
57
  // a native SysML *usage* of the scenario, not a separate def + relation.
58
- connection def HasScenario :> MemoRelationship {
59
- end owningWorkflow : OperationalWorkflow :>> source;
60
- end pathScenario : OperativeScenario :>> target;
61
- }
62
- abstract connection hasScenarioLinks : HasScenario[*];
63
- metadata def <hasScenario> HasScenarioMetadata :> SemanticMetadata {
64
- :> annotatedElement : SysML::ConnectionDefinition;
65
- :> annotatedElement : SysML::ConnectionUsage;
66
- :>> baseType = hasScenarioLinks meta SysML::Usage;
67
- }
68
58
  }
@@ -19,7 +19,13 @@ package memo_architecture_operational_use_cases {
19
19
  enum development;
20
20
  }
21
21
 
22
- use case def UseCase :> MemoUseCase {
22
+ // Specializes the STANDARD library use case as well as MEMO's base. Before
23
+ // this it specialized only `MemoUseCase` and so shadowed `UseCases::UseCase`
24
+ // — same name, same metaclass, none of the semantics — which is why the
25
+ // subject/actor features below had to be re-declared by hand instead of
26
+ // being inherited. The wrapper survives only to carry the display label and
27
+ // lifecycle status; identity comes from `@MemoIdentity`.
28
+ use case def UseCase :> MemoUseCase, UseCases::UseCase {
23
29
  // Text of this use case's goal; this is not a separate Goal element.
24
30
  attribute goalStatement : String;
25
31
  attribute trigger : String;
@@ -62,14 +68,4 @@ package memo_architecture_operational_use_cases {
62
68
  // `include` (R10-S6); write that instead of a connection here. `extends`
63
69
  // has 0 hits in the corpus for a use-case `extend` production, so it stays
64
70
  // a MEMO construct: a cross-cutting relationship that is always presented.
65
- connection def Extends :> MemoRelationship {
66
- end extendingUseCase : UseCase :>> source;
67
- end extendedUseCase : UseCase :>> target;
68
- }
69
- abstract connection extendsLinks : Extends[*];
70
- metadata def <extends> ExtendsMetadata :> SemanticMetadata {
71
- :> annotatedElement : SysML::ConnectionDefinition;
72
- :> annotatedElement : SysML::ConnectionUsage;
73
- :>> baseType = extendsLinks meta SysML::Usage;
74
- }
75
71
  }