@oimlsmart/primmel-packages 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/AGENTS.md +60 -0
  2. package/LICENSE +21 -0
  3. package/README.md +68 -0
  4. package/acme-cgm-200/model/cgm200.prl +284 -0
  5. package/acme-cgm-200/model/r144-map.prl +337 -0
  6. package/acme-cgm-200/package.primmel +39 -0
  7. package/acme-cgm-system/model/cgm-system.prl +125 -0
  8. package/acme-cgm-system/model/r144-map.prl +75 -0
  9. package/acme-cgm-system/model/sample-line.prl +42 -0
  10. package/acme-cgm-system/package.primmel +23 -0
  11. package/acme-lc500/model/lc500.prl +218 -0
  12. package/acme-lc500/model/passport.prl +43 -0
  13. package/acme-lc500/model/r60-map.prl +161 -0
  14. package/acme-lc500/model/twin-cert-map.prl +114 -0
  15. package/acme-lc500/package.primmel +35 -0
  16. package/acme-md3xx/model/md350.prl +317 -0
  17. package/acme-md3xx/model/r129-map.prl +346 -0
  18. package/acme-md3xx/package.primmel +49 -0
  19. package/acme-rs180/model/r91-map.prl +234 -0
  20. package/acme-rs180/model/rs180.prl +236 -0
  21. package/acme-rs180/package.primmel +47 -0
  22. package/ims-demo/model/ims.prl +23 -0
  23. package/ims-demo/model/isms-map.prl +60 -0
  24. package/ims-demo/model/qms-map.prl +73 -0
  25. package/ims-demo/package.primmel +42 -0
  26. package/isms-ref/model/isms.prl +34 -0
  27. package/isms-ref/package.primmel +35 -0
  28. package/iso-iec-17000/package.primmel +8 -0
  29. package/iso-iec-17000/terminology.prl +268 -0
  30. package/iso-iec-17025/package.primmel +10 -0
  31. package/iso-iec-17025/specification/requirements/lab.prl +474 -0
  32. package/iso-iec-17025/terminology.prl +72 -0
  33. package/iso-iec-17065/package.primmel +10 -0
  34. package/iso-iec-17065/specification/requirements/body.prl +446 -0
  35. package/iso-iec-17065/terminology.prl +103 -0
  36. package/iso-iec-17067/package.primmel +10 -0
  37. package/iso-iec-17067/specification/requirements/scheme-content.prl +300 -0
  38. package/iso-iec-17067/terminology.prl +24 -0
  39. package/oiml-cs/package.primmel +10 -0
  40. package/oiml-cs/specification/discrepancies.prl +26 -0
  41. package/oiml-cs/specification/requirements/cs.prl +515 -0
  42. package/oiml-cs-dataspace/.primmel-allowlist.prl +25 -0
  43. package/oiml-cs-dataspace/package.primmel +9 -0
  44. package/oiml-cs-dataspace/specification/dataspace.prl +73 -0
  45. package/oiml-cs-dataspace/specification/policies.prl +68 -0
  46. package/oiml-integrated-ref/model/probe-pairing.prl +71 -0
  47. package/oiml-integrated-ref/package.primmel +10 -0
  48. package/oiml-r129/.primmel-allowlist.prl +2 -0
  49. package/oiml-r129/evaluation/processes.prl +152 -0
  50. package/oiml-r129/evaluation/workflow.prl +48 -0
  51. package/oiml-r129/execution/forms/admin/adjustments-modifications.prl +30 -0
  52. package/oiml-r129/execution/forms/admin/checklist.prl +70 -0
  53. package/oiml-r129/execution/forms/admin/configuration.prl +31 -0
  54. package/oiml-r129/execution/forms/admin/equipment-info.prl +27 -0
  55. package/oiml-r129/execution/forms/admin/general-info.prl +63 -0
  56. package/oiml-r129/execution/forms/admin/identification.prl +49 -0
  57. package/oiml-r129/execution/forms/admin/sample-selection.prl +30 -0
  58. package/oiml-r129/execution/forms/admin/summary-results.prl +50 -0
  59. package/oiml-r129/execution/forms/emc/bursts.prl +88 -0
  60. package/oiml-r129/execution/forms/emc/esd.prl +66 -0
  61. package/oiml-r129/execution/forms/emc/low-voltage-battery.prl +58 -0
  62. package/oiml-r129/execution/forms/emc/rf-immunity-conducted.prl +59 -0
  63. package/oiml-r129/execution/forms/emc/rf-immunity-radiated.prl +59 -0
  64. package/oiml-r129/execution/forms/emc/surge.prl +61 -0
  65. package/oiml-r129/execution/forms/emc/voltage-dips.prl +62 -0
  66. package/oiml-r129/execution/forms/emc/voltage-variation.prl +58 -0
  67. package/oiml-r129/execution/forms/env/damp-heat-cyclic.prl +43 -0
  68. package/oiml-r129/execution/forms/env/damp-heat-steady.prl +50 -0
  69. package/oiml-r129/execution/forms/env/static-temperatures.prl +61 -0
  70. package/oiml-r129/execution/forms/shared/headers.prl +86 -0
  71. package/oiml-r129/execution/forms/tests/acoustics.prl +44 -0
  72. package/oiml-r129/execution/forms/tests/ambient-light.prl +46 -0
  73. package/oiml-r129/execution/forms/tests/construction-examination.prl +46 -0
  74. package/oiml-r129/execution/forms/tests/examination-checklist.prl +51 -0
  75. package/oiml-r129/execution/forms/tests/object-shape.prl +43 -0
  76. package/oiml-r129/execution/forms/tests/orientation-position.prl +31 -0
  77. package/oiml-r129/execution/forms/tests/repeatability.prl +65 -0
  78. package/oiml-r129/execution/forms/tests/speed-movement.prl +59 -0
  79. package/oiml-r129/execution/forms/tests/surface-characteristics.prl +44 -0
  80. package/oiml-r129/execution/forms/tests/warm-up-time.prl +35 -0
  81. package/oiml-r129/execution/subforms/dimension-measurement.prl +93 -0
  82. package/oiml-r129/layers.prl +50 -0
  83. package/oiml-r129/model/attributes.prl +243 -0
  84. package/oiml-r129/model/behaviors.prl +79 -0
  85. package/oiml-r129/model/capabilities.prl +29 -0
  86. package/oiml-r129/model/characteristics.prl +8 -0
  87. package/oiml-r129/model/conditions.prl +23 -0
  88. package/oiml-r129/model/instrument.prl +67 -0
  89. package/oiml-r129/model/state.prl +22 -0
  90. package/oiml-r129/model/twin.prl +23 -0
  91. package/oiml-r129/package.primmel +15 -0
  92. package/oiml-r129/payload/application.yaml +40 -0
  93. package/oiml-r129/payload/conditions-common-test.yaml +8 -0
  94. package/oiml-r129/payload/formulas-variants.yaml +33 -0
  95. package/oiml-r129/payload/promises.yaml +102 -0
  96. package/oiml-r129/payload/sample-data.yaml +300 -0
  97. package/oiml-r129/references.prl +306 -0
  98. package/oiml-r129/sources-prd/coverage.json +59 -0
  99. package/oiml-r129/sources-prd/r129-1.sentences.json +4238 -0
  100. package/oiml-r129/sources-prd/r129-2.sentences.json +1139 -0
  101. package/oiml-r129/sources-prd/r129-3.sentences.json +3809 -0
  102. package/oiml-r129/sources-prd/r129-4.sentences.json +1227 -0
  103. package/oiml-r129/specification/calculations.prl +83 -0
  104. package/oiml-r129/specification/conformance/disturbance-tests.prl +212 -0
  105. package/oiml-r129/specification/conformance/effect-tests.prl +70 -0
  106. package/oiml-r129/specification/conformance/examinations.prl +83 -0
  107. package/oiml-r129/specification/conformance/metrological-tests.prl +178 -0
  108. package/oiml-r129/specification/formulas.prl +9 -0
  109. package/oiml-r129/specification/requirements/electronic.prl +46 -0
  110. package/oiml-r129/specification/requirements/metrological.prl +83 -0
  111. package/oiml-r129/specification/requirements/object-limitations.prl +99 -0
  112. package/oiml-r129/specification/requirements/software.prl +57 -0
  113. package/oiml-r129/specification/requirements/technical.prl +134 -0
  114. package/oiml-r129/specification/symbols.prl +187 -0
  115. package/oiml-r129/specification/tables.prl +74 -0
  116. package/oiml-r129/terminology.prl +415 -0
  117. package/oiml-r129/value-types.prl +40 -0
  118. package/oiml-r144/.primmel-allowlist.prl +2 -0
  119. package/oiml-r144/entities/instrument.prl +360 -0
  120. package/oiml-r144/entities/test-execution.prl +228 -0
  121. package/oiml-r144/entities/workflow.prl +2075 -0
  122. package/oiml-r144/evaluation/processes.prl +152 -0
  123. package/oiml-r144/evaluation/workflow.prl +48 -0
  124. package/oiml-r144/execution/forms/sec-3-report/03-01-laboratory-info.prl +19 -0
  125. package/oiml-r144/execution/forms/sec-3-report/03-02-test-location.prl +14 -0
  126. package/oiml-r144/execution/forms/sec-3-report/03-03-manufacturer-info.prl +18 -0
  127. package/oiml-r144/execution/forms/sec-3-report/03-04-applicant-info.prl +19 -0
  128. package/oiml-r144/execution/forms/sec-3-report/03-05-type-identification.prl +80 -0
  129. package/oiml-r144/execution/forms/sec-3-report/03-06-type-composition.prl +31 -0
  130. package/oiml-r144/execution/forms/sec-3-report/03-07-visual-examination.prl +46 -0
  131. package/oiml-r144/execution/forms/sec-3-report/03-08-test-conclusions.prl +46 -0
  132. package/oiml-r144/execution/forms/sec-3-report/03-09-general-conclusion.prl +19 -0
  133. package/oiml-r144/execution/forms/sec-3-report/03-10-responsible-persons.prl +27 -0
  134. package/oiml-r144/execution/forms/sec-tests/ambient-pressure-test.prl +59 -0
  135. package/oiml-r144/execution/forms/sec-tests/bursts-mains-test.prl +52 -0
  136. package/oiml-r144/execution/forms/sec-tests/bursts-signal-test.prl +55 -0
  137. package/oiml-r144/execution/forms/sec-tests/cold-test.prl +48 -0
  138. package/oiml-r144/execution/forms/sec-tests/cross-sensitivity-test.prl +92 -0
  139. package/oiml-r144/execution/forms/sec-tests/damp-heat-test.prl +50 -0
  140. package/oiml-r144/execution/forms/sec-tests/documentation-examination.prl +52 -0
  141. package/oiml-r144/execution/forms/sec-tests/drift-test.prl +83 -0
  142. package/oiml-r144/execution/forms/sec-tests/dry-heat-test.prl +53 -0
  143. package/oiml-r144/execution/forms/sec-tests/error-determination.prl +37 -0
  144. package/oiml-r144/execution/forms/sec-tests/esd-test.prl +53 -0
  145. package/oiml-r144/execution/forms/sec-tests/flow-spillover-test.prl +83 -0
  146. package/oiml-r144/execution/forms/sec-tests/leakproofness-test.prl +41 -0
  147. package/oiml-r144/execution/forms/sec-tests/low-battery-test.prl +48 -0
  148. package/oiml-r144/execution/forms/sec-tests/power-reduction-test.prl +49 -0
  149. package/oiml-r144/execution/forms/sec-tests/power-supply-test.prl +57 -0
  150. package/oiml-r144/execution/forms/sec-tests/repeatability-test.prl +60 -0
  151. package/oiml-r144/execution/forms/sec-tests/response-time-test.prl +43 -0
  152. package/oiml-r144/execution/forms/sec-tests/rf-emf-test.prl +47 -0
  153. package/oiml-r144/execution/forms/sec-tests/shock-test.prl +50 -0
  154. package/oiml-r144/execution/forms/sec-tests/surge-test.prl +52 -0
  155. package/oiml-r144/execution/forms/sec-tests/vibration-test.prl +58 -0
  156. package/oiml-r144/execution/forms/sec-tests/warm-up-time-test.prl +69 -0
  157. package/oiml-r144/execution/forms/shared/headers.prl +132 -0
  158. package/oiml-r144/execution/subforms/cgm-point.prl +99 -0
  159. package/oiml-r144/layers.prl +44 -0
  160. package/oiml-r144/model/attributes.prl +679 -0
  161. package/oiml-r144/model/behaviors.prl +117 -0
  162. package/oiml-r144/model/capabilities.prl +99 -0
  163. package/oiml-r144/model/characteristics.prl +27 -0
  164. package/oiml-r144/model/conditions.prl +46 -0
  165. package/oiml-r144/model/instrument.prl +85 -0
  166. package/oiml-r144/model/state.prl +18 -0
  167. package/oiml-r144/model/twin.prl +25 -0
  168. package/oiml-r144/package.primmel +15 -0
  169. package/oiml-r144/payload/application.yaml +80 -0
  170. package/oiml-r144/payload/attributes-pair-list.yaml +18 -0
  171. package/oiml-r144/payload/conditions-common-test.yaml +74 -0
  172. package/oiml-r144/payload/formulas-variants.yaml +32 -0
  173. package/oiml-r144/payload/promises.yaml +118 -0
  174. package/oiml-r144/payload/sample-data.yaml +643 -0
  175. package/oiml-r144/references.prl +594 -0
  176. package/oiml-r144/sources-prd/coverage.json +114 -0
  177. package/oiml-r144/sources-prd/r144-1.sentences.json +2797 -0
  178. package/oiml-r144/sources-prd/r144-2.sentences.json +1627 -0
  179. package/oiml-r144/sources-prd/r144-3.sentences.json +838 -0
  180. package/oiml-r144/specification/calculations.prl +123 -0
  181. package/oiml-r144/specification/conformance/examination.prl +87 -0
  182. package/oiml-r144/specification/conformance/performance-tests.prl +755 -0
  183. package/oiml-r144/specification/formulas.prl +37 -0
  184. package/oiml-r144/specification/reference-materials.prl +87 -0
  185. package/oiml-r144/specification/requirements/controls.prl +51 -0
  186. package/oiml-r144/specification/requirements/metrological.prl +299 -0
  187. package/oiml-r144/specification/requirements/report.prl +35 -0
  188. package/oiml-r144/specification/requirements/technical.prl +455 -0
  189. package/oiml-r144/specification/symbols.prl +357 -0
  190. package/oiml-r144/specification/tables.prl +95 -0
  191. package/oiml-r144/specification/test-point-sets.prl +15 -0
  192. package/oiml-r144/terminology.prl +308 -0
  193. package/oiml-r144/value-types.prl +49 -0
  194. package/oiml-r60/.primmel-allowlist.prl +2 -0
  195. package/oiml-r60/entities/workflow.prl +2079 -0
  196. package/oiml-r60/evaluation/processes.prl +152 -0
  197. package/oiml-r60/evaluation/workflow.prl +48 -0
  198. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-01-authority-info.prl +76 -0
  199. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-02-synopsis.prl +20 -0
  200. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-03-01-examinations.prl +27 -0
  201. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-03-02-a-performance-general.prl +81 -0
  202. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-03-02-b-performance-digital.prl +104 -0
  203. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-04-01-manufacturer.prl +21 -0
  204. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-04-02-applicant.prl +44 -0
  205. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-04-03-testing-laboratories.prl +69 -0
  206. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-05-load-cell-type-info.prl +83 -0
  207. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-06-accessories.prl +41 -0
  208. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-07-sample-selection.prl +71 -0
  209. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-01-general-info.prl +103 -0
  210. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-02-performance-info.prl +66 -0
  211. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-03-digital-info.prl +35 -0
  212. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-04-photographs.prl +12 -0
  213. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-05-documentation.prl +27 -0
  214. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-06-inscriptions.prl +126 -0
  215. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-07-model-range.prl +143 -0
  216. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-12-previous-tests.prl +26 -0
  217. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-01-force-generating-system.prl +89 -0
  218. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-02-weights.prl +61 -0
  219. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-03-temperature-chamber.prl +96 -0
  220. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-04-climate-chamber.prl +96 -0
  221. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-05-indicator.prl +92 -0
  222. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-06-terminal.prl +86 -0
  223. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-07-barometric-pressure-meter.prl +62 -0
  224. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-08-thermometer.prl +62 -0
  225. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-09-moisture-analyser.prl +62 -0
  226. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-10-additional-test-equipment.prl +69 -0
  227. package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-11-remarks.prl +11 -0
  228. package/oiml-r60/execution/forms/sec-4-evaluation-report/test-usage-matrix.prl +85 -0
  229. package/oiml-r60/execution/forms/sec-5-examination/documentation-examination.prl +53 -0
  230. package/oiml-r60/execution/forms/sec-5-examination/marking-examination.prl +104 -0
  231. package/oiml-r60/execution/forms/sec-5-examination/software-examination.prl +86 -0
  232. package/oiml-r60/execution/forms/sec-5-examination/suitability-examination.prl +56 -0
  233. package/oiml-r60/execution/forms/sec-6-performance-tests/barometric-pressure.prl +176 -0
  234. package/oiml-r60/execution/forms/sec-6-performance-tests/bursts.prl +129 -0
  235. package/oiml-r60/execution/forms/sec-6-performance-tests/conducted-emc.prl +170 -0
  236. package/oiml-r60/execution/forms/sec-6-performance-tests/creep-dr.prl +327 -0
  237. package/oiml-r60/execution/forms/sec-6-performance-tests/emc-susceptibility.prl +115 -0
  238. package/oiml-r60/execution/forms/sec-6-performance-tests/esd.prl +224 -0
  239. package/oiml-r60/execution/forms/sec-6-performance-tests/humidity-ch.prl +300 -0
  240. package/oiml-r60/execution/forms/sec-6-performance-tests/humidity-sh.prl +235 -0
  241. package/oiml-r60/execution/forms/sec-6-performance-tests/initial-tests.prl +129 -0
  242. package/oiml-r60/execution/forms/sec-6-performance-tests/load-cell-errors.prl +280 -0
  243. package/oiml-r60/execution/forms/sec-6-performance-tests/load-test.prl +29 -0
  244. package/oiml-r60/execution/forms/sec-6-performance-tests/performance-test-summary.prl +82 -0
  245. package/oiml-r60/execution/forms/sec-6-performance-tests/power-voltage.prl +166 -0
  246. package/oiml-r60/execution/forms/sec-6-performance-tests/repeatability.prl +189 -0
  247. package/oiml-r60/execution/forms/sec-6-performance-tests/short-time-power.prl +98 -0
  248. package/oiml-r60/execution/forms/sec-6-performance-tests/span-stability.prl +242 -0
  249. package/oiml-r60/execution/forms/sec-6-performance-tests/surge.prl +142 -0
  250. package/oiml-r60/execution/forms/sec-6-performance-tests/temperature-mdlo.prl +180 -0
  251. package/oiml-r60/execution/forms/sec-6-performance-tests/warm-up-time.prl +207 -0
  252. package/oiml-r60/execution/forms/shared/headers.prl +255 -0
  253. package/oiml-r60/execution/subforms/load-test-row.prl +55 -0
  254. package/oiml-r60/execution/subforms/test-procedures.prl +33 -0
  255. package/oiml-r60/layers.prl +46 -0
  256. package/oiml-r60/model/attributes.prl +642 -0
  257. package/oiml-r60/model/behaviors.prl +165 -0
  258. package/oiml-r60/model/capabilities.prl +57 -0
  259. package/oiml-r60/model/characteristics.prl +27 -0
  260. package/oiml-r60/model/conditions.prl +50 -0
  261. package/oiml-r60/model/instrument.prl +96 -0
  262. package/oiml-r60/model/processes.prl +54 -0
  263. package/oiml-r60/model/state.prl +22 -0
  264. package/oiml-r60/model/twin.prl +16 -0
  265. package/oiml-r60/package.primmel +16 -0
  266. package/oiml-r60/payload/annexes-part4.yaml +122 -0
  267. package/oiml-r60/payload/application.yaml +83 -0
  268. package/oiml-r60/payload/conditions-common-test.yaml +121 -0
  269. package/oiml-r60/payload/formulas-variants.yaml +55 -0
  270. package/oiml-r60/payload/promises.yaml +224 -0
  271. package/oiml-r60/payload/sample-data.yaml +5025 -0
  272. package/oiml-r60/payload/symbols-formula-notes.yaml +21 -0
  273. package/oiml-r60/references.prl +549 -0
  274. package/oiml-r60/sources-prd/coverage.json +740 -0
  275. package/oiml-r60/sources-prd/r60-1.sentences.json +2173 -0
  276. package/oiml-r60/sources-prd/r60-2.sentences.json +2961 -0
  277. package/oiml-r60/sources-prd/r60-3.sentences.json +4212 -0
  278. package/oiml-r60/sources-prd/r60-a.sentences.json +3361 -0
  279. package/oiml-r60/specification/calculations.prl +318 -0
  280. package/oiml-r60/specification/conformance/class-specific.prl +1120 -0
  281. package/oiml-r60/specification/conformance/electronic.prl +483 -0
  282. package/oiml-r60/specification/conformance/examination.prl +183 -0
  283. package/oiml-r60/specification/conformance/metrological.prl +478 -0
  284. package/oiml-r60/specification/constraints.prl +58 -0
  285. package/oiml-r60/specification/formulas-used.prl +43 -0
  286. package/oiml-r60/specification/formulas.prl +20 -0
  287. package/oiml-r60/specification/requirements/class-specific.prl +655 -0
  288. package/oiml-r60/specification/requirements/classification.prl +114 -0
  289. package/oiml-r60/specification/requirements/electronic.prl +222 -0
  290. package/oiml-r60/specification/requirements/metrological.prl +381 -0
  291. package/oiml-r60/specification/requirements/technical.prl +146 -0
  292. package/oiml-r60/specification/symbols.prl +599 -0
  293. package/oiml-r60/specification/tables.prl +182 -0
  294. package/oiml-r60/specification/test-sequences.prl +72 -0
  295. package/oiml-r60/terminology.prl +920 -0
  296. package/oiml-r60/value-types.prl +46 -0
  297. package/oiml-r91/.primmel-allowlist.prl +3 -0
  298. package/oiml-r91/entities/instrument.prl +359 -0
  299. package/oiml-r91/entities/workflow.prl +2075 -0
  300. package/oiml-r91/evaluation/processes.prl +152 -0
  301. package/oiml-r91/evaluation/workflow.prl +48 -0
  302. package/oiml-r91/execution/forms/evidence-file.prl +41 -0
  303. package/oiml-r91/execution/forms/report-evaluation/appraisal.prl +30 -0
  304. package/oiml-r91/execution/forms/report-evaluation/checklist-summary.prl +43 -0
  305. package/oiml-r91/execution/forms/report-evaluation/checklist.prl +76 -0
  306. package/oiml-r91/execution/forms/report-evaluation/configuration-samples.prl +22 -0
  307. package/oiml-r91/execution/forms/report-evaluation/corrective-actions.prl +24 -0
  308. package/oiml-r91/execution/forms/report-evaluation/descriptions.prl +47 -0
  309. package/oiml-r91/execution/forms/report-evaluation/evaluation-identification.prl +219 -0
  310. package/oiml-r91/execution/forms/report-evaluation/test-report-summary.prl +33 -0
  311. package/oiml-r91/execution/forms/report-general/adjustments.prl +12 -0
  312. package/oiml-r91/execution/forms/report-general/alignment-aiming.prl +17 -0
  313. package/oiml-r91/execution/forms/report-general/checking-facility.prl +17 -0
  314. package/oiml-r91/execution/forms/report-general/configuration.prl +12 -0
  315. package/oiml-r91/execution/forms/report-general/identification.prl +216 -0
  316. package/oiml-r91/execution/forms/report-general/indications-controls.prl +17 -0
  317. package/oiml-r91/execution/forms/report-general/sealing.prl +21 -0
  318. package/oiml-r91/execution/forms/report-general/software-description.prl +26 -0
  319. package/oiml-r91/execution/forms/report-general/summary-environmental.prl +35 -0
  320. package/oiml-r91/execution/forms/report-general/summary-tests.prl +35 -0
  321. package/oiml-r91/execution/forms/report-general/test-equipment.prl +36 -0
  322. package/oiml-r91/execution/forms/report-general/test-interface.prl +16 -0
  323. package/oiml-r91/execution/forms/report-tests/01-01-field-test.prl +84 -0
  324. package/oiml-r91/execution/forms/report-tests/01-02-statistical-analysis.prl +76 -0
  325. package/oiml-r91/execution/forms/report-tests/01-03-image-evidence.prl +30 -0
  326. package/oiml-r91/execution/forms/report-tests/02-01-dynamic-performance.prl +92 -0
  327. package/oiml-r91/execution/forms/report-tests/02-02-speed-linearity.prl +23 -0
  328. package/oiml-r91/execution/forms/report-tests/02-03-distance-linearity.prl +67 -0
  329. package/oiml-r91/execution/forms/report-tests/02-04-angle-linearity.prl +59 -0
  330. package/oiml-r91/execution/forms/report-tests/03-01-dry-heat-operating.prl +38 -0
  331. package/oiml-r91/execution/forms/report-tests/03-02-dry-heat-storage.prl +48 -0
  332. package/oiml-r91/execution/forms/report-tests/03-03-cold-operating.prl +40 -0
  333. package/oiml-r91/execution/forms/report-tests/03-04-cold-storage.prl +48 -0
  334. package/oiml-r91/execution/forms/report-tests/03-05-damp-heat-cyclic.prl +40 -0
  335. package/oiml-r91/execution/forms/report-tests/03-06-water.prl +48 -0
  336. package/oiml-r91/execution/forms/report-tests/03-07-sand-and-dust.prl +48 -0
  337. package/oiml-r91/execution/forms/report-tests/03-08-salt-mist.prl +48 -0
  338. package/oiml-r91/execution/forms/report-tests/03-09-vibration-random.prl +40 -0
  339. package/oiml-r91/execution/forms/report-tests/03-10-mechanical-shock.prl +48 -0
  340. package/oiml-r91/execution/forms/report-tests/03-11-dc-mains-voltage-variation.prl +40 -0
  341. package/oiml-r91/execution/forms/report-tests/03-12-ripple-on-dc-mains.prl +47 -0
  342. package/oiml-r91/execution/forms/report-tests/03-13-ac-mains-voltage-variation.prl +40 -0
  343. package/oiml-r91/execution/forms/report-tests/03-14-ac-mains-frequency-variation.prl +40 -0
  344. package/oiml-r91/execution/forms/report-tests/03-15-dc-mains-voltage-dips.prl +46 -0
  345. package/oiml-r91/execution/forms/report-tests/03-16-ac-mains-voltage-dips.prl +46 -0
  346. package/oiml-r91/execution/forms/report-tests/03-17-ac-mains-frequency-harmonics.prl +47 -0
  347. package/oiml-r91/execution/forms/report-tests/03-18-vlf-lf-disturbances.prl +46 -0
  348. package/oiml-r91/execution/forms/report-tests/03-19-bursts-ac-dc-mains.prl +44 -0
  349. package/oiml-r91/execution/forms/report-tests/03-20-surges-ac-dc-mains.prl +45 -0
  350. package/oiml-r91/execution/forms/report-tests/03-21-bursts-signal-lines.prl +45 -0
  351. package/oiml-r91/execution/forms/report-tests/03-22-surges-signal-lines.prl +46 -0
  352. package/oiml-r91/execution/forms/report-tests/03-23-ac-mains-magnetic-field.prl +45 -0
  353. package/oiml-r91/execution/forms/report-tests/03-24-conducted-rf-common-mode.prl +46 -0
  354. package/oiml-r91/execution/forms/report-tests/03-25-rf-electromagnetic-fields.prl +49 -0
  355. package/oiml-r91/execution/forms/report-tests/03-26-electrostatic-discharges.prl +47 -0
  356. package/oiml-r91/execution/forms/report-tests/03-27-internal-battery-low-voltage.prl +40 -0
  357. package/oiml-r91/execution/forms/report-tests/03-28-road-vehicle-battery.prl +40 -0
  358. package/oiml-r91/execution/forms/report-tests/03-29-transient-supply-lines.prl +47 -0
  359. package/oiml-r91/execution/forms/report-tests/03-30-transient-other-lines.prl +45 -0
  360. package/oiml-r91/execution/forms/report-tests/03-31-battery-cranking.prl +45 -0
  361. package/oiml-r91/execution/forms/report-tests/03-32-load-dump.prl +47 -0
  362. package/oiml-r91/execution/forms/report-tests/03-33-acceleration.prl +66 -0
  363. package/oiml-r91/execution/forms/report-tests/03-34-further-influence.prl +60 -0
  364. package/oiml-r91/execution/forms/report-tests/03-35-installation-alignment.prl +29 -0
  365. package/oiml-r91/execution/forms/report-tests/04-01-doppler-radar.prl +43 -0
  366. package/oiml-r91/execution/forms/report-tests/04-02-range-finding.prl +42 -0
  367. package/oiml-r91/execution/forms/report-tests/04-03-average-speed.prl +41 -0
  368. package/oiml-r91/execution/forms/report-tests/04-04-fixed-distance.prl +40 -0
  369. package/oiml-r91/execution/forms/report-tests/04-05-image-based.prl +41 -0
  370. package/oiml-r91/execution/forms/report-tests/04-06-across-road.prl +42 -0
  371. package/oiml-r91/execution/forms/report-tests/05-01-moving-field-test.prl +29 -0
  372. package/oiml-r91/execution/forms/report-tests/05-02-ego-field-test.prl +57 -0
  373. package/oiml-r91/execution/forms/report-tests/05-03-moving-traffic-simulation.prl +31 -0
  374. package/oiml-r91/execution/forms/report-tests/06-01-software-general.prl +25 -0
  375. package/oiml-r91/execution/forms/report-tests/06-02-software-protection.prl +25 -0
  376. package/oiml-r91/execution/forms/report-tests/06-03-software-hardware-support.prl +24 -0
  377. package/oiml-r91/execution/forms/report-tests/06-04-software-separation.prl +25 -0
  378. package/oiml-r91/execution/forms/report-tests/06-05-software-maintenance.prl +24 -0
  379. package/oiml-r91/execution/forms/report-tests/07-general-remarks.prl +11 -0
  380. package/oiml-r91/execution/forms/shared/header-a.prl +63 -0
  381. package/oiml-r91/execution/subforms/software-matrix-row.prl +30 -0
  382. package/oiml-r91/execution/subforms/speed-measurement-row.prl +38 -0
  383. package/oiml-r91/layers.prl +46 -0
  384. package/oiml-r91/model/artifacts.prl +29 -0
  385. package/oiml-r91/model/attributes.prl +698 -0
  386. package/oiml-r91/model/behaviors.prl +142 -0
  387. package/oiml-r91/model/capabilities.prl +88 -0
  388. package/oiml-r91/model/characteristics.prl +27 -0
  389. package/oiml-r91/model/conditions.prl +37 -0
  390. package/oiml-r91/model/instrument.prl +147 -0
  391. package/oiml-r91/model/state.prl +22 -0
  392. package/oiml-r91/model/twin.prl +17 -0
  393. package/oiml-r91/package.primmel +14 -0
  394. package/oiml-r91/payload/application.yaml +201 -0
  395. package/oiml-r91/payload/conditions-common-test.yaml +19 -0
  396. package/oiml-r91/payload/promises.yaml +142 -0
  397. package/oiml-r91/payload/sample-data.yaml +464 -0
  398. package/oiml-r91/references.prl +72 -0
  399. package/oiml-r91/sources-prd/coverage.json +106 -0
  400. package/oiml-r91/sources-prd/r91-1.sentences.json +4696 -0
  401. package/oiml-r91/sources-prd/r91-2.sentences.json +2067 -0
  402. package/oiml-r91/sources-prd/r91-3.sentences.json +5210 -0
  403. package/oiml-r91/sources-prd/r91-4.sentences.json +474 -0
  404. package/oiml-r91/specification/calculations.prl +26 -0
  405. package/oiml-r91/specification/conformance/influence-disturbance.prl +1792 -0
  406. package/oiml-r91/specification/conformance/metrological.prl +906 -0
  407. package/oiml-r91/specification/formulas.prl +10 -0
  408. package/oiml-r91/specification/requirements/class-specific.prl +308 -0
  409. package/oiml-r91/specification/requirements/metrological.prl +176 -0
  410. package/oiml-r91/specification/requirements/technical.prl +173 -0
  411. package/oiml-r91/specification/symbols.prl +323 -0
  412. package/oiml-r91/specification/tables.prl +136 -0
  413. package/oiml-r91/terminology.prl +535 -0
  414. package/oiml-r91/value-types.prl +26 -0
  415. package/oiml-smart-core/entities/comments.prl +101 -0
  416. package/oiml-smart-core/entities/cs-operations.prl +492 -0
  417. package/oiml-smart-core/entities/cs-participants.prl +470 -0
  418. package/oiml-smart-core/entities/engagement.prl +323 -0
  419. package/oiml-smart-core/entities/instrument.prl +359 -0
  420. package/oiml-smart-core/entities/module-b.prl +214 -0
  421. package/oiml-smart-core/entities/operated-schemes.prl +141 -0
  422. package/oiml-smart-core/entities/parties.prl +429 -0
  423. package/oiml-smart-core/entities/payment-records.prl +92 -0
  424. package/oiml-smart-core/entities/verification.prl +187 -0
  425. package/oiml-smart-core/entities/workflow.prl +2075 -0
  426. package/oiml-smart-core/evaluation/roles.prl +65 -0
  427. package/oiml-smart-core/evaluation/state-machines.prl +1157 -0
  428. package/oiml-smart-core/package.primmel +10 -0
  429. package/oiml-smart-core/specification/competence-kinds.prl +64 -0
  430. package/oiml-smart-core/specification/constraints.prl +40 -0
  431. package/oiml-smart-core/specification/invariants.prl +90 -0
  432. package/oiml-smart-core/specification/predicates.prl +116 -0
  433. package/oiml-smart-module-emc-disturbances/package.primmel +10 -0
  434. package/oiml-smart-module-env-iec60068/package.primmel +10 -0
  435. package/oiml-smart-module-examination-docs/package.primmel +10 -0
  436. package/oiml-smart-module-reference-materials/package.primmel +10 -0
  437. package/oiml-smart-module-report-headers/package.primmel +10 -0
  438. package/oiml-smart-module-software-d31/package.primmel +10 -0
  439. package/oiml-smart-module-specimen-governance/entities/test-execution.prl +228 -0
  440. package/oiml-smart-module-specimen-governance/package.primmel +10 -0
  441. package/oiml-twin-cert/documents/tw-1/document.yaml +454 -0
  442. package/oiml-twin-cert/evaluation/roles.prl +15 -0
  443. package/oiml-twin-cert/execution/forms/probe-creep.prl +179 -0
  444. package/oiml-twin-cert/execution/forms/probe.prl +99 -0
  445. package/oiml-twin-cert/execution/forms/static-conformance.prl +50 -0
  446. package/oiml-twin-cert/model/attributes.prl +243 -0
  447. package/oiml-twin-cert/model/behaviors.prl +8 -0
  448. package/oiml-twin-cert/model/characteristics.prl +18 -0
  449. package/oiml-twin-cert/model/monitors.prl +16 -0
  450. package/oiml-twin-cert/package.primmel +16 -0
  451. package/oiml-twin-cert/specification/conformance/twin-fidelity.prl +176 -0
  452. package/oiml-twin-cert/specification/requirements/twin-fidelity.prl +137 -0
  453. package/oiml-twin-cert/specification/symbols.prl +36 -0
  454. package/oiml-twin-cert/terminology.prl +8 -0
  455. package/oimlsmart-primmel-packages-0.1.0.tgz +0 -0
  456. package/package.json +17 -0
  457. package/qms-ref/model/qms.prl +31 -0
  458. package/qms-ref/package.primmel +38 -0
  459. package/quarry-belt-scale/model/ops.prl +115 -0
  460. package/quarry-belt-scale/package.primmel +36 -0
