@oimlsmart/primmel-packages 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,36 @@
1
+ exclusive_gateway gas_handling_gateway {
2
+ label "Gas Handling Test Applicability"
3
+ edge flow_spillover_and_leakproofness_tests { condition "[sampling_approach] in ['extractive']" label "Extractive: flow spillover + leakproofness required" }
4
+ edge skip_gas_handling_tests { condition default label "In-situ: not applicable" }
5
+ }
6
+
7
+ exclusive_gateway low_battery_gateway {
8
+ label "Low Battery Test Applicability"
9
+ edge low_battery_test { condition "[power_supply] in ['battery', 'ac-and-battery']" label "Battery-powered: low battery test required" }
10
+ edge skip_low_battery_test { condition default label "AC mains only: not applicable" }
11
+ }
12
+
13
+ exclusive_gateway signal_line_gateway {
14
+ label "Signal Line Disturbance Test Applicability"
15
+ edge bursts_signal_and_surge_tests { condition "[capabilities] contains 'data-interface'" label "Data interface fitted: bursts/surges on signal lines required" }
16
+ edge skip_signal_line_tests { condition default label "No signal/data/control lines: not applicable" }
17
+ }
18
+
19
+ exclusive_gateway drift_gateway {
20
+ label "Drift Test Applicability"
21
+ edge drift_test { condition "[adjustment_means] in ['semi-automatic', 'automatic']" label "Drift test required (R 144-1, 4.8)" }
22
+ edge skip_drift_test { condition default label "Manual adjustment: not applicable" }
23
+ }
24
+
25
+ exclusive_gateway test_result_gateway {
26
+ label "Test Result Determination"
27
+ edge compile_test_report_pass { condition "every([within_mpe]) = true" label "All tests pass" }
28
+ edge compile_test_report_fail { condition default label "One or more tests fail" }
29
+ }
30
+
31
+ exclusive_gateway mtl_gateway {
32
+ label "Manufacturer Test Lab Routing"
33
+ edge accept_mtl_report { condition "[lab_kind] = 'manufacturer_test_lab' and [scheme] = 'A'" label "Accept MTL results (Scheme A)" }
34
+ edge require_independent_tl { condition default label "Independent TL required" }
35
+ }
36
+
@@ -1,152 +1,333 @@
1
1
  process submit_application {
2
+ name "Submit Type Evaluation Application"
2
3
  actor applicant
4
+ modality shall
5
+ reference_data_registry { measuringInstrumentModels manufacturers }
3
6
  output { applications }
4
- reference { doc "PD-05 §4.1" clause "" }
7
+ executor actor
8
+ source { doc "PD-05 §4.1" clause "" }
5
9
  }
6
10
 
7
11
  process review_application {
12
+ name "Review Application"
8
13
  actor issuing_authority
14
+ modality shall
15
+ reference_data_registry { applications }
9
16
  validate_provision { /req/cs/application-completeness }
10
17
  output { applications }
11
- reference { doc "PD-05 §4.2" clause "" }
18
+ executor actor
19
+ source { doc "PD-05 §4.2" clause "" }
12
20
  }
13
21
 
14
22
  process accept_application {
23
+ name "Accept Application and Notify"
15
24
  actor issuing_authority
25
+ modality shall
16
26
  validate_provision { /req/cs/fee-estimate /req/cs/sample-count }
17
27
  output { applications }
18
- reference { doc "PD-05 §4.2.4" clause "" }
28
+ executor actor
29
+ source { doc "PD-05 §4.2.4" clause "" }
19
30
  }
20
31
 
21
32
  process reject_application {
33
+ name "Reject Application with Reason"
22
34
  actor issuing_authority
35
+ modality shall
23
36
  validate_provision { /req/cs/rejection-reason }
24
37
  output { applications }
25
- reference { doc "PD-05 §4.2.2" clause "" }
38
+ executor actor
39
+ source { doc "PD-05 §4.2.2" clause "" }
26
40
  }
