@oimlsmart/primmel-packages 0.13.0 → 0.15.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/model/promises.prl +97 -0
- package/oiml-r144/model/identity.prl +68 -0
- package/oiml-r144/model/promises.prl +118 -0
- package/oiml-r60/model/aspects.prl +91 -0
- package/oiml-r60/model/identity.prl +57 -0
- package/oiml-r60/model/promises.prl +220 -0
- package/oiml-r91/model/identity.prl +23 -0
- package/oiml-r91/model/promises.prl +150 -0
- package/package.json +2 -2
- package/oiml-r129/payload/promises.yaml +0 -102
- package/oiml-r144/payload/promises.yaml +0 -118
- package/oiml-r60/payload/promises.yaml +0 -224
- package/oiml-r91/payload/promises.yaml +0 -142
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# OIML R 91 — the manufacturer promise register (TODO.model-content/03):
|
|
2
|
+
# claims on characteristics and behavior that evaluation verifies and the
|
|
3
|
+
# certificate prints as promises-as-verified (the same doctrine as R 60's
|
|
4
|
+
# set — 02-subjects.md §2.3; 15-model-supply-chain.md §15.2). The
|
|
5
|
+
# certificate's characteristic list GENERATES from this set
|
|
6
|
+
# (browser/src/services/certificate.service.ts certificateCharacteristics()).
|
|
7
|
+
#
|
|
8
|
+
# PROVENANCE (the content-provenance rule): every promise cites the clause
|
|
9
|
+
# its claimed characteristic is defined at (R 91-1:2025 — the clause the
|
|
10
|
+
# model's own attribute/dimension declaration carries). R 91-1, 6.15.1
|
|
11
|
+
# makes the metrological class a MANDATORY certificate indication ("The
|
|
12
|
+
# OIML certificate shall indicate the class of the instrument"); the
|
|
13
|
+
# remaining rows print when available (obligation: optional). Composite
|
|
14
|
+
# interval rows bind their boundary attribute pair (`attributes`) and
|
|
15
|
+
# target the quantity/behavior the interval bounds (R 60's
|
|
16
|
+
# temperature_range pattern).
|
|
17
|
+
promise_set SpeedMeter {
|
|
18
|
+
promise metrological_class {
|
|
19
|
+
target metrological_class
|
|
20
|
+
statement "The type holds its declared metrological class (A or B) for moving measurements."
|
|
21
|
+
source { doc "urn:oiml:pub:r:91-1:2025" clause "6.15.1" }
|
|
22
|
+
certificate {
|
|
23
|
+
dimension metrological_class
|
|
24
|
+
type string
|
|
25
|
+
label "Metrological class for moving measurements (R 91-1, 6.15.1)"
|
|
26
|
+
obligation mandatory
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
promise mode_of_use {
|
|
30
|
+
target mode_of_use
|
|
31
|
+
statement "The type operates in its declared mode of use (stationary / moving)."
|
|
32
|
+
source { doc "urn:oiml:pub:r:91-1:2025" clause "5.1" }
|
|
33
|
+
certificate {
|
|
34
|
+
dimension mode_of_use
|
|
35
|
+
type string
|
|
36
|
+
label "Mode of use (stationary / moving)"
|
|
37
|
+
obligation optional
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
promise working_principle {
|
|
41
|
+
target working_principle
|
|
42
|
+
statement "The type measures speed by its declared working principle."
|
|
43
|
+
source { doc "urn:oiml:pub:r:91-1:2025" clause "5.3" }
|
|
44
|
+
certificate {
|
|
45
|
+
dimension working_principle
|
|
46
|
+
type string
|
|
47
|
+
label "Working principle"
|
|
48
|
+
obligation optional
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
promise installation_principle {
|
|
52
|
+
target installation_principle
|
|
53
|
+
statement "The type installs by its declared principle (mobile / fixed / portable)."
|
|
54
|
+
source { doc "urn:oiml:pub:r:91-1:2025" clause "5.2" }
|
|
55
|
+
certificate {
|
|
56
|
+
dimension installation_principle
|
|
57
|
+
type string
|
|
58
|
+
label "Installation (mobile / fixed / portable)"
|
|
59
|
+
obligation optional
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
promise triggering {
|
|
63
|
+
target triggering
|
|
64
|
+
statement "The type triggers its measurements as declared (manual / automatic)."
|
|
65
|
+
source { doc "urn:oiml:pub:r:91-1:2025" clause "5.4" }
|
|
66
|
+
certificate {
|
|
67
|
+
dimension triggering
|
|
68
|
+
type string
|
|
69
|
+
label "Triggering (manual / automatic)"
|
|
70
|
+
obligation optional
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
promise cosine_compensation {
|
|
74
|
+
target cosine_compensation
|
|
75
|
+
statement "The type compensates the cosine error for its declared road orientation (along- / across-the-road)."
|
|
76
|
+
source { doc "urn:oiml:pub:r:91-1:2025" clause "5.5" }
|
|
77
|
+
certificate {
|
|
78
|
+
dimension cosine_compensation
|
|
79
|
+
type string
|
|
80
|
+
label "Road orientation (along- / across-the-road)"
|
|
81
|
+
obligation optional
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
promise speed_interval {
|
|
85
|
+
target v
|
|
86
|
+
statement "The speed measuring interval the type is certified over (km/h)."
|
|
87
|
+
source { doc "urn:oiml:pub:r:91-1:2025" clause "6.1" }
|
|
88
|
+
certificate {
|
|
89
|
+
attributes { speed_interval_min speed_interval_max }
|
|
90
|
+
type string
|
|
91
|
+
label "Speed measuring interval (km/h)"
|
|
92
|
+
obligation optional
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
promise distance_interval {
|
|
96
|
+
target d
|
|
97
|
+
statement "The distance measuring interval the type is certified over (m)."
|
|
98
|
+
source { doc "urn:oiml:pub:r:91-1:2025" clause "6.17" }
|
|
99
|
+
certificate {
|
|
100
|
+
attributes { distance_interval_min distance_interval_max }
|
|
101
|
+
type string
|
|
102
|
+
label "Distance measuring interval (m)"
|
|
103
|
+
obligation optional
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
promise angle_interval {
|
|
107
|
+
target alpha
|
|
108
|
+
statement "The measurement angle interval the type is certified over (°)."
|
|
109
|
+
source { doc "urn:oiml:pub:r:91-1:2025" clause "6.17" }
|
|
110
|
+
certificate {
|
|
111
|
+
attributes { angle_interval_min angle_interval_max }
|
|
112
|
+
type string
|
|
113
|
+
label "Angle interval (°)"
|
|
114
|
+
obligation optional
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
promise operating_temp_range {
|
|
118
|
+
target temperature-effect
|
|
119
|
+
statement "The type holds its metrological performance across the rated operating temperature range (T_min…T_max)."
|
|
120
|
+
source { doc "urn:oiml:pub:r:91-1:2025" clause "6.16" }
|
|
121
|
+
certificate {
|
|
122
|
+
attributes { operating_temp_min operating_temp_max }
|
|
123
|
+
type string
|
|
124
|
+
label "Rated temperature range (°C)"
|
|
125
|
+
obligation optional
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
promise supply_voltage {
|
|
129
|
+
target supply_voltage_dc
|
|
130
|
+
statement "The DC supply voltage rating the type operates at."
|
|
131
|
+
source { doc "urn:oiml:pub:r:91-1:2025" clause "6.16" }
|
|
132
|
+
certificate {
|
|
133
|
+
attribute supply_voltage_dc
|
|
134
|
+
type string
|
|
135
|
+
label "Supply voltage (V)"
|
|
136
|
+
obligation optional
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
promise software_version {
|
|
140
|
+
target software_version
|
|
141
|
+
statement "The certificate identifies the type's legally relevant software by its declared version."
|
|
142
|
+
source { doc "urn:oiml:pub:r:91-1:2025" clause "7.10.1" }
|
|
143
|
+
certificate {
|
|
144
|
+
attribute software_version
|
|
145
|
+
type string
|
|
146
|
+
label "Legally relevant software identification (R 91-1, 7.10.1; R 91-4 identification block)"
|
|
147
|
+
obligation optional
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oimlsmart/primmel-packages",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.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": {
|
|
@@ -12,6 +12,6 @@
|
|
|
12
12
|
},
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@primmel/primmel": "^1.17.
|
|
15
|
+
"@primmel/primmel": "^1.17.1"
|
|
16
16
|
}
|
|
17
17
|
}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
# OIML R 129 — MODEL LAYER: PROMISES (TODO.model-content/03)
|
|
2
|
-
# -----------------------------------------------------------------------------
|
|
3
|
-
# First-class manufacturer PROMISES for multi-dimensional measuring
|
|
4
|
-
# instruments: claims on characteristics and behavior that evaluation
|
|
5
|
-
# verifies and the certificate prints as promises-as-verified (the same
|
|
6
|
-
# doctrine as R 60's set — primmel-oiml-smart/docs/primmel/02-subjects.md
|
|
7
|
-
# §2.3; 15-model-supply-chain.md §15.2). R 129 had NO promise set before
|
|
8
|
-
# this wave — this register is authored from scratch, its certificate print
|
|
9
|
-
# rows carrying the surface the hand-maintained characteristics_template of
|
|
10
|
-
# evaluation/certificate-template.yaml formerly restated (which keeps only
|
|
11
|
-
# number_format and dimension_labels). The certificate's characteristic
|
|
12
|
-
# list is GENERATED from this promise set (browser/src/services/
|
|
13
|
-
# certificate.service.ts certificateCharacteristics()).
|
|
14
|
-
#
|
|
15
|
-
# PACKAGE HOME: this file is the package payload `payload/promises.yaml` —
|
|
16
|
-
# the promise set is AUTHORED here, in the package, and regenerate-data
|
|
17
|
-
# emits data/r129/model/promises.yaml VERBATIM (the generated fileHeader +
|
|
18
|
-
# these raw bytes; the documented codec exclusion, same class as
|
|
19
|
-
# payload/sample-data.yaml). The kernel's SubjectPromise carries no
|
|
20
|
-
# certificate print-projection field yet — the projection's first-class PRL
|
|
21
|
-
# home is the recorded primmel-ts kernel-minor follow-up; when it ships,
|
|
22
|
-
# this payload migrates to `promises.prl` and the promise CONTENT rides
|
|
23
|
-
# over unchanged.
|
|
24
|
-
#
|
|
25
|
-
# PROVENANCE (the content-provenance rule): every promise cites the clause
|
|
26
|
-
# its claimed characteristic is defined at (the clause the model's own
|
|
27
|
-
# attribute/dimension declaration carries): the classification at R 129-2,
|
|
28
|
-
# Annex A (measurement principle) and R 129-1, 2.1 (instrument category),
|
|
29
|
-
# the dimension/scale-interval quantities at R 129-1, 2.2.5 / 2.2.6 /
|
|
30
|
-
# 2.2.9, the rated temperature conditions at R 129-1, 4.2.1, and the
|
|
31
|
-
# measuring-speed bounds at R 129-1, 2.1.10 / 2.1.11. No R 129 clause makes
|
|
32
|
-
# a certificate indication mandatory, so every row prints when available
|
|
33
|
-
# (obligation: optional). Composite range rows bind their boundary
|
|
34
|
-
# attribute pair (`certificate.attributes`) and target the response
|
|
35
|
-
# behavior the range conditions (R 60's temperature_range pattern — the
|
|
36
|
-
# composite row targets the concept, never one boundary).
|
|
37
|
-
#
|
|
38
|
-
# Schema: data/schemas/model.yaml ($defs/promise).
|
|
39
|
-
---
|
|
40
|
-
promises:
|
|
41
|
-
|
|
42
|
-
# ── Classification (R 129-2, Annex A / R 129-1, 2.1) ─────────────────
|
|
43
|
-
|
|
44
|
-
- id: measurement_principle
|
|
45
|
-
target: measurement_principle # classification dimension (model/instrument.yaml)
|
|
46
|
-
statement:
|
|
47
|
-
- spelling: eng-Latn
|
|
48
|
-
value: "The measurement principle the instrument measures dimensions by."
|
|
49
|
-
source: { doc: urn:oiml:pub:r:129-2:2020, clause: "A" }
|
|
50
|
-
certificate: { dimension: measurement_principle, type: string, label: [{spelling: eng-Latn, value: "Measurement principle"}], obligation: optional }
|
|
51
|
-
|
|
52
|
-
- id: instrument_category
|
|
53
|
-
target: instrument_category
|
|
54
|
-
statement:
|
|
55
|
-
- spelling: eng-Latn
|
|
56
|
-
value: "The instrument's declared category (automatic / semi-automatic)."
|
|
57
|
-
source: { doc: urn:oiml:pub:r:129-1:2020, clause: "2.1" }
|
|
58
|
-
certificate: { dimension: instrument_category, type: string, label: [{spelling: eng-Latn, value: "Instrument category"}], obligation: optional }
|
|
59
|
-
|
|
60
|
-
# ── Measuring-range definition quantities (R 129-1, 2.2.5–2.2.9) ─────
|
|
61
|
-
|
|
62
|
-
- id: max_dimension
|
|
63
|
-
target: max_dimension
|
|
64
|
-
statement:
|
|
65
|
-
- spelling: eng-Latn
|
|
66
|
-
value: "Maximum dimension per axis the instrument measures up to."
|
|
67
|
-
source: { doc: urn:oiml:pub:r:129-1:2020, clause: "2.2.5" }
|
|
68
|
-
certificate: { attribute: max_dimension, type: string, label: [{spelling: eng-Latn, value: "Max dimension per axis"}], obligation: optional }
|
|
69
|
-
|
|
70
|
-
- id: min_dimension
|
|
71
|
-
target: min_dimension
|
|
72
|
-
statement:
|
|
73
|
-
- spelling: eng-Latn
|
|
74
|
-
value: "Minimum dimension per axis the instrument measures down to."
|
|
75
|
-
source: { doc: urn:oiml:pub:r:129-1:2020, clause: "2.2.6" }
|
|
76
|
-
certificate: { attribute: min_dimension, type: string, label: [{spelling: eng-Latn, value: "Min dimension per axis"}], obligation: optional }
|
|
77
|
-
|
|
78
|
-
- id: scale_interval
|
|
79
|
-
target: scale_interval
|
|
80
|
-
statement:
|
|
81
|
-
- spelling: eng-Latn
|
|
82
|
-
value: "Scale interval (d) of the instrument's indications."
|
|
83
|
-
source: { doc: urn:oiml:pub:r:129-1:2020, clause: "2.2.9" }
|
|
84
|
-
certificate: { attribute: scale_interval, type: string, label: [{spelling: eng-Latn, value: "Scale interval (d)"}], obligation: optional }
|
|
85
|
-
|
|
86
|
-
# ── Rated operating conditions (R 129-1, 4.2.1 / 2.1.10–2.1.11) ──────
|
|
87
|
-
|
|
88
|
-
- id: temperature_range
|
|
89
|
-
target: temperature-response # behaviors.yaml — the temperature influence response
|
|
90
|
-
statement:
|
|
91
|
-
- spelling: eng-Latn
|
|
92
|
-
value: "The type holds its metrological performance across the rated temperature range."
|
|
93
|
-
source: { doc: urn:oiml:pub:r:129-1:2020, clause: "4.2.1" }
|
|
94
|
-
certificate: { attributes: [temperature_min, temperature_max], type: string, label: [{spelling: eng-Latn, value: "Temperature range"}], obligation: optional }
|
|
95
|
-
|
|
96
|
-
- id: speed_range
|
|
97
|
-
target: speed-response # behaviors.yaml — the measuring-speed response
|
|
98
|
-
statement:
|
|
99
|
-
- spelling: eng-Latn
|
|
100
|
-
value: "The measuring speed range the conveyor runs within (V_min…V_max)."
|
|
101
|
-
source: { doc: urn:oiml:pub:r:129-1:2020, clause: "2.1.10" }
|
|
102
|
-
certificate: { attributes: [speed_min, speed_max], type: string, label: [{spelling: eng-Latn, value: "Measuring speed range"}], obligation: optional }
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
# OIML R 144 — MODEL LAYER: PROMISES (TODO.model-content/03)
|
|
2
|
-
# -----------------------------------------------------------------------------
|
|
3
|
-
# First-class manufacturer PROMISES for gas analyzers (measuring CO, NO and
|
|
4
|
-
# NO2 volume fractions): claims on characteristics and behavior that
|
|
5
|
-
# evaluation verifies and the certificate prints as promises-as-verified
|
|
6
|
-
# (the same doctrine as R 60's set — primmel-oiml-smart/docs/primmel/
|
|
7
|
-
# 02-subjects.md §2.3; 15-model-supply-chain.md §15.2). The certificate's
|
|
8
|
-
# characteristic list is GENERATED from this promise set
|
|
9
|
-
# (browser/src/services/certificate.service.ts certificateCharacteristics())
|
|
10
|
-
# — the rows below carry the print surface the hand-maintained
|
|
11
|
-
# characteristics_template of evaluation/certificate-template.yaml formerly
|
|
12
|
-
# restated (which keeps only number_format and dimension_labels).
|
|
13
|
-
#
|
|
14
|
-
# PACKAGE HOME: this file is the package payload `payload/promises.yaml` —
|
|
15
|
-
# the promise set is AUTHORED here, in the package, and regenerate-data
|
|
16
|
-
# emits data/r144/model/promises.yaml VERBATIM (the generated fileHeader +
|
|
17
|
-
# these raw bytes; the documented codec exclusion, same class as
|
|
18
|
-
# payload/sample-data.yaml). The kernel's SubjectPromise carries no
|
|
19
|
-
# certificate print-projection field yet — the projection's first-class PRL
|
|
20
|
-
# home is the recorded primmel-ts kernel-minor follow-up; when it ships,
|
|
21
|
-
# this payload migrates to `promises.prl` and the promise CONTENT rides
|
|
22
|
-
# over unchanged.
|
|
23
|
-
#
|
|
24
|
-
# PROVENANCE (the content-provenance rule): every promise cites the clause
|
|
25
|
-
# its claimed characteristic is defined at (R 144-1:2013 — the clause the
|
|
26
|
-
# model's own attribute/dimension declaration carries): the channel
|
|
27
|
-
# classification at 1.1 (scope) / 2.1 (terminology), the per-component
|
|
28
|
-
# measuring ranges at 4.2, the rated operating conditions at 4.5.1, and
|
|
29
|
-
# the response/warm-up quantities at 2.12 / 2.11. No R 144 clause makes a
|
|
30
|
-
# certificate indication mandatory, so every row prints when available
|
|
31
|
-
# (obligation: optional). Composite range rows bind their boundary
|
|
32
|
-
# attribute pair (`certificate.attributes`) and target the measurand
|
|
33
|
-
# channel set the range is a facet of (R 60's temperature_range pattern —
|
|
34
|
-
# the composite row targets the concept, never one boundary).
|
|
35
|
-
#
|
|
36
|
-
# Schema: data/schemas/model.yaml ($defs/promise).
|
|
37
|
-
---
|
|
38
|
-
promises:
|
|
39
|
-
|
|
40
|
-
# ── Channel classification (R 144-1, 1.1 / 2.1) ──────────────────────
|
|
41
|
-
|
|
42
|
-
- id: measurand_components
|
|
43
|
-
target: measurand_components # classification dimension (model/instrument.yaml)
|
|
44
|
-
statement:
|
|
45
|
-
- spelling: eng-Latn
|
|
46
|
-
value: "The measurand components the analyzer determines — the certified channel set."
|
|
47
|
-
source: { doc: urn:oiml:pub:r:144-1:2013, clause: "1.1" }
|
|
48
|
-
certificate: { dimension: measurand_components, type: string, label: [{spelling: eng-Latn, value: "Measured components"}], obligation: optional }
|
|
49
|
-
|
|
50
|
-
- id: measuring_principle
|
|
51
|
-
target: measuring_principle
|
|
52
|
-
statement:
|
|
53
|
-
- spelling: eng-Latn
|
|
54
|
-
value: "The measuring principle the analyzer's channels operate on."
|
|
55
|
-
source: { doc: urn:oiml:pub:r:144-1:2013, clause: "1.1" }
|
|
56
|
-
certificate: { dimension: measuring_principle, type: string, label: [{spelling: eng-Latn, value: "Measuring principle"}], obligation: optional }
|
|
57
|
-
|
|
58
|
-
- id: sampling_approach
|
|
59
|
-
target: sampling_approach
|
|
60
|
-
statement:
|
|
61
|
-
- spelling: eng-Latn
|
|
62
|
-
value: "The sampling approach the analyzer draws the gas stream by."
|
|
63
|
-
source: { doc: urn:oiml:pub:r:144-1:2013, clause: "2.1" }
|
|
64
|
-
certificate: { dimension: sampling_approach, type: string, label: [{spelling: eng-Latn, value: "Sampling approach"}], obligation: optional }
|
|
65
|
-
|
|
66
|
-
# ── Measuring ranges per component (R 144-1, 4.2) ────────────────────
|
|
67
|
-
|
|
68
|
-
- id: co_range
|
|
69
|
-
target: measurand_components # the range is a facet of the CO channel
|
|
70
|
-
statement:
|
|
71
|
-
- spelling: eng-Latn
|
|
72
|
-
value: "The CO measuring range the analyzer is certified over (volume fraction, ppm)."
|
|
73
|
-
source: { doc: urn:oiml:pub:r:144-1:2013, clause: "4.2" }
|
|
74
|
-
certificate: { attributes: [co_range_min, co_range_max], type: string, label: [{spelling: eng-Latn, value: "CO measuring range (ppm)"}], obligation: optional }
|
|
75
|
-
|
|
76
|
-
- id: no_range
|
|
77
|
-
target: measurand_components # the range is a facet of the NO channel
|
|
78
|
-
statement:
|
|
79
|
-
- spelling: eng-Latn
|
|
80
|
-
value: "The NO measuring range the analyzer is certified over (volume fraction, ppm)."
|
|
81
|
-
source: { doc: urn:oiml:pub:r:144-1:2013, clause: "4.2" }
|
|
82
|
-
certificate: { attributes: [no_range_min, no_range_max], type: string, label: [{spelling: eng-Latn, value: "NO measuring range (ppm)"}], obligation: optional }
|
|
83
|
-
|
|
84
|
-
- id: no2_range
|
|
85
|
-
target: measurand_components # the range is a facet of the NO2 channel
|
|
86
|
-
statement:
|
|
87
|
-
- spelling: eng-Latn
|
|
88
|
-
value: "The NO2 measuring range the analyzer is certified over (volume fraction, ppm)."
|
|
89
|
-
source: { doc: urn:oiml:pub:r:144-1:2013, clause: "4.2" }
|
|
90
|
-
certificate: { attributes: [no2_range_min, no2_range_max], type: string, label: [{spelling: eng-Latn, value: "NO2 measuring range (ppm)"}], obligation: optional }
|
|
91
|
-
|
|
92
|
-
# ── Dynamic response (R 144-1, 2.12 / 2.11) ──────────────────────────
|
|
93
|
-
|
|
94
|
-
- id: response_time
|
|
95
|
-
target: response_time
|
|
96
|
-
statement:
|
|
97
|
-
- spelling: eng-Latn
|
|
98
|
-
value: "Response time t_90 the analyzer settles within after a step change of the measurand."
|
|
99
|
-
source: { doc: urn:oiml:pub:r:144-1:2013, clause: "2.12" }
|
|
100
|
-
certificate: { attribute: response_time, type: string, label: [{spelling: eng-Latn, value: "Response time t_90"}], obligation: optional }
|
|
101
|
-
|
|
102
|
-
- id: warm_up_time
|
|
103
|
-
target: warm_up_time
|
|
104
|
-
statement:
|
|
105
|
-
- spelling: eng-Latn
|
|
106
|
-
value: "Warm-up time the analyzer requires before its indications hold."
|
|
107
|
-
source: { doc: urn:oiml:pub:r:144-1:2013, clause: "2.11" }
|
|
108
|
-
certificate: { attribute: warm_up_time, type: string, label: [{spelling: eng-Latn, value: "Warm-up time"}], obligation: optional }
|
|
109
|
-
|
|
110
|
-
# ── Rated operating conditions (R 144-1, 4.5.1) ──────────────────────
|
|
111
|
-
|
|
112
|
-
- id: rated_conditions
|
|
113
|
-
target: temperature-effect # behaviors.yaml — the temperature influence response
|
|
114
|
-
statement:
|
|
115
|
-
- spelling: eng-Latn
|
|
116
|
-
value: "The type holds its metrological performance across the rated temperature range (t_min…t_max)."
|
|
117
|
-
source: { doc: urn:oiml:pub:r:144-1:2013, clause: "4.5.1" }
|
|
118
|
-
certificate: { attributes: [t_min, t_max], type: string, label: [{spelling: eng-Latn, value: "Rated temperature range"}], obligation: optional }
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
# OIML R 60 — MODEL LAYER: PROMISES (TODO.roadmap/08)
|
|
2
|
-
# -----------------------------------------------------------------------------
|
|
3
|
-
# First-class manufacturer PROMISES: claims on characteristics and behavior —
|
|
4
|
-
# possibly envelope-shaped, possibly conditional — that evaluation verifies
|
|
5
|
-
# and the certificate prints as promises-as-verified (doctrine
|
|
6
|
-
# primmel-oiml-smart/docs/primmel/02-subjects.md §2.3, the IS catalog;
|
|
7
|
-
# 15-model-supply-chain.md §15.2, promises-as-verified).
|
|
8
|
-
#
|
|
9
|
-
# A promise is NOT a declared attribute value: a claim stated as one bare
|
|
10
|
-
# parameter value ("t_min = −10 °C") stays an `origin: declared` attribute.
|
|
11
|
-
# primmel-ts linter C44 promise-not-bare-value enforces the distinctness —
|
|
12
|
-
# NARROWED semantics: it rejects only promises that merely RESTATE a bare
|
|
13
|
-
# declared value (attribute target + bare quantity level, no conditions, no
|
|
14
|
-
# verification linkage). Targeting an attribute/dimension with a genuine
|
|
15
|
-
# claim ABOUT it — conditioned, envelope/range, symbolic level, or verified
|
|
16
|
-
# — is legal, and is exactly what this file does. The promises below
|
|
17
|
-
# therefore never RESTATE a value: they cite the characteristic/behavior/
|
|
18
|
-
# attribute/dimension the claim is about (`target`), and the certificate
|
|
19
|
-
# print projection (`certificate:`) declares which declared attribute /
|
|
20
|
-
# classification dimension the verified claim reads its exhibited value from
|
|
21
|
-
# (the IS/HAS duality citation — the certificate prints the exhibited dual).
|
|
22
|
-
#
|
|
23
|
-
# PACKAGE HOME (TODO.model-content/03 — the payload-verbatim class): this
|
|
24
|
-
# file is the package payload `payload/promises.yaml` — the promise set is
|
|
25
|
-
# AUTHORED here, in the package, and regenerate-data emits
|
|
26
|
-
# data/r60/model/promises.yaml VERBATIM (the generated fileHeader + these
|
|
27
|
-
# raw bytes; the documented codec exclusion, same class as
|
|
28
|
-
# payload/sample-data.yaml). The kernel's SubjectPromise carries no
|
|
29
|
-
# certificate print-projection field yet — the projection's first-class PRL
|
|
30
|
-
# home (`promises.prl` with a `certificate { … }` block) is the recorded
|
|
31
|
-
# primmel-ts kernel-minor follow-up; when it ships, this payload migrates to
|
|
32
|
-
# the PRL surface and the promise CONTENT rides over unchanged.
|
|
33
|
-
#
|
|
34
|
-
# TYPE ALIGNMENT (TODO.roadmap/08 deliverable 1): `PromiseDecl` (smart,
|
|
35
|
-
# browser/src/data/standards.ts) ≡ primmel-ts `SubjectPromise` at the TYPE
|
|
36
|
-
# level only — id, target, level, conditions (OCL over dimensions/
|
|
37
|
-
# conditions), statement, verified_by (requirement/test ids — when absent,
|
|
38
|
-
# verification derives from the requirement/test bindings of the same
|
|
39
|
-
# target), source { doc, clause }. The YAML level shape ({ kind:
|
|
40
|
-
# quantity|range|symbolic, … }) and primmel's `PromiseLevel` are
|
|
41
|
-
# CONCEPTUALLY aligned (quantity/range/symbolic); no YAML↔PRL converter
|
|
42
|
-
# for promises exists yet.
|
|
43
|
-
# The `certificate:` block is the smart-side print projection (Annex B):
|
|
44
|
-
# the certificate's characteristic list is GENERATED from this promise set
|
|
45
|
-
# (browser/src/services/certificate.service.ts), replacing the formerly
|
|
46
|
-
# hand-maintained characteristics_template rows of
|
|
47
|
-
# evaluation/certificate-template.yaml (which keeps only number_format and
|
|
48
|
-
# dimension_labels).
|
|
49
|
-
#
|
|
50
|
-
# APPLICATION-SIDE MAPPING (light formalization — deliverable 4): an
|
|
51
|
-
# application's SOUGHT CLASSIFICATION reads as a promise set — the
|
|
52
|
-
# subject-chain classification maps the applicant declares (family/group/
|
|
53
|
-
# model `classification`, the Application model_family_id + model_ids matrix)
|
|
54
|
-
# are the applicant's claims about what the type IS, shape-compatible with
|
|
55
|
-
# the entries below (dimension targets with symbolic levels), which
|
|
56
|
-
# evaluation then verifies and the certificate prints as promises-as-verified.
|
|
57
|
-
# Application.dimensions (deprecated free-form map) corresponds 1:1 to
|
|
58
|
-
# promise entries with `level: { kind: symbolic, value: <dimension-value> }`
|
|
59
|
-
# on the dimension target. A full application-matrix migration is NOT in
|
|
60
|
-
# scope — this note + the type alignment is the formalization.
|
|
61
|
-
#
|
|
62
|
-
# Schema: data/schemas/model.yaml ($defs/promise).
|
|
63
|
-
---
|
|
64
|
-
promises:
|
|
65
|
-
|
|
66
|
-
# ── Annex B mandatory supplement (R 60-4, Annex B) ──────────────────
|
|
67
|
-
|
|
68
|
-
- id: e_max_values
|
|
69
|
-
target: e_max # symbols.yaml / attributes.yaml id
|
|
70
|
-
statement:
|
|
71
|
-
- spelling: eng-Latn
|
|
72
|
-
value: "Maximum capacity E_max per model — the rated capacities the family offers."
|
|
73
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "3.5.5" }
|
|
74
|
-
certificate: { attribute: e_max, type: string, label: [{spelling: eng-Latn, value: "E_max values"}], obligation: mandatory }
|
|
75
|
-
|
|
76
|
-
- id: accuracy_class
|
|
77
|
-
target: accuracy_class # classification dimension (model/instrument.yaml)
|
|
78
|
-
statement:
|
|
79
|
-
- spelling: eng-Latn
|
|
80
|
-
value: "The type holds its declared accuracy class — the error characteristic stays within the class MPE."
|
|
81
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "5.1.1" }
|
|
82
|
-
verified_by:
|
|
83
|
-
- /req/metrological/mpe # R 60-1, 5.3
|
|
84
|
-
- /conf/metrological-tests/measurement-error-repeatability-mdlo # R 60-2, 2.10.1
|
|
85
|
-
certificate: { dimension: accuracy_class, type: string, label: [{spelling: eng-Latn, value: "Accuracy class"}], obligation: mandatory }
|
|
86
|
-
|
|
87
|
-
- id: n_lc
|
|
88
|
-
target: n_lc
|
|
89
|
-
statement:
|
|
90
|
-
- spelling: eng-Latn
|
|
91
|
-
value: "Maximum number of load cell verification intervals into which the measuring range is divided."
|
|
92
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "3.5.8" }
|
|
93
|
-
certificate: { attribute: n_lc, type: integer, label: [{spelling: eng-Latn, value: "Number of verification intervals (n_LC)"}], obligation: mandatory }
|
|
94
|
-
|
|
95
|
-
- id: v_min
|
|
96
|
-
target: v_min
|
|
97
|
-
statement:
|
|
98
|
-
- spelling: eng-Latn
|
|
99
|
-
value: "Minimum load cell verification interval the type is certified down to."
|
|
100
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "3.5.11" }
|
|
101
|
-
certificate: { attribute: v_min, type: string, label: [{spelling: eng-Latn, value: "Minimum load cell verification interval (v_min)"}], obligation: mandatory }
|
|
102
|
-
|
|
103
|
-
- id: p_lc
|
|
104
|
-
target: p_lc
|
|
105
|
-
statement:
|
|
106
|
-
- spelling: eng-Latn
|
|
107
|
-
value: "Apportioning factor p_LC of the load cell for MPE calculations."
|
|
108
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "3.7.2" }
|
|
109
|
-
certificate: { attribute: p_lc, type: number, label: [{spelling: eng-Latn, value: "Apportioning factor (p_LC)"}], obligation: mandatory }
|
|
110
|
-
|
|
111
|
-
# ── Annex B Table B.1 technical data (additional pages, informative) ──
|
|
112
|
-
|
|
113
|
-
- id: e_min
|
|
114
|
-
target: e_min
|
|
115
|
-
statement:
|
|
116
|
-
- spelling: eng-Latn
|
|
117
|
-
value: "Minimum dead load E_min the load cell measures from."
|
|
118
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "3.5.9" }
|
|
119
|
-
certificate: { attribute: e_min, type: string, label: [{spelling: eng-Latn, value: "Minimum dead load (E_min)"}], obligation: optional }
|
|
120
|
-
|
|
121
|
-
- id: y_ratio
|
|
122
|
-
target: "y"
|
|
123
|
-
statement:
|
|
124
|
-
- spelling: eng-Latn
|
|
125
|
-
value: "Relative minimum load cell verification interval Y = E_max / v_min."
|
|
126
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "3.5.15" }
|
|
127
|
-
certificate: { attribute: "y", type: integer, label: [{spelling: eng-Latn, value: "Relative v_min (Y)"}], obligation: optional }
|
|
128
|
-
|
|
129
|
-
- id: z_ratio
|
|
130
|
-
target: z
|
|
131
|
-
statement:
|
|
132
|
-
- spelling: eng-Latn
|
|
133
|
-
value: "Relative minimum dead load output return Z = E_max / (2·DR)."
|
|
134
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "3.5.14" }
|
|
135
|
-
certificate: { attribute: z, type: integer, label: [{spelling: eng-Latn, value: "Relative DR (Z)"}], obligation: optional }
|
|
136
|
-
|
|
137
|
-
- id: rated_output
|
|
138
|
-
target: rated_output
|
|
139
|
-
statement:
|
|
140
|
-
- spelling: eng-Latn
|
|
141
|
-
value: "Rated output per volt of excitation at maximum capacity, with tolerance."
|
|
142
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "3.5.3" }
|
|
143
|
-
certificate: { attribute: rated_output, type: string, label: [{spelling: eng-Latn, value: "Rated output"}], obligation: optional }
|
|
144
|
-
|
|
145
|
-
- id: excitation_maximum
|
|
146
|
-
target: excitation_maximum
|
|
147
|
-
statement:
|
|
148
|
-
- spelling: eng-Latn
|
|
149
|
-
value: "Maximum excitation voltage the load cell withstands."
|
|
150
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "3.4.2" }
|
|
151
|
-
certificate: { attribute: excitation_maximum, type: number, label: [{spelling: eng-Latn, value: "Maximum excitation voltage (V)"}], obligation: optional }
|
|
152
|
-
|
|
153
|
-
- id: input_impedance
|
|
154
|
-
target: input_impedance
|
|
155
|
-
statement:
|
|
156
|
-
- spelling: eng-Latn
|
|
157
|
-
value: "Electrical impedance across the excitation terminals, with tolerance."
|
|
158
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "3.4.2" }
|
|
159
|
-
certificate: { attribute: input_impedance, type: string, label: [{spelling: eng-Latn, value: "Input impedance (Ohm)"}], obligation: optional }
|
|
160
|
-
|
|
161
|
-
- id: temperature_range
|
|
162
|
-
target: temp-effect-sensitivity # behaviors.yaml — the temperature influence response
|
|
163
|
-
statement:
|
|
164
|
-
- spelling: eng-Latn
|
|
165
|
-
value: "The type holds its metrological performance across the rated temperature range (T_min…T_max)."
|
|
166
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "5.6.1" }
|
|
167
|
-
verified_by:
|
|
168
|
-
- /req/metrological/temperature-limits # R 60-1, 5.6.1
|
|
169
|
-
- /conf/metrological-tests/measurement-error-repeatability-mdlo # R 60-2, 2.10.1 (temperature runs)
|
|
170
|
-
certificate: { attributes: [t_min, t_max], type: string, label: [{spelling: eng-Latn, value: "Temperature rating (°C)"}], obligation: optional }
|
|
171
|
-
|
|
172
|
-
- id: safe_overload
|
|
173
|
-
target: safe_overload
|
|
174
|
-
statement:
|
|
175
|
-
- spelling: eng-Latn
|
|
176
|
-
value: "Safe overload the load cell withstands without permanent damage, relative to E_max."
|
|
177
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "3.5.16" }
|
|
178
|
-
certificate: { attribute: safe_overload, type: string, label: [{spelling: eng-Latn, value: "Safe overload, relative (%)"}], obligation: optional }
|
|
179
|
-
|
|
180
|
-
# ── Envelope claim (TODO.roadmap/08 deliverable d) ───────────────────
|
|
181
|
-
# A CONDITIONED promise a bare parameter value cannot express: not
|
|
182
|
-
# "t_min = −10 °C" (one declared value) but "class C6 HOLDS ACROSS the
|
|
183
|
-
# rated range −10…+40 °C" — a level claimed over an envelope, gated by
|
|
184
|
-
# conditions (OCL over the designed condition tiers). It prints as a
|
|
185
|
-
# statement row: the certificate block binds no attribute/dimension, so
|
|
186
|
-
# the projection renders the claim text itself (see
|
|
187
|
-
# certificate.service.ts renderPromiseClaim).
|
|
188
|
-
- id: accuracy_class_envelope
|
|
189
|
-
target: accuracy_class
|
|
190
|
-
level: { kind: symbolic, value: C6 }
|
|
191
|
-
conditions: "ocl{self.temperature >= rated.t_min and self.temperature <= rated.t_max}"
|
|
192
|
-
statement:
|
|
193
|
-
- spelling: eng-Latn
|
|
194
|
-
value: "Holds accuracy class C6 across the rated temperature range −10…+40 °C."
|
|
195
|
-
verified_by:
|
|
196
|
-
- /req/metrological/mpe # R 60-1, 5.3
|
|
197
|
-
- /conf/metrological-tests/measurement-error-repeatability-mdlo # R 60-2, 2.10.1
|
|
198
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "5.1.1" }
|
|
199
|
-
certificate: { type: statement, label: [{spelling: eng-Latn, value: "Accuracy envelope"}], obligation: optional }
|
|
200
|
-
|
|
201
|
-
# ── The G1 optional defining-data fields (TODO.deploying/01) ────────
|
|
202
|
-
- id: cable_length
|
|
203
|
-
target: cable_length
|
|
204
|
-
statement:
|
|
205
|
-
- spelling: eng-Latn
|
|
206
|
-
value: "Integral cable length (the family specification set's cable details, R 60-1, 3.4.2 (e))."
|
|
207
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "3.4.2" }
|
|
208
|
-
certificate: { attribute: cable_length, type: quantity, label: [{spelling: eng-Latn, value: "Cable length"}], obligation: optional }
|
|
209
|
-
|
|
210
|
-
- id: additional_markings
|
|
211
|
-
target: additional_markings
|
|
212
|
-
statement:
|
|
213
|
-
- spelling: eng-Latn
|
|
214
|
-
value: "Markings on the load cell beyond the required set (manufacturer's optional markings)."
|
|
215
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "6" }
|
|
216
|
-
certificate: { attribute: additional_markings, type: string, label: [{spelling: eng-Latn, value: "Additional markings"}], obligation: optional }
|
|
217
|
-
|
|
218
|
-
- id: additional_characterisation
|
|
219
|
-
target: additional_characterisation
|
|
220
|
-
statement:
|
|
221
|
-
- spelling: eng-Latn
|
|
222
|
-
value: "Additional characterisation completing the classification (R 60-1, 5.1.5 (f), 5.1.6, 5.1.7)."
|
|
223
|
-
source: { doc: urn:oiml:pub:r:60-1:2021, clause: "5.1.5" }
|
|
224
|
-
certificate: { attribute: additional_characterisation, type: string, label: [{spelling: eng-Latn, value: "Additional characteristics"}], obligation: optional }
|