@oimlsmart/primmel-packages 0.4.0 → 0.5.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.
Files changed (33) hide show
  1. package/oiml-cs/.primmel-allowlist.prl +7 -0
  2. package/oiml-cs/evaluation/abstract-processes.prl +454 -0
  3. package/oiml-cs/framework/declarations.prl +1 -1
  4. package/oiml-cs/framework/documents/cid-01/abstract-processes.prl +112 -0
  5. package/oiml-cs/framework/documents/cid-01/requirements.prl +99 -0
  6. package/oiml-cs/framework/documents/od-01/abstract-processes.prl +157 -0
  7. package/oiml-cs/framework/documents/od-01/requirements.prl +138 -0
  8. package/oiml-cs/framework/documents/od-02/abstract-processes.prl +119 -0
  9. package/oiml-cs/framework/documents/od-02/requirements.prl +75 -0
  10. package/oiml-cs/framework/documents/pd-01/abstract-processes.prl +209 -0
  11. package/oiml-cs/framework/documents/pd-01/requirements.prl +117 -0
  12. package/oiml-cs/framework/documents/pd-02/abstract-processes.prl +217 -0
  13. package/oiml-cs/framework/documents/pd-02/requirements.prl +126 -0
  14. package/oiml-cs/framework/documents/pd-03/abstract-processes.prl +348 -0
  15. package/oiml-cs/framework/documents/pd-03/annex-d032.prl +48 -0
  16. package/oiml-cs/framework/documents/pd-03/requirements.prl +162 -0
  17. package/oiml-cs/framework/documents/pd-04/abstract-processes.prl +295 -0
  18. package/oiml-cs/framework/documents/pd-04/annex-d030.prl +54 -0
  19. package/oiml-cs/framework/documents/pd-04/requirements.prl +140 -0
  20. package/oiml-cs/framework/documents/pd-06/abstract-processes.prl +152 -0
  21. package/oiml-cs/framework/documents/pd-06/requirements.prl +122 -0
  22. package/oiml-cs/framework/documents/pd-07/abstract-processes.prl +99 -0
  23. package/oiml-cs/framework/documents/pd-07/requirements.prl +84 -0
  24. package/oiml-cs/framework/documents/pd-08/abstract-processes.prl +102 -0
  25. package/oiml-cs/framework/documents/pd-08/requirements.prl +82 -0
  26. package/oiml-cs/framework/documents/pd-09/abstract-processes.prl +234 -0
  27. package/oiml-cs/framework/documents/pd-09/requirements.prl +82 -0
  28. package/oiml-cs/package.primmel +1 -1
  29. package/oiml-r129/package.primmel +1 -1
  30. package/oiml-r144/package.primmel +1 -1
  31. package/oiml-r60/package.primmel +1 -1
  32. package/oiml-r91/package.primmel +1 -1
  33. package/package.json +2 -2
