@memoarchitect/ontology 0.8.22 → 0.8.24

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 (157) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  4. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  5. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +2 -2
  6. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  7. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  8. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +1 -1
  9. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  10. package/examples/gpca-pump/memo.package.yaml +3 -0
  11. package/examples/gpca-pump/model/catalog/gpca_context.sysml +5 -3
  12. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +1 -2
  13. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +52 -82
  14. package/examples/gpca-pump/model/catalog/gpca_system.sysml +6 -19
  15. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +0 -3
  16. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +1 -3
  17. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
  18. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
  19. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
  20. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
  21. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
  22. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
  23. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +3 -6
  24. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +1 -3
  25. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +1 -3
  26. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +1 -3
  27. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
  28. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
  29. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +1 -3
  30. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
  31. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -6
  32. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
  33. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +1 -4
  34. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +1 -4
  35. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +1 -3
  36. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +1 -3
  37. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +1 -4
  38. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +1 -3
  39. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +2 -5
  40. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +1 -4
  41. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +1 -3
  42. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  43. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
  44. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  45. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  46. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +1 -1
  47. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  48. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  49. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  50. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  51. package/examples/reusable-instrument/memo.package.yaml +3 -0
  52. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +15 -24
  53. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  54. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  55. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
  56. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  57. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +1 -1
  58. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  59. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  60. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +36 -49
  61. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  62. package/examples/surgical-robot/memo.package.yaml +3 -0
  63. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  64. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  65. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +2 -3
  66. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +1 -2
  67. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +1 -2
  68. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +1 -2
  69. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +14 -15
  70. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +1 -2
  71. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -2
  72. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +1 -2
  73. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +1 -2
  74. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +1 -2
  75. package/examples/temperature-alarm/memo.package.yaml +3 -0
  76. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +4 -8
  77. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  78. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  79. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
  80. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  81. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  82. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
  83. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
  84. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
  85. package/extensions/aadl/memo.package.yaml +1 -1
  86. package/extensions/cloud/memo.package.yaml +1 -1
  87. package/extensions/container/memo.package.yaml +1 -1
  88. package/extensions/container/src/container_extension.sysml +2 -2
  89. package/extensions/messaging/memo.package.yaml +1 -1
  90. package/extensions/ros/memo.package.yaml +1 -1
  91. package/methodologies/default/memo.package.yaml +1 -1
  92. package/methodologies/gpca/memo.package.yaml +1 -1
  93. package/ontology/memo.package.yaml +1 -1
  94. package/package.json +1 -1
  95. package/profile/memo.package.yaml +1 -1
  96. package/src/architecture/functional/behavior/memo_behavior.sysml +4 -4
  97. package/src/architecture/functional/functions/memo_functions.sysml +6 -6
  98. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
  99. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
  100. package/src/architecture/implementation/ui/memo_ui.sysml +8 -8
  101. package/src/architecture/logical/interfaces/memo_interfaces.sysml +1 -1
  102. package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
  103. package/src/architecture/operational/activities/memo_activities.sysml +19 -28
  104. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
  105. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
  106. package/src/architecture/operational/context/use_context/memo_use_context.sysml +2 -3
  107. package/src/architecture/operational/scenarios/memo_scenarios.sysml +18 -100
  108. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  109. package/src/architecture/operational/use_cases/memo_use_cases.sysml +0 -1
  110. package/src/architecture/operational/workflows/memo_workflows.sysml +20 -22
  111. package/src/architecture/realization/deployment/memo_deployment.sysml +10 -10
  112. package/src/architecture/realization/physical/memo_physical_architecture.sysml +2 -2
  113. package/src/artifacts/templates/dhf/system/sad.md +3 -3
  114. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
  115. package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
  116. package/src/assurance/requirements/memo_requirements.sysml +2 -18
  117. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
  118. package/src/assurance/safety_risk/memo_risk.sysml +12 -0
  119. package/src/assurance/verification_validation/memo_assurance.sysml +1 -1
  120. package/src/core/common/memo_common.sysml +9 -5
  121. package/src/core/relationships/memo_relationships.sysml +8 -8
  122. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  123. package/src/rules/closure/closure_rules.sysml +20 -20
  124. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  125. package/src/rules/ontology/ontology_invariants.sysml +40 -40
  126. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  127. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -29
  128. package/src/viewpoints/clinical/clinical_viewpoint.sysml +1 -2
  129. package/src/viewpoints/context/context_viewpoint.sysml +1 -2
  130. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +1 -2
  131. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
  132. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -4
  133. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  134. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +1 -2
  135. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +1 -2
  136. package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
  137. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
  138. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  139. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
  140. package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
  141. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
  142. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
  143. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  144. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
  145. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  146. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
  147. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  148. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
  149. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +1 -2
  150. package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
  151. package/src/viewpoints/verification/verification_viewpoint.sysml +1 -2
  152. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +1 -2
  153. package/templates/connected-device/memo.package.yaml +2 -0
  154. package/templates/default/memo.package.yaml +2 -0
  155. package/templates/infusion-pump/memo.package.yaml +2 -0
  156. package/templates/monitoring-device/memo.package.yaml +2 -0
  157. package/templates/samd/memo.package.yaml +2 -0
