@oimlsmart/primmel-packages 0.18.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.
@@ -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,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
+ }
@@ -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,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.18.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": {