@oimlsmart/primmel-packages 0.20.0 → 0.22.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/lab-selection-criteria.prl +74 -0
- package/oiml-r129/evaluation/sample-selection-rules.prl +33 -0
- package/oiml-r144/evaluation/lab-selection-criteria.prl +123 -0
- package/oiml-r144/evaluation/sample-selection-rules.prl +47 -0
- package/oiml-r60/evaluation/lab-selection-criteria.prl +95 -0
- package/oiml-r60/evaluation/sample-selection-rules.prl +100 -0
- package/oiml-r91/evaluation/lab-selection-criteria.prl +111 -0
- package/oiml-r91/evaluation/sample-selection-rules.prl +34 -0
- package/package.json +1 -1
- package/oiml-r129/payload/sample-data.yaml +0 -300
- package/oiml-r144/payload/sample-data.yaml +0 -643
- package/oiml-r60/payload/sample-data.yaml +0 -4900
- package/oiml-r91/payload/sample-data.yaml +0 -464
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# oiml-r129 — lab selection criteria (kernel 1.14.0's lab_selection_criterion, TODO.roadmap/40 family G): the parameter→capability matching register the test-design linker resolves.
|
|
2
|
+
lab_selection_criterion accreditation-scope {
|
|
3
|
+
weight required
|
|
4
|
+
parameter_type dimension
|
|
5
|
+
label "Accreditation scope"
|
|
6
|
+
description "Lab must be OIML-accredited for R 129 multi-dimensional measuring instruments"
|
|
7
|
+
match {
|
|
8
|
+
operator has_capability
|
|
9
|
+
required_capability "accredited-r129"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
lab_selection_criterion dimensional-references {
|
|
13
|
+
weight required
|
|
14
|
+
parameter_type operational
|
|
15
|
+
label "Dimensional test objects"
|
|
16
|
+
description "Every R 129 type evaluation measures test objects of known dimensions covering the measuring range (R 129-2, Annex A) — the lab must hold traceable dimensional references (gauge blocks / calibrated test objects) and declare the \"dimensional-testing\" capability."
|
|
17
|
+
match {
|
|
18
|
+
operator has_capability
|
|
19
|
+
required_capability "dimensional-testing"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
lab_selection_criterion climatic-chamber {
|
|
23
|
+
weight required
|
|
24
|
+
parameter_type operational
|
|
25
|
+
label "Climatic testing capability"
|
|
26
|
+
description "Every R 129 type evaluation includes static temperature stages and damp-heat tests (R 129-2, Annex A per IEC 60068-2-1/-2-2/-2-30/-2-78). The lab must declare the \"climatic-testing\" capability."
|
|
27
|
+
match {
|
|
28
|
+
operator has_capability
|
|
29
|
+
required_capability "climatic-testing"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
lab_selection_criterion emc-testing {
|
|
33
|
+
weight required
|
|
34
|
+
parameter_type operational
|
|
35
|
+
label "EMC testing capability"
|
|
36
|
+
description "Every R 129 type evaluation includes the disturbance suite (ESD, RF immunity — R 129-2, Annex A per IEC 61000-4-2/-4-3/-4-6; mains-powered instruments also dips, bursts and surges). The lab must declare the \"emc-testing\" capability."
|
|
37
|
+
match {
|
|
38
|
+
operator has_capability
|
|
39
|
+
required_capability "emc-testing"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
lab_selection_criterion conveyor-facility {
|
|
43
|
+
weight required
|
|
44
|
+
parameter_type dimension
|
|
45
|
+
label "Conveyor test facility"
|
|
46
|
+
description "Automatic instruments are tested over the declared measuring-speed range (R 129-2, Annex A, speed of movement) — the lab must provide a conveyor or equivalent relative-movement facility and declare the \"conveyor-testing\" capability."
|
|
47
|
+
applies_when { model_field instrument_category in { automatic } }
|
|
48
|
+
match {
|
|
49
|
+
operator has_capability
|
|
50
|
+
required_capability "conveyor-testing"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
lab_selection_criterion optical-effects {
|
|
54
|
+
weight preferred
|
|
55
|
+
parameter_type dimension
|
|
56
|
+
label "Ambient light test facility"
|
|
57
|
+
description "Optical instruments are tested under varying ambient light (R 129-2, Annex A: 100 lx to 1500 lx) — the lab should declare the \"light-effects-testing\" capability."
|
|
58
|
+
applies_when { model_field measurement_principle in { optical } }
|
|
59
|
+
match {
|
|
60
|
+
operator has_capability
|
|
61
|
+
required_capability "light-effects-testing"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
lab_selection_criterion acoustic-effects {
|
|
65
|
+
weight preferred
|
|
66
|
+
parameter_type dimension
|
|
67
|
+
label "Acoustic test facility"
|
|
68
|
+
description "Acoustic instruments are tested at sound levels up to 100 dB (R 129-2, Annex A) — the lab should declare the \"acoustic-effects-testing\" capability."
|
|
69
|
+
applies_when { model_field measurement_principle in { acoustic } }
|
|
70
|
+
match {
|
|
71
|
+
operator has_capability
|
|
72
|
+
required_capability "acoustic-effects-testing"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# oiml-r129 — sample selection rules + specimen governance (kernel 1.14.0's sample_selection_rule + specimen_governance_rule, TODO.roadmap/40 family G).
|
|
2
|
+
sample_selection_rule definitive-type-per-model {
|
|
3
|
+
step "sampling"
|
|
4
|
+
rule "For each MeasuringInstrumentModel in the application scope, select at least one unit which represents the definitive type"
|
|
5
|
+
rationale "R 129 defines no group level and no presumption of compliance across models, so every model in scope contributes a representative unit (R 129-4, 1.4 — sample selection lives in the type evaluation report format)."
|
|
6
|
+
applicability "always"
|
|
7
|
+
selector "ONE UNIT PER model_id (representative of the definitive type)"
|
|
8
|
+
test_kind full_evaluation
|
|
9
|
+
}
|
|
10
|
+
sample_selection_rule power-supply-coverage {
|
|
11
|
+
step "sampling"
|
|
12
|
+
rule "Where the application spans models with different power supplies, ensure each power supply kind is covered — the mains voltage tests and the low-battery test apply per configuration (R 129-2, Annex A, Table A.1)"
|
|
13
|
+
rationale "The power supply determines which electrical tests apply: AC mains (voltage variation, dips, bursts, surges), battery (low voltage); evidence must exist for every supply configuration in scope."
|
|
14
|
+
applicability "distinct(model.power_supply).length > 1"
|
|
15
|
+
selector "GROUP BY power_supply KEEP >= 1 unit EACH"
|
|
16
|
+
test_kind full_evaluation
|
|
17
|
+
}
|
|
18
|
+
sample_selection_rule instrument-category-coverage {
|
|
19
|
+
step "sampling"
|
|
20
|
+
rule "Where the application spans both automatic and semi-automatic models, ensure each category is covered — the speed-of-movement test applies only to automatic units"
|
|
21
|
+
rationale "R 129-2, Annex A applies the speed of movement test to automatic instruments only; a semi-automatic unit cannot supply that evidence for an automatic model."
|
|
22
|
+
applicability "distinct(model.instrument_category).length > 1"
|
|
23
|
+
selector "GROUP BY instrument_category KEEP >= 1 unit EACH"
|
|
24
|
+
test_kind full_evaluation
|
|
25
|
+
}
|
|
26
|
+
sample_selection_rule worst-case-rating-pick {
|
|
27
|
+
step "sampling"
|
|
28
|
+
rule "Within a model, prefer the unit whose declared ratings are most demanding on the test program (widest measuring range Max − Min, smallest scale interval d, highest speed_max)"
|
|
29
|
+
rationale "Practical severity ordering — tests exercise the widest claims made for the type."
|
|
30
|
+
applicability "samples_per_model.length > 1"
|
|
31
|
+
selector "ORDER BY (max_dimension - min_dimension) DESC, scale_interval ASC, speed_max DESC LIMIT 1"
|
|
32
|
+
test_kind full_evaluation
|
|
33
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# oiml-r144 — lab selection criteria (kernel 1.14.0's lab_selection_criterion, TODO.roadmap/40 family G): the parameter→capability matching register the test-design linker resolves.
|
|
2
|
+
lab_selection_criterion accreditation-scope {
|
|
3
|
+
weight required
|
|
4
|
+
parameter_type dimension
|
|
5
|
+
label "Accreditation scope"
|
|
6
|
+
description "Lab must be OIML-accredited for R 144 gas analytical systems covering the measured components"
|
|
7
|
+
match {
|
|
8
|
+
operator capability_prefix_match
|
|
9
|
+
required_capability_prefix "accredited-r144-"
|
|
10
|
+
model_field measurand_components
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
lab_selection_criterion cgm-infrastructure {
|
|
14
|
+
weight required
|
|
15
|
+
parameter_type dimension
|
|
16
|
+
label "Calibration gas mixture infrastructure"
|
|
17
|
+
description "Lab must hold (or have traceable access to) certified CGMs for every measured component — composition uncertainty ≤ 2 % of the certified value (R 144-1, A.2.3), uncertainty/MPE ratio ≤ 1:3 (R 144-1, 7.2.2.2). Labs declare capabilities like \"cgm-co\", \"cgm-no\", \"cgm-no2\"."
|
|
18
|
+
applies_when { model_field measurand_components not_null true }
|
|
19
|
+
match {
|
|
20
|
+
operator capability_from_field
|
|
21
|
+
required_capability_prefix "cgm-"
|
|
22
|
+
model_field measurand_components
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
lab_selection_criterion climatic-chamber {
|
|
26
|
+
weight required
|
|
27
|
+
parameter_type operational
|
|
28
|
+
label "Climatic testing capability"
|
|
29
|
+
description "Every R 144 type evaluation includes dry heat (40 °C), cold (5 °C) and damp heat (30 °C / 85 % RH) tests (R 144-2, 1.5–1.7). The lab must declare the \"climatic-testing\" capability."
|
|
30
|
+
match {
|
|
31
|
+
operator has_capability
|
|
32
|
+
required_capability "climatic-testing"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
lab_selection_criterion emc-testing {
|
|
36
|
+
weight required
|
|
37
|
+
parameter_type operational
|
|
38
|
+
label "EMC testing capability"
|
|
39
|
+
description "Every gas analytical system undergoes the disturbance suite (voltage dips, bursts, surges, ESD, radiated RF — R 144-2, 1.12–1.17). The lab must declare the \"emc-testing\" capability."
|
|
40
|
+
match {
|
|
41
|
+
operator has_capability
|
|
42
|
+
required_capability "emc-testing"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
lab_selection_criterion extractive-testing {
|
|
46
|
+
weight required
|
|
47
|
+
parameter_type dimension
|
|
48
|
+
label "Extractive sampling test capability"
|
|
49
|
+
description "Extractive systems require the gas handling tests (flow spillover R 144-2, 1.21; leakproofness R 144-2, 1.22 per IEC 60068-2-17) and heated-line/probe infrastructure. The lab must declare the \"extractive-testing\" capability."
|
|
50
|
+
applies_when { model_field sampling_approach in { extractive } }
|
|
51
|
+
match {
|
|
52
|
+
operator has_capability
|
|
53
|
+
required_capability "extractive-testing"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
lab_selection_criterion battery-testing {
|
|
57
|
+
weight required
|
|
58
|
+
parameter_type dimension
|
|
59
|
+
label "Battery test capability"
|
|
60
|
+
description "Battery-powered systems require the low battery voltage test (R 144-2, 1.18). The lab must declare the \"battery-testing\" capability."
|
|
61
|
+
applies_when { model_field power_supply in { battery ac-and-battery } }
|
|
62
|
+
match {
|
|
63
|
+
operator has_capability
|
|
64
|
+
required_capability "battery-testing"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
lab_selection_criterion vibration-testing {
|
|
68
|
+
weight required
|
|
69
|
+
parameter_type operational
|
|
70
|
+
label "Vibration test capability"
|
|
71
|
+
description "Every R 144 type evaluation includes the random vibration test (R 144-2, 1.11.1, minimum OIML D 11 level 1). The lab must declare the \"vibration-testing\" capability."
|
|
72
|
+
match {
|
|
73
|
+
operator has_capability
|
|
74
|
+
required_capability "vibration-testing"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
lab_selection_criterion long-duration-testing {
|
|
78
|
+
weight preferred
|
|
79
|
+
parameter_type operational
|
|
80
|
+
label "Long-duration test capacity"
|
|
81
|
+
description "The drift test occupies the system for 7 days (R 144-2, 1.3) and the damp heat test for 2 days (R 144-2, 1.7); labs with long-duration bench capacity schedule more efficiently."
|
|
82
|
+
match {
|
|
83
|
+
operator has_capability
|
|
84
|
+
required_capability "long-duration-testing"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
lab_selection_criterion capacity {
|
|
88
|
+
weight preferred
|
|
89
|
+
parameter_type operational
|
|
90
|
+
label "Current capacity"
|
|
91
|
+
description "Lab bandwidth to take on work within the schedule"
|
|
92
|
+
match {
|
|
93
|
+
operator always_pass
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
lab_selection_criterion geography {
|
|
97
|
+
weight preferred
|
|
98
|
+
parameter_type operational
|
|
99
|
+
label "Geographic proximity"
|
|
100
|
+
description "Proximity to manufacturer or IA (large installed systems are costly to ship)"
|
|
101
|
+
match {
|
|
102
|
+
operator always_pass
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
lab_selection_criterion previous-experience {
|
|
106
|
+
weight preferred
|
|
107
|
+
parameter_type operational
|
|
108
|
+
label "Previous experience"
|
|
109
|
+
description "Labs experienced with this manufacturer are more efficient"
|
|
110
|
+
match {
|
|
111
|
+
operator always_pass
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
lab_selection_criterion mtl-relationship {
|
|
115
|
+
weight preferred
|
|
116
|
+
parameter_type operational
|
|
117
|
+
label "MTL relationship"
|
|
118
|
+
description "Scheme A: manufacturer test lab co-assignment"
|
|
119
|
+
match {
|
|
120
|
+
operator has_capability
|
|
121
|
+
required_capability "manufacturer-test-lab"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# oiml-r144 — sample selection rules + specimen governance (kernel 1.14.0's sample_selection_rule + specimen_governance_rule, TODO.roadmap/40 family G).
|
|
2
|
+
sample_selection_rule 7.1.2-definitive-type-per-model {
|
|
3
|
+
step "7.1.2"
|
|
4
|
+
rule "For each MeasuringInstrumentModel in the application scope, select at least one unit which represents the definitive type"
|
|
5
|
+
rationale "R 144-1, 7.1.2: type evaluation shall be carried out on at least one unit, which represents the definitive type. R 144 defines no group level and no presumption of compliance across models, so every model in scope contributes a representative unit."
|
|
6
|
+
applicability "always"
|
|
7
|
+
selector "ONE UNIT PER model_id (representative of the definitive type)"
|
|
8
|
+
test_kind full_evaluation
|
|
9
|
+
}
|
|
10
|
+
sample_selection_rule component-coverage {
|
|
11
|
+
step "7.1.2"
|
|
12
|
+
rule "Where the family spans models with different measurand_components sets, ensure every measured component (CO, NO, NO2, NOx) declared by any model is covered by at least one selected unit"
|
|
13
|
+
rationale "The measured components determine which measuring ranges (R 144-1, 4.2) and which CGM suites (R 144-1, A.1.4) apply; evidence must exist for every component in the application scope. (Set-valued semantics: union of component coverage, not composite configurations — see TODO.refactor/06.)"
|
|
14
|
+
applicability "distinct(model.measurand_components).length > 1"
|
|
15
|
+
selector "UNION(model.measurand_components) COVERED-BY selected units"
|
|
16
|
+
test_kind full_evaluation
|
|
17
|
+
}
|
|
18
|
+
sample_selection_rule sampling-approach-coverage {
|
|
19
|
+
step "7.1.2"
|
|
20
|
+
rule "Where the application spans both extractive and in-situ models, ensure each sampling approach is covered — the gas handling tests (flow spillover, leakproofness) apply only to extractive units"
|
|
21
|
+
rationale "R 144-2, 1.21–1.22 apply to the gas handling system; an in-situ unit cannot supply that evidence for an extractive model."
|
|
22
|
+
applicability "distinct(model.sampling_approach).length > 1"
|
|
23
|
+
selector "GROUP BY sampling_approach KEEP >= 1 unit EACH"
|
|
24
|
+
test_kind full_evaluation
|
|
25
|
+
}
|
|
26
|
+
sample_selection_rule worst-case-rating-pick {
|
|
27
|
+
step "7.1.2"
|
|
28
|
+
rule "Within a model, prefer the unit whose declared ratings are most demanding on the test program (widest measuring range, shortest declared response_time, longest warm_up_time)"
|
|
29
|
+
rationale "Practical severity ordering — tests exercise the widest claims made for the type."
|
|
30
|
+
applicability "samples_per_model.length > 1"
|
|
31
|
+
selector "ORDER BY (range_max - range_min) DESC, response_time ASC, warm_up_time DESC LIMIT 1"
|
|
32
|
+
test_kind full_evaluation
|
|
33
|
+
}
|
|
34
|
+
sample_selection_rule practical-minimum {
|
|
35
|
+
rule "Total selected samples must be >= 1 (the application must yield at least one testable unit — R 144-1, 7.1.2 'at least one unit')"
|
|
36
|
+
rationale "Sanity check"
|
|
37
|
+
applicability "always"
|
|
38
|
+
selector "selected.length >= 1"
|
|
39
|
+
post "If 0, the application has no testable unit — reject application"
|
|
40
|
+
}
|
|
41
|
+
sample_selection_rule practical-maximum {
|
|
42
|
+
rule "Total selected samples should not exceed 3 without IA review (one per model is the norm; duplicates only for configuration coverage or witness redundancy)"
|
|
43
|
+
rationale "Practical logistics limit — the full program includes a 7-day drift test per unit (R 144-2, 1.3)"
|
|
44
|
+
applicability "always"
|
|
45
|
+
selector "selected.length <= 3"
|
|
46
|
+
post "If > 3, IA reviews and may consolidate (e.g. drop duplicate configurations)"
|
|
47
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# oiml-r60 — lab selection criteria (kernel 1.14.0's lab_selection_criterion, TODO.roadmap/40 family G): the parameter→capability matching register the test-design linker resolves.
|
|
2
|
+
lab_selection_criterion accreditation-scope {
|
|
3
|
+
weight required
|
|
4
|
+
parameter_type dimension
|
|
5
|
+
label "Accreditation scope"
|
|
6
|
+
description "Lab must be OIML-accredited for the accuracy class"
|
|
7
|
+
match {
|
|
8
|
+
operator capability_prefix_match
|
|
9
|
+
required_capability_prefix "accredited-class-"
|
|
10
|
+
model_field accuracy_class
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
lab_selection_criterion humidity-testing {
|
|
14
|
+
weight required
|
|
15
|
+
parameter_type dimension
|
|
16
|
+
label "Humidity testing capability"
|
|
17
|
+
description "CH and SH load cells require humidity testing. NH does not. The lab must declare the \"humidity-testing\" capability."
|
|
18
|
+
applies_when { model_field humidity_symbol in { CH SH } }
|
|
19
|
+
match {
|
|
20
|
+
operator has_capability
|
|
21
|
+
required_capability "humidity-testing"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
lab_selection_criterion emc-testing {
|
|
25
|
+
weight required
|
|
26
|
+
parameter_type dimension
|
|
27
|
+
label "EMC testing capability"
|
|
28
|
+
description "Electronic load cells (analogue-active, digital) require EMC tests (bursts, surge, ESD, conducted EMC, power variation). The lab must declare the \"emc-testing\" capability."
|
|
29
|
+
applies_when { model_field technology in { analogue-active digital } }
|
|
30
|
+
match {
|
|
31
|
+
operator has_capability
|
|
32
|
+
required_capability "emc-testing"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
lab_selection_criterion construction-fixtures {
|
|
36
|
+
weight required
|
|
37
|
+
parameter_type parameter
|
|
38
|
+
label "Construction fixture capability"
|
|
39
|
+
description "Lab must have fixtures compatible with the load cell construction type. Does NOT change the test program — a Class C bending-beam gets the same tests as a Class C shear-beam — but the physical mounting differs. The lab declares capabilities like \"construction-bending-beam\", \"construction-shear-beam\"."
|
|
40
|
+
applies_when { model_field construction_type not_null true }
|
|
41
|
+
match {
|
|
42
|
+
operator capability_from_field
|
|
43
|
+
required_capability_prefix "construction-"
|
|
44
|
+
model_field construction_type
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
lab_selection_criterion emax-range {
|
|
48
|
+
weight required
|
|
49
|
+
parameter_type parameter
|
|
50
|
+
label "Emax range capability"
|
|
51
|
+
description "Lab must have a deadweight machine covering the model's E_max. Labs declare capability tiers like \"emax-up-to-500kg\", \"emax-up-to-50t\", \"emax-up-to-500t\"."
|
|
52
|
+
applies_when { model_field e_max not_null true }
|
|
53
|
+
match {
|
|
54
|
+
operator capability_covers_value
|
|
55
|
+
required_capability_prefix "emax-up-to-"
|
|
56
|
+
model_field e_max
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
lab_selection_criterion capacity {
|
|
60
|
+
weight preferred
|
|
61
|
+
parameter_type operational
|
|
62
|
+
label "Current capacity"
|
|
63
|
+
description "Lab bandwidth to take on work within the schedule"
|
|
64
|
+
match {
|
|
65
|
+
operator always_pass
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
lab_selection_criterion geography {
|
|
69
|
+
weight preferred
|
|
70
|
+
parameter_type operational
|
|
71
|
+
label "Geographic proximity"
|
|
72
|
+
description "Proximity to manufacturer or IA"
|
|
73
|
+
match {
|
|
74
|
+
operator always_pass
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
lab_selection_criterion previous-experience {
|
|
78
|
+
weight preferred
|
|
79
|
+
parameter_type operational
|
|
80
|
+
label "Previous experience"
|
|
81
|
+
description "Labs experienced with this manufacturer are more efficient"
|
|
82
|
+
match {
|
|
83
|
+
operator always_pass
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
lab_selection_criterion mtl-relationship {
|
|
87
|
+
weight preferred
|
|
88
|
+
parameter_type operational
|
|
89
|
+
label "MTL relationship"
|
|
90
|
+
description "Scheme A: manufacturer test lab co-assignment"
|
|
91
|
+
match {
|
|
92
|
+
operator has_capability
|
|
93
|
+
required_capability "manufacturer-test-lab"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# oiml-r60 — sample selection rules + specimen governance (kernel 1.14.0's sample_selection_rule + specimen_governance_rule, TODO.roadmap/40 family G).
|
|
2
|
+
sample_selection_rule D.2.2-smallest-per-group {
|
|
3
|
+
step "D.2.2"
|
|
4
|
+
rule "For each MeasuringInstrumentModelGroup, identify the model with the smallest e_max"
|
|
5
|
+
rationale "R 60-2 §2.4.3: for any group, the smallest capacity load cell in the group shall always be selected for test (unless covered by a selected cell with better characteristics per §2.4.1/§2.4.2)."
|
|
6
|
+
applicability "always"
|
|
7
|
+
selector "MIN(e_max) GROUP BY group_id"
|
|
8
|
+
test_kind full_evaluation
|
|
9
|
+
}
|
|
10
|
+
sample_selection_rule D.2.3-merit-walk {
|
|
11
|
+
step "D.2.3"
|
|
12
|
+
rule "Begin with the group with the best metrological characteristics (highest accuracy_class > highest n_lc > lowest v_min). Within that group, walk capacities from smallest to largest. Select the next capacity that is between 5× and 10× the previously selected capacity. When no capacity meets this criterion, select the smallest capacity exceeding 10×."
|
|
13
|
+
rationale "R 60-2 §2.4.4 (5–10× capacity ratio rule)"
|
|
14
|
+
applicability "always"
|
|
15
|
+
selector "GROUPS SORTED BY (accuracy_class DESC, n_lc DESC, v_min ASC) THEN WITHIN GROUP: e_max ASC PICK WHERE previous.e_max * 5 <= e_max <= previous.e_max * 10 OR (no match) MIN(e_max) WHERE e_max > previous.e_max * 10"
|
|
16
|
+
test_kind full_evaluation
|
|
17
|
+
}
|
|
18
|
+
sample_selection_rule D.2.4-D.2.5-remaining-groups {
|
|
19
|
+
step "D.2.4"
|
|
20
|
+
rule "Repeat Step 2 for each remaining group in merit order"
|
|
21
|
+
rationale "R 60-2 §2.4.3–§2.4.4"
|
|
22
|
+
applicability "groups.length > 1"
|
|
23
|
+
selector "FOR each remaining group IN merit order: apply D.2.3-merit-walk"
|
|
24
|
+
test_kind full_evaluation
|
|
25
|
+
}
|
|
26
|
+
sample_selection_rule D.2.6-deduplicate-capacity {
|
|
27
|
+
step "D.2.6"
|
|
28
|
+
rule "Compare load cells of the same capacity from different groups. For each capacity, retain only the one with the highest accuracy class, highest n_lc, and lowest v_min. Others of the same capacity are presumed to comply (R 60-2 §2.4.6)."
|
|
29
|
+
rationale "R 60-2 §2.4.1 — same capacity across groups: test only the most onerous"
|
|
30
|
+
applicability "always"
|
|
31
|
+
selector "GROUP BY e_max KEEP ONE WITH MAX(accuracy_class), MAX(n_lc), MIN(v_min)"
|
|
32
|
+
test_kind deduplicate
|
|
33
|
+
}
|
|
34
|
+
sample_selection_rule D.2.6-partial-evaluation-flags {
|
|
35
|
+
step "D.2.6"
|
|
36
|
+
rule "If a non-selected load cell of the same capacity has lower v_min or higher y than the selected one, flag for partial evaluation: - Lower v_min or higher y → additional temperature-MDLO + barometric pressure tests - Higher y → additional creep and DR tests"
|
|
37
|
+
rationale "R 60-2 §2.4.6 — cross-group characteristic coverage"
|
|
38
|
+
applicability "selected.length > 0"
|
|
39
|
+
selector "WHERE same_e_max(non_selected, selected) AND (non_selected.v_min < selected.v_min OR non_selected.y > selected.y)"
|
|
40
|
+
test_kind partial_evaluation
|
|
41
|
+
additional_tests { temperature_mdlo "Triggered by lower v_min or higher y" barometric_pressure "Triggered by lower v_min or higher y" creep_dr "Triggered by higher y only" }
|
|
42
|
+
}
|
|
43
|
+
sample_selection_rule D.2.7-humidity-sample {
|
|
44
|
+
step "D.2.7"
|
|
45
|
+
rule "Select the load cell with the most severe characteristics for humidity testing (highest n_lc or lowest v_min)"
|
|
46
|
+
rationale "R 60-2 §2.4.5"
|
|
47
|
+
applicability "any group has humidity_symbol = CH OR SH"
|
|
48
|
+
selector "ORDER BY n_lc DESC, v_min ASC LIMIT 1"
|
|
49
|
+
test_kind humidity
|
|
50
|
+
single_sample true
|
|
51
|
+
}
|
|
52
|
+
sample_selection_rule D.2.8-digital-additional {
|
|
53
|
+
step "D.2.8"
|
|
54
|
+
rule "For analogue-active load cells with non-differing active electronics and digital load cells with a non-differing digital converter, all applicable tests shall be performed on the load cell with the minimum µV/v_min input to the analogue-to-digital converter (adc_input_per_v_min = rated_output × excitation / n_LC)."
|
|
55
|
+
rationale "R 60-2 §2.4.6 (minimum µV/v_min selector; supersedes the former n_lc/v_min severity ordering, which only coincided with the source rule by correlation)"
|
|
56
|
+
applicability "family.technology = analogue-active OR digital"
|
|
57
|
+
selector "ORDER BY adc_input_per_v_min ASC LIMIT 1"
|
|
58
|
+
test_kind digital_additional
|
|
59
|
+
single_sample true
|
|
60
|
+
}
|
|
61
|
+
sample_selection_rule practical-minimum {
|
|
62
|
+
rule "Total selected samples must be >= 1 (the family must yield at least one testable cell)"
|
|
63
|
+
rationale "Sanity check"
|
|
64
|
+
applicability "always"
|
|
65
|
+
selector "selected.length >= 1"
|
|
66
|
+
post "If 0, the family has no testable load cells — reject application"
|
|
67
|
+
}
|
|
68
|
+
sample_selection_rule practical-maximum {
|
|
69
|
+
rule "Total selected samples should not exceed 6 without IA review"
|
|
70
|
+
rationale "Practical logistics limit"
|
|
71
|
+
applicability "always"
|
|
72
|
+
selector "selected.length <= 6"
|
|
73
|
+
post "If > 6, IA reviews and may consolidate (e.g., drop mid-range duplicates)"
|
|
74
|
+
}
|
|
75
|
+
sample_selection_rule deemed-to-comply-extension {
|
|
76
|
+
rule "Load cells of the same family with a capacity in between the capacities tested, and those above the largest capacity tested but not over 5 times the largest capacity tested, may be included in the certificate and are deemed to fulfil the requirements — provided there is no change of measurement principle or construction material (e.g. bending beam to shear beam, stainless steel replacing aluminium)."
|
|
77
|
+
rationale "R 60-2, 2.4.2 (certificate extension without additional testing)"
|
|
78
|
+
applicability "family has tested capacities spanning the applied range"
|
|
79
|
+
selector "certify WHERE (min_tested <= e_max <= max_tested) OR (e_max <= 5 * max_tested)"
|
|
80
|
+
post "Mark covered models as deemed-to-comply in the certificate scope"
|
|
81
|
+
}
|
|
82
|
+
specimen_governance_rule unit-continuity {
|
|
83
|
+
rule "All accuracy and influence tests, including the span stability test for digital load cells, shall be performed on the SAME unit. Disturbance tests on digital load cells may be carried out (simultaneously) on not more than two additional load cells."
|
|
84
|
+
rationale "R 60-2, 2.4"
|
|
85
|
+
applicability "always"
|
|
86
|
+
constraint "test_runs.group_by(test_kind).all { |g| g.unit_id = same_unit } unless test_kind = disturbance_digital"
|
|
87
|
+
post "Violations invalidate the affected runs (not a fail — see preconditions, task 08)"
|
|
88
|
+
}
|
|
89
|
+
specimen_governance_rule modification-retest {
|
|
90
|
+
rule "If a specimen fails a specific test as a result of the design of the type and has to be modified, the applicant shall modify ALL specimens supplied for test; the other submitted specimens shall then be re-tested — a repeat of the specific test or a complete re-test depending on the modification."
|
|
91
|
+
rationale "R 60-2, 2.3"
|
|
92
|
+
applicability "a test fails on a design defect"
|
|
93
|
+
post "re-test required; scope (specific vs complete) decided by the issuing authority"
|
|
94
|
+
}
|
|
95
|
+
specimen_governance_rule repair-vs-modification {
|
|
96
|
+
rule "If a specimen experiences malfunction or breakage necessitating repair, the applicant shall verify whether it is an incident or requires a design modification; in the latter case the modification applies to ALL specimens and the documentation is updated accordingly. If the issuing authority has reason to believe a modification or repair could change test outcomes, those tests shall be repeated and the reason recorded in the test report."
|
|
97
|
+
rationale "R 60-2, 2.3"
|
|
98
|
+
applicability "a specimen is repaired during evaluation"
|
|
99
|
+
post "IA decides repetition; repetition reason is mandatory in the report"
|
|
100
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# oiml-r91 — lab selection criteria (kernel 1.14.0's lab_selection_criterion, TODO.roadmap/40 family G): the parameter→capability matching register the test-design linker resolves.
|
|
2
|
+
lab_selection_criterion accreditation-scope {
|
|
3
|
+
weight required
|
|
4
|
+
parameter_type dimension
|
|
5
|
+
label "Accreditation scope"
|
|
6
|
+
description "Lab must be OIML-accredited for speed meters of the model's working principle (category tests differ per principle, R 91-2, 7.1–7.5)"
|
|
7
|
+
match {
|
|
8
|
+
operator capability_prefix_match
|
|
9
|
+
required_capability_prefix "accredited-r91-"
|
|
10
|
+
model_field working_principle
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
lab_selection_criterion field-test-sites {
|
|
14
|
+
weight required
|
|
15
|
+
parameter_type dimension
|
|
16
|
+
label "Field-test site access"
|
|
17
|
+
description "The metrological field test (R 91-2, 4) requires real-traffic sites: a motorway with at least two lanes per driving direction with regular overtaking and a road with opposite-direction traffic (4.2). Applies to every speed meter (stationary meters and moving meters in stationary mode). The lab must declare the \"field-test-sites\" capability."
|
|
18
|
+
match {
|
|
19
|
+
operator has_capability
|
|
20
|
+
required_capability "field-test-sites"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
lab_selection_criterion moving-field-test-vehicles {
|
|
24
|
+
weight required
|
|
25
|
+
parameter_type dimension
|
|
26
|
+
label "Moving field-test vehicles"
|
|
27
|
+
description "Moving field tests (R 91-2, 7.7.1/7.7.2) require a test vehicle and a reference vehicle carrying a reference (ego) speed meter within the 7.7.1/7.7.2 uncertainty budgets. The lab must declare the \"moving-field-test-vehicles\" capability."
|
|
28
|
+
applies_when { model_field mode_of_use in { moving } }
|
|
29
|
+
match {
|
|
30
|
+
operator has_capability
|
|
31
|
+
required_capability "moving-field-test-vehicles"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
lab_selection_criterion traffic-simulator {
|
|
35
|
+
weight required
|
|
36
|
+
parameter_type dimension
|
|
37
|
+
label "Validated traffic simulator"
|
|
38
|
+
description "Laboratory tests (R 91-2, 5) need a traffic simulator (5.2: validated against a road measurement series, uncertainty within the simulator budget 0.2 km/h / 0.2 %). The lab must declare the \"traffic-simulator\" capability."
|
|
39
|
+
match {
|
|
40
|
+
operator has_capability
|
|
41
|
+
required_capability "traffic-simulator"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
lab_selection_criterion d11-environmental-equipment {
|
|
45
|
+
weight required
|
|
46
|
+
parameter_type dimension
|
|
47
|
+
label "OIML D 11 environmental test equipment"
|
|
48
|
+
description "The influence factor and disturbance rows (R 91-2, 6.1 Tables 1–2) require OIML D 11 climatic/mechanical/electromagnetic test equipment at the severities of the family's declared environment classes (R 91-1, 6.17.1–6.17.3). The lab must declare the \"d11-environmental-equipment\" capability."
|
|
49
|
+
match {
|
|
50
|
+
operator has_capability
|
|
51
|
+
required_capability "d11-environmental-equipment"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
lab_selection_criterion software-examination-d31 {
|
|
55
|
+
weight required
|
|
56
|
+
parameter_type dimension
|
|
57
|
+
label "OIML D 31 software examination"
|
|
58
|
+
description "Software examinations (R 91-2, 8) are performed at D 31 examination level A with AD/VFTM/VFTSw evaluation methods. The lab must declare the \"software-examination-d31\" capability."
|
|
59
|
+
match {
|
|
60
|
+
operator has_capability
|
|
61
|
+
required_capability "software-examination-d31"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
lab_selection_criterion image-evidence-evaluation {
|
|
65
|
+
weight required
|
|
66
|
+
parameter_type dimension
|
|
67
|
+
label "Image-evidence evaluation"
|
|
68
|
+
description "Image-based and camera-equipped meters require image-evidence assignment evaluation (R 91-2, 4.8; R 91-1, 6.14). The lab must declare the \"image-evidence-evaluation\" capability."
|
|
69
|
+
applies_when { model_field working_principle in { image-based average-speed } }
|
|
70
|
+
match {
|
|
71
|
+
operator has_capability
|
|
72
|
+
required_capability "image-evidence-evaluation"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
lab_selection_criterion capacity {
|
|
76
|
+
weight preferred
|
|
77
|
+
parameter_type operational
|
|
78
|
+
label "Current capacity"
|
|
79
|
+
description "Lab bandwidth to take on work within the schedule (field tests are weather/traffic dependent)"
|
|
80
|
+
match {
|
|
81
|
+
operator always_pass
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
lab_selection_criterion geography {
|
|
85
|
+
weight preferred
|
|
86
|
+
parameter_type operational
|
|
87
|
+
label "Geographic proximity"
|
|
88
|
+
description "Proximity to manufacturer, IA, or suitable field-test sites"
|
|
89
|
+
match {
|
|
90
|
+
operator always_pass
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
lab_selection_criterion previous-experience {
|
|
94
|
+
weight preferred
|
|
95
|
+
parameter_type operational
|
|
96
|
+
label "Previous experience"
|
|
97
|
+
description "Labs experienced with this manufacturer or working principle are more efficient"
|
|
98
|
+
match {
|
|
99
|
+
operator always_pass
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
lab_selection_criterion mtl-relationship {
|
|
103
|
+
weight preferred
|
|
104
|
+
parameter_type operational
|
|
105
|
+
label "MTL relationship"
|
|
106
|
+
description "Scheme A: manufacturer test lab co-assignment"
|
|
107
|
+
match {
|
|
108
|
+
operator has_capability
|
|
109
|
+
required_capability "manufacturer-test-lab"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# oiml-r91 — sample selection rules + specimen governance (kernel 1.14.0's sample_selection_rule + specimen_governance_rule, TODO.roadmap/40 family G).
|
|
2
|
+
sample_selection_rule minimum-one-eut {
|
|
3
|
+
rule "Type evaluation is performed on at least one EUT which represents the definitive type; the applicant supplies at least one production EUT"
|
|
4
|
+
rationale "R 91-1, 8.1.2 paragraphs 1/3"
|
|
5
|
+
applicability "always"
|
|
6
|
+
selector "selected.length >= 1"
|
|
7
|
+
post "If 0, no type evaluation can start — reject the application"
|
|
8
|
+
}
|
|
9
|
+
sample_selection_rule simultaneous-euts {
|
|
10
|
+
rule "The testing laboratory may carry out different tests simultaneously on two or three EUTs, ensuring that ALL submitted instruments conform to type"
|
|
11
|
+
rationale "R 91-1, 8.1.2 paragraph 4"
|
|
12
|
+
applicability "selected.length > 1"
|
|
13
|
+
selector "selected.length <= 3"
|
|
14
|
+
post "With 2-3 EUTs the laboratory must ensure every submitted instrument conforms; otherwise repeat on a single EUT"
|
|
15
|
+
}
|
|
16
|
+
sample_selection_rule no-adjustment-after-start {
|
|
17
|
+
rule "The EUT may be adjusted before type approval testing begins; thereafter NO adjustment is performed until all type approval testing is complete"
|
|
18
|
+
rationale "R 91-1, 8.1.2 last paragraph"
|
|
19
|
+
applicability "always"
|
|
20
|
+
post "An adjustment after testing starts invalidates the affected completed runs (re-test required)"
|
|
21
|
+
}
|
|
22
|
+
specimen_governance_rule eut-continuity {
|
|
23
|
+
rule "All accuracy and influence tests shall be performed on the SAME EUT. Disturbance tests may be performed on ONE more additional EUT, which shall also be submitted beforehand to the accuracy tests."
|
|
24
|
+
rationale "R 91-1, 8.1.2 paragraph 5"
|
|
25
|
+
applicability "always"
|
|
26
|
+
constraint "test_runs.group_by(test_kind).all { |g| g.unit_id = same_unit } unless test_kind = disturbance"
|
|
27
|
+
post "Violations invalidate the affected runs (not a fail — see preconditions)"
|
|
28
|
+
}
|
|
29
|
+
specimen_governance_rule modification-retest {
|
|
30
|
+
rule "If an EUT does not pass a specific test and as a result has to be modified or repaired, the applicant shall carry out this modification to ALL EUTs supplied for testing. If the testing laboratory cannot exclude that the modification has a negative influence on tests that already had a positive result, these tests shall be repeated."
|
|
31
|
+
rationale "R 91-1, 8.1.2 paragraphs 6-7"
|
|
32
|
+
applicability "a test fails on a design defect"
|
|
33
|
+
post "re-test required for the affected tests; scope decided by the testing laboratory and recorded in the test report"
|
|
34
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oimlsmart/primmel-packages",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.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": {
|