package/AGENTS.md ADDED
@@ -0,0 +1,60 @@
1
+ # AGENTS.md — oimlsmart/primmel-packages
2
+
3
+ Guidance for agent sessions working in this repository.
4
+
5
+ ## What this repo is
6
+
7
+ The OIML SMART platform's authoritative model CONTENT (extracted from
8
+ `oimlsmart/smart` in TODO.repos/02, history intact): every OIML
9
+ Recommendation model, the OIML-CS scheme, the ISO/IEC CASCO foundation
10
+ packages, the shared modules, and the product/program reference
11
+ packages — all as Primmel (`.prl`) packages, published as
12
+ `@oimlsmart/primmel-packages` on npm.
13
+
14
+ This repo is the **single source of truth**. The smart monorepo's
15
+ `data/<rec>/` YAML trees and `browser/src/data/generated/**` are
16
+ DOWNSTREAM GENERATED ARTIFACTS of this content at a pinned version.
17
+ Content is authored HERE, never in the consumer.
18
+
19
+ ## The doctrines (carried over from smart's AGENTS.d, binding here)
20
+
21
+ - **Authoring discipline.** Edit `.prl` sources; never hand-edit a
22
+ downstream artifact. YAML-side drafts migrate INTO packages via the
23
+ consumer's authoring aid (`browser/scripts/build-prl-package.ts` in
24
+ the smart repo), then the consumer regenerates
25
+ (`npm run gen:data`).
26
+ - **Clause-URN provenance.** Normative content carries
27
+ `source: { doc: urn:oiml:pub:r:60-1:2021, clause: "..." }` — a content
28
+ change without its clause provenance is incomplete.
29
+ - **The freeze cadence.** Releases version on the content's rhythm, not
30
+ the platform's. Land content on `main` with CI green; a release is a
31
+ deliberate act: bump `version` in `package.json`, tag `v*`, the
32
+ release workflow publishes via npm trusted publishing. Consumers move
33
+ ONLY by a deliberate pin bump — never float a range that pulls
34
+ content silently.
35
+ - **The allowlists are content.** Per-package `.primmel-allowlist.prl`
36
+ KNOWN entries travel with the package; an unexplained allowlist entry
37
+ is an error, a stale one equally.
38
+
39
+ ## The gates (all must stay green)
40
+
41
+ ```
42
+ npm ci && npm test # check-all: primmel check --strict --audit on
43
+ # every package (KNOWN printed, 0 errors)
44
+ # round-trip: every package loads through
45
+ # @primmel/primmel and the serializer fixpoint holds
46
+ ```
47
+
48
+ The kernel is the published `@primmel/primmel` package (devDependency;
49
+ the language grammar, parser, linter and codecs live in
50
+ `primmel/primmel-ts`). A construct the language does not carry yet is a
51
+ KERNEL wave first — never a content-side workaround.
52
+
53
+ ## Rules
54
+
55
+ - Do not commit or perform other git mutations unless explicitly asked.
56
+ - A version bump + tag is a release act (the freeze cadence) — never
57
+ tag without the owner.
58
+ - The consumer's pin (`browser/package.json` in oimlsmart/smart) is the
59
+ contract; breaking content changes ride a deliberate major/minor bump
60
+ with the consumer wave staged.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OIML SMART project contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,68 @@
1
+ # oimlsmart/primmel-packages — the single source of truth
2
+
3
+ Every normative model in the OIML SMART platform — standards,
4
+ instruments, products, programs — is a `.prl` package in this
5
+ repository. **Everything downstream regenerates from these files.** You
6
+ never edit a generated artifact; you edit a package here, release a
7
+ version, and the platform regenerates at the new pin
8
+ (`cd browser && npm run gen:data` in `oimlsmart/smart`).
9
+
10
+ This repo carries the authoritative model CONTENT with its own
11
+ governance cadence (the PRL freeze discipline) and its own release
12
+ line (`@oimlsmart/primmel-packages` on npm, tagged `v*` on the
13
+ content's freeze rhythm). The platform consumes it at a pinned version —
14
+ a content change reaches the platform ONLY by a deliberate bump here
15
+ plus a pin bump there (TODO.repos/02, the extraction record).
16
+
17
+ ## The packages, in six families
18
+
19
+ - **Recommendations**: `oiml-r60` (load cells), `oiml-r91` (radar speed
20
+ meters), `oiml-r129` (multi-dimensional instruments), `oiml-r144`
21
+ (gas analyzers).
22
+ - **Core**: `oiml-smart-core` — the shared metamodel (workflow
23
+ entities, state machines, process skeletons).
24
+ - **Modules** (`oiml-smart-module-*`): shared test/form skeletons —
25
+ emc-disturbances, env-iec60068, software-d31, reference-materials,
26
+ specimen-governance, report-headers, examination-docs.
27
+ - **CASCO foundations**: `iso-iec-17000`, `-17025`, `-17065`, `-17067`.
28
+ - **OIML-CS**: `oiml-cs` — the B 18:2025 framework + the documents
29
+ corpus; `oiml-cs-dataspace` — the dataspace definition.
30
+ - **Products & programs**: `acme-lc500`, `acme-cgm-200`, `acme-rs180`,
31
+ `acme-md3xx`, `acme-cgm-system` (fictional product reference
32
+ packages), `quarry-belt-scale` (the consumer), `oiml-twin-cert` (the
33
+ certification program), `oiml-integrated-ref` (the multi-standard
34
+ integrated reference), `ims-demo` + `qms-ref` + `isms-ref`
35
+ (view/lens fixtures).
36
+
37
+ ## Prove it works
38
+
39
+ ```bash
40
+ npm ci
41
+ npm test # primmel check --strict --audit over every package
42
+ # (KNOWN allowlists printed) + the serializer-fixpoint
43
+ # codec leg — the content standalone, no app
44
+ ```
45
+
46
+ The integration proofs live with the consumer: the smart monorepo's
47
+ `npm run test:ssot` (packages ≡ data trees, byte-clean across the repo
48
+ boundary at the pinned version) and `npm run test:from-packages` (the
49
+ release proof — the platform builds from these packages alone).
50
+
51
+ ## The conventions that matter
52
+
53
+ - Provenance: normative content carries `source: { doc, clause }` to a
54
+ published OIML clause (the clause-URN rule).
55
+ - Product packages map to their Recommendation (C21 aliases; C82 —
56
+ every block-form promise mapped).
57
+ - The packages are the SSOT; the smart repo's `data/` and
58
+ `browser/src/data/generated/` trees are generated artifacts, guarded
59
+ byte-clean against this repo at the pinned version.
60
+ - Releases follow the content's freeze cadence: land content on `main`,
61
+ bump `version` in `package.json`, tag `v*` — the release workflow
62
+ publishes to npm via trusted publishing.
63
+
64
+ ## Read next
65
+
66
+ - The consumer side: `oimlsmart/smart` — `AGENTS.d/05-data-conventions.md`,
67
+ `AGENTS.d/10-primmel-prl-packages.md`,
68
+ [docs/architecture/03-the-packages.md](https://github.com/oimlsmart/smart/blob/v2/docs/architecture/03-the-packages.md)
@@ -0,0 +1,284 @@
1
+ # ─────────────────────────────────────────────────────────────────────
2
+ # ACME CGM-200 — the product model (TODO.v2/08's R 144 phase;
3
+ # TODO.roadmap/36; doctrine ch. 15 §15.2). A manufacturer authors their
4
+ # product model exactly as any subject model — the full IS/HAS/DOES
5
+ # anatomy:
6
+ # IS design parameters, promises, the endpoint declaration, metadata,
7
+ # provenance (the type-evaluation certificate — the promises-
8
+ # as-verified provenance, §15.2);
9
+ # HAS exhibited attributes, the characteristics the standard's tests
10
+ # compute, the operational state, the serve bindings;
11
+ # DOES the response behaviors (drift, step response, warm-up, cross-
12
+ # sensitivity), the adjustment procedures and the self-check.
13
+ #
14
+ # FICTIONAL DEMONSTRATION PRODUCT (the acme-lc500 demo spirit): ACME
15
+ # Analytics GmbH is a fictional demo manufacturer; the certificate and
16
+ # report identifiers below are demo values, deliberately marked.
17
+ #
18
+ # The CGM-200 is a continuous gas monitor for stationary source
19
+ # emissions: CO and NOx (the sum channel, NO + NO2), NDIR for CO,
20
+ # chemiluminescence for NO/NOx, extractive sampling, semi-automatic
21
+ # adjustment, AC mains — the manufacturer's OWN model, mapped to R 144's
22
+ # vocabulary in model/r144-map.prl (map, never re-model).
23
+ #
24
+ # Quantity-typed design parameters carry their literal as the qualifier
25
+ # string "<value> <unit>" — the design-time vocabulary a consumer's
26
+ # abstract import validates against (§15.3 mode 1, computed by the
27
+ # platform's product-coverage gate). The parameter ids are R 144's own
28
+ # attribute ids (co_range_max, response_time, warm_up_time, …): "our
29
+ # x is your x" is the mapping's whole point.
30
+ # ─────────────────────────────────────────────────────────────────────
31
+
32
+ quantity_register si {
33
+ kind volume-fraction { si_unit "1" description "Volume fraction (ISO 80000-9, 9.15) — R 144's measurand kind." }
34
+ unit ppm { symbol "ppm" label "part per million (volume fraction)" kind volume-fraction factor 0.000001 }
35
+ kind temperature { dimensions { Θ 1 } si_unit K description "Thermodynamic temperature." }
36
+ unit degC { symbol "°C" label "degree Celsius" kind temperature offset 273.15 }
37
+ kind pressure { dimensions { L -1 M 1 T -2 } si_unit Pa description "Pressure." }
38
+ unit kPa { symbol "kPa" label "kilopascal" kind pressure factor 1000 }
39
+ kind volume-flow-rate { dimensions { L 3 T -1 } si_unit "m³/s" description "Volume flow rate." }
40
+ unit L/min { symbol "L/min" label "litre per minute" kind volume-flow-rate factor 0.0000166667 }
41
+ kind time { dimensions { T 1 } si_unit s description "Time." }
42
+ unit s { symbol "s" label "second" kind time factor 1 }
43
+ unit min { symbol "min" label "minute" kind time factor 60 }
44
+ kind relative-humidity { si_unit "1" }
45
+ unit pctRH { symbol "%RH" label "percent relative humidity" kind relative-humidity factor 0.01 }
46
+ kind voltage { dimensions { I -1 L 2 M 1 T -3 } si_unit V description "Electric voltage." }
47
+ unit V { symbol "V" label "volt" kind voltage factor 1 }
48
+ kind frequency { dimensions { T -1 } si_unit Hz description "Frequency." }
49
+ unit Hz { symbol "Hz" label "hertz" kind frequency factor 1 }
50
+ kind dimensionless { si_unit "1" }
51
+ unit dimensionless { label "dimensionless" kind dimensionless }
52
+ }
53
+
54
+ attribute_definition indication_co {
55
+ symbol "x_CO"
56
+ name "CO indication"
57
+ definition "The served live CO volume-fraction reading of the gas analyzer, reduced to the reference conditions (273.15 K, 101.325 kPa) — R 144-1, 4.1."
58
+ quantity_kind volume-fraction
59
+ unit "ppm"
60
+ value_type QuantityValue
61
+ origin measured
62
+ scope sample
63
+ category metrological
64
+ }
65
+
66
+ attribute_definition indication_nox {
67
+ symbol "x_NOx"
68
+ name "NOx indication"
69
+ definition "The served live NOx volume-fraction reading of the gas analyzer (the sum channel, NO + NO2), reduced to the reference conditions (273.15 K, 101.325 kPa) — R 144-1, 4.1 with the 1.1/2.4 NOTE."
70
+ quantity_kind volume-fraction
71
+ unit "ppm"
72
+ value_type QuantityValue
73
+ origin measured
74
+ scope sample
75
+ category metrological
76
+ }
77
+
78
+ state_machine cgm_operational {
79
+ kind operational
80
+ initial off
81
+ states { off warming_up ready measuring calibrating fault }
82
+ transition off -> warming_up action power_on
83
+ transition warming_up -> ready action warmed
84
+ transition ready -> measuring action start_measurement
85
+ transition measuring -> ready action stop_measurement
86
+ transition ready -> calibrating action start_adjustment
87
+ transition calibrating -> ready action adjustment_done
88
+ transition [off, warming_up, ready, measuring, calibrating] -> fault action fault_detected
89
+ transition fault -> off action power_off
90
+ }
91
+
92
+ behavior drift {
93
+ kind temporal
94
+ stimulus time
95
+ response "Change in the indication over time at a given CGM concentration — the manufacturer's own drift behavior (answers R 144-1, 2.23/4.8)."
96
+ }
97
+
98
+ behavior step_response {
99
+ kind dynamic
100
+ stimulus gas-concentration
101
+ response "Time for the signal to reach 90 % of its stable value after a 0 % to 100 % stepwise concentration change of the measured component (answers R 144-1, 2.12/4.6)."
102
+ }
103
+
104
+ behavior warm_up {
105
+ kind temporal
106
+ stimulus time
107
+ response "Period from applying power to attaining the operating mode at which the instrument operates within the maximum permissible errors (answers R 144-1, 2.11/4.7)."
108
+ }
109
+
110
+ behavior cross_sensitivity {
111
+ kind influence-response
112
+ stimulus interfering-gas-components
113
+ response "Variation of the indication caused by gas components of the emissions other than the measurand, up to their maximum permissible volume fractions (answers R 144-1, 4.5.2)."
114
+ }
115
+
116
+ behavior reference_reduction {
117
+ kind static
118
+ stimulus gas-concentration
119
+ response "Reduction of measurement results to the reference conditions (273.15 K, 101.325 kPa) — every served indication is expressed in ppm, reduced (answers R 144-1, 4.1)."
120
+ }
121
+
122
+ behavior zero_adjustment {
123
+ kind procedural
124
+ stimulus invoke
125
+ response "Zero-setting against zero gas — the reading is brought to zero without affecting the span (R 144-1, 5.6.1 zero-setting adjustment facility); access-protected (R 144-1, 5.7.1)."
126
+ }
127
+
128
+ behavior span_adjustment {
129
+ kind procedural
130
+ stimulus invoke
131
+ response "Span adjustment against a certified calibration gas mixture (CGM) — the readings are brought into conformity with the certified volume fraction of the component (R 144-1, 5.6.1/5.6.2); access-protected (R 144-1, 5.7.1)."
132
+ }
133
+
134
+ behavior self_check {
135
+ kind procedural
136
+ stimulus invoke
137
+ response "The checking facilities run: gas-flow supervision against the declared flow window (R 144-1, 5.5.2), readiness and fault detection (R 144-1, 4.5.4) — a detected significant fault is annunciated: the operational state drives to fault and measurement is refused."
138
+ }
139
+
140
+ subject CGM200 {
141
+ is {
142
+ metadata {
143
+ name "CGM-200 continuous gas monitor model"
144
+ designation "CGM-200 extractive CO + NOx continuous gas monitor (NDIR / chemiluminescence)"
145
+ }
146
+ provenance {
147
+ manufacturer "ACME Analytics GmbH (fictional demonstration manufacturer)"
148
+ certificate "R144/2026-DEMO-0001 (FICTIONAL — demo value)"
149
+ type_evaluation_report "ACME-TE-DEMO-2026-001 (FICTIONAL — demo value)"
150
+ promises_as_verified "CO 10–5000 ppm and NOx (NO 10–2000 ppm + NO2 10–400 ppm) within the R 144 intrinsic MPE over the rated 5…40 °C envelope (the demo certificate's content — the claims as verified, distinct from the claims as declared, §15.2)"
151
+ }
152
+ design_parameters {
153
+ co_range_min : "10 ppm"
154
+ co_range_max : "5000 ppm"
155
+ no_range_min : "10 ppm"
156
+ no_range_max : "2000 ppm"
157
+ no2_range_min : "10 ppm"
158
+ no2_range_max : "400 ppm"
159
+ response_time : "180 s"
160
+ warm_up_time : "30 min"
161
+ gas_flow_rate_nominal : "1.5 L/min"
162
+ gas_flow_rate_min : "0.5 L/min"
163
+ gas_flow_rate_max : "3.0 L/min"
164
+ t_min : "5 degC"
165
+ t_max : "40 degC"
166
+ rh_max : "90 pctRH"
167
+ p_atm_min : "86 kPa"
168
+ p_atm_max : "106 kPa"
169
+ supply_voltage : "230 V"
170
+ supply_frequency : "50 Hz"
171
+ }
172
+ promises {
173
+ mpe_within_co {
174
+ target error_hold_co
175
+ conditions "under the reference conditions (R 144-1, clause 8)"
176
+ statement "The CO channel's intrinsic error stays within max(2 ppm, 5 % of the measured value) across the 10–5000 ppm range."
177
+ verified_by { oiml-r144#/req/metrological/mpe-intrinsic }
178
+ }
179
+ mpe_within_nox {
180
+ target error_hold_nox
181
+ conditions "under the reference conditions (R 144-1, clause 8)"
182
+ statement "The NOx channel's intrinsic error stays within max(2 ppm, 5 % of the measured value) across the 20–2400 ppm sum range (NO 10–2000 ppm + NO2 10–400 ppm)."
183
+ verified_by { oiml-r144#/req/metrological/mpe-intrinsic }
184
+ }
185
+ repeatability_co {
186
+ target error_hold_co
187
+ statement "CO repeatability (the estimated standard deviation of 20 runs) stays within one third of the intrinsic MPE at every test point."
188
+ verified_by { oiml-r144#/req/metrological/repeatability }
189
+ }
190
+ repeatability_nox {
191
+ target error_hold_nox
192
+ statement "NOx repeatability (the estimated standard deviation of 20 runs) stays within one third of the intrinsic MPE at every test point."
193
+ verified_by { oiml-r144#/req/metrological/repeatability }
194
+ }
195
+ response_time_within {
196
+ target step_response
197
+ level range { min 0 max 240 unit s }
198
+ statement "The 0 % to 100 % step response reaches 90 % within four minutes on every measured component (declared t_90 = 180 s)."
199
+ verified_by { oiml-r144#/req/metrological/response-time }
200
+ }
201
+ warm_up_declared {
202
+ target warm_up
203
+ statement "After the manufacturer-specified warm-up time (30 min) the system meets the metrological requirements — the four post-warm-up indications agree within the verification MPE."
204
+ verified_by { oiml-r144#/req/metrological/warm-up-time }
205
+ }
206
+ drift_within {
207
+ target drift
208
+ conditions "semi-automatic adjustment means; stable environmental conditions"
209
+ statement "The error stays within the intrinsic MPE for at least seven days from adjustment on every measured component."
210
+ verified_by { oiml-r144#/req/metrological/drift }
211
+ }
212
+ cross_sensitivity_within {
213
+ target cross_sensitivity
214
+ statement "Interferents up to their declared maximum permissible volume fractions shift the indication by no more than half the intrinsic MPE."
215
+ verified_by { oiml-r144#/req/metrological/cross-sensitivity }
216
+ }
217
+ rated_envelope {
218
+ target error_hold_co
219
+ level range { min 5 max 40 unit degC }
220
+ conditions "over the rated operating conditions (5…40 °C, ≤ 90 %RH at 25 °C, 86–106 kPa, 230 V −15 %/+10 %, 50 Hz ±2 %)"
221
+ statement "Both channels hold the verification MPE across the whole rated operating envelope."
222
+ verified_by { oiml-r144#/req/metrological/rated-conditions }
223
+ }
224
+ fault_annunciation {
225
+ target self_check
226
+ statement "Under a disturbance the error stays within limits or the failure is detected by the checking facilities — a detected significant fault drives the operational state to fault and measurement is refused."
227
+ verified_by { oiml-r144#/req/metrological/disturbances }
228
+ }
229
+ flow_supervision {
230
+ target self_check
231
+ statement "Gas flow outside the declared 0.5–3.0 L/min window (or unavailable) is signalled by the flow monitoring device."
232
+ verified_by { oiml-r144#/req/technical/gas-flow-monitoring }
233
+ }
234
+ adjustment_access {
235
+ target span_adjustment
236
+ statement "Zero-setting and CGM adjustment are provided and are inaccessible to the operator — access by code only; the twin endpoint binds the same protection (the calibration operations are authority-scope)."
237
+ verified_by { oiml-r144#/req/technical/adjustment-security }
238
+ }
239
+ ppm_presentation {
240
+ target reference_reduction
241
+ statement "Every measurement result is expressed in ppm, reduced to the reference conditions 273.15 K / 101.325 kPa — the twin serves ppm only."
242
+ verified_by { oiml-r144#/req/metrological/measurement-units }
243
+ }
244
+ }
245
+ endpoint cgm_api {
246
+ operation get_indication_co { kind query serves { indication_co } payload { quantity_kind volume-fraction unit ppm timestamp true } }
247
+ operation get_indication_nox { kind query serves { indication_nox } payload { quantity_kind volume-fraction unit ppm timestamp true } }
248
+ operation watch_op_state { kind subscribe serves { state environmental_context } payload { quantity_kind state unit dimensionless timestamp true } }
249
+ operation zero_calibration { kind invoke does { zero_adjustment } payload { quantity_kind adjustment_report unit dimensionless timestamp true } }
250
+ operation span_calibration { kind invoke does { span_adjustment } payload { quantity_kind adjustment_report unit dimensionless timestamp true } }
251
+ operation run_self_check { kind invoke does { self_check } payload { quantity_kind diagnostic_report unit dimensionless timestamp true } }
252
+ access { public { get_indication_co get_indication_nox } registered { watch_op_state } authority { zero_calibration span_calibration run_self_check } }
253
+ profile rest_json
254
+ }
255
+ }
256
+ has {
257
+ attributes {
258
+ indication_co : volume-fraction test_dependent
259
+ indication_nox : volume-fraction test_dependent
260
+ ref_cgm_co : volume-fraction test_dependent
261
+ ref_cgm_nox : volume-fraction test_dependent
262
+ }
263
+ dimensions { measurand_components in {co,nox} measuring_principle in {ir,chemiluminescence} sampling_approach in {extractive} adjustment_means in {semi-automatic} power_supply in {ac-mains} }
264
+ characteristics {
265
+ error_hold_co e_co = ocl{self.indication_co - self.ref_cgm_co}
266
+ error_hold_nox e_nox = ocl{self.indication_nox - self.ref_cgm_nox}
267
+ }
268
+ state cgm_operational
269
+ serve sample.indication_co via get_indication_co { fresh_within 5s }
270
+ serve sample.indication_nox via get_indication_nox { fresh_within 5s }
271
+ serve sample.state via watch_op_state { fresh_within 1s }
272
+ serve sample.environmental_context via watch_op_state { fresh_within 1s }
273
+ }
274
+ does {
275
+ behavior drift
276
+ behavior step_response
277
+ behavior warm_up
278
+ behavior cross_sensitivity
279
+ behavior reference_reduction
280
+ behavior zero_adjustment
281
+ behavior span_adjustment
282
+ behavior self_check
283
+ }
284
+ }