27
41
 
28
42
  process conduct_tests {
43
+ name "Conduct Type Evaluation Tests"
29
44
  actor test_laboratory
45
+ modality shall
46
+ machine_steps { verdict_computation }
47
+ reference_data_registry { applications measuringInstrumentModels }
30
48
  validate_provision { /req/metrological/measurement-units /req/metrological/measuring-range /req/metrological/mpe-intrinsic /req/metrological/mpe-operating /req/metrological/repeatability /req/metrological/rated-conditions /req/metrological/cross-sensitivity /req/metrological/vibration /req/metrological/disturbances /req/metrological/response-time /req/metrological/warm-up-time /req/metrological/drift }
49
+ validate_measurement { "every([within_mpe]) = true" }
31
50
  output { testReports formInstances }
32
- reference { doc "PD-05 §4.3" clause "" }
51
+ executor actor
52
+ source { doc "PD-05 §4.3" clause "" }
33
53
  }
34
54
 
35
55
  process compile_test_report {
56
+ name "Compile OIML Test Report"
36
57
  actor test_laboratory
58
+ modality shall
37
59
  validate_provision { /req/cs/test-report-18-elements }
60
+ validate_measurement { "[completed_forms].count = [required_forms].count" }
38
61
  output { testReports }
39
- reference { doc "PD-05 §4.4" clause "" }
62
+ executor actor
63
+ source { doc "PD-05 §4.4" clause "" }
40
64
  }
41
65
 
42
66
  process compile_evaluation_report {
67
+ name "Compile Type Evaluation Report"
43
68
  actor issuing_authority
69
+ modality shall
70
+ machine_steps { evaluation_aggregation }
71
+ reference_data_registry { testReports formInstances applications }
44
72
  validate_provision { /req/cs/evaluation-report-contents }
73
+ validate_measurement { "[test_report_checklist_coverage] >= 1.0" }
45
74
  output { evaluationReports }
46
- reference { doc "PD-05 §4.5" clause "" }
75
+ executor actor
76
+ source { doc "PD-05 §4.5" clause "" }
47
77
  }
48
78
 
49
79
  process issue_certificate {
80
+ name "Issue OIML Certificate"
50
81
  actor issuing_authority
82
+ modality shall
83
+ machine_steps { certificate_characteristics_derivation }
84
+ reference_data_registry { evaluationReports }
51
85
  validate_provision { /req/cs/certificate-requirements }
52
86
  output { certificates }
53
- reference { doc "PD-05 §4.6" clause "" }
87
+ executor actor
88
+ source { doc "PD-05 §4.6" clause "" }
54
89
  }
55
90
 
56
91
  process register_certificate {
92
+ name "Register Certificate with BIML"
57
93
  actor biml
94
+ modality shall
58
95
  validate_provision { /req/cs/biml-registration }
59
96
  output { certificates }
60
- reference { doc "PD-05 §6" clause "" }
97
+ executor actor
98
+ source { doc "PD-05 §6" clause "" }
61
99
  }
62
100
 
63
101
  process handle_revision {
102
+ name "Handle Certificate Revision"
64
103
  actor issuing_authority
104
+ modality may
105
+ reference_data_registry { certificates }
65
106
  output { certificates certificateAnnexes }
66
- reference { doc "PD-05 §8.1" clause "" }
107
+ executor actor
108
+ source { doc "PD-05 §8.1" clause "" }
67
109
  }
68
110
 
69
111
  process handle_edition_change {
112
+ name "Handle Edition Change"
70
113
  actor issuing_authority
114
+ modality may
115
+ reference_data_registry { certificates }
71
116
  output { evaluationReports certificates }
72
- reference { doc "PD-05 §8.3" clause "" }
117
+ executor actor
118
+ source { doc "PD-05 §8.3" clause "" }
73
119
  }
74
120
 