@@ -10,7 +10,7 @@ package memo_rules_closure {
10
10
  // ─── Risk Layer Rules ────────────────────────────────────────────────
11
11
 
12
12
  constraint def HazardMitigationRule :> MemoConsistencyRule {
13
- attribute id = "CR-MED-001";
13
+ attribute :>> id = "CR-MED-001";
14
14
  attribute tailoring = RuleTailoringKind::assurance;
15
15
  attribute appliesTo = "Hazard";
16
16
  attribute severity = RuleSeverityKind::error;
@@ -20,7 +20,7 @@ package memo_rules_closure {
20
20
  }
21
21
 
22
22
  constraint def HazardSeverityRule :> MemoConsistencyRule {
23
- attribute id = "CR-MED-002";
23
+ attribute :>> id = "CR-MED-002";
24
24
  attribute tailoring = RuleTailoringKind::assurance;
25
25
  attribute appliesTo = "Hazard";
26
26
  attribute severity = RuleSeverityKind::error;
@@ -30,7 +30,7 @@ package memo_rules_closure {
30
30
  }
31
31
 
32
32
  constraint def RiskControlVerificationRule :> MemoConsistencyRule {
33
- attribute id = "CR-MED-003";
33
+ attribute :>> id = "CR-MED-003";
34
34
  attribute tailoring = RuleTailoringKind::assurance;
35
35
  attribute appliesTo = "RiskControlMeasure";
36
36
  attribute severity = RuleSeverityKind::error;
@@ -40,7 +40,7 @@ package memo_rules_closure {
40
40
  }
41
41
 
42
42
  constraint def InitialRiskMatrixRule :> MemoConsistencyRule {
43
- attribute id = "CR-MED-004";
43
+ attribute :>> id = "CR-MED-004";
44
44
  attribute tailoring = RuleTailoringKind::assurance;
45
45
  attribute appliesTo = "Risk";
46
46
  attribute severity = RuleSeverityKind::warning;
@@ -52,7 +52,7 @@ package memo_rules_closure {
52
52
  // ─── Requirements Layer Rules ────────────────────────────────────────
53
53
 
54
54
  constraint def SysReqTraceRule :> MemoConsistencyRule {
55
- attribute id = "CR-MED-010";
55
+ attribute :>> id = "CR-MED-010";
56
56
  attribute tailoring = RuleTailoringKind::assurance;
57
57
  attribute appliesTo = "Requirement[requirementKind=system]";
58
58
  attribute severity = RuleSeverityKind::error;
@@ -62,7 +62,7 @@ package memo_rules_closure {
62
62
  }
63
63
 
64
64
  constraint def SwReqTraceRule :> MemoConsistencyRule {
65
- attribute id = "CR-MED-011";
65
+ attribute :>> id = "CR-MED-011";
66
66
  attribute tailoring = RuleTailoringKind::assurance;
67
67
  attribute appliesTo = "Requirement[requirementKind=software]";
68
68
  attribute severity = RuleSeverityKind::error;
@@ -80,7 +80,7 @@ package memo_rules_closure {
80
80
  // ─── Architecture Layer Rules ────────────────────────────────────────
81
81
 
82
82
  constraint def SwComponentSafetyClassRule :> MemoConsistencyRule {
83
- attribute id = "CR-MED-020";
83
+ attribute :>> id = "CR-MED-020";
84
84
  attribute tailoring = RuleTailoringKind::assurance;
85
85
  attribute appliesTo = "SoftwareModule";
86
86
  attribute severity = RuleSeverityKind::error;
@@ -90,7 +90,7 @@ package memo_rules_closure {
90
90
  }
91
91
 
92
92
  constraint def SwComponentReqRule :> MemoConsistencyRule {
93
- attribute id = "CR-MED-021";
93
+ attribute :>> id = "CR-MED-021";
94
94
  attribute tailoring = RuleTailoringKind::assurance;
95
95
  attribute appliesTo = "SoftwareModule";
96
96
  attribute severity = RuleSeverityKind::warning;
@@ -100,7 +100,7 @@ package memo_rules_closure {
100
100
  }
101
101
 
102
102
  constraint def LogicalFunctionAllocationRule :> MemoConsistencyRule {
103
- attribute id = "CR-MED-022";
103
+ attribute :>> id = "CR-MED-022";
104
104
  attribute tailoring = RuleTailoringKind::assurance;
105
105
  attribute appliesTo = "SystemFunction";
106
106
  attribute severity = RuleSeverityKind::warning;
@@ -112,7 +112,7 @@ package memo_rules_closure {
112
112
  // ─── Verification Layer Rules ────────────────────────────────────────
113
113
 
114
114
  constraint def VerificationCaseMethodRule :> MemoConsistencyRule {
115
- attribute id = "CR-MED-030";
115
+ attribute :>> id = "CR-MED-030";
116
116
  attribute tailoring = RuleTailoringKind::assurance;
117
117
  attribute appliesTo = "VerificationCase";
118
118
  attribute severity = RuleSeverityKind::error;
@@ -122,7 +122,7 @@ package memo_rules_closure {
122
122
  }
123
123
 
124
124
  constraint def VerificationCaseTargetRule :> MemoConsistencyRule {
125
- attribute id = "CR-MED-031";
125
+ attribute :>> id = "CR-MED-031";
126
126
  attribute tailoring = RuleTailoringKind::assurance;
127
127
  attribute appliesTo = "VerificationCase";
128
128
  attribute severity = RuleSeverityKind::error;
@@ -132,7 +132,7 @@ package memo_rules_closure {
132
132
  }
133
133
 
134
134
  constraint def EvidenceProductionRule :> MemoConsistencyRule {
135
- attribute id = "CR-MED-032";
135
+ attribute :>> id = "CR-MED-032";
136
136
  attribute tailoring = RuleTailoringKind::assurance;
137
137
  attribute appliesTo = "VerificationCase";
138
138
  attribute severity = RuleSeverityKind::warning;
@@ -144,7 +144,7 @@ package memo_rules_closure {
144
144
  // ─── Cybersecurity Layer Rules ───────────────────────────────────────
145
145
 
146
146
  constraint def ThreatMitigationRule :> MemoConsistencyRule {
147
- attribute id = "CR-MED-040";
147
+ attribute :>> id = "CR-MED-040";
148
148
  attribute tailoring = RuleTailoringKind::assurance;
149
149
  attribute appliesTo = "Threat";
150
150
  attribute severity = RuleSeverityKind::error;
@@ -154,7 +154,7 @@ package memo_rules_closure {
154
154
  }
155
155
 
156
156
  constraint def AssetThreatLinkRule :> MemoConsistencyRule {
157
- attribute id = "CR-MED-041";
157
+ attribute :>> id = "CR-MED-041";
158
158
  attribute tailoring = RuleTailoringKind::assurance;
159
159
  attribute appliesTo = "CybersecurityAsset";
160
160
  attribute severity = RuleSeverityKind::warning;
@@ -166,7 +166,7 @@ package memo_rules_closure {
166
166
  // ─── Interface Rules ─────────────────────────────────────────────────
167
167
 
168
168
  constraint def LogicalInterfaceDirectionRule :> MemoConsistencyRule {
169
- attribute id = "CR-MED-050";
169
+ attribute :>> id = "CR-MED-050";
170
170
  attribute tailoring = RuleTailoringKind::assurance;
171
171
  attribute appliesTo = "Interface";
172
172
  attribute severity = RuleSeverityKind::error;
@@ -178,7 +178,7 @@ package memo_rules_closure {
178
178
  // ─── Conditional Rules ───────────────────────────────────────────────
179
179
 
180
180
  constraint def SafetyClassCVerificationRule :> MemoConsistencyRule {
181
- attribute id = "CR-MED-101";
181
+ attribute :>> id = "CR-MED-101";
182
182
  attribute tailoring = RuleTailoringKind::assurance;
183
183
  attribute appliesTo = "SoftwareModule";
184
184
  attribute severity = RuleSeverityKind::error;
@@ -203,7 +203,7 @@ package memo_rules_closure {
203
203
  // triggers. Chrome must be DECLARED `decoration`; an element left
204
204
  // unclassified fails rather than passing as scenery.
205
205
  constraint def UiElementDesignRecordRule :> MemoConsistencyRule {
206
- attribute id = "CR-MED-110";
206
+ attribute :>> id = "CR-MED-110";
207
207
  attribute tailoring = RuleTailoringKind::assurance;
208
208
  attribute appliesTo = "UIElement";
209
209
  attribute severity = RuleSeverityKind::error;
@@ -217,7 +217,7 @@ package memo_rules_closure {
217
217
  // The interactive-form restriction lives in the predicate because it spans
218
218
  // several enum values.
219
219
  constraint def ControlInvokesFunctionRule :> MemoConsistencyRule {
220
- attribute id = "CR-MED-111";
220
+ attribute :>> id = "CR-MED-111";
221
221
  attribute tailoring = RuleTailoringKind::assurance;
222
222
  attribute appliesTo = "UIElement";
223
223
  attribute severity = RuleSeverityKind::warning;
@@ -230,7 +230,7 @@ package memo_rules_closure {
230
230
  // unconfirmed machine guess must never reach a design review looking like
231
231
  // an engineering decision.
232
232
  constraint def BoundsDetectionConfirmedRule :> MemoConsistencyRule {
233
- attribute id = "CR-MED-112";
233
+ attribute :>> id = "CR-MED-112";
234
234
  attribute tailoring = RuleTailoringKind::assurance;
235
235
  attribute appliesTo = "UIElement";
236
236
  attribute severity = RuleSeverityKind::warning;
@@ -242,7 +242,7 @@ package memo_rules_closure {
242
242
  // A screenshot with no build behind it is undated design intent, not
243
243
  // evidence of what the device does.
244
244
  constraint def ScreenCaptureProvenanceRule :> MemoConsistencyRule {
245
- attribute id = "CR-MED-113";
245
+ attribute :>> id = "CR-MED-113";
246
246
  attribute tailoring = RuleTailoringKind::assurance;
247
247
  attribute appliesTo = "ScreenCapture";
248
248
  attribute severity = RuleSeverityKind::error;
@@ -7,7 +7,7 @@ package memo_rules_crosslayer {
7
7
  private import memo_core_enumerations::*;
8
8
 
9
9
  constraint def RiskToReqTraceRule :> MemoConsistencyRule {
10
- attribute id = "XL-001";
10
+ attribute :>> id = "XL-001";
11
11
  attribute tailoring = RuleTailoringKind::assurance;
12
12
  attribute appliesTo = "Hazard";
13
13
  attribute severity = RuleSeverityKind::warning;
@@ -17,7 +17,7 @@ package memo_rules_crosslayer {
17
17
  }
18
18
 
19
19
  constraint def ReqToArchTraceRule :> MemoConsistencyRule {
20
- attribute id = "XL-002";
20
+ attribute :>> id = "XL-002";
21
21
  attribute tailoring = RuleTailoringKind::assurance;
22
22
  attribute appliesTo = "Requirement[requirementKind=system]";
23
23
  attribute severity = RuleSeverityKind::warning;
@@ -12,7 +12,7 @@ package memo_rules_ontology {
12
12
  // ─── Structure ───────────────────────────────────────────────────────
13
13
 
14
14
  constraint def ContainmentAcyclicRule :> MemoConsistencyRule {
15
- attribute id = "CR-ONT-001";
15
+ attribute :>> id = "CR-ONT-001";
16
16
  attribute tailoring = RuleTailoringKind::invariant;
17
17
  attribute appliesTo = "Model";
18
18
  attribute severity = RuleSeverityKind::error;
@@ -21,7 +21,7 @@ package memo_rules_ontology {
21
21
  constraint { true }
22
22
  }
23
23
  constraint def NestedPartConnectedRule :> MemoConsistencyRule {
24
- attribute id = "AR-IBD-001";
24
+ attribute :>> id = "AR-IBD-001";
25
25
  attribute tailoring = RuleTailoringKind::invariant;
26
26
  // Internal-block connectivity is a structural-architecture concern, so
27
27
  // the subject is the structural component — not every MemoPart. UI
@@ -44,7 +44,7 @@ package memo_rules_ontology {
44
44
  // ─── Deployment and realization ──────────────────────────────────────
45
45
 
46
46
  constraint def RuntimeTracesToModuleRule :> MemoConsistencyRule {
47
- attribute id = "CR-ONT-011";
47
+ attribute :>> id = "CR-ONT-011";
48
48
  attribute tailoring = RuleTailoringKind::invariant;
49
49
  attribute appliesTo = "SoftwareComponent";
50
50
  attribute severity = RuleSeverityKind::warning;
@@ -53,7 +53,7 @@ package memo_rules_ontology {
53
53
  constraint { true }
54
54
  }
55
55
  constraint def PatientContactCharacterizedRule :> MemoConsistencyRule {
56
- attribute id = "CR-ONT-032";
56
+ attribute :>> id = "CR-ONT-032";
57
57
  attribute tailoring = RuleTailoringKind::invariant;
58
58
  attribute appliesTo = "PhysicalComponent";
59
59
  attribute severity = RuleSeverityKind::error;
@@ -65,7 +65,7 @@ package memo_rules_ontology {
65
65
  // ─── Assurance coverage ──────────────────────────────────────────────
66
66
 
67
67
  constraint def SafetyCriticalFunctionVerifiedRule :> MemoConsistencyRule {
68
- attribute id = "CR-ONT-040";
68
+ attribute :>> id = "CR-ONT-040";
69
69
  attribute tailoring = RuleTailoringKind::invariant;
70
70
  attribute appliesTo = "MemoFunction";
71
71
  attribute severity = RuleSeverityKind::error;
@@ -74,16 +74,16 @@ package memo_rules_ontology {
74
74
  constraint { true }
75
75
  }
76
76
  constraint def CriticalTaskValidatedRule :> MemoConsistencyRule {
77
- attribute id = "CR-ONT-041";
77
+ attribute :>> id = "CR-ONT-041";
78
78
  attribute tailoring = RuleTailoringKind::invariant;
79
- attribute appliesTo = "UserTask[criticality=high]";
79
+ attribute appliesTo = "OperativeAction[criticality=high]";
80
80
  attribute severity = RuleSeverityKind::error;
81
81
  attribute rationaleText = "Critical tasks (criticality high or catastrophic) must trace to usability validation (FDA HF guidance; IEC 62366-1 summative evaluation).";
82
82
  attribute predicateExpression = "not(criticality == 'high' or criticality == 'catastrophic') or validates->size() >= 1";
83
83
  constraint { true }
84
84
  }
85
85
  constraint def UseErrorTracesToHazardRule :> MemoConsistencyRule {
86
- attribute id = "CR-ONT-042";
86
+ attribute :>> id = "CR-ONT-042";
87
87
  attribute tailoring = RuleTailoringKind::invariant;
88
88
  attribute appliesTo = "UseError";
89
89
  attribute severity = RuleSeverityKind::warning;
@@ -113,9 +113,9 @@ package memo_rules_ontology {
113
113
  // Several of these are WIDER than the end they replace, and deliberately so:
114
114
  // the ends were being violated by content that already shipped. `composes`
115
115
  // was typed MemoPart/MemoPart and links StateMachine (a state def) to
116
- // WorkflowStep (an action def); `verifiedBy`'s source was typed MemoPart and
116
+ // OperativeAction (an action def); `verifiedBy`'s source was typed MemoPart and
117
117
  // most of its sources are requirement defs; `precedes` was typed
118
- // ArchitectureElement and joins OperationalActivity to OperationalActivity.
118
+ // a part-only type and joins OperativeAction to OperativeAction.
119
119
  // A rule that reproduced the old type exactly would have failed on the
120
120
  // flagship example on the day it landed. What each rule asserts is the
121
121
  // constraint the end MEANT, stated so it can be checked.
@@ -127,7 +127,7 @@ package memo_rules_ontology {
127
127
  // and the admissible types so the report is still actionable.
128
128
 
129
129
  constraint def SatisfiedBySourceKindRule :> MemoConsistencyRule {
130
- attribute id = "CR-ONT-060";
130
+ attribute :>> id = "CR-ONT-060";
131
131
  attribute tailoring = RuleTailoringKind::invariant;
132
132
  attribute appliesTo = "Model";
133
133
  attribute severity = RuleSeverityKind::error;
@@ -136,16 +136,16 @@ package memo_rules_ontology {
136
136
  constraint { true }
137
137
  }
138
138
  constraint def SatisfiedByTargetKindRule :> MemoConsistencyRule {
139
- attribute id = "CR-ONT-061";
139
+ attribute :>> id = "CR-ONT-061";
140
140
  attribute tailoring = RuleTailoringKind::invariant;
141
141
  attribute appliesTo = "Model";
142
142
  attribute severity = RuleSeverityKind::error;
143
- attribute rationaleText = "A requirement is satisfied by a designed thing: an architecture element, an actor, a behaviour, or a port. Never by another requirement or by a document.";
144
- attribute predicateExpression = "targetsOf(satisfiedBy)->forAll(conformsTo(ArchitectureElement) or conformsTo(Actor) or construct == 'action' or construct == 'port')";
143
+ attribute rationaleText = "A requirement is satisfied by a designed part, a behaviour, or a port. Never by another requirement or by a document.";
144
+ attribute predicateExpression = "targetsOf(satisfiedBy)->forAll(conformsTo(MemoPart) or construct == 'action' or construct == 'port')";
145
145
  constraint { true }
146
146
  }
147
147
  constraint def VerifiedByTargetKindRule :> MemoConsistencyRule {
148
- attribute id = "CR-ONT-062";
148
+ attribute :>> id = "CR-ONT-062";
149
149
  attribute tailoring = RuleTailoringKind::invariant;
150
150
  attribute appliesTo = "Model";
151
151
  attribute severity = RuleSeverityKind::error;
@@ -154,25 +154,25 @@ package memo_rules_ontology {
154
154
  constraint { true }
155
155
  }
156
156
  constraint def AllocatedToSourceKindRule :> MemoConsistencyRule {
157
- attribute id = "CR-ONT-063";
157
+ attribute :>> id = "CR-ONT-063";
158
158
  attribute tailoring = RuleTailoringKind::invariant;
159
159
  attribute appliesTo = "Model";
160
160
  attribute severity = RuleSeverityKind::error;
161
- attribute rationaleText = "Allocation runs from a function or a behaviour to where it runs. The source end of AllocatedTo is an architecture element or an action.";
162
- attribute predicateExpression = "sourcesOf(allocatedTo)->forAll(conformsTo(ArchitectureElement) or construct == 'action')";
161
+ attribute rationaleText = "Allocation runs from a function or a behaviour to where it runs. The source end of AllocatedTo is a part or an action.";
162
+ attribute predicateExpression = "sourcesOf(allocatedTo)->forAll(conformsTo(MemoPart) or construct == 'action')";
163
163
  constraint { true }
164
164
  }
165
165
  constraint def AllocatedToTargetKindRule :> MemoConsistencyRule {
166
- attribute id = "CR-ONT-064";
166
+ attribute :>> id = "CR-ONT-064";
167
167
  attribute tailoring = RuleTailoringKind::invariant;
168
168
  attribute appliesTo = "Model";
169
169
  attribute severity = RuleSeverityKind::error;
170
- attribute rationaleText = "A function is allocated to an architecture element or to an actor — ARCADIA System Analysis allocates to the system OR to an actor, which the former ArchitectureElement-typed end made impossible.";
171
- attribute predicateExpression = "targetsOf(allocatedTo)->forAll(conformsTo(ArchitectureElement) or conformsTo(Actor))";
170
+ attribute rationaleText = "A function is allocated to a part — including a system or actor — as ARCADIA System Analysis requires.";
171
+ attribute predicateExpression = "targetsOf(allocatedTo)->forAll(conformsTo(MemoPart))";
172
172
  constraint { true }
173
173
  }
174
174
  constraint def ComposesParentKindRule :> MemoConsistencyRule {
175
- attribute id = "CR-ONT-065";
175
+ attribute :>> id = "CR-ONT-065";
176
176
  attribute tailoring = RuleTailoringKind::invariant;
177
177
  attribute appliesTo = "Model";
178
178
  attribute severity = RuleSeverityKind::error;
@@ -181,7 +181,7 @@ package memo_rules_ontology {
181
181
  constraint { true }
182
182
  }
183
183
  constraint def ComposesChildKindRule :> MemoConsistencyRule {
184
- attribute id = "CR-ONT-066";
184
+ attribute :>> id = "CR-ONT-066";
185
185
  attribute tailoring = RuleTailoringKind::invariant;
186
186
  attribute appliesTo = "Model";
187
187
  attribute severity = RuleSeverityKind::error;
@@ -190,16 +190,16 @@ package memo_rules_ontology {
190
190
  constraint { true }
191
191
  }
192
192
  constraint def PrecedesEndKindRule :> MemoConsistencyRule {
193
- attribute id = "CR-ONT-067";
193
+ attribute :>> id = "CR-ONT-067";
194
194
  attribute tailoring = RuleTailoringKind::invariant;
195
195
  attribute appliesTo = "Model";
196
196
  attribute severity = RuleSeverityKind::error;
197
- attribute rationaleText = "Precedence orders things that happen: architecture elements or behaviours, at both ends.";
198
- attribute predicateExpression = "sourcesOf(precedes)->forAll(conformsTo(ArchitectureElement) or construct == 'action') and targetsOf(precedes)->forAll(conformsTo(ArchitectureElement) or construct == 'action')";
197
+ attribute rationaleText = "Precedence orders things that happen: parts or behaviours, at both ends.";
198
+ attribute predicateExpression = "sourcesOf(precedes)->forAll(conformsTo(MemoPart) or construct == 'action') and targetsOf(precedes)->forAll(conformsTo(MemoPart) or construct == 'action')";
199
199
  constraint { true }
200
200
  }
201
201
  constraint def PerformsPerformerKindRule :> MemoConsistencyRule {
202
- attribute id = "CR-ONT-068";
202
+ attribute :>> id = "CR-ONT-068";
203
203
  attribute tailoring = RuleTailoringKind::invariant;
204
204
  attribute appliesTo = "Model";
205
205
  attribute severity = RuleSeverityKind::error;
@@ -208,7 +208,7 @@ package memo_rules_ontology {
208
208
  constraint { true }
209
209
  }
210
210
  constraint def EnablesEnablerKindRule :> MemoConsistencyRule {
211
- attribute id = "CR-ONT-069";
211
+ attribute :>> id = "CR-ONT-069";
212
212
  attribute tailoring = RuleTailoringKind::invariant;
213
213
  attribute appliesTo = "Model";
214
214
  attribute severity = RuleSeverityKind::error;
@@ -217,7 +217,7 @@ package memo_rules_ontology {
217
217
  constraint { true }
218
218
  }
219
219
  constraint def BindsToInterfaceEndKindRule :> MemoConsistencyRule {
220
- attribute id = "CR-ONT-070";
220
+ attribute :>> id = "CR-ONT-070";
221
221
  attribute tailoring = RuleTailoringKind::invariant;
222
222
  attribute appliesTo = "Model";
223
223
  attribute severity = RuleSeverityKind::error;
@@ -226,12 +226,12 @@ package memo_rules_ontology {
226
226
  constraint { true }
227
227
  }
228
228
  constraint def CrossesTrustBoundaryEndKindRule :> MemoConsistencyRule {
229
- attribute id = "CR-ONT-071";
229
+ attribute :>> id = "CR-ONT-071";
230
230
  attribute tailoring = RuleTailoringKind::invariant;
231
231
  attribute appliesTo = "Model";
232
232
  attribute severity = RuleSeverityKind::error;
233
233
  attribute rationaleText = "A boundary is a boundary element or a port; what crosses it is an asset or an exchange item.";
234
- attribute predicateExpression = "sourcesOf(crossesTrustBoundary)->forAll(conformsTo(InterfaceElement) or construct == 'port') and targetsOf(crossesTrustBoundary)->forAll(conformsTo(ArchitectureElement) or construct == 'item')";
234
+ attribute predicateExpression = "sourcesOf(crossesTrustBoundary)->forAll(conformsTo(InterfaceElement) or construct == 'port') and targetsOf(crossesTrustBoundary)->forAll(conformsTo(MemoPart) or construct == 'item')";
235
235
  constraint { true }
236
236
  }
237
237
 
@@ -241,21 +241,21 @@ package memo_rules_ontology {
241
241
  // reached with sourcesOf/targetsOf. They are resolved here by looking the id
242
242
  // up in the kind extent, which is the same statement made the long way.
243
243
  constraint def ComponentExchangeSourceEndpointKindRule :> MemoConsistencyRule {
244
- attribute id = "CR-ONT-072";
244
+ attribute :>> id = "CR-ONT-072";
245
245
  attribute tailoring = RuleTailoringKind::invariant;
246
246
  attribute appliesTo = "ComponentExchange";
247
247
  attribute severity = RuleSeverityKind::error;
248
248
  attribute rationaleText = "An exchange starts at a component or at a boundary port. Stating it as a rule is what let the endpoint refs stop being MemoPart-typed, which is what lets PhysicalPort and SoftwarePort become port defs.";
249
- attribute predicateExpression = "attributes.sourceEndpoint == '' or allOfKind('ArchitectureElement')->exists(id == subject.attributes.sourceEndpoint) or allOfKind('InterfaceElement')->exists(id == subject.attributes.sourceEndpoint) or allOfKind('MemoPort')->exists(id == subject.attributes.sourceEndpoint)";
249
+ attribute predicateExpression = "attributes.sourceEndpoint == '' or allOfKind('MemoPart')->exists(id == subject.attributes.sourceEndpoint) or allOfKind('InterfaceElement')->exists(id == subject.attributes.sourceEndpoint) or allOfKind('MemoPort')->exists(id == subject.attributes.sourceEndpoint)";
250
250
  constraint { true }
251
251
  }
252
252
  constraint def ComponentExchangeTargetEndpointKindRule :> MemoConsistencyRule {
253
- attribute id = "CR-ONT-073";
253
+ attribute :>> id = "CR-ONT-073";
254
254
  attribute tailoring = RuleTailoringKind::invariant;
255
255
  attribute appliesTo = "ComponentExchange";
256
256
  attribute severity = RuleSeverityKind::error;
257
257
  attribute rationaleText = "An exchange ends at a component or at a boundary port, on the same grounds as CR-ONT-072.";
258
- attribute predicateExpression = "attributes.targetEndpoint == '' or allOfKind('ArchitectureElement')->exists(id == subject.attributes.targetEndpoint) or allOfKind('InterfaceElement')->exists(id == subject.attributes.targetEndpoint) or allOfKind('MemoPort')->exists(id == subject.attributes.targetEndpoint)";
258
+ attribute predicateExpression = "attributes.targetEndpoint == '' or allOfKind('MemoPart')->exists(id == subject.attributes.targetEndpoint) or allOfKind('InterfaceElement')->exists(id == subject.attributes.targetEndpoint) or allOfKind('MemoPort')->exists(id == subject.attributes.targetEndpoint)";
259
259
  constraint { true }
260
260
  }
261
261
 
@@ -266,7 +266,7 @@ package memo_rules_ontology {
266
266
  // "answerable to exactly one component" is the whole content of the concept.
267
267
 
268
268
  constraint def ComponentFunctionAllocatedRule :> MemoConsistencyRule {
269
- attribute id = "CR-ONT-074";
269
+ attribute :>> id = "CR-ONT-074";
270
270
  attribute tailoring = RuleTailoringKind::invariant;
271
271
  attribute appliesTo = "ComponentFunction";
272
272
  attribute severity = RuleSeverityKind::error;
@@ -275,7 +275,7 @@ package memo_rules_ontology {
275
275
  constraint { true }
276
276
  }
277
277
  constraint def FunctionDecomposesIntoFunctionsRule :> MemoConsistencyRule {
278
- attribute id = "CR-ONT-075";
278
+ attribute :>> id = "CR-ONT-075";
279
279
  attribute tailoring = RuleTailoringKind::invariant;
280
280
  attribute appliesTo = "MemoFunction";
281
281
  attribute severity = RuleSeverityKind::error;
@@ -294,7 +294,7 @@ package memo_rules_ontology {
294
294
  // the ends and can never answer it. Naming the flow is what the grammar's
295
295
  // restored FlowDeclaration name makes possible at all.
296
296
  constraint def ExchangeHasFlowRule :> MemoConsistencyRule {
297
- attribute id = "CR-ONT-076";
297
+ attribute :>> id = "CR-ONT-076";
298
298
  attribute tailoring = RuleTailoringKind::invariant;
299
299
  attribute appliesTo = "ComponentExchange";
300
300
  attribute severity = RuleSeverityKind::error;
@@ -304,9 +304,9 @@ package memo_rules_ontology {
304
304
  }
305
305
 
306
306
  constraint def AlternateScenarioHasBaseRule :> MemoConsistencyRule {
307
- attribute id = "CR-ONT-043";
307
+ attribute :>> id = "CR-ONT-043";
308
308
  attribute tailoring = RuleTailoringKind::invariant;
309
- attribute appliesTo = "MemoScenario";
309
+ attribute appliesTo = "OperativeScenario";
310
310
  attribute severity = RuleSeverityKind::error;
311
311
  attribute rationaleText = "Alternate, exception, and recovery scenarios must identify their base scenario or variation point — never duplicate the workflow.";
312
312
  attribute predicateExpression = "not(variantKind == 'alternate' or variantKind == 'exception' or variantKind == 'recovery') or baseScenario->size() == 1 or variationPoint != ''";
@@ -7,7 +7,7 @@ package memo_rules_quantitative {
7
7
  private import memo_core_enumerations::*;
8
8
 
9
9
  constraint def HazardMaxControlsRule :> MemoConsistencyRule {
10
- attribute id = "QT-001";
10
+ attribute :>> id = "QT-001";
11
11
  attribute tailoring = RuleTailoringKind::assurance;
12
12
  attribute appliesTo = "Hazard";
13
13
  attribute severity = RuleSeverityKind::info;
@@ -17,7 +17,7 @@ package memo_rules_quantitative {
17
17
  }
18
18
 
19
19
  constraint def SwComponentMaxInterfacesRule :> MemoConsistencyRule {
20
- attribute id = "QT-002";
20
+ attribute :>> id = "QT-002";
21
21
  attribute tailoring = RuleTailoringKind::assurance;
22
22
  attribute appliesTo = "SoftwareModule";
23
23
  attribute severity = RuleSeverityKind::info;