@@ -0,0 +1,7 @@
1
+ # .primmel-allowlist.prl — GENERATED from primmel-allowlist.yaml (TODO.roadmap/17), do not edit.
2
+ allowlist_entry {
3
+ rule C121
4
+ match "*realized_by \"*\" is not a declared process (abstract-process-references-resolve)*"
5
+ reason "The realized_by edges resolve against the COMPOSED model (the rec packages' concrete evaluation/processes.prl processes) by design — C121's merged-model semantics. The corpus's standalone check mode (no resolvePackage locator) cannot see them, and composing trips the pre-existing CASCO C28 (the include-transport migration, primmel-ts task 13). Content-level resolution is proven by the consumer's cs-coverage gate. Dies when the gates check composed (the STALE discipline)."
6
+ audit_ref "TODO.roadmap/42"
7
+ }
@@ -0,0 +1,454 @@
1
+ # OIML-CS REFERENCE PACKAGE — ABSTRACT PROCESS MODEL (PD-05)
2
+ # -----------------------------------------------------------------------------
3
+ # The OIML-CS certification process as ABSTRACT processes (TODO.roadmap/15;
4
+ # abstract form per TODO.roadmap/02 — signature + invariants, no steps).
5
+ # The 7-step usage flow (docs/oiml-cs-cert-workflow.md) plus BIML
6
+ # registration: application → review → dispatch → testing → evaluation →
7
+ # decision → issue → biml_registration. TODO.roadmap/41 (full PD-05
8
+ # coverage) adds the off-sequence flows: revision (§8.1, pre-existing),
9
+ # re_application (§4.5.7), registration_fee (§6.2–6.3),
10
+ # incorrect_conclusions (§7.1), parallel_certificates (§8.2),
11
+ # recommendation_update (§8.3) and scheme_a_certification (clause 5).
12
+ # Processes with an empty realized_by have no concrete Core realization —
13
+ # the coverage gate records them (and their provisions) as named gaps.
14
+ #
15
+ # Each abstract process declares:
16
+ # executor machine | actor (task 02 executor typing)
17
+ # roles role ids from data/core/evaluation/roles.yaml bound to this step
18
+ # signature in/out — the workflow records the step consumes/produces,
19
+ # named by Core entity store (data/core/entities/*.yaml)
20
+ # evidence evidence requirements — the records the step must produce or
21
+ # attach for the scheme's provisions to be inspectable
22
+ # invariants OCL-style booleans over the signature that hold on completion
23
+ # — paths name REAL Core entity fields (snake_case, references
24
+ # are the _id-suffixed fields, enum literals uppercase per the
25
+ # entity's enum_values, e.g. Application.status = 'REJECTED')
26
+ # provisions the /req/cs/* provisions (specification/requirements/cs.prl)
27
+ # this step enforces
28
+ # realized_by the CONCRETE Core process ids (data/core/evaluation/
29
+ # processes.yaml) that realize this abstract process in the
30
+ # platform's workflow skeleton — the documentary half of the
31
+ # mapping; the FORMAL mapping is the .prm
32
+ # (data/core/evaluation/platform-to-oiml-cs.prm,
33
+ # TODO.roadmap/16) and the coverage gate keeps the two
34
+ # consistent (a pair on one side only is a validation
35
+ # error); empty where the platform has no concrete process
36
+ # yet (dispatch — a named gap in the coverage report).
37
+ # approved_by the Core approval ids (data/core/evaluation/
38
+ # approvals.yaml) whose sign-off closes this step — the
39
+ # documentary half of the approval⇒abstract mapping; the
40
+ # coverage gate keeps it consistent with the .prm's
41
+ # approval-source pairs exactly as for realized_by (a pair
42
+ # on one side only is a validation error); empty where the
43
+ # step has no sign-off gate.
44
+ # activity_kind
45
+ # the ISO/IEC 17000 activity-kind ids (the iso-iec-17000
46
+ # package's evaluation/activity-archetypes.prl — TODO.roadmap/39)
47
+ # classifying this step in the functional approach; multi-kind
48
+ # is deliberate (evaluation = selection + determination per
49
+ # ISO/IEC 17065 3.3). Classification, not inheritance — the
50
+ # consumer's linker rule R23 (activity-kind-resolves) checks
51
+ # every id against the register. Untagged: dispatch — an
52
+ # OIML-CS platform addition (test-request logistics across
53
+ # eligible laboratories) with no 17000 functional-approach
54
+ # counterpart.
55
+ #
56
+ # Provenance: OIML-CS PD-05 Edition 6 (2024-03-11) + Amendment 1.
57
+ #
58
+ # This file is the single source of truth; the consumer's
59
+ # data/oiml-cs/evaluation/abstract-processes.yaml is its GENERATED YAML twin
60
+ # (cd browser && npm run gen:data; schema data/schemas/abstract-processes.yaml).
61
+ # The realized_by edges name CONCRETE processes that live in the rec
62
+ # packages (evaluation/processes.prl) — unresolvable under the standalone
63
+ # package check, so they ride one glob allowlist entry (C121; the
64
+ # oiml-cs-dataspace composition-gap precedent — the entry dies when the
65
+ # gates check composed).
66
+ process application {
67
+ name "Application"
68
+ summary "The manufacturer (or its authorised representative) applies to an OIML Issuing Authority for a certificate covering a measuring instrument type (single model or model family)."
69
+ validate_provision {
70
+ /req/cs/application-contents
71
+ }
72
+ signature {
73
+ out { applications }
74
+ }
75
+ invariants {
76
+ "[application].issuing_authority_id is not null"
77
+ "[application].manufacturer_id is not null"
78
+ }
79
+ activity_kind { selection }
80
+ roles { applicant }
81
+ evidence {
82
+ application_record { description "The application record with the PD-05 §4.1.2 contents: applicant and manufacturer identity, no-concurrent-application statement, type description, operation description and documentation list, sample information, previous test reports where applicable." required true }
83
+ subject_definition { description "The instrument definition on the subject chain (model family / models / samples with classification, parameters, capabilities) the application references." required true }
84
+ }
85
+ realized_by { submit_application }
86
+ executor actor
87
+ source { doc "PD-05 §4.1" clause "" }
88
+ }
89
+
90
+ process review {
91
+ name "Application review"
92
+ summary "The Issuing Authority reviews the application for completeness, may request additional information or changes, and accepts (notifying samples, laboratories, fees and schedule) or rejects with reasons."
93
+ validate_provision {
94
+ /req/cs/application-completeness
95
+ /req/cs/rejection-reason
96
+ /req/cs/fee-estimate
97
+ /req/cs/sample-count
98
+ /req/cs/application-time-estimate
99
+ }
100
+ signature {
101
+ in { applications }
102
+ out { applications }
103
+ }
104
+ invariants {
105
+ "[application].ia_review_result is not null"
106
+ "[application].status = 'REJECTED' implies [application].rejection_reason is not null"
107
+ }
108
+ activity_kind { selection }
109
+ roles { issuing_authority }
110
+ evidence {
111
+ review_outcome { description "The review decision (accept / reject / request-changes) with reviewer, date and — on rejection — the stated reasons (PD-05 §4.2.2, §4.2.4)." required true }
112
+ acceptance_notice { description "On acceptance: the required sample count, the receiving Test Laboratory(ies), the fee estimate (PD-05 §4.2.8) and the approximate evaluation schedule (PD-05 §4.2.9)." }
113
+ }
114
+ realized_by { review_application accept_application reject_application }
115
+ approved_by { ia_accept_application }
116
+ executor actor
117
+ source { doc "PD-05 §4.2" clause "" }
118
+ }
119
+
120
+ process dispatch {
121
+ name "Test request dispatch"
122
+ summary "The Issuing Authority dispatches test report requests to one or more eligible Test Laboratories, each request carrying exactly the tests (forms) and samples that laboratory must perform."
123
+ validate_provision {
124
+ /req/cs/test-laboratory-eligibility
125
+ }
126
+ signature {
127
+ in { applications measuringInstrumentSamples }
128
+ out { testRequests testAssignments }
129
+ }
130
+ invariants {
131
+ "[test_request].assigned_laboratory_id is not null"
132
+ "[test_request].required_forms.count >= 1"
133
+ }
134
+ roles { issuing_authority }
135
+ evidence {
136
+ test_request { description "One test request per laboratory: request number, assigned laboratory, models, samples, required forms and test conditions." required true }
137
+ laboratory_eligibility { description "Evidence that every dispatched laboratory is listed in the OIML-CS Declaration of an OIML Issuing Authority for the assigned tests." required true }
138
+ }
139
+ executor actor
140
+ source { doc "PD-05 §4.3.1" clause "" }
141
+ }
142
+
143
+ process testing {
144
+ name "Testing and test reporting"
145
+ summary "The Test Laboratory receives the samples, performs the assigned tests and examinations per the Recommendation's procedures, signs the evidence, and compiles and authorises the OIML test report (PD-05 §4.4)."
146
+ validate_provision {
147
+ /req/cs/test-report-18-elements
148
+ /req/cs/test-report-authorization
149
+ /req/cs/multiple-test-laboratories
150
+ /req/cs/test-report-language
151
+ /req/cs/test-report-logo
152
+ }
153
+ signature {
154
+ in { testRequests testAssignments measuringInstrumentSamples }
155
+ out { testReports formInstances }
156
+ }
157
+ invariants {
158
+ "[test_report].laboratory_id is not null"
159
+ "[test_assignment].status = 'COMPLETED' implies [test_assignment].form_instance_id is not null"
160
+ }
161
+ activity_kind { testing }
162
+ roles { test_laboratory }
163
+ evidence {
164
+ form_evidence { description "The completed form instances for every required form, signed by the evaluator and supervisor (per-form sign-off)." required true }
165
+ test_report { description "The OIML test report covering the PD-05 §4.4.3 eighteen elements, dated, signed and uniquely identified by the responsible person (PD-05 §4.4.4)." required true }
166
+ custody_record { description "The sample custody chain from receipt through testing (sample status and custody events)." }
167
+ }
168
+ realized_by { conduct_tests compile_test_report }
169
+ approved_by { tl_authorize_test_report }
170
+ executor actor
171
+ source { doc "PD-05 §4.3" clause "" }
172
+ }
173
+
174
+ process evaluation {
175
+ name "Type evaluation"
176
+ summary "The Issuing Authority compiles the type evaluation report: every test report reviewed, a determination per evaluated provision, and a conformity conclusion for the type."
177
+ validate_provision {
178
+ /req/cs/evaluation-report-contents
179
+ /req/cs/evaluation-report-id
180
+ /req/cs/evaluation-report-logo
181
+ /req/cs/evaluation-report-language
182
+ /req/cs/sample-retention
183
+ }
184
+ signature {
185
+ in { applications testReports formInstances }
186
+ out { evaluationReports }
187
+ }
188
+ invariants {
189
+ "[evaluation_report].test_report_ids.count >= 1"
190
+ "[evaluation_report].test_report_determinations.count = [evaluation_report].test_report_ids.count"
191
+ }
192
+ activity_kind { selection determination }
193
+ roles { issuing_authority }
194
+ evidence {
195
+ evaluation_report { description "The type evaluation report with the PD-05 §4.5.1 contents: per-test- report determinations, the conclusion on the conformity of the type, and the responsible persons' signatures (PD-05 §4.5.2)." required true }
196
+ }
197
+ realized_by { compile_evaluation_report }
198
+ approved_by { ia_approve_evaluation_report }
199
+ executor actor
200
+ source { doc "PD-05 §4.5" clause "" }
201
+ }
202
+
203
+ process decision {
204
+ name "Conformity decision"
205
+ summary "The Issuing Authority decides on the conformity of the type: conforming types proceed to certificate issuance; on failure the applicant is informed in writing of the reasons."
206
+ validate_provision {
207
+ /req/cs/failure-notice
208
+ }
209
+ signature {
210
+ in { evaluationReports }
211
+ out { evaluationReports }
212
+ }
213
+ invariants {
214
+ "[evaluation_report].overall_decision is not null"
215
+ "[evaluation_report].overall_decision = 'REJECTED' implies [evaluation_report].review_notes is not null"
216
+ }
217
+ activity_kind { decision }
218
+ roles { issuing_authority }
219
+ evidence {
220
+ decision_record { description "The overall decision (conform / not conform) with conditions and review notes; on failure, the written reasons given to the applicant." required true }
221
+ }
222
+ realized_by { compile_evaluation_report }
223
+ executor actor
224
+ source { doc "PD-05 §4.5.6" clause "" }
225
+ }
226
+
227
+ process issue {
228
+ name "Certificate issuance"
229
+ summary "The Issuing Authority issues the OIML certificate for a conforming type: Annex-A format, responsible-person signature, OIML-CS logo, Annex-B certificate number, and delivery to the applicant with the evaluation and test reports."
230
+ validate_provision {
231
+ /req/cs/certificate-requirements
232
+ /req/cs/certificate-format
233
+ /req/cs/certificate-number
234
+ /req/cs/certificate-delivery
235
+ }
236
+ signature {
237
+ in { evaluationReports }
238
+ out { certificates }
239
+ }
240
+ invariants {
241
+ "[certificate].evaluation_report_id.overall_decision = 'APPROVED' or [certificate].evaluation_report_id.overall_decision = 'CONDITIONALLY_APPROVED'"
242
+ "[certificate].certificate_number is not null"
243
+ }
244
+ activity_kind { certification }
245
+ roles { issuing_authority }
246
+ evidence {
247
+ certificate { description "The issued certificate: type designation, applicant and manufacturer, certified characteristics, Annex-B number, date of issue and responsible-person signature." required true }
248
+ delivery_record { description "The hand-over of certificate, evaluation report and test reports to the applicant (owner), with the Issuing Authority's copies retained." required true }
249
+ }
250
+ realized_by { issue_certificate }
251
+ approved_by { ia_sign_certificate }
252
+ executor actor
253
+ source { doc "PD-05 §4.6" clause "" }
254
+ }
255
+
256
+ process biml_registration {
257
+ name "BIML registration"
258
+ summary "The Issuing Authority transmits the issued certificate to the BIML for registration; the registered certificate is visible in the public OIML-CS register."
259
+ validate_provision {
260
+ /req/cs/biml-registration
261
+ }
262
+ signature {
263
+ in { certificates }
264
+ out { certificates }
265
+ }
266
+ invariants {
267
+ "[certificate].biml_registration is not null"
268
+ }
269
+ activity_kind { attestation }
270
+ roles { issuing_authority biml }
271
+ evidence {
272
+ registration_record { description "The BIML registration record for the issued certificate (transmitted copy, registration date, public register entry)." required true }
273
+ }
274
+ realized_by { register_certificate }
275
+ approved_by { biml_register_certificate }
276
+ executor actor
277
+ source { doc "PD-05 clause 6" clause "" }
278
+ }
279
+
280
+ process revision {
281
+ name "Certificate revision"
282
+ summary "The Issuing Authority revises an issued and registered certificate — correcting an error, modifying the certified type, or transferring ownership — keeping the initial certificate number with a revision number and reason, and re-registers it with the BIML."
283
+ validate_provision {
284
+ /req/cs/certificate-revision
285
+ /req/cs/certificate-revision-mechanics
286
+ }
287
+ signature {
288
+ in { certificates }
289
+ out { certificates certificateAnnexes }
290
+ }
291
+ invariants {
292
+ "[certificate].revisions.count >= 1"
293
+ }
294
+ activity_kind { decision certification }
295
+ roles { issuing_authority }
296
+ evidence {
297
+ revision_record { description "The revision record: initial certificate number retained, revision number, the statement replacing the previous version(s) with the reason(s) for the revision, and the re-registration." required true }
298
+ }
299
+ realized_by { handle_revision }
300
+ approved_by { ia_approve_revision }
301
+ executor actor
302
+ source { doc "PD-05 §8.1" clause "" }
303
+ }
304
+
305
+ process re_application {
306
+ name "Re-application after failure"
307
+ summary "After a failed evaluation the applicant submits a new application with samples of a modified or newly identified type; new tests may be limited to the previously failed requirements only where the evidence supports that the modification did not affect the instrument's performance for all other requirements."
308
+ validate_provision {
309
+ /req/cs/re-application
310
+ }
311
+ signature {
312
+ in { applications evaluationReports }
313
+ out { applications }
314
+ }
315
+ invariants {
316
+ "[application].issuing_authority_id is not null"
317
+ }
318
+ activity_kind { selection }
319
+ roles { applicant issuing_authority }
320
+ evidence {
321
+ previous_failure_link { description "The link from the new application to the previous failed evaluation it follows (the failed type and its evaluation report)." required true }
322
+ retest_limitation_evidence { description "Where tests are limited to the previously failed requirements: the evidence supporting that the modification is not likely to have affected performance for all other requirements (PD-05 §4.5.7)." }
323
+ }
324
+ executor actor
325
+ source { doc "PD-05 §4.5.7" clause "" }
326
+ }
327
+
328
+ process registration_fee {
329
+ name "Registration fee and listing"
330
+ summary "The BIML invoices the registration fee (the certificate owner where national regulations bar the Issuing Authority's pass-through); the certificate is added to the list of registered certificates but withdrawn if payment is not received within 3 months of the invoice date (owner-invoiced certificates are listed on payment)."
331
+ validate_provision {
332
+ /req/cs/registration-fee
333
+ /req/cs/registration-withdrawal
334
+ }
335
+ signature {
336
+ in { certificates }
337
+ out { certificates }
338
+ }
339
+ invariants {
340
+ "[certificate].biml_registration is not null"
341
+ }
342
+ activity_kind { withdrawal }
343
+ roles { biml issuing_authority }
344
+ evidence {
345
+ fee_invoice { description "The BIML registration-fee invoice (to the Issuing Authority, or to the certificate owner per PD-05 §6.3) and its payment record." required true }
346
+ listing_withdrawal_record { description "The listing of the certificate in the registered list and, where payment is not received within 3 months of the invoice date, the withdrawal of the listing (PD-05 §6.2)." required true }
347
+ }
348
+ executor actor
349
+ source { doc "PD-05 §6.2–6.3" clause "" }
350
+ }
351
+
352
+ process incorrect_conclusions {
353
+ name "Incorrect-conclusions handling"
354
+ summary "On documented and substantiated evidence that the tests underlying an issued certificate were performed and/or interpreted incorrectly, the Executive Secretary consults the relevant Issuing Authority and the PD-01 clause 6 (complaints) procedure applies — up to deregistration of the certificate."
355
+ validate_provision {
356
+ /req/cs/incorrect-conclusions
357
+ }
358
+ signature {
359
+ in { certificates }
360
+ out { certificates }
361
+ }
362
+ invariants {
363
+ "[certificate].status = 'UNDER_INVESTIGATION' implies [certificate].investigation is not null"
364
+ }
365
+ activity_kind { complaint }
366
+ roles { biml issuing_authority }
367
+ evidence {
368
+ investigation_record { description "The documented and substantiated evidence, the Executive Secretary's consultation with the Issuing Authority, and the outcome under the PD-01 clause 6 procedure (resolve or deregister)." required true }
369
+ }
370
+ realized_by { handle_complaint deregister_certificate }
371
+ executor actor
372
+ source { doc "PD-05 §7.1" clause "" }
373
+ }
374
+
375
+ process parallel_certificates {
376
+ name "Parallel certificate issuance"
377
+ summary "A new applicant in possession of all the §4.1.2 technical documentation and the existing type evaluation report obtains a new certificate issued in parallel to the original; the Issuing Authority inquires into the validity of the application (e.g. the original applicant's permission) and the parallel certificate is registered per clause 6."
378
+ validate_provision {
379
+ /req/cs/parallel-certificates
380
+ }
381
+ signature {
382
+ in { certificates }
383
+ out { certificates }
384
+ }
385
+ invariants {
386
+ "[certificate].parallel_to is not null"
387
+ "[certificate].original_applicant is not null"
388
+ }
389
+ activity_kind { certification }
390
+ roles { applicant issuing_authority }
391
+ evidence {
392
+ documentation_possession { description "Evidence that the new applicant possesses all the §4.1.2 technical documentation and the existing OIML type evaluation report (PD-05 §8.2.1)." required true }
393
+ parallel_record { description "The parallel certificate itself: new sequential number, the original applicant and the source certificate recorded, and its clause-6 registration." required true }
394
+ }
395
+ realized_by { issue_certificate }
396
+ executor actor
397
+ source { doc "PD-05 §8.2" clause "" }
398
+ }
399
+
400
+ process recommendation_update {
401
+ name "Recommendation-revision certificate update"
402
+ summary "After a revision of the relevant OIML Recommendation, the certificate owner applies for an updated certificate on the basis of the revised Recommendation; the Issuing Authority determines whether the type complies and defines any additional tests and examinations, and on successful completion issues a new certificate and type evaluation report, registered per clause 6."
403
+ validate_provision {
404
+ /req/cs/recommendation-revision-updates
405
+ }
406
+ signature {
407
+ in { certificates }
408
+ out { evaluationReports certificates }
409
+ }
410
+ invariants {
411
+ "[certificate].edition_change is not null"
412
+ "[certificate].edition_change.new_evaluation_report_id is not null"
413
+ }
414
+ activity_kind { decision certification }
415
+ roles { applicant issuing_authority }
416
+ evidence {
417
+ update_determination { description "The Issuing Authority's determination under PD-05 §8.3.2: the previous and new editions, whether additional tests are required, and their definition (Certificate.edition_change)." required true }
418
+ updated_certificate { description "The new certificate and type evaluation report issued on successful completion of any additional tests, registered per clause 6 (PD-05 §8.3.3)." required true }
419
+ }
420
+ realized_by { handle_edition_change }
421
+ executor actor
422
+ source { doc "PD-05 §8.3" clause "" }
423
+ }
424
+
425
+ process scheme_a_certification {
426
+ name "Scheme A processing"
427
+ summary "Scheme A mirrors the clause-4 flow (its provisions apply via the clause-5 cross-references) with the Scheme-A deltas enforced as provisions: additional national requirements declared at application and tested/reported per the Utilizer/Associate Declarations (§5.1.4/§5.3.2/§5.4.2), Manufacturer Test Laboratory data flagged in the evaluation report (§5.3.1 b/§5.5.4/§5.5.5), and the validating ANR letter sent to the BIML with the certificate (§5.6.3)."
428
+ validate_provision {
429
+ /req/cs/scheme-a-national-requirements
430
+ /req/cs/scheme-a-mtl-test-data
431
+ /req/cs/scheme-a-anr-validation-letter
432
+ }
433
+ signature {
434
+ in { applications }
435
+ out { certificates }
436
+ }
437
+ invariants {
438
+ "[application].scheme = 'A' implies [certificate].scheme = 'A'"
439
+ }
440
+ activity_kind { selection determination certification }
441
+ roles { applicant issuing_authority }
442
+ evidence {
443
+ anr_declaration { description "The applicant's declaration of the additional national requirement tests applied for (PD-05 §5.1.4) — only where ANR tests are applied for." }
444
+ mtl_use_statement { description "The prominent statement of Manufacturer Test Laboratory use with the respective tests and the MTL designation at the head of the evaluation report (PD-05 §5.5.4) — only where MTL reports are utilised." }
445
+ anr_validation_letter { description "The Issuing Authority's letter validating conformity to the additional national requirements, sent to the BIML with the certificate (PD-05 §5.6.3) — only where ANR tests were conducted." }
446
+ }
447
+ realized_by { submit_application compile_test_report compile_evaluation_report issue_certificate register_certificate }
448
+ executor actor
449
+ source { doc "PD-05 clause 5" clause "" }
450
+ }
451
+
452
+ process_model certification_process {
453
+ sequence { application review dispatch testing evaluation decision issue biml_registration }
454
+ }
@@ -14,7 +14,7 @@
14
14
  # specification/requirements/cs.prl: the scheme-governance constraint
