@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
@@ -1,9 +1,32 @@
1
1
  // MEMO base hierarchy. Construct-specific foundations: one base per
2
- // SysML v2 metaclass family (part, action, port, interface, item, requirement,
3
- // connection), each carrying the shared MEMO semantics. Common inheritance
2
+ // SysML v2 metaclass family (part, action, port, interface, item, use case,
3
+ // requirement, constraint, verification, state, connection), each carrying
4
+ // the shared MEMO semantics. Common inheritance
4
5
  // across metaclasses is not portable, so non-part bases re-declare the small
5
6
  // identification core and share classification through the metadata defs in
6
7
  // memo_core_dimensions.
8
+ //
9
+ // ─── The identification core ────────────────────────────────────────────
10
+ // Every MEMO base below declares the SAME attributes, in the same order,
11
+ // with no exceptions:
12
+ //
13
+ // id, uuid, name, shortDescription, description,
14
+ // rationale, sourceReference, status
15
+ //
16
+ // They are re-declared per metaclass only because KerML will not let an
17
+ // action, port, item, requirement, or connection inherit from a part def.
18
+ // The duplication is a language constraint, not a design choice — so treat
19
+ // the block as one unit: anything added or removed here is added or removed
20
+ // in all of them. The drift this replaces was real (MemoPort carried no
21
+ // sourceReference and no status; MemoRequirement and MemoNeed each invented
22
+ // their own status attribute), and drift here shows up as an element whose
23
+ // properties panel is missing fields its neighbours have.
24
+ //
25
+ // `uuid` is the stable technical identity: never displayed, never used as a
26
+ // label, never reused. Authors normally leave it unset and let the compiler
27
+ // derive it (memo-tools assigns a v5 UUID over file+kind+id); set it
28
+ // explicitly on an element whose file or id must be free to change without
29
+ // breaking external references to it, and the authored value wins.
7
30
  package memo_core_common {
8
31
  private import ScalarValues::*;
9
32
 
@@ -26,6 +49,7 @@ package memo_core_common {
26
49
  abstract part def MemoPart {
27
50
  // identity
28
51
  attribute id : String;
52
+ attribute uuid : String;
29
53
  attribute name : String;
30
54
  // Two description registers on every MEMO element, because views have
31
55
  // two densities. `shortDescription` is the one-line form a table cell,
@@ -56,7 +80,28 @@ package memo_core_common {
56
80
  abstract part def VerifiableElement specializes MemoPart;
57
81
  abstract part def ArchitectureElement specializes MemoPart;
58
82
  part def InterfaceElement specializes MemoPart;
59
- part def MemoEvidence specializes MemoPart;
83
+ enum def EvidenceKind { enum testArtifact; enum evidence; enum formativeEvaluation; enum usabilityValidation; enum securityClaim; }
84
+ part def MemoEvidence specializes MemoPart {
85
+ attribute evidenceKind : EvidenceKind;
86
+ attribute version : String;
87
+ attribute artifactKind : ArtifactKind[0..1];
88
+ attribute resultSummary : String;
89
+ attribute evidenceType : String;
90
+ attribute integrityStatus : String;
91
+ // Promoted from the retired `UsabilityValidation` and
92
+ // `FormativeEvaluation` specializations. The collapse in `02083c5`
93
+ // deleted both subclasses without carrying their fields up, so an
94
+ // IEC 62366-1 evaluation record lost what it actually reports.
95
+ // Promoted on the standard's terms, not on in-tree usage: MEMO is a
96
+ // library, so what its own examples happen to set says nothing about
97
+ // what an adopter's usability file needs.
98
+ attribute participantProfile : String;
99
+ attribute participantCount : Integer;
100
+ attribute acceptanceCriteria : String;
101
+ attribute evaluationMethod : String;
102
+ attribute findingsSummary : String;
103
+ attribute designChangesTriggered : String;
104
+ }
60
105
  abstract part def AnalysisArtifact specializes MemoPart;
61
106
 
62
107
  // Document-bound elements add only what a document needs beyond the two
@@ -75,6 +120,7 @@ package memo_core_common {
75
120
  // and interaction steps specialize MemoAction.
76
121
  action def MemoAction {
77
122
  attribute id : String;
123
+ attribute uuid : String;
78
124
  attribute name : String;
79
125
  attribute shortDescription : String;
80
126
  attribute description : String;
@@ -86,9 +132,13 @@ package memo_core_common {
86
132
  // Boundary feature foundation for typed ports.
87
133
  port def MemoPort {
88
134
  attribute id : String;
135
+ attribute uuid : String;
89
136
  attribute name : String;
90
137
  attribute shortDescription : String;
91
138
  attribute description : String;
139
+ attribute rationale : String;
140
+ attribute sourceReference : String;
141
+ attribute status : ElementStatusKind;
92
142
  }
93
143
 
94
144
  // Interaction-contract foundation for interface definitions between ports.
@@ -96,6 +146,7 @@ package memo_core_common {
96
146
  end source;
97
147
  end target;
98
148
  attribute id : String;
149
+ attribute uuid : String;
99
150
  attribute name : String;
100
151
  attribute shortDescription : String;
101
152
  attribute description : String;
@@ -103,15 +154,25 @@ package memo_core_common {
103
154
  attribute sourceReference : String;
104
155
  }
105
156
 
106
- // Exchange-content foundation: everything that flows — information,
107
- // command, material, energy — is an item, not a part.
108
- item def MemoExchangeItem {
157
+ // Single item foundation. Standards, hazards, stored software data, and
158
+ // message payloads are all item-native concepts. Whether an item is
159
+ // exchanged is expressed by its use in a port or flow, not by a second
160
+ // ontology root.
161
+ abstract item def MemoItem {
109
162
  attribute id : String;
163
+ attribute uuid : String;
110
164
  attribute name : String;
111
165
  attribute shortDescription : String;
112
166
  attribute description : String;
113
167
  attribute rationale : String;
114
168
  attribute sourceReference : String;
169
+ attribute status : ElementStatusKind;
170
+ // What the item CARRIES, as distinct from what it is called. Removed
171
+ // by `595bfac` while modelling native wrappers; nothing replaced them,
172
+ // and every exchange item in the examples went on setting them. A
173
+ // measured value without its unit, its range, or its terminology code
174
+ // is not a regulated data item — an IVD result is "5.5 mg/dL, LOINC
175
+ // 2345-7", not "5.5".
115
176
  attribute semantics : String;
116
177
  attribute unit : String;
117
178
  attribute minValue : String;
@@ -121,25 +182,58 @@ package memo_core_common {
121
182
  attribute codes : TerminologyCode[0..*];
122
183
  }
123
184
 
185
+ // Use-case foundation. The domain UseCase adds its goal and actor
186
+ // references; identity is carried here so use cases do not maintain a
187
+ // partial hand-written copy of the MEMO identification core.
188
+ abstract use case def MemoUseCase {
189
+ attribute id : String;
190
+ attribute uuid : String;
191
+ attribute name : String;
192
+ attribute shortDescription : String;
193
+ attribute description : String;
194
+ attribute rationale : String;
195
+ attribute sourceReference : String;
196
+ attribute status : ElementStatusKind;
197
+ }
198
+
199
+ // General constraint foundation. Executable consistency rules and
200
+ // reusable quantitative constraints are both native constraint defs.
201
+ abstract constraint def MemoConstraint {
202
+ attribute id : String;
203
+ attribute uuid : String;
204
+ attribute name : String;
205
+ attribute shortDescription : String;
206
+ attribute description : String;
207
+ attribute rationale : String;
208
+ attribute sourceReference : String;
209
+ attribute status : ElementStatusKind;
210
+ }
211
+
124
212
  // Requirement-family foundations. MemoNeed captures a problem-space
125
213
  // expectation in stakeholder language; MemoRequirement a testable
126
214
  // solution-space obligation.
127
- requirement def MemoNeed {
128
- attribute needId : String;
215
+ // Shared base of the requirement family. It exists so a relation end can
216
+ // say "a need or a requirement" with one type name — before it, every end
217
+ // that had to accept both was left untyped.
218
+ abstract requirement def MemoRequirementElement {
219
+ attribute id : String;
220
+ attribute uuid : String;
221
+ attribute name : String;
129
222
  attribute shortDescription : String;
223
+ attribute description : String;
224
+ attribute rationale : String;
225
+ attribute sourceReference : String;
226
+ attribute status : ElementStatusKind;
130
227
  attribute statement : String;
131
- attribute needRationale : String;
228
+ }
229
+
230
+ requirement def MemoNeed :> MemoRequirementElement {
132
231
  attribute needSource : String;
133
232
  attribute priority : String;
134
- attribute needStatus : ElementStatusKind;
135
233
  }
136
234
 
137
- requirement def MemoRequirement {
138
- attribute requirementId : String;
139
- attribute shortDescription : String;
140
- attribute statement : String;
235
+ requirement def MemoRequirement :> MemoRequirementElement {
141
236
  attribute acceptanceCriteria : String;
142
- attribute requirementStatus : ElementStatusKind;
143
237
  }
144
238
 
145
239
  // Verification-case foundation. A SysML v2 verification case is a behaviour
@@ -148,11 +242,13 @@ package memo_core_common {
148
242
  // identification core rather than inheriting it.
149
243
  verification def MemoVerificationCase {
150
244
  attribute id : String;
245
+ attribute uuid : String;
151
246
  attribute name : String;
152
247
  attribute shortDescription : String;
153
248
  attribute description : String;
154
249
  attribute rationale : String;
155
250
  attribute sourceReference : String;
251
+ attribute status : ElementStatusKind;
156
252
  }
157
253
 
158
254
  // State foundation. SysML v2 states (state machines and their mode states)
@@ -160,13 +256,22 @@ package memo_core_common {
160
256
  // re-declare the identification core instead of specializing MemoPart
161
257
  // Transitions stay part-based to keep their traceable safety
162
258
  // attributes (id, sourceReference, priority, sameStepCritical).
163
- abstract state def MemoState {
259
+ enum def StateKind { enum mode; enum logical; }
260
+
261
+ state def MemoState {
262
+ attribute stateKind : StateKind;
164
263
  attribute id : String;
264
+ attribute uuid : String;
165
265
  attribute name : String;
166
266
  attribute shortDescription : String;
167
267
  attribute description : String;
168
268
  attribute rationale : String;
169
269
  attribute sourceReference : String;
270
+ attribute status : ElementStatusKind;
271
+ attribute modeKind : String;
272
+ attribute entryCondition : String;
273
+ attribute exitCondition : String;
274
+ attribute modePurpose : String;
170
275
  }
171
276
 
172
277
  part def Citation specializes MemoPart {
@@ -11,7 +11,7 @@ package memo_core_consistency_rules {
11
11
  // here would be shadowed by every rule that sets it. Its job is to give
12
12
  // RulePolicy a type to reference, so a policy names a rule the way SysML
13
13
  // names anything else rather than through a parallel string-ID namespace.
14
- abstract constraint def MemoConsistencyRule;
14
+ abstract constraint def MemoConsistencyRule :> MemoConstraint;
15
15
 
16
16
  part def ConsistencyRule specializes MemoPart {
17
17
  attribute appliesTo : String;
@@ -39,7 +39,19 @@ package memo_core_dimensions {
39
39
 
40
40
  // Editorial status of the model element itself (distinct from the
41
41
  // lifecycle of the thing the element describes).
42
+ // This is the ONE status vocabulary in MEMO: every element carries
43
+ // `status : ElementStatusKind`, whatever its metaclass. The former
44
+ // per-family variants (RequirementStatusKind, LinkStatusKind,
45
+ // MemoNeed::needStatus) are gone — three overlapping status dropdowns on
46
+ // one element was cognitive load, not precision.
47
+ //
48
+ // The V&V states the requirement variant carried (implemented, verified,
49
+ // validated) are deliberately NOT here: they are facts about links, not
50
+ // editorial states. An element is implemented when a Realizes link exists,
51
+ // verified when VerifiedBy does, validated when Validates does. Duplicating
52
+ // them as an attribute lets the attribute disagree with the graph.
42
53
  enum def ElementStatusKind {
54
+ enum proposed;
43
55
  enum draft;
44
56
  enum inReview;
45
57
  enum approved;
@@ -27,14 +27,6 @@ package memo_core_enumerations {
27
27
  enum medium;
28
28
  enum low;
29
29
  }
30
- enum def RequirementStatusKind {
31
- enum draft;
32
- enum approved;
33
- enum implemented;
34
- enum verified;
35
- enum validated;
36
- enum retired;
37
- }
38
30
  enum def RequirementNotationKind {
39
31
  enum freeText;
40
32
  enum ears;
@@ -68,6 +60,31 @@ package memo_core_enumerations {
68
60
  enum mechanical;
69
61
  enum fluidic;
70
62
  }
63
+ // AADL (SAE AS5506) port category. Distinct from InterfaceKind, which says
64
+ // WHAT crosses a port; this says HOW it is delivered, and the difference is
65
+ // safety-relevant: when a deadline is missed a `data` port overwrites the
66
+ // last sample and loses it, while an `event` or `eventData` port queues,
67
+ // and a queue that outgrows its bound is a different failure with a
68
+ // different mitigation. MEMO carried the distinction on items and not on
69
+ // ports, so neither failure could be argued about at the boundary where it
70
+ // happens.
71
+ enum def PortCategoryKind {
72
+ doc /* Sampled. The reader sees the most recent value; a missed
73
+ * deadline drops a sample and never blocks. */
74
+ enum data;
75
+ doc /* Queued signal with no payload. A missed deadline grows the
76
+ * queue; overflow is the failure to bound.
77
+ *
78
+ * Quoted because `event` is reserved in SysML v2 — the same
79
+ * treatment GovernKind's `'use'` already gets. AADL's word is kept
80
+ * rather than paraphrased to `queued`: it is the term the standard
81
+ * and every AADL tool use, and a renamed one would not survive a
82
+ * round trip. */
83
+ enum 'event';
84
+ doc /* Queued signal carrying a payload — the queueing semantics of
85
+ * `event` with the value of `data`. */
86
+ enum eventData;
87
+ }
71
88
  enum def FlowKind {
72
89
  enum information;
73
90
  enum command;
@@ -79,6 +96,22 @@ package memo_core_enumerations {
79
96
  enum audit;
80
97
  enum power;
81
98
  }
99
+ // Direction of a flow across a boundary.
100
+ //
101
+ // Track A2 removed this from PORTS: a port usage says `in` / `out` /
102
+ // `inout` natively, which is the language's own spelling and the only one
103
+ // a conforming tool reads. The enum survives because four non-port
104
+ // constructs still carry a direction and none of them is a port, so none
105
+ // of them can use the keyword:
106
+ //
107
+ // Interface.direction / .directionality (interface def)
108
+ // LogicalConnector.direction (connection def)
109
+ // LogicalExchange.direction (part def)
110
+ // ComponentExchange.direction (part def)
111
+ // OperationalInteraction.direction (part def)
112
+ //
113
+ // Deleting it would have cost those five their direction; the reinvention
114
+ // was only ever the port case.
82
115
  enum def DirectionKind {
83
116
  enum input;
84
117
  enum output;
@@ -118,6 +151,25 @@ package memo_core_enumerations {
118
151
  enum formalProof;
119
152
  enum modelChecking;
120
153
  }
154
+ // The submission regime a project targets, and the regimes a standard has
155
+ // standing in. This is the axis that decides which clauses a project is
156
+ // required to claim: `required(project)` is the clauses of every standard
157
+ // whose `appliesToRegime` intersects the regimes the project's
158
+ // ProjectMethodBinding declares.
159
+ //
160
+ // The members are spelled as the regulatory designations themselves rather
161
+ // than in the lowerCamel convention the rest of this file uses. All 44 DHF
162
+ // templates already carry these exact strings in `required_for`, and any
163
+ // transformation between the enum and those arrays would be a hardcoded
164
+ // spelling map in TypeScript — the one thing the standards axis exists to
165
+ // avoid. One vocabulary, one spelling, declared here.
166
+ enum def RegulatoryRegimeKind {
167
+ enum CE;
168
+ enum MDR;
169
+ enum UKCA;
170
+ enum FDA_510k;
171
+ enum FDA_PMA;
172
+ }
121
173
  enum def ArtifactKind {
122
174
  enum plan;
123
175
  enum requirementSpecification;
@@ -205,12 +257,6 @@ package memo_core_enumerations {
205
257
  enum deadlineMonotonic;
206
258
  enum EDF;
207
259
  }
208
- enum def LinkStatusKind {
209
- enum planned;
210
- enum active;
211
- enum verified;
212
- enum obsolete;
213
- }
214
260
  enum def BehaviorPropertyKind {
215
261
  enum stateInvariant;
216
262
  enum transitionRule;