75
121
  process evaluate_certificate_acceptance {
122
+ name "Evaluate certificate acceptability"
76
123
  actor utilizer
124
+ modality may
125
+ reference_data_registry { certificates participantDeclarations }
77
126
  output { acceptanceReviews }
78
- reference { doc "PD-06, 4.8/4.9; B 18:2025 §5.6.3" clause "" }
127
+ executor actor
128
+ source { doc "PD-06, 4.8/4.9; B 18:2025 §5.6.3" clause "" }
79
129
  }
80
130
 
81
131
  process handle_appeal {
132
+ name "Handle appeal to the Board of Appeal"
82
133
  actor executive_secretary
134
+ modality may
135
+ reference_data_registry { participantApplications certificates }
83
136
  output { appeals }
84
- reference { doc "PD-01, 8–9" clause "" }
137
+ executor actor
138
+ source { doc "PD-01, 8–9" clause "" }
85
139
  }
86
140
 
87
141
  process handle_complaint {
142
+ name "Handle complaint (incl. incorrect conclusions)"
88
143
  actor executive_secretary
144
+ modality may
145
+ reference_data_registry { certificates }
89
146
  output { complaints }
90
- reference { doc "PD-01, 6; PD-05 §7.1" clause "" }
147
+ executor actor
148
+ source { doc "PD-01, 6; PD-05 §7.1" clause "" }
91
149
  }
92
150
 
93
151
  process handle_misuse {
152
+ name "Handle certificate misuse"
94
153
  actor executive_secretary
154
+ modality may
155
+ reference_data_registry { certificates }
95
156
  output { misuseCases }
96
- reference { doc "PD-06, 5.1" clause "" }
157
+ executor actor
158
+ source { doc "PD-06, 5.1" clause "" }
97
159
  }
98
160
 
99
161
  process deregister_certificate {
162
+ name "Deregister certificate"
100
163
  actor biml
164
+ modality may
165
+ reference_data_registry { certificates complaints misuseCases }
101
166
  output { deregistrations certificates }
102
- reference { doc "PD-01, 6.2; PD-06, 5.2/5.3; PD-05 §6.2" clause "" }
167
+ executor actor
168
+ source { doc "PD-01, 6.2; PD-06, 5.2/5.3; PD-05 §6.2" clause "" }
103
169
  }
104
170
 
105
171
  process verify_presented_certificate {
172
+ name "Verify a presented certificate against the registered copy"
106
173
  actor biml
174
+ modality may
175
+ reference_data_registry { certificates registeredCopies }
107
176
  output { registeredCopies }
108
- reference { doc "B 18:2025 §15.8" clause "" }
177
+ executor actor
178
+ source { doc "B 18:2025 §15.8" clause "" }
109
179
  }
110
180
 
111
181
  process submit_participant_application {
182
+ name "Submit participant application"
112
183
  actor applicant
184
+ modality may
185
+ reference_data_registry { participantApplications }
113
186
  output { participantApplications }
114
- reference { doc "PD-03, 5.1; PD-04, 5.1; PD-09, 4–5; PD-02, 7" clause "" }
187
+ executor actor
188
+ source { doc "PD-03, 5.1; PD-04, 5.1; PD-09, 4–5; PD-02, 7" clause "" }
115
189
  }
116
190
 
117
191
  process assess_participant_competence {
192
+ name "Assess participant competence"
118
193
  actor executive_secretary
194
+ modality may
195
+ reference_data_registry { participantApplications }
119
196
  output { competenceEvidence }
120
- reference { doc "PD-03, 5.2; PD-04, 5.2" clause "" }
197
+ executor actor
198
+ source { doc "PD-03, 5.2; PD-04, 5.2" clause "" }
121
199
  }
122
200
 
123
201
  process recommend_participation {
202
+ name "Review Committee recommendation"
124
203
  actor evaluator
204
+ modality may
205
+ reference_data_registry { participantApplications }
125
206
  output { approvalVotes }
126
- reference { doc "PD-03, 5.3.2; PD-04, 5.3.2; PD-02, 8.1; OD-01, 5.6/7.9" clause "" }
207
+ executor actor
208
+ source { doc "PD-03, 5.3.2; PD-04, 5.3.2; PD-02, 8.1; OD-01, 5.6/7.9" clause "" }
127
209
  }