15
15
  # (who may certify what, and only after a signed Declaration) now has its
16
16
  # model home here — the gate references the abstract processes it blocks
17
- # (the consumer's evaluation/abstract-processes.yaml, still YAML-only).
17
+ # (evaluation/abstract-processes.prl the PD-05 certification process).
18
18
  #
19
19
  # Declaration semantics (PD-08, verified against the corpus audit
20
20
  # analysis/oiml-cs-corpus-audit-2026-07.md, corpus C):
@@ -0,0 +1,112 @@
1
+ # OIML-CS DOCUMENT MODULE CID-01 — ABSTRACT PROCESSES
2
+ # -----------------------------------------------------------------------------
3
+ # The CID-01 Edition 6 clarifications pinned as INVARIANT-CARRYING
4
+ # abstract processes (TODO.roadmap/43):
5
+ #
6
+ # test_report_issuance — the TL issues the OIML test report
7
+ # evaluation_report_issuance — the IA issues the OIML type evaluation
8
+ # report
9
+ # ia_scope_support — the IA's scope is TL-supported at all
10
+ # times and it issues only within it
11
+ #
12
+ # These processes have no workflow of their own (no sequence): each pins a
13
+ # cross-cutting IDENTITY rule the Edition-6 clarifications state, binding
14
+ # it as invariants over the scheme's issuance records — the rules
15
+ # themselves stay owned by the clarified documents (B 18 3.40 Note 3 /
16
+ # PD-03 5.1 / PD-05 4.3 & 5.3; MECE — see the requirements.prl header).
17
+ # The cross-corpus consistency proof (the PD-05 process model's testing
18
+ # step is TL-executed, its evaluation/issue steps IA-executed) lives in
19
+ # the consumer's cs-scheme-governance tests.
20
+ #
21
+ # TODO.roadmap/45 REALIZED the pins: realized_by binds the concrete Core
22
+ # processes whose execution makes each identity rule hold by construction
23
+ # (compile_test_report / compile_evaluation_report — the TL issues the
24
+ # test report, the IA the evaluation report; issue_certificate +
25
+ # record_participant_declaration — the signing gate checks the IA's
26
+ # Declaration scope at every issuance).
27
+ #
28
+ # This file is the single source of truth; the consumer's
29
+ # data/oiml-cs/documents/cid-01/abstract-processes.yaml is its GENERATED YAML
30
+ # twin (cd browser && npm run gen:data; schema data/schemas/abstract-processes.yaml).
31
+ # The realized_by edges name CONCRETE processes of the rec packages —
32
+ # unresolvable under the standalone package check, covered by the one glob
33
+ # allowlist entry (C121; dies when the gates check composed).
34
+ process test_report_issuance {
35
+ name "OIML test report issuance"
36
+ summary "An OIML test report is issued by an OIML Test Laboratory — regardless of whether the Recommendation carries the test report format as a separate Part (B 6-1:2023 ≥ four-part layout) or combined with the type evaluation report format (the old three-part layout). The scheme process model realizes this as the TL-executed testing step (evaluation/abstract-processes.yaml testing — roles [test_laboratory], out: [testReports])."
37
+ validate_provision {
38
+ /req/cs/cid-01/test-report-issued-by-tl
39
+ }
40
+ signature {
41
+ out { testReports }
42
+ }
43
+ invariants {
44
+ "[test_report].issued_by_kind = 'test_laboratory'"
45
+ "[test_report].recommendation_part_layout = 'combined' implies [test_report].issued_by_kind = 'test_laboratory'"
46
+ }
47
+ activity_kind { attestation }
48
+ participant_kinds { test_laboratory }
49
+ evidence {
50
+ issued_test_report { description "The issued OIML test report, identifying the issuing Test Laboratory." required true }
51
+ }
52
+ realized_by { compile_test_report }
53
+ executor actor
54
+ source { doc "CID-01, 3.1 (B 18, 4.2)" clause "" }
55
+ }
56
+
57
+ process evaluation_report_issuance {
58
+ name "OIML type evaluation report issuance"
59
+ summary "An OIML type evaluation report is issued by an OIML Issuing Authority — never by a Test Laboratory (B 18:2025 3.40 Note 3) — regardless of the Recommendation's part structure. The scheme process model realizes this as the IA-executed evaluation step (evaluation/abstract-processes.yaml evaluation — roles [issuing_authority], out: [evaluationReports])."
60
+ validate_provision {
61
+ /req/cs/cid-01/evaluation-report-issued-by-ia
62
+ }
63
+ signature {
64
+ in { testReports }
65
+ out { evaluationReports }
66
+ }
67
+ invariants {
68
+ "[evaluation_report].issued_by_kind = 'issuing_authority'"
69
+ "[evaluation_report].issued_by_kind = 'test_laboratory' implies false"
70
+ }
71
+ activity_kind { attestation }
72
+ participant_kinds { issuing_authority }
73
+ evidence {
74
+ issued_evaluation_report { description "The issued OIML type evaluation report, identifying the issuing OIML Issuing Authority." required true }
75
+ }
76
+ realized_by { compile_evaluation_report }
77
+ executor actor
78
+ source { doc "CID-01, 3.1 (B 18, 4.2)" clause "" }
79
+ }
80
+
81
+ process ia_scope_support {
82
+ name "IA scope support and issuance discipline"
83
+ summary "At all times the OIML Issuing Authority's scope is supported by an approved Test Laboratory listed in its Declaration for each category in the scope — an application needs an existing or accompanying TL application; an unsupported scope is amended. The IA issues certificates and evaluation reports only within that scope, using test data of a TL in its own Declaration or of a (non-MTL) TL in another IA's Declaration."
84
+ validate_provision {
85
+ /req/cs/cid-01/ia-scope-tl-supported
86
+ /req/cs/cid-01/ia-issuance-within-scope
87
+ }
88
+ signature {
89
+ in { declarations }
90
+ out { evaluationReports }
91
+ }
92
+ invariants {
93
+ "[issuing_authority].scope.count >= 1 implies [issuing_authority].declaration.tl_ids.count >= 1"
94
+ "[certificate].category is not null implies [declaration].supports_category([certificate].category) = true"
95
+ "[test_data].tl_declaration_ia <> [issuing_authority].id implies [test_data].tl_kind <> 'manufacturer'"
96
+ }
97
+ participant_kinds { issuing_authority test_laboratory }
98
+ evidence {
99
+ scope_support_record { description "The Declaration listing the approved Test Laboratory(ies) supporting each category of the Issuing Authority's scope." required true }
100
+ }
101
+ realized_by { issue_certificate record_participant_declaration }
102
+ executor actor
103
+ source { doc "CID-01, 3.3 (PD-03, 5.1; PD-05, 4.3/5.3)" clause "" }
104
+ }
105
+
106
+ document_module cid-01 {
107
+ document "OIML-CS CID-01"
108
+ title "Clarifications and Interpretations of OIML-CS Documents"
109
+ edition "6"
110
+ year 2024
111
+ namespace /req/cs/cid-01
112
+ }