@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
@@ -0,0 +1,23 @@
1
+ # ─────────────────────────────────────────────────────────────────────
2
+ # ACME CGM-200 SYSTEM — the hierarchical SMART twin (TODO.v3/03):
3
+ # a gas analytical SYSTEM as a graph of SMART twins — the analyzer
4
+ # component (the acme-cgm-200 twin, pinned abstract import) + the
5
+ # sampling-line component (model/sample-line.prl, inline), with the
6
+ # projection decomposition declared in payload/composition.yaml (which
7
+ # composite registers come from which component's projection).
8
+ # ─────────────────────────────────────────────────────────────────────
9
+ package {
10
+ id acme-cgm-system
11
+ kind product_reference
12
+ manufacturer "ACME Analytics GmbH (fictional demonstration manufacturer)"
13
+ product "CGM-200 gas analytical system (composite)"
14
+ title "ACME CGM-200 gas analytical system — the hierarchical SMART twin"
15
+ version "2026"
16
+ editions { 2026 }
17
+ status current
18
+ maps_to { oiml-r144 }
19
+ uses { acme-cgm-200@2026 }
20
+ validity { from 2026-01-01 }
21
+ default_spelling eng-Latn
22
+ description "The CGM-200 gas analytical SYSTEM as a hierarchical graph of SMART twins (TODO.v3/03): the analyzer component twin (the acme-cgm-200 product reference, pinned abstract import @2026) and the sampling-line component twin (inline, model/sample-line.prl) compose the system. The composite's twin interface mirrors the R 144 governed projection verbatim; the projection DECOMPOSITION (payload/composition.yaml) declares which composite register each component's projection supplies, the composite's operational-state rule (fault if any component faults), and the component certificate references the composition calculus reads (weakest-link: an uncertified or suspended component degrades the composite to the DECLARED partial state — a declared gap is a scope limitation, never a hidden one)."
23
+ }
@@ -0,0 +1,218 @@
1
+ # ─────────────────────────────────────────────────────────────────────
2
+ # ACME LC-500 — the product model (TODO.roadmap/36; doctrine ch. 15
3
+ # §15.2). A manufacturer authors their product model exactly as any
4
+ # subject model — the full IS/HAS/DOES anatomy:
5
+ # IS design parameters, promises, the endpoint declaration, metadata,
6
+ # provenance (the type-evaluation certificate — the promises-
7
+ # as-verified provenance, §15.2);
8
+ # HAS exhibited attributes, the characteristics the standard's tests
9
+ # compute, the operational state, the serve bindings;
10
+ # DOES the response behaviors (creep) and the self-tests.
11
+ #
12
+ # The FULL TWIN (TODO.v2/16): the subject anatomy is the manufacturer's
13
+ # complete representation — arbitrarily rich (internal temperature
14
+ # telemetry, the overload event history, production/serial data below).
15
+ # The Recommendation governs only a PROJECTION of it: the endpoint +
16
+ # serve bindings of this subject are exactly the R 60 governed twin
17
+ # interface (primmel-packages/oiml-r60/model/twin.prl), DERIVED — never
18
+ # hand-mirrored — from the Recommendation's governed set + the
19
+ # projection mapping (model/r60-map.prl) by the twin-projection
20
+ # generator (browser/scripts/derive-twin-projection.ts). A rec-side
21
+ # change surfaces here as a diff: npm run gen:twin-projection rewrites
22
+ # the derived section; the drift guard runs in npm run validate.
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 (the capacity-within-E_max check of
27
+ # §15.3 mode 1, computed by the platform's product-coverage gate).
28
+ # ─────────────────────────────────────────────────────────────────────
29
+
30
+ quantity_register si {
31
+ kind mass { dimensions { M 1 } si_unit kg description "Mass." }
32
+ unit kg { symbol "kg" label "kilogram" kind mass factor 1 }
33
+ kind temperature { dimensions { Θ 1 } si_unit degC description "Thermodynamic temperature." }
34
+ unit degC { symbol "°C" label "degree Celsius" kind temperature factor 1 }
35
+ kind dimensionless { si_unit "1" }
36
+ unit dimensionless { label "dimensionless" kind dimensionless }
37
+ }
38
+
39
+ attribute_definition d_min {
40
+ symbol "d_min"
41
+ name "Minimum dead load"
42
+ definition "Minimum dead load of the load cell (R 60-1, 3.3.2), read from the twin's test context."
43
+ quantity_kind mass
44
+ unit kg
45
+ value_type QuantityValue
46
+ origin design-fixed
47
+ scope sample
48
+ category metrological
49
+ }
50
+
51
+ attribute_definition indication {
52
+ symbol "I"
53
+ name "Indication"
54
+ definition "The indication of the load cell — the served live reading (R 60-1, 3.4.1)."
55
+ quantity_kind mass
56
+ unit kg
57
+ value_type QuantityValue
58
+ origin measured
59
+ scope sample
60
+ category metrological
61
+ }
62
+
63
+ # ── Full-twin richness (TODO.v2/16) ─────────────────────────────────
64
+ # Manufacturer diagnostics, telemetry, history, and production data the
65
+ # Recommendation does NOT govern. These members are the full twin's
66
+ # filtered richness: they live on the served subject but outside the
67
+ # governed projection — deliberately unmapped in the twin-projection
68
+ # coverage report (model/r60-map.prl), never gaps.
69
+
70
+ attribute_definition internal_temperature {
71
+ symbol "T_int"
72
+ name "Internal electronics temperature"
73
+ definition "Temperature inside the LC-500 electronics housing, sampled on the manufacturer's diagnostics channel. Not governed by R 60 — full-twin telemetry the projection filters out (TODO.v2/16)."
74
+ quantity_kind temperature
75
+ unit degC
76
+ value_type QuantityValue
77
+ origin measured
78
+ scope sample
79
+ category electrical
80
+ }
81
+
82
+ attribute_definition overload_event_count {
83
+ name "Overload event count"
84
+ definition "Cumulative count of overload events (applied load above the safe load limit) held in the cell's event history. Not governed by R 60 — full-twin history the projection filters out (TODO.v2/16)."
85
+ quantity_kind dimensionless
86
+ unit dimensionless
87
+ value_type QuantityValue
88
+ origin measured
89
+ scope sample
90
+ category electrical
91
+ }
92
+
93
+ attribute_definition serial_number {
94
+ name "Serial number"
95
+ definition "Production serial number of the individual LC-500 unit, assigned at manufacture. Not governed by the R 60 twin interface — production data the projection filters out (TODO.v2/16)."
96
+ value_type string
97
+ origin declared
98
+ scope sample
99
+ category administrative
100
+ }
101
+
102
+ attribute_definition firmware_version {
103
+ name "Firmware version"
104
+ definition "Version string of the LC-500's embedded firmware image — the manufacturer's software inventory, richer than the legally-relevant software identification of R 60-1, 6.1. Not governed by R 60 — production data the projection filters out (TODO.v2/16)."
105
+ value_type string
106
+ origin declared
107
+ scope model
108
+ category administrative
109
+ }
110
+
111
+ state_machine lc_operational {
112
+ kind operational
113
+ initial off
114
+ states { off warming ready measuring fault }
115
+ transition off -> warming action power_on
116
+ transition warming -> ready action warmed
117
+ transition ready -> measuring action start_measurement
118
+ transition measuring -> ready action stop_measurement
119
+ transition [off, warming, ready, measuring] -> fault action fault_detected
120
+ }
121
+
122
+ behavior creep {
123
+ kind temporal
124
+ stimulus force
125
+ response "Change in load cell output with time under constant load (R 60-1, 3.4.4)."
126
+ }
127
+
128
+ behavior self_test {
129
+ kind procedural
130
+ stimulus invoke
131
+ response "The instrument runs its self-diagnostic and reports a diagnostic report (R 60-1, 6.3.4 software-controlled instruments); a significant fault drives the operational state machine to fault."
132
+ }
133
+
134
+ subject LC500 {
135
+ is {
136
+ metadata {
137
+ name "LC-500 load cell model"
138
+ designation "LC-500 class C6 compression load cell"
139
+ }
140
+ provenance {
141
+ manufacturer "ACME Weighing GmbH"
142
+ certificate "R60/2021-DE-24-071"
143
+ type_evaluation_report "ACME-TE-2024-118"
144
+ promises_as_verified "class C6 over −10…+40 °C (the certificate's content — the claims as verified, distinct from the claims as declared, §15.2)"
145
+ }
146
+ design_parameters {
147
+ e_max : "500 kg"
148
+ v_min : "0.02 kg"
149
+ n_lc : "6000 dimensionless"
150
+ }
151
+ promises {
152
+ mpe_within {
153
+ target error_hold
154
+ level symbolic C6
155
+ conditions ocl{self.temperature >= rated.t_min and self.temperature <= rated.t_max}
156
+ statement "Holds accuracy class C6 across the rated range −10…+40 °C."
157
+ verified_by { oiml-r60#/req/class-c/mpe }
158
+ }
159
+ creep_c6 {
160
+ target creep
161
+ statement "Creep stays within the class C apportionment envelope (p_lc = 0.7) over the 30-minute test."
162
+ verified_by { oiml-r60#/req/class-c/creep }
163
+ }
164
+ temp_envelope {
165
+ target error_hold
166
+ level range { min -10 max 40 unit degC }
167
+ conditions "over the rated temperature range"
168
+ statement "The rated temperature envelope spans −10…+40 °C."
169
+ verified_by { oiml-r60#/req/metrological/temperature-limits }
170
+ }
171
+ repeatability_c6 {
172
+ target error_hold
173
+ statement "Repeatability stays within the class C limit across the verification program."
174
+ verified_by { oiml-r60#/req/class-c/repeatability }
175
+ }
176
+ fault_annunciation {
177
+ target self_test
178
+ statement "Significant faults are detected and annunciated — the cell drives its operational state to fault and refuses measurement."
179
+ verified_by { oiml-r60#/req/electronic/no-significant-faults }
180
+ }
181
+ }
182
+ # DERIVED from oiml-r60 model/twin.prl (the governed projection,
183
+ # TODO.v2/16) — regenerate: npm run gen:twin-projection; never
184
+ # hand-edit. The R 60 twin interface served by this product,
185
+ # endpoint-for-endpoint; the full twin's richness stays above
186
+ # this surface.
187
+ endpoint lc500_api {
188
+ operation get_indication { kind query serves { indication } payload { quantity_kind mass unit kg timestamp true } }
189
+ operation watch_state { kind subscribe serves { state } payload { quantity_kind state unit dimensionless timestamp true } }
190
+ operation run_self_test { kind invoke does { self_test } payload { quantity_kind diagnostic_report unit dimensionless timestamp true } }
191
+ access { public { get_indication } registered { watch_state } authority { run_self_test } }
192
+ profile rest_json
193
+ }
194
+ }
195
+ has {
196
+ attributes {
197
+ indication : mass test_dependent
198
+ d_min : mass test_dependent
199
+ ref_load : mass test_dependent
200
+ internal_temperature : temperature measured
201
+ overload_event_count : dimensionless measured
202
+ serial_number : string declared
203
+ firmware_version : string declared
204
+ }
205
+ characteristics {
206
+ error_hold e = ocl{self.indication - self.ref_load}
207
+ }
208
+ state lc_operational
209
+ # DERIVED from oiml-r60 model/twin.prl (npm run gen:twin-projection)
210
+ # — the governed registers with the Recommendation's freshness.
211
+ serve sample.test_context.d_min via get_indication { fresh_within 5s }
212
+ serve sample.state via watch_state { fresh_within 1s }
213
+ }
214
+ does {
215
+ behavior creep
216
+ behavior self_test
217
+ }
218
+ }
@@ -0,0 +1,43 @@
1
+ # ─────────────────────────────────────────────────────────────────────
2
+ # ACME LC-500 — the model-native Digital Product Passport (TODO.roadmap/
3
+ # 35; doctrine ch. 14 §14.6, ch. 15 §15.6, grammar sketch §15.8).
4
+ #
5
+ # The passport is the product model's named, access-classed PROJECTION —
6
+ # "generated from the model, served by the endpoint, verified through the
7
+ # engine. It cannot drift from the model because it *is* the model"
8
+ # (§14.6). The declaration names WHAT the projection serves (content
9
+ # classes), WHO may read each entry (access classes), the unique product
10
+ # identifier (UPI — ESPR model level), and the data-carrier linkage (the
11
+ # QR on the instrument; payload = the passport endpoint URL).
12
+ #
13
+ # The two service modes of §15.6 are NOT declared here: abstract
14
+ # (point-in-time, as-certified) and live (continuous) are serving
15
+ # decisions of the projection engine (browser/src/data/passport.ts); the
16
+ # declaration already separates the live content via the
17
+ # live_compliance_status class.
18
+ #
19
+ # Access classes (honest per the package's own content):
20
+ # public — the abstract passport (what a buyer integrates; what the
21
+ # EU DPP registry looks up): identity, composition,
22
+ # promises-as-verified (the certificate the provenance
23
+ # declares is public record — the BIML register publishes).
24
+ # authority — adds the live view (what market surveillance actually
25
+ # wants when it scans the QR code): live compliance status
26
+ # computed by the engine from the verdict stream (task 34).
27
+ # artifacts/sustainability are deliberately ABSENT: the package declares
28
+ # no artifact ids and the ESPR delegated-act content models do not exist
29
+ # yet (TODO.roadmap/35, "Out") — a declared class with nothing honest
30
+ # behind it is brochure content, and the passport never carries that.
31
+ #
32
+ # The kernel lint proves the declaration: C86 (every content entry
33
+ # resolves against the package's declared aspects/promises), C87
34
+ # (nothing restricted/authority is reachable from the public class),
35
+ # C88 (the UPI pattern declares its ESPR level).
36
+ # ─────────────────────────────────────────────────────────────────────
37
+
38
+ passport lc500_passport {
39
+ upi { pattern upi:acme:lc500 level model }
40
+ carrier { kind qr payload "https://passport.acme.example/passport/upi:acme:lc500.json" }
41
+ public { identity composition promises_as_verified }
42
+ authority { live_compliance_status }
43
+ }
@@ -0,0 +1,161 @@
1
+ # ─────────────────────────────────────────────────────────────────────
2
+ # ACME LC-500 → OIML R 60 — the conformance claim made computable
3
+ # (TODO.roadmap/36; doctrine ch. 15 §15.2), and the TWIN PROJECTION
4
+ # (TODO.v2/16): the full twin → governed projection relation, mapped.
5
+ #
6
+ # The decisive act of the product reference model: every conformance-
7
+ # relevant aspect and promise is mapped to the Recommendation's — aspect
8
+ # by aspect, node to node, promise to requirement. The map targets are
9
+ # the package's own `oiml-r60#…` alias declarations (the implementation
10
+ # declares local copies of the reference elements it maps to — C21); the
11
+ # platform's product-coverage gate resolves the unqualified ids against
12
+ # the real R 60 package, so no clause reference dangles.
13
+ #
14
+ # 100 % of the tested characteristics are covered: every block-form
15
+ # promise is a mapping source (C82 product-unmapped-promises stays
16
+ # silent), and every promise target (the error/creep characteristics and
17
+ # the self-test behavior the standard's tests exercise) is reachable
18
+ # through one.
19
+ #
20
+ # The projection half (TODO.v2/16): the `oiml-r60#/twin/…` alias forest
21
+ # below is the Recommendation's GOVERNED TWIN INTERFACE (oiml-r60
22
+ # model/twin.prl) — the endpoint and the governed registers — and the
23
+ # mapping pairs prove every governed register is backed by a product
24
+ # component (the endpoint that serves it, the attribute that backs it).
25
+ # The coverage block pins the computed projection at full (C23: coverage
26
+ # is computed, never authored); the full twin's richer anatomy
27
+ # (internal_temperature, overload_event_count, serial_number,
28
+ # firmware_version, ref_load) is deliberately NOT mapped here — it is
29
+ # the filtered richness the projection leaves behind, reported by the
30
+ # twin-projection gate, never a gap. The served twin section itself is
31
+ # DERIVED from the Recommendation by browser/scripts/
32
+ # derive-twin-projection.ts (the drift guard in npm run validate).
33
+ # ─────────────────────────────────────────────────────────────────────
34
+
35
+ requirement oiml-r60#/req/class-c/mpe {
36
+ name "alias: R 60 class C maximum permissible errors"
37
+ statement "Local alias of the Recommendation's class C MPE requirement (the product reference model declares local copies of the reference elements it maps to — C21)."
38
+ verification { method examination description "Verified in the Recommendation's own type evaluation program." }
39
+ source { doc "urn:oiml:pub:r:60-1:2021" clause "5.3.2" }
40
+ }
41
+
42
+ requirement oiml-r60#/req/class-c/creep {
43
+ name "alias: R 60 class C creep"
44
+ statement "Local alias of the Recommendation's class C creep requirement."
45
+ verification { method examination description "Verified in the Recommendation's own type evaluation program." }
46
+ source { doc "urn:oiml:pub:r:60-1:2021" clause "5.5.1" }
47
+ }
48
+
49
+ requirement oiml-r60#/req/class-c/repeatability {
50
+ name "alias: R 60 class C repeatability"
51
+ statement "Local alias of the Recommendation's class C repeatability requirement."
52
+ verification { method examination description "Verified in the Recommendation's own type evaluation program." }
53
+ source { doc "urn:oiml:pub:r:60-1:2021" clause "5.4" }
54
+ }
55
+
56
+ requirement oiml-r60#/req/metrological/temperature-limits {
57
+ name "alias: R 60 temperature limits"
58
+ statement "Local alias of the Recommendation's temperature-limits requirement."
59
+ verification { method examination description "Verified in the Recommendation's own type evaluation program." }
60
+ source { doc "urn:oiml:pub:r:60-1:2021" clause "5.6.1.1" }
61
+ }
62
+
63
+ requirement oiml-r60#/req/electronic/no-significant-faults {
64
+ name "alias: R 60 no significant faults"
65
+ statement "Local alias of the Recommendation's significant-fault requirement for electronic load cells."
66
+ verification { method examination description "Verified in the Recommendation's own type evaluation program." }
67
+ source { doc "urn:oiml:pub:r:60-1:2021" clause "5.7.1.1" }
68
+ }
69
+
70
+ requirement oiml-r60#/req/metrological/measuring-range-max {
71
+ name "alias: R 60 maximum load of the measuring range"
72
+ statement "Local alias of the Recommendation's measuring-range-max requirement (E_max)."
73
+ verification { method examination description "Verified in the Recommendation's own type evaluation program." }
74
+ source { doc "urn:oiml:pub:r:60-1:2021" clause "5.2.2" }
75
+ }
76
+
77
+ # ── The governed twin interface aliases (TODO.v2/16) ────────────────
78
+ # Local copies (C21) of the R 60 governed twin interface — the
79
+ # projection target — declared as a nested alias forest (the ims-demo
80
+ # idiom) so the linter's C23 fallback tree is the real interface shape:
81
+ # the interface decomposes into its endpoint and its governed registers
82
+ # (oiml-r60 model/twin.prl: endpoint loadcell_api; serves
83
+ # sample.test_context.d_min and sample.state). Composition `all`: every
84
+ # governed element must be backed for the projection to be full.
85
+ process oiml-r60#/twin/interface {
86
+ name "alias: the R 60 governed twin interface — the projection itself"
87
+ process oiml-r60#/twin/interface/endpoint/loadcell_api {
88
+ name "alias: the governed endpoint loadcell_api (rest_json: get_indication query, watch_state subscribe, run_self_test invoke)"
89
+ }
90
+ process oiml-r60#/twin/interface/serve/d_min {
91
+ name "alias: governed register sample.test_context.d_min (via get_indication, fresh_within 5s)"
92
+ }
93
+ process oiml-r60#/twin/interface/serve/state {
94
+ name "alias: governed register sample.state (via watch_state, fresh_within 1s)"
95
+ }
96
+ }
97
+
98
+ map_profile oiml-r60 {
99
+ description "LC-500 → R 60: the manufacturer's conformance claim, made computable — every conformance-relevant aspect and promise mapped to the Recommendation (doctrine ch. 15 §15.2)."
100
+ mapping {
101
+ mpe_within -> oiml-r60#/req/class-c/mpe {
102
+ description "The class-limited error promise answers the class C MPE requirement."
103
+ justification "Same quantity, same clause definition — our error-hold characteristic is the quantity the MPE test computes (§15.2)."
104
+ }
105
+ creep_c6 -> oiml-r60#/req/class-c/creep {
106
+ description "The creep promise answers the class C creep requirement."
107
+ justification "Our creep behavior is the behavior the standard's creep test exercises, at the same apportionment (p_lc = 0.7)."
108
+ }
109
+ temp_envelope -> oiml-r60#/req/metrological/temperature-limits {
110
+ description "The rated temperature envelope satisfies the Recommendation's temperature limits."
111
+ justification "The rated range −10…+40 °C is the condition tier the temperature requirement admits."
112
+ }
113
+ repeatability_c6 -> oiml-r60#/req/class-c/repeatability {
114
+ description "The repeatability promise answers the class C repeatability requirement."
115
+ justification "Same quantity, computed by the same test series."
116
+ }
117
+ fault_annunciation -> oiml-r60#/req/electronic/no-significant-faults {
118
+ description "The self-test promise answers the significant-fault requirement."
119
+ justification "The self-diagnostic detects significant faults and the state machine annunciates them — the behavior the requirement demands."
120
+ }
121
+ e_max -> oiml-r60#/req/metrological/measuring-range-max {
122
+ description "Our E_max is R 60's E_max."
123
+ justification "Same quantity, same clause definition (R 60-1, 5.2.2)."
124
+ }
125
+ v_min -> oiml-r60#/req/class-c/mpe {
126
+ description "The minimum verification interval enters the class C MPE apportionment."
127
+ justification "v_min = E_max/n_lc is the verification scale interval the class C MPE table is expressed in."
128
+ }
129
+ # ── the twin projection (TODO.v2/16): full twin → governed set ──
130
+ # Every governed element of the R 60 twin interface backed by a
131
+ # product component; the served section itself is derived from the
132
+ # Recommendation (the twin-projection drift guard), so these pairs
133
+ # name the BACKING components — endpoint and register-backing
134
+ # attribute — never the serve bindings (derived, not mapped).
135
+ lc500_api -> oiml-r60#/twin/interface/endpoint/loadcell_api {
136
+ description "The LC-500's twin endpoint IS the R 60 projection surface: the same governed operations (get_indication query, watch_state subscribe, run_self_test invoke), the same access scopes, the same rest_json profile — derived from the Recommendation's twin.prl, never hand-mirrored."
137
+ justification "The endpoint is part of the type definition (doctrine ch. 14 §14.3): the product serves exactly what the Recommendation governs; the full twin's richer anatomy is filtered out above this surface."
138
+ coverage full
139
+ }
140
+ d_min -> oiml-r60#/twin/interface/serve/d_min {
141
+ description "The exhibited d_min attribute backs the governed register sample.test_context.d_min, served via get_indication with the Recommendation's 5 s freshness."
142
+ justification "Same quantity, same sample test-context scope (R 60-1, 3.5.12): the product's d_min is the value the projection reads."
143
+ coverage full
144
+ }
145
+ lc500_api -> oiml-r60#/twin/interface/serve/state {
146
+ description "The endpoint's watch_state subscribe operation serves the governed register sample.state — the subject's has.state lc_operational machine — with the Recommendation's 1 s freshness."
147
+ justification "The operational state machine is the served aspect; at component granularity the endpoint is the serving surface (the serve binding itself is derived from the Recommendation's twin.prl — the mapping names its backing component)."
148
+ coverage full
149
+ }
150
+ }
151
+ coverage {
152
+ # C23 tripwires over the alias forest: the projection is computed
153
+ # full — every governed register backed, the interface aggregating
154
+ # (composition all). A dropped pair or a filtered register fails
155
+ # the calculus here, loudly.
156
+ oiml-r60#/twin/interface full
157
+ oiml-r60#/twin/interface/endpoint/loadcell_api full
158
+ oiml-r60#/twin/interface/serve/d_min full
159
+ oiml-r60#/twin/interface/serve/state full
160
+ }
161
+ }
@@ -0,0 +1,114 @@
1
+ # ─────────────────────────────────────────────────────────────────────
2
+ # ACME LC-500 → OIML TWIN-CERT — the second projection, made explicit
3
+ # (TODO.v3/01 multi-standard projection; doctrine ch. 15 §15.2).
4
+ #
5
+ # The LC-500 is governed by TWO standards: R 60 (the instrument
6
+ # Recommendation — model/r60-map.prl) and the twin-fidelity
7
+ # certification program (oiml-twin-cert — the twin certificate's own
8
+ # requirement set). Until now the second projection was implicit (the
9
+ # monitor's deployment binding wired the served indication against the
10
+ # /req/twin-fidelity layer). This map makes it a FIRST-CLASS projection:
11
+ # the product's twin surface mapped, node to node, to the program's
12
+ # requirements — so an auditor can read the SAME implementation model
13
+ # through either standard's lens, and the coverage calculus computes
14
+ # each namespace independently.
15
+ #
16
+ # The honest boundary: the program's twin-fidelity requirements are
17
+ # judged continuously by the twin-cert program's fleet monitor (the
18
+ # served-vs-reference pairings); this map declares the product's side
19
+ # of that judgment — which of its nodes answer which requirement.
20
+ #
21
+ # THE COLLISION DOCTRINE (TODO.v3/01 item 4 — declared here, in the
22
+ # implementation model, never silent): the two governed sets this
23
+ # product projects onto — R 60's twin interface (sample.test_context
24
+ # .d_min, sample.state) and the twin-fidelity program's fidelity
25
+ # registers (sample.test_context.indication, sample.test_context
26
+ # .op_state) — share NO register today (computed: src/lenses/
27
+ # collisions.ts, pinned by lens-collisions.test.ts). If a future
28
+ # standard's governed set comes to name a register this product
29
+ # already serves for another standard: (1) an auditor NEVER sees a
30
+ # merged claim — each standard keeps its own lens, its own coverage,
31
+ # its own verdicts, side by side in the composed fold; (2) for any
32
+ # single-view merge the STRICTER limit wins, unless the standards'
33
+ # own provisions say otherwise — and that resolution must be declared
34
+ # HERE (a resolutions entry naming the register, the standards, and
35
+ # the rule) before it is relied on, never assumed by the platform.
36
+ # ─────────────────────────────────────────────────────────────────────
37
+
38
+ requirement oiml-twin-cert#/req/twin-fidelity/static-conformance {
39
+ name "alias: twin-fidelity static conformance (admission)"
40
+ statement "Local alias of the program's static-conformance requirement — a certified twin serves exactly the interface its certified product package declares (endpoint id, operations with payloads and quantity kinds, access scopes); a mis-serving twin never enters value-fidelity probing."
41
+ verification { method inspection description "Admission-time contract check against the pinned product package's endpoint declaration (the abstract import's edition pin); re-verified at every surveillance cycle start." }
42
+ source { doc "urn:oiml:pub:cs:twin-1:2027" clause "5.1" }
43
+ }
44
+
45
+ requirement oiml-twin-cert#/req/twin-fidelity/indication-band {
46
+ name "alias: twin-fidelity indication band"
47
+ statement "Local alias of the program's indication-band requirement — the twin's served indication matches the physical instrument's indication within the declared tolerance δ_indication at every probe point (|served − reference| ≤ δ, paired within the pairing window)."
48
+ verification { method examination description "Verified by the twin-fidelity program's own probe schedule (/conf/twin-fidelity/probe-range, /conf/twin-fidelity/probe-envelope)." }
49
+ source { doc "urn:oiml:pub:cs:twin-1:2027" clause "5.2" }
50
+ }
51
+
52
+ requirement oiml-twin-cert#/req/twin-fidelity/freshness-declaration {
53
+ name "alias: twin-fidelity freshness declaration"
54
+ statement "Local alias of the program's freshness-declaration requirement — every fidelity register is served under a declared fresh_within; a stale value degrades the verdict to indeterminate, never a fail, never a silent pass; the window is inherited from the serve declaration, never re-declared on the binding."
55
+ verification { method definitional description "Satisfied by the serve declarations the program reuses; enforced continuously by the freshness gate." }
56
+ source { doc "urn:oiml:pub:cs:twin-1:2027" clause "5.3" }
57
+ }
58
+
59
+ requirement oiml-twin-cert#/req/twin-fidelity/timestamp-provenance {
60
+ name "alias: twin-fidelity timestamp provenance"
61
+ statement "Local alias of the program's timestamp-provenance requirement — a parseable served timestamp on every fidelity register, the served-timestamp field declared per operation at deployment, and every fidelity fact carrying provenance (endpoint id bound to the certified unit's serial, the serving operation, the definition version pin)."
62
+ verification { method definitional description "A declaration requirement gated at admission and enforced continuously — an absent served timestamp is unavailable, never invented." }
63
+ source { doc "urn:oiml:pub:cs:twin-1:2027" clause "5.4" }
64
+ }
65
+
66
+ requirement oiml-twin-cert#/req/twin-fidelity/state-fidelity {
67
+ name "alias: twin-fidelity state fidelity"
68
+ statement "Local alias of the program's state-fidelity requirement — the served operational state equals the physical state at every transition, fault annunciation included (a truthful fault serve passes fidelity and triggers service; a lying one fails)."
69
+ verification { method examination description "Verified by the twin-fidelity program's own probe schedule (/conf/twin-fidelity/probe-transitions)." }
70
+ source { doc "urn:oiml:pub:cs:twin-1:2027" clause "5.5" }
71
+ }
72
+
73
+ requirement oiml-twin-cert#/req/twin-fidelity/creep-envelope {
74
+ name "alias: twin-fidelity creep envelope (behavioral)"
75
+ statement "Local alias of the program's creep-envelope requirement — under a constant reference load held for the declared dwell, the twin's served indication drifts no more than the instrument's accuracy-class creep allowance (class-parameterized through the Recommendation's apportioned MPE); a reference drifting beyond one third of the allowance voids the setup — INVALID, never a fail."
76
+ verification { method examination description "Verified by the twin-fidelity program's own probe schedule (/conf/twin-fidelity/probe-creep)." }
77
+ source { doc "urn:oiml:pub:cs:twin-1:2027" clause "5.6" }
78
+ }
79
+
80
+ map_profile oiml-twin-cert {
81
+ description "LC-500 → twin-cert: the product's second projection (TODO.v3/01) — the twin surface that answers the fidelity program: the endpoint that statically conforms, the served registers whose fidelity is probed, the state machine whose truthfulness is watched, and the creep behavior whose dynamics the envelope bounds. Judged continuously by the program's fleet monitor; this map declares the product's side."
82
+ mapping {
83
+ lc500_api -> oiml-twin-cert#/req/twin-fidelity/static-conformance {
84
+ description "The LC-500's declared endpoint IS the contract the admission check pins: a certified LC-500 twin serves exactly these operations, payloads, and access scopes."
85
+ justification "Same declaration, one home (the product package's endpoint block — derived from the R 60 governed interface, TODO.v2/16): the admission check compares the served surface against THIS declaration, and the startup conformance check enforces it."
86
+ coverage full
87
+ }
88
+ indication -> oiml-twin-cert#/req/twin-fidelity/indication-band {
89
+ description "The exhibited indication attribute is the served register the fidelity band judges — |served − reference| ≤ δ_indication at every probe point."
90
+ justification "Same quantity (R 60-1, 3.4.1), same sample scope: the value the probes pair against the reference channel's reading."
91
+ coverage full
92
+ }
93
+ lc500_api -> oiml-twin-cert#/req/twin-fidelity/freshness-declaration {
94
+ description "The endpoint's serve bindings carry the freshness declarations the requirement demands — fresh_within 5 s on the indication, 1 s on the state."
95
+ justification "Declared once, on the serves (§14.12 — never re-declared on a binding): the program inherits exactly these windows."
96
+ coverage full
97
+ }
98
+ lc500_api -> oiml-twin-cert#/req/twin-fidelity/timestamp-provenance {
99
+ description "The endpoint's payload declarations carry timestamp: true on every operation — the served-timestamp provenance the requirement demands."
100
+ justification "The served timestamp rides every served value (the payload schema's timestamp facet); the deployment's timestamp_fields declaration binds it at runtime."
101
+ coverage full
102
+ }
103
+ lc500_api -> oiml-twin-cert#/req/twin-fidelity/state-fidelity {
104
+ description "The endpoint's watch_state subscribe operation serves the twin's op_state — the lc_operational machine's current node — compared with the reference state at every transition."
105
+ justification "The served aspect is the state machine, and at component granularity the endpoint is the serving surface; fault annunciation is the machine's fault node — a truthful fault serve passes fidelity and triggers service."
106
+ coverage full
107
+ }
108
+ creep -> oiml-twin-cert#/req/twin-fidelity/creep-envelope {
109
+ description "The LC-500's creep behavior is the dynamic the envelope bounds — the served drift over the dwell against the class-parameterized allowance."
110
+ justification "Same behavior the mapped Recommendation's creep test exercises (the r60-map's creep_c6 promise, verified_by oiml-r60#/req/class-c/creep): the program reuses the class's own apportioned-MPE allowance — dynamics judged, not merely points."
111
+ coverage full
112
+ }
113
+ }
114
+ }
@@ -0,0 +1,35 @@
1
+ # ─────────────────────────────────────────────────────────────────────
2
+ # ACME LC-500 — the product reference package (TODO.roadmap/36; doctrine
3
+ # ch. 15, the model supply chain).
4
+ #
5
+ # The manufacturer side of the supply chain: ACME's LC-500 load cell
6
+ # model as a SUBJECT model (the oiml-rec methodology applied by the
7
+ # manufacturer — full IS/HAS/DOES anatomy), with every conformance-
8
+ # relevant aspect and promise mapped aspect-by-aspect to R 60
9
+ # (model/r60-map.prl). The mapping is the manufacturer's conformance
10
+ # claim made computable: "our E_max is your E_max; our creep
11
+ # characteristic answers your creep requirement" (§15.2).
12
+ #
13
+ # The package is a REFERENCE model — it states what the product is and
14
+ # claims; it is not derived from the Recommendation and composes nothing
15
+ # from it (no uses edge): the two are related by mapping only. Users
16
+ # consume it in two modes (§15.3): abstract import (version-pinned
17
+ # `uses { acme-lc500@2021 }` — C83) and live integration over the
18
+ # declared endpoint. promises-as-verified come from the type evaluation
19
+ # record (the certificate in is.provenance; the promises' verified_by
20
+ # links are the verification chain — TODO.roadmap/08/16).
21
+ # ─────────────────────────────────────────────────────────────────────
22
+ package {
23
+ id acme-lc500
24
+ kind product_reference
25
+ manufacturer "ACME Weighing GmbH"
26
+ product "LC-500"
27
+ title "ACME LC-500 load cell — product reference model"
28
+ version "2021"
29
+ editions { 2021 }
30
+ status current
31
+ validity { from 2021-03-01 }
32
+ maps_to { oiml-r60 oiml-twin-cert }
33
+ default_spelling eng-Latn
34
+ description "ACME's LC-500 load cell (class C6, E_max 500 kg) as a product reference model: the full subject anatomy (the manufacturer's full twin, richer than the standard governs), the lc500_api twin endpoint serving exactly the R 60 governed projection (derived, TODO.v2/16), and the aspect-by-aspect mapping to OIML R 60 — the manufacturer's conformance claim made computable (TODO.roadmap/36, doctrine ch. 15)."
35
+ }