128
210
 
129
211
  process decide_participation {
212
+ name "MC participation decision"
130
213
  actor supervisor
214
+ modality may
215
+ reference_data_registry { participantApplications }
131
216
  output { approvalVotes participantApplications }
132
- reference { doc "PD-03, 5.3.2; PD-04, 5.3.2; PD-02, 8.2; B 18:2025 §11.4.2" clause "" }
217
+ executor actor
218
+ source { doc "PD-03, 5.3.2; PD-04, 5.3.2; PD-02, 8.2; B 18:2025 §11.4.2" clause "" }
133
219
  }
134
220
 
135
221
  process record_participant_declaration {
222
+ name "Record/maintain a participant Declaration"
136
223
  actor executive_secretary
224
+ modality may
225
+ reference_data_registry { participantDeclarations }
137
226
  output { participantDeclarations }
138
- reference { doc "PD-08, 4–5; PD-03, 5.3.2/9; PD-04, 5.3.2/7" clause "" }
227
+ executor actor
228
+ source { doc "PD-08, 4–5; PD-03, 5.3.2/9; PD-04, 5.3.2/7" clause "" }
139
229
  }
140
230
 
141
231
  process publish_participant_register {
232
+ name "Publish the participant lists"
142
233
  actor executive_secretary
234
+ modality may
235
+ reference_data_registry { participantDeclarations }
143
236
  output { participantApplications }
144
- reference { doc "PD-03, 5.3.2; PD-04, 5.3.2; PD-08, 4; PD-09, 4–5; OD-01, 13.4" clause "" }
237
+ executor actor
238
+ source { doc "PD-03, 5.3.2; PD-04, 5.3.2; PD-08, 4; PD-09, 4–5; OD-01, 13.4" clause "" }
145
239
  }
146
240
 
147
241
  process drive_scheme_lifecycle {
242
+ name "Drive the per-category scheme lifecycle"
148
243
  actor biml
244
+ modality may
245
+ reference_data_registry { categorySchemes }
149
246
  output { categorySchemes }
150
- reference { doc "B 18:2025 §4.2, §15.1–15.2" clause "" }
247
+ executor actor
248
+ source { doc "B 18:2025 §4.2, §15.1–15.2" clause "" }
249
+ }
250
+
251
+ workflow_stage application_processing {
252
+ label "Application Processing"
253
+ description "PD-05 §4.1–4.2: Application submission, review, and acceptance/rejection"
254
+ elements { submit_application review_application accept_application reject_application }
255
+ start_event application_received
256
+ end_events { application_accepted application_rejected application_withdrawn }
257
+ approvals { ia_accept_application }
258
+ }
259
+
260
+ workflow_stage testing {
261
+ label "Type Evaluation Testing"
262
+ description "PD-05 §4.3–4.4: Test execution and test report compilation"
263
+ elements { conduct_tests compile_test_report }
264
+ start_event application_accepted
265
+ end_events { test_report_compiled }
266
+ approvals { tl_authorize_test_report }
267
+ gateways { gas_handling_gateway low_battery_gateway signal_line_gateway drift_gateway test_result_gateway mtl_gateway }
268
+ }
269
+
270
+ workflow_stage evaluation {
271
+ label "Type Evaluation"
272
+ description "PD-05 §4.5: Evaluation report compilation and approval"
273
+ elements { compile_evaluation_report }
274
+ start_event test_report_compiled
275
+ end_events { evaluation_complete }
276
+ approvals { ia_approve_evaluation_report }
277
+ }
278
+
279
+ workflow_stage certification {
280
+ label "Certification"
281
+ description "PD-05 §4.6, §6, §8: Certificate issuance, registration, and revision"
282
+ elements { issue_certificate register_certificate handle_revision handle_edition_change }
283
+ start_event evaluation_complete
284
+ end_events { certificate_issued }
285
+ approvals { ia_sign_certificate biml_register_certificate ia_approve_revision }
286
+ }
287
+
288
+ workflow_stage scheme_operations {
289
+ label "OIML-CS Scheme Operations"
290
+ description "PD-01/PD-06 + B 18:2025 §15.8 (TODO.roadmap/45): acceptability evaluation, appeals, complaints, misuse, deregistration, and the registered-copy validity check"
291
+ elements { evaluate_certificate_acceptance handle_appeal handle_complaint handle_misuse deregister_certificate verify_presented_certificate }
292
+ start_event certificate_issued
293
+ end_events { certificate_deregistered }
294
+ }
295
+
296
+ workflow_stage participant_approval {
297
+ label "OIML-CS Participant Approval"
298
+ description "PD-02/PD-03/PD-04/PD-08/PD-09 + B 18:2025 §15 (TODO.roadmap/44–45): the participation pipeline — application, competence assessment, RC recommendation, MC decision, Declaration, publication — and the per-category scheme lifecycle"
299
+ elements { submit_participant_application assess_participant_competence recommend_participation decide_participation record_participant_declaration publish_participant_register drive_scheme_lifecycle }
300
+ start_event participant_application_received
301
+ end_events { participant_active }
302
+ }
303
+
304
+ start_event application_received {
305
+ }
306
+
307
+ end_event application_accepted {
308
+ }
309
+
310
+ end_event application_rejected {
311
+ }
312
+
313
+ end_event application_withdrawn {
314
+ }
315
+
316
+ end_event test_report_compiled {
317
+ }
318
+
319
+ end_event evaluation_complete {
320
+ }
321
+
322
+ end_event certificate_issued {
323
+ }
324
+
325
+ end_event certificate_deregistered {
326
+ }
327
+
328
+ start_event participant_application_received {
329
+ }
330
+
331
+ end_event participant_active {
151
332
  }
152
333
 
@@ -1,48 +1,58 @@
1
1
  process application {
2
- note "phase: intake"
2
+ name "Type Evaluation Application"
3
+ summary "Applicant (manufacturer, distributor, or end user) submits Application declaring the instrument model family, the requested scope (matrix of model-family members per the Recommendation's specimen-selection rules), requested ANR countries, scheme (A/B), and supporting documentation."
3
4
  actor applicant
4
- description "Applicant (manufacturer, distributor, or end user) submits Application declaring the instrument model family, the requested scope (matrix of model-family members per the Recommendation's specimen-selection rules), requested ANR countries, scheme (A/B), and supporting documentation."
5
- validate_provision { applicant_info model_family_matrix documentation }
5
+ phase intake
6
6
  guard "Application.status = SUBMITTED"
7
7
  guard "Application.model_family_id is not null OR Application.model_ids.length >= 1"
8
+ validate_provision { applicant_info model_family_matrix documentation }
9
+ output { Application }
8
10
  }
9
11
 
10
12
  process test-request-dispatch {
11
- note "phase: dispatch"
13
+ name "Test request dispatch"
14
+ summary "IA selects one or more Test Laboratories (by accreditation scope, equipment capability, capacity) and issues a TestRequest to each, specifying which samples are shipped, which of the Recommendation's Test Report Forms the lab must complete, and the test conditions."
12
15
  actor issuing-authority
13
- description "IA selects one or more Test Laboratories (by accreditation scope, equipment capability, capacity) and issues a TestRequest to each, specifying which samples are shipped, which of the Recommendation's Test Report Forms the lab must complete, and the test conditions."
14
- validate_provision { Application MeasuringInstrumentSample TestLaboratory }
16
+ phase dispatch
15
17
  guard "Each TestRequest references >= 1 MeasuringInstrumentSample"
16
18
  guard "Each TestRequest.required_forms subset of R 144-3 form identifiers"
17
19
  guard "TestRequest.assigned_laboratory_id is accredited for the requested test scope (R 144 gas analytical systems)"
20
+ validate_provision { Application MeasuringInstrumentSample TestLaboratory }
21
+ output { TestRequest }
18
22
  }
