@oimlsmart/primmel-packages 0.17.0 → 0.19.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.
- package/oiml-r129/evaluation/certificate-template.prl +16 -0
- package/oiml-r129/evaluation/evaluation-profiles.prl +19 -0
- package/oiml-r144/evaluation/certificate-template.prl +22 -0
- package/oiml-r144/evaluation/evaluation-profiles.prl +27 -0
- package/oiml-r60/.primmel-allowlist.prl +6 -0
- package/oiml-r60/evaluation/certificate-template.prl +40 -0
- package/oiml-r60/evaluation/evaluation-profiles.prl +34 -0
- package/oiml-r91/evaluation/certificate-template.prl +17 -0
- package/oiml-twin-cert/evaluation/certificate-template.prl +111 -0
- package/package.json +1 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# OIML R 129 — Certificate Template
|
|
2
|
+
# Number format and dimension labels for OIML certificates.
|
|
3
|
+
#
|
|
4
|
+
# TODO.model-content/03: the certificate's characteristic list is NO LONGER
|
|
5
|
+
# hand-maintained here — it is generated from the verified promise set in
|
|
6
|
+
# model/promises.prl (each promise's `certificate` print projection;
|
|
7
|
+
# browser/src/services/certificate.service.ts certificateCharacteristics()).
|
|
8
|
+
#
|
|
9
|
+
# Number format per the OIML-CS certificate convention, e.g.
|
|
10
|
+
# R129/2020-A-NL1-24.01 (scheme A, issuing authority NL1, year 2024, seq 01).
|
|
11
|
+
certificate_template certificate {
|
|
12
|
+
number_format "{shortName}/{edition}-{scheme}-{authority}-{year2}.{seq}"
|
|
13
|
+
dimension_labels {
|
|
14
|
+
pattern "{measurement_principle}"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# OIML R 129 — Evaluation Profiles
|
|
2
|
+
# Dimension combinations that select applicable requirements/tests/
|
|
3
|
+
# calculations. One top-level evaluation_profile construct per preset
|
|
4
|
+
# (MECE: each bounded context in its own file).
|
|
5
|
+
evaluation_profile optical-automatic-ac {
|
|
6
|
+
dimensions { measurement_principle optical instrument_category automatic power_supply ac-mains object_capability rectangular-only }
|
|
7
|
+
description "Optical conveyor instrument for rectangular parcels, mains-powered — full program incl. voltage tests, ambient light and speed of movement"
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
evaluation_profile acoustic-semi-automatic-battery {
|
|
11
|
+
dimensions { measurement_principle acoustic instrument_category semi-automatic power_supply battery object_capability irregular-allowed }
|
|
12
|
+
description "Handheld acoustic instrument for irregular objects, battery-powered — low-voltage and acoustics tests; no mains voltage tests"
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
evaluation_profile mechanical-semi-automatic-dc {
|
|
16
|
+
dimensions { measurement_principle mechanical instrument_category semi-automatic power_supply dc object_capability rectangular-only }
|
|
17
|
+
description "Mechanical contact instrument on DC supply — base program with ESD and RF immunity only"
|
|
18
|
+
}
|
|
19
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# OIML R 144 — Certificate Template
|
|
2
|
+
# Number format and dimension labels for OIML certificates.
|
|
3
|
+
#
|
|
4
|
+
# TODO.model-content/03: the certificate's characteristic list is NO LONGER
|
|
5
|
+
# hand-maintained here — it is generated from the verified promise set in
|
|
6
|
+
# model/promises.prl (each promise's `certificate` print projection;
|
|
7
|
+
# browser/src/services/certificate.service.ts certificateCharacteristics()).
|
|
8
|
+
#
|
|
9
|
+
# Number format per the OIML-CS certificate convention, e.g.
|
|
10
|
+
# R144/2013-A-EX1-26.01 (scheme A, issuing authority EX1, year 2026, seq 01).
|
|
11
|
+
#
|
|
12
|
+
# dimension_labels.separator: the join for SET-valued dimensions
|
|
13
|
+
# (cardinality: set) — per-value labels join with it (e.g.
|
|
14
|
+
# CO+NO-combined). Overridable per placeholder via the
|
|
15
|
+
# {dimension:separator} pattern syntax.
|
|
16
|
+
certificate_template certificate {
|
|
17
|
+
number_format "{shortName}/{edition}-{scheme}-{authority}-{year2}.{seq}"
|
|
18
|
+
dimension_labels {
|
|
19
|
+
pattern "{measurand_components}-{measuring_principle}"
|
|
20
|
+
separator "+"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# OIML R 144 — Evaluation Profiles
|
|
2
|
+
# Dimension combinations that select applicable requirements/tests/
|
|
3
|
+
# calculations. One top-level evaluation_profile construct per preset
|
|
4
|
+
# (MECE: each bounded context in its own file). The
|
|
5
|
+
# measurand_components presets are SET-CARDINALITY — the value list
|
|
6
|
+
# form (`measurand_components { co no }`, kernel 1.17.2) selects
|
|
7
|
+
# several channels at once (the per-channel axis, Instrument.perChannel).
|
|
8
|
+
evaluation_profile extractive-co-nox-ndir-cld {
|
|
9
|
+
dimensions { measurand_components { co no } measuring_principle combined sampling_approach extractive adjustment_means automatic power_supply ac-mains }
|
|
10
|
+
description "Extractive CEMS: NDIR for CO + chemiluminescence for NOx, automatic adjustment, mains-powered"
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
evaluation_profile extractive-co-only-ec {
|
|
14
|
+
dimensions { measurand_components { co } measuring_principle electrochemistry sampling_approach extractive adjustment_means semi-automatic power_supply ac-and-battery }
|
|
15
|
+
description "Extractive CO-only electrochemical system with battery backup"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
evaluation_profile in-situ-nox-uv {
|
|
19
|
+
dimensions { measurand_components { no no2 } measuring_principle uv sampling_approach in-situ adjustment_means automatic power_supply ac-mains }
|
|
20
|
+
description "In-situ NOx UV-absorption system, automatic adjustment"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
evaluation_profile extractive-co-ir-correlation {
|
|
24
|
+
dimensions { measurand_components { co } measuring_principle ir-correlation sampling_approach extractive adjustment_means manual power_supply ac-mains }
|
|
25
|
+
description "Extractive CO-only gas-filter-correlation IR system, manual adjustment (no drift test)"
|
|
26
|
+
}
|
|
27
|
+
|
|
@@ -48,3 +48,9 @@ allowlist_entry {
|
|
|
48
48
|
reason "`f` is the runtime-bound form input (conversion_factor_f) the evaluation context binds at run time — the v_min expression's free identifier is deliberate (the register header documents it); never drift."
|
|
49
49
|
audit_ref "TODO.roadmap/40"
|
|
50
50
|
}
|
|
51
|
+
allowlist_entry {
|
|
52
|
+
rule C136
|
|
53
|
+
match "certificate_template certificate: dimension_labels placeholder \"{n_lc_thousands}\" is not a declared classification dimension (certificate-template-references)"
|
|
54
|
+
reason "Renderer-synthetic label placeholder: generateClassificationLabel computes n_lc_thousands = floor(n_lc / 1000) into the pattern context (the thousands-scale certificate designation, e.g. \"C3\" over n_lc = 3000); no classification dimension exists to declare — the value derives from the n_lc parameter at render time, never drift."
|
|
55
|
+
audit_ref "TODO.roadmap/40"
|
|
56
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# OIML R 60 — Certificate Template
|
|
2
|
+
# Number format and dimension labels for OIML certificates.
|
|
3
|
+
#
|
|
4
|
+
# TODO.roadmap/08: the certificate's characteristic list is NO LONGER
|
|
5
|
+
# hand-maintained here — it is generated from the verified promise set in
|
|
6
|
+
# model/promises.prl (each promise's `certificate` print projection;
|
|
7
|
+
# browser/src/services/certificate.service.ts certificateCharacteristics()).
|
|
8
|
+
# The byte-equal render over the seeded flows is proven by
|
|
9
|
+
# src/__tests__/certificate-promises-snapshot.test.ts against
|
|
10
|
+
# analysis/certificate-render-baseline-oiml-r60.json.
|
|
11
|
+
#
|
|
12
|
+
# R 60-4 Annex B (normative): the certificate shall be supplemented with
|
|
13
|
+
# Model designation, E_max, accuracy class, n_LC, v_min, p_LC; Table B.1
|
|
14
|
+
# technical data may be provided on additional pages.
|
|
15
|
+
#
|
|
16
|
+
# TODO.adoption/11 — the anr_section labels the certificate's Additional
|
|
17
|
+
# National Requirements section: the per-country coverage recorded at
|
|
18
|
+
# issuance (Certificate.anr_coverage, snapshotted from the evaluation
|
|
19
|
+
# report's anr_compliance). The section ALWAYS renders when the
|
|
20
|
+
# application targeted ANR countries: covered countries name their
|
|
21
|
+
# evidence, bypassed ones carry the recorded reason — never a silent gap
|
|
22
|
+
# (PD-05 §5.4.2/§5.6.3).
|
|
23
|
+
#
|
|
24
|
+
# The dimension_labels pattern's {n_lc_thousands} placeholder is
|
|
25
|
+
# RENDERER-SYNTHETIC (floor(n_lc / 1000), certificate.service.ts
|
|
26
|
+
# generateClassificationLabel) — not a declared classification dimension;
|
|
27
|
+
# C136 fires on it, a KNOWN allowlist entry (never drift).
|
|
28
|
+
certificate_template certificate {
|
|
29
|
+
number_format "{shortName}/{edition}-{scheme}-{authority}-{year2}.{seq}"
|
|
30
|
+
dimension_labels {
|
|
31
|
+
pattern "{accuracy_class}{n_lc_thousands}"
|
|
32
|
+
}
|
|
33
|
+
anr_section {
|
|
34
|
+
title "Additional National Requirements"
|
|
35
|
+
covered_label "Evaluated"
|
|
36
|
+
not_evaluated_label "Not evaluated in this evaluation"
|
|
37
|
+
pending_label "Pending evaluation"
|
|
38
|
+
none_targeted_note "No additional national requirements were targeted by the application."
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# OIML R 60 — Evaluation Profiles
|
|
2
|
+
# Dimension combinations that select applicable requirements/tests/
|
|
3
|
+
# calculations. One top-level evaluation_profile construct per preset
|
|
4
|
+
# (MECE: each bounded context in its own file).
|
|
5
|
+
evaluation_profile class-a-digital-nh {
|
|
6
|
+
dimensions { accuracy_class A technology digital humidity_class NH }
|
|
7
|
+
description "Class A digital, no humidity test"
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
evaluation_profile class-a-digital-sh {
|
|
11
|
+
dimensions { accuracy_class A technology digital humidity_class SH }
|
|
12
|
+
description "Class A digital, static humidity"
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
evaluation_profile class-a-analogue-passive-nh {
|
|
16
|
+
dimensions { accuracy_class A technology analogue-passive humidity_class NH }
|
|
17
|
+
description "Class A analogue passive, no humidity"
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
evaluation_profile class-b-digital-ch {
|
|
21
|
+
dimensions { accuracy_class B technology digital humidity_class CH }
|
|
22
|
+
description "Class B digital with cyclic humidity"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
evaluation_profile class-c-analogue-passive-ch {
|
|
26
|
+
dimensions { accuracy_class C technology analogue-passive humidity_class CH }
|
|
27
|
+
description "Class C analogue passive with cyclic humidity"
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
evaluation_profile class-d-digital-ch {
|
|
31
|
+
dimensions { accuracy_class D technology digital humidity_class CH }
|
|
32
|
+
description "Class D digital with cyclic humidity"
|
|
33
|
+
}
|
|
34
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# OIML R 91 — Certificate Template
|
|
2
|
+
# Number format and dimension labels for OIML certificates.
|
|
3
|
+
#
|
|
4
|
+
# TODO.model-content/03: the certificate's characteristic list is NO LONGER
|
|
5
|
+
# hand-maintained here — it is generated from the verified promise set in
|
|
6
|
+
# model/promises.prl (each promise's `certificate` print projection;
|
|
7
|
+
# browser/src/services/certificate.service.ts certificateCharacteristics()).
|
|
8
|
+
#
|
|
9
|
+
# R 91-1, 6.15.1: the metrological class (A or B) for moving measurements
|
|
10
|
+
# is a MANDATORY certificate indication — the metrological_class promise
|
|
11
|
+
# carries obligation: mandatory.
|
|
12
|
+
certificate_template certificate {
|
|
13
|
+
number_format "{shortName}/{edition}-{scheme}-{authority}-{year2}.{seq}"
|
|
14
|
+
dimension_labels {
|
|
15
|
+
pattern "{working_principle}-{metrological_class}"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# oiml-twin-cert — TWIN CERTIFICATE TEMPLATE (TODO.v2/01 TCD-3;
|
|
2
|
+
# analysis/twin-certification-design.md Q3 "the certificate's claim").
|
|
3
|
+
#
|
|
4
|
+
# The twin certificate claims a SCOPED, CONDITIONAL relation (Q3): for
|
|
5
|
+
# instrument <model/serial>, the twin served at endpoint <endpoint-id> via
|
|
6
|
+
# operations <op-list> reflects the physical state of registers
|
|
7
|
+
# <aspect-list> within tolerance <δ per register> and freshness
|
|
8
|
+
# <fresh_within per register>, verified by probe schedule <schedule-id> on
|
|
9
|
+
# <date> (report <id>), with served-timestamp provenance declared
|
|
10
|
+
# (timestamp_fields). Validity is CONDITIONAL: continuous surveillance per
|
|
11
|
+
# monitor <monitor-id>; a sustained fail suspends; an unresolved fail
|
|
12
|
+
# withdraws.
|
|
13
|
+
#
|
|
14
|
+
# The characteristic rows are the claim's print projection. Every row
|
|
15
|
+
# resolves BY NAME from the certification decision's claim context
|
|
16
|
+
# (browser/src/services/twin-certificate.service.ts —
|
|
17
|
+
# twinCertificateCharacteristics): the twin's endpoint identity and the
|
|
18
|
+
# certified registers ride the decision evidence, never an entity-graph
|
|
19
|
+
# attribute (the program composes into nothing — there is no rec entity
|
|
20
|
+
# graph to bind, hence no attribute/dimension bindings on the rows).
|
|
21
|
+
# obligation: mandatory rows must carry a value on the issued certificate;
|
|
22
|
+
# the attestation-limitation row prints only when the probe evidence rode
|
|
23
|
+
# the attestation channel (controller decision 3: never silently upgraded).
|
|
24
|
+
#
|
|
25
|
+
# The certificate number format mirrors the Annex B shape with the
|
|
26
|
+
# program's own designators: TW-1 (the governing document,
|
|
27
|
+
# urn:oiml:pub:cs:twin-1:2027) / edition - T5 (the ISO/IEC 17067 scheme
|
|
28
|
+
# type the program self-classifies — type 5, surveillance-constitutive) -
|
|
29
|
+
# the scheme operator code - year.sequence.
|
|
30
|
+
#
|
|
31
|
+
# Row labels are the default-spelling (eng-Latn) content sets inline —
|
|
32
|
+
# the YAML twin re-wraps them as the Prose array the renderer resolves
|
|
33
|
+
# with src/data/prose.ts.
|
|
34
|
+
certificate_template certificate {
|
|
35
|
+
number_format "TW-1/{edition}-T5-{authority}-{year2}.{seq}"
|
|
36
|
+
characteristic instrument_model {
|
|
37
|
+
type string
|
|
38
|
+
label "Instrument model (the underlying certified type)"
|
|
39
|
+
obligation mandatory
|
|
40
|
+
}
|
|
41
|
+
characteristic instrument_serial {
|
|
42
|
+
type string
|
|
43
|
+
label "Instrument serial number (the certified unit — per-UNIT certification, type 5)"
|
|
44
|
+
obligation mandatory
|
|
45
|
+
}
|
|
46
|
+
characteristic twin_endpoint {
|
|
47
|
+
type string
|
|
48
|
+
label "Twin endpoint identifier (bound to the certified unit's serial)"
|
|
49
|
+
obligation mandatory
|
|
50
|
+
}
|
|
51
|
+
characteristic served_operations {
|
|
52
|
+
type string
|
|
53
|
+
label "Served operations certified"
|
|
54
|
+
obligation mandatory
|
|
55
|
+
}
|
|
56
|
+
characteristic fidelity_registers {
|
|
57
|
+
type string
|
|
58
|
+
label "Fidelity registers certified (served aspects)"
|
|
59
|
+
obligation mandatory
|
|
60
|
+
}
|
|
61
|
+
characteristic twin_tolerance_indication {
|
|
62
|
+
type string
|
|
63
|
+
label "Twin tolerance δ_indication (|served − reference| ≤ δ at every probe point)"
|
|
64
|
+
obligation mandatory
|
|
65
|
+
}
|
|
66
|
+
characteristic fresh_within_indication {
|
|
67
|
+
type string
|
|
68
|
+
label "Freshness window — indication register (fresh_within)"
|
|
69
|
+
obligation mandatory
|
|
70
|
+
}
|
|
71
|
+
characteristic fresh_within_op_state {
|
|
72
|
+
type string
|
|
73
|
+
label "Freshness window — state register (fresh_within)"
|
|
74
|
+
obligation mandatory
|
|
75
|
+
}
|
|
76
|
+
characteristic probe_schedule {
|
|
77
|
+
type string
|
|
78
|
+
label "Probe schedule (the certification's executable — range, envelope, transitions)"
|
|
79
|
+
obligation mandatory
|
|
80
|
+
}
|
|
81
|
+
characteristic verified_on {
|
|
82
|
+
type string
|
|
83
|
+
label "Verification date (the probe campaign's completion)"
|
|
84
|
+
obligation mandatory
|
|
85
|
+
}
|
|
86
|
+
characteristic fidelity_report {
|
|
87
|
+
type string
|
|
88
|
+
label "Twin-fidelity test report (the D2 evidence)"
|
|
89
|
+
obligation mandatory
|
|
90
|
+
}
|
|
91
|
+
characteristic surveillance_monitor {
|
|
92
|
+
type string
|
|
93
|
+
label "Surveillance monitor (the type-5 continuous half — validity is CONDITIONAL on it)"
|
|
94
|
+
obligation mandatory
|
|
95
|
+
}
|
|
96
|
+
characteristic type_certificate {
|
|
97
|
+
type string
|
|
98
|
+
label "Type certificate of the underlying instrument (the hard admission prerequisite, cited as provenance)"
|
|
99
|
+
obligation mandatory
|
|
100
|
+
}
|
|
101
|
+
characteristic probe_sources {
|
|
102
|
+
type string
|
|
103
|
+
label "Probe channels used (reference_instrument preferred; sim_ground_truth acceptance-only)"
|
|
104
|
+
obligation mandatory
|
|
105
|
+
}
|
|
106
|
+
characteristic traceability_limitation {
|
|
107
|
+
type string
|
|
108
|
+
label "Declared traceability limitation (observer-attestation evidence proves twin ≡ display, not twin ≡ mass)"
|
|
109
|
+
obligation optional
|
|
110
|
+
}
|
|
111
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oimlsmart/primmel-packages",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "The OIML SMART platform's authoritative model content: every Recommendation, the OIML-CS scheme, the CASCO foundations, the shared modules, and the product/program reference packages as Primmel (.prl) packages — the single source of truth the platform's data trees regenerate from. Consumed by the smart monorepo (oimlsmart/smart) at a pinned version (TODO.repos/02).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|