19
23
 
20
24
  process test-performance {
21
- note "phase: testing"
25
+ name "Test performance and report"
26
+ summary "Test Lab accepts the TestRequest (which implies physical sample receipt), performs the tests per the Recommendation's test procedures, fills in the required Test Report Forms (one FormInstance per sample per form), and issues a TestReport that bundles all FormInstances."
22
27
  actor test-laboratory
23
- description "Test Lab accepts the TestRequest (which implies physical sample receipt), performs the tests per the Recommendation's test procedures, fills in the required Test Report Forms (one FormInstance per sample per form), and issues a TestReport that bundles all FormInstances."
24
- validate_provision { TestRequest MeasuringInstrumentSample }
28
+ phase testing
25
29
  guard "TestReport.test_request_id references the TestRequest"
26
30
  guard "TestReport contains one FormInstance per (requiredForm × sample) pair"
27
31
  guard "TestReport.status = SUBMITTED"
32
+ validate_provision { TestRequest MeasuringInstrumentSample }
33
+ output { "TestReport containing FormInstance" }
28
34
  }
29
35
 
30
36
  process evaluation {
31
- note "phase: evaluation"
37
+ name "Evaluation and determination"
38
+ summary "IA staff review every submitted TestReport. For each TestReport, a TestReportDetermination is recorded (ACCEPTED / REJECTED / CONDITIONALLY_ACCEPTED). For each FormInstance, a FormDetermination is recorded. The aggregate of all TestReportDeterminations determines the EvaluationReport overall_decision. Finalization requires every TestReport in test_report_ids[] to have a corresponding determination."
32
39
  actor issuing-authority
33
- description "IA staff review every submitted TestReport. For each TestReport, a TestReportDetermination is recorded (ACCEPTED / REJECTED / CONDITIONALLY_ACCEPTED). For each FormInstance, a FormDetermination is recorded. The aggregate of all TestReportDeterminations determines the EvaluationReport overall_decision. Finalization requires every TestReport in test_report_ids[] to have a corresponding determination."
34
- validate_provision { TestReport FormInstance }
40
+ phase evaluation
35
41
  guard "All TestReport entries in test_report_ids[] have a TestReportDetermination"
36
42
  guard "EvaluationReport.status = ALL_TR_REVIEWED before finalization"
37
43
  guard "overall_decision derivable from test_report_determinations[]"
44
+ validate_provision { TestReport FormInstance }
45
+ output { "EvaluationReport containing FormDetermination" TestReportDetermination }
38
46
  }
39
47
 
40
48
  process certificate-issuance {
41
- note "phase: issuance"
49
+ name "OIML Certificate of Conformity"
50
+ summary "If EvaluationReport.overall_decision = APPROVED, IA issues a Certificate whose scope covers the original Application's matrix. BIML registers the certificate."
42
51
  actor issuing-authority
43
- description "If EvaluationReport.overall_decision = APPROVED, IA issues a Certificate whose scope covers the original Application's matrix. BIML registers the certificate."
44
- validate_provision { EvaluationReport Application.model_family_id }
52
+ phase issuance
45
53
  guard "EvaluationReport.overall_decision = APPROVED"
46
54
  guard "Certificate.scope matches Application scope (model family + approved members)"
55
+ validate_provision { EvaluationReport Application.model_family_id }
56
+ output { Certificate }
47
57
  }
48
58
 
@@ -512,6 +512,26 @@ attribute_definition interfering_components {
512
512
  definition "List of gas components other than the measurand and their maximum permissible concentrations, provided by the manufacturer in the operating instructions."
513
513
  ref derives-from "urn:oiml:pub:r:144-1:2013#clause-4.5.2"
514
514
  value_type pair-list
515
+ pair_list {
516
+ key component
517
+ value max_concentration
518
+ key_dimension measurand_components
519
+ component co2 {
520
+ name "Carbon dioxide"
521
+ }
522
+ component h2o {
523
+ name "Water vapour"
524
+ }
525
+ component so2 {
526
+ name "Sulfur dioxide"
527
+ }
528
+ component ch4 {
529
+ name "Methane"
530
+ }
531
+ component h2 {
532
+ name "Hydrogen"
533
+ }
534
+ }
515
535
  origin declared
516
536
  scope model
517
537
  category administrative
@@ -1,2 +1,44 @@
1
1
  # .primmel-allowlist.prl — GENERATED from primmel-allowlist.yaml (TODO.roadmap/17), do not edit.
2
2
  text_coverage_budget 0 "TODO.roadmap/26 — the R 60 report shows 100% normative-sentence coverage over the four parts (315/315 gated sentences accounted: 292 bound + 23 deliberate exclusions sentence-pinned in sources-prd/coverage.yaml; R 60-4 joined the corpus in the TODO.UPGRADE/25 successor wave). Any new uncovered sentence is a regression and fails (C72)."
3
+ allowlist_entry {
4
+ rule C142
5
+ match "exclusive_gateway test_runs_gateway: edge * targets \"*\", which is not a declared process (gateway-edges-resolve)"
6
+ reason "Routing markers, not process ids: conduct_mdlo_tests / conduct_mdlo_tests_5runs name the two load-application branches (3 vs 5 runs by accuracy class) the test-run setup reads from the generated routing cascade; no per-branch process content exists to declare."
7
+ audit_ref "TODO.roadmap/40"
8
+ }
9
+ allowlist_entry {
10
+ rule C142
11
+ match "exclusive_gateway humidity_test_gateway: edge * targets \"*\", which is not a declared process (gateway-edges-resolve)"
12
+ reason "Routing markers, not process ids: humidity_ch_test / humidity_sh_test name the cyclic vs steady-state damp-heat branches; the cascade labels are the content."
13
+ audit_ref "TODO.roadmap/40"
14
+ }
15
+ allowlist_entry {
16
+ rule C142
17
+ match "exclusive_gateway electronic_tests_gateway: edge * targets \"*\", which is not a declared process (gateway-edges-resolve)"
18
+ reason "Routing markers, not process ids: electronic_tests / skip_electronic_tests name the applicability branch (the skip arm is the no-test marker)."
19
+ audit_ref "TODO.roadmap/40"
20
+ }
21
+ allowlist_entry {
22
+ rule C142
23
+ match "exclusive_gateway test_result_gateway: edge * targets \"*\", which is not a declared process (gateway-edges-resolve)"
24
+ reason "Routing markers, not process ids: compile_test_report_pass / compile_test_report_fail name the verdict branches of test-report compilation."
25
+ audit_ref "TODO.roadmap/40"
26
+ }
27
+ allowlist_entry {
28
+ rule C142
29
+ match "exclusive_gateway mtl_gateway: edge * targets \"*\", which is not a declared process (gateway-edges-resolve)"
30
+ reason "Routing markers, not process ids: accept_mtl_report / require_independent_tl name the manufacturer-test-lab acceptability branches (Scheme A)."
31
+ audit_ref "TODO.roadmap/40"
32
+ }
33
+ allowlist_entry {
34
+ rule C142
35
+ match "exclusive_gateway test_runs_gateway: no default edge — the first-match-wins cascade needs its catch-all (gateway-edges-resolve)"
36
+ reason "The conditions are EXHAUSTIVE over the accuracy_class dimension domain (A/B/C/D — model/instrument.yaml): ['C','D'] ∪ ['A','B'] covers every value, so a default edge could never fire — declaring one would invent a dead route."
37
+ audit_ref "TODO.roadmap/40"
38
+ }
39
+ allowlist_entry {
40
+ rule C142
41
+ match "exclusive_gateway humidity_test_gateway: no default edge — the first-match-wins cascade needs its catch-all (gateway-edges-resolve)"
42
+ reason "The edges cover exactly the humidity classes R 60 prescribes a damp-heat test for (CH cyclic, SH steady-state); NH / unclassed instruments deliberately match NO edge (no humidity test applies), and unlike r129/r144's skip_* arms this gateway authors no no-op target for a default to point at."
43
+ audit_ref "TODO.roadmap/40"
44
+ }
@@ -0,0 +1,48 @@
1
+ approval ia_accept_application {
2
+ name "IA Accepts Application"
3
+ actor issuing_authority
4
+ approve_by responsible_person_ia
5
+ approval_record { applications }
6
+ source { doc "PD-05 §4.2" clause "" }
7
+ }
8
+
9
+ approval tl_authorize_test_report {
10
+ name "TL Authorizes Test Report"
11
+ actor test_laboratory
12
+ approve_by responsible_person_tl
13
+ approval_record { testReports }
14
+ source { doc "PD-05 §4.4.3 r" clause "" }
15
+ }
16
+
17
+ approval ia_approve_evaluation_report {
18
+ name "IA Approves Evaluation Report"
19
+ actor issuing_authority
20
+ approve_by responsible_person_ia
21
+ approval_record { evaluationReports }
22
+ source { doc "PD-05 §4.5" clause "" }
23
+ }
24
+
25
+ approval ia_sign_certificate {
26
+ name "IA Signs OIML Certificate"
27
+ actor issuing_authority
28
+ approve_by responsible_person_ia
29
+ approval_record { certificates }
30
+ source { doc "PD-05 §4.6" clause "" }
31
+ }
32
+
33
+ approval biml_register_certificate {
34
+ name "BIML Registers Certificate"
35
+ actor biml
36
+ approve_by biml
37
+ approval_record { certificates }
38
+ source { doc "PD-05 §6" clause "" }
39
+ }
40
+
41
+ approval ia_approve_revision {
42
+ name "IA Approves Certificate Revision"
43
+ actor issuing_authority
44
+ approve_by responsible_person_ia
45
+ approval_record { certificateAnnexes }
46
+ source { doc "PD-05 §8.1" clause "" }
47
+ }
48
+
@@ -0,0 +1,30 @@
1
+ exclusive_gateway test_runs_gateway {
2
+ label "Determine Required Test Runs"
3
+ edge conduct_mdlo_tests { condition "[accuracy_class] in ['C', 'D']" label "3 load applications" }
4
+ edge conduct_mdlo_tests_5runs { condition "[accuracy_class] in ['A', 'B']" label "5 load applications" }
5
+ }
6
+
7
+ exclusive_gateway humidity_test_gateway {
8
+ label "Determine Humidity Test"
9
+ edge humidity_ch_test { condition "[humidity_class] in ['CH']" label "Cyclic humidity" }
10
+ edge humidity_sh_test { condition "[humidity_class] in ['SH']" label "Steady-state humidity" }
11
+ }
12
+
13
+ exclusive_gateway electronic_tests_gateway {
14
+ label "Electronic Test Applicability"
15
+ edge electronic_tests { condition "[technology] in ['analogue-active', 'digital']" label "Electronic tests required" }
16
+ edge skip_electronic_tests { condition default label "Not applicable" }
17
+ }
18
+
19
+ exclusive_gateway test_result_gateway {
20
+ label "Test Result Determination"
21
+ edge compile_test_report_pass { condition "every([within_mpe]) = true" label "All tests pass" }
22
+ edge compile_test_report_fail { condition default label "One or more tests fail" }
23
+ }
24
+
25
+ exclusive_gateway mtl_gateway {
26
+ label "Manufacturer Test Lab Routing"
27
+ edge accept_mtl_report { condition "[lab_kind] = 'manufacturer_test_lab' and [scheme] = 'A'" label "Accept MTL results (Scheme A)" }
28
+ edge require_independent_tl { condition default label "Independent TL required" }
29
+ }
30
+