@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,323 @@
1
+ class Engagement#data {
2
+ store { engagements }
3
+ description { "The commercial negotiation between two parties around work (TODO.federation/02 introduced the IA/applicant pair; TODO.adoption/07 generalized it): a requester approaches a provider with an inquiry, receives a financial quotation, signs an agreement, and only then does the technical record exist. The kind fixes the pair: ia_applicant (a manufacturer approaches an Issuing Authority; provenance ISO/IEC 17065:2012, 7.2 (the application information the body obtains) for the inquiry, 7.3.1 (application review) for the quotation review, 4.1.2 (the legally enforceable agreement) for the agreement leg, 7.3.4 (declining without competence) for the provider_declines leg; the fee content of the quotation per PD-05 §4.2.8/§4.2.9), ia_tl (an Issuing Authority negotiates test work with a Test Laboratory), tl_applicant (a manufacturer negotiates development testing with a Test Laboratory directly, outside any certification flow). Pure record-keeping: the module records quotations and agreements, it never moves money (TODO.adoption/09 carries the payment evidence). The funnel is the `engagement` state machine (INQUIRY → QUOTED → AGREED → CONVERTED, with DECLINED and WITHDRAWN legs and the PENDING_EXTERNAL park for the acts that genuinely happen off-platform); once CONVERTED (or DECLINED/WITHDRAWN) the record is read-only and, for ia_applicant, the linked Application carries the subject data forward. Only ia_applicant negotiations convert: the conversion_offered guard on the machine holds the kind." }
4
+ indexes { manufacturer_id issuing_authority_id test_laboratory_id status standard_id kind }
5
+ id: string {
6
+ modality SHALL
7
+ }
8
+ standard_id: string {
9
+ modality SHALL
10
+ }
11
+ engagement_number: string {
12
+ modality SHALL
13
+ definition "The provider's reference (ENG-<provider>-<year>-<seq>), minted like the application number"
14
+ }
15
+ kind: enum {
16
+ modality SHALL
17
+ definition "The negotiation pair (TODO.adoption/07): ia_applicant (requester = the applicant manufacturer, provider = the Issuing Authority), ia_tl (requester = the Issuing Authority, provider = the Test Laboratory), tl_applicant (requester = the applicant manufacturer, provider = the Test Laboratory). Fixed at recording; the kind drives the party refs, the console views, and the defaults."
18
+ enum_values { ia_applicant ia_tl tl_applicant }
19
+ }
20
+ manufacturer_id: reference(Manufacturer) [0..1] {
21
+ modality MAY
22
+ definition "The applicant organization (ISO/IEC 17065:2012, 7.2: the client's identity). The requester on ia_applicant and tl_applicant negotiations; absent on ia_tl. The applicant-side org visibility keys on it, as with Application.manufacturer_id"
23
+ on_delete restrict
24
+ required false
25
+ }
26
+ issuing_authority_id: reference(IssuingAuthority) [0..1] {
27
+ modality MAY
28
+ definition "The Issuing Authority party: the provider on ia_applicant (the inquiry is addressed to it), the requester on ia_tl; absent on tl_applicant. The IA-side org visibility keys on it, as with Application.issuing_authority_id"
29
+ on_delete restrict
30
+ required false
31
+ }
32
+ test_laboratory_id: reference(TestLaboratory) [0..1] {
33
+ modality MAY
34
+ definition "The Test Laboratory party: the provider on ia_tl and tl_applicant negotiations; absent on ia_applicant. The laboratory-side org visibility keys on it, as with TestRequest.assigned_laboratory_id"
35
+ on_delete restrict
36
+ required false
37
+ }
38
+ subject_designation: string {
39
+ modality SHALL
40
+ definition "The subject's designation as the requester states it: the instrument's spec-sheet summary on ia_applicant, the scope of work on ia_tl and tl_applicant. The technical record proper starts at the Application"
41
+ }
42
+ subject_description: text [0..1] {
43
+ modality MAY
44
+ definition "What the subject is and the work asked for, as enquired (intended use, measuring range, the spec sheet's prose, the scope of the test work)"
45
+ }
46
+ inquirer_name: string [0..1] {
47
+ modality MAY
48
+ definition "The person who made the inquiry (the requester's contact)"
49
+ }
50
+ inquirer_email: string [0..1] {
51
+ modality MAY
52
+ }
53
+ inquirer_phone: string [0..1] {
54
+ modality MAY
55
+ }
56
+ owner: string [0..1] {
57
+ modality MAY
58
+ definition "The provider-side officer owning the negotiation (audit provenance)"
59
+ }
60
+ status: enum {
61
+ modality SHALL
62
+ definition "The negotiation funnel (the `engagement` state machine): INQUIRY → QUOTED → AGREED → CONVERTED, DECLINED from INQUIRY (provider_declines, ISO/IEC 17065:2012, 7.3.4) or QUOTED (requester_declines), WITHDRAWN from the open states (requester_withdraws), and the PENDING_EXTERNAL park (TODO.adoption/07: the negotiation continues off-platform; either party records the claimed outcome with its document and provenance). CONVERTED/DECLINED/WITHDRAWN are terminal: the record is then read-only."
63
+ enum_values { INQUIRY QUOTED AGREED CONVERTED DECLINED WITHDRAWN PENDING_EXTERNAL }
64
+ }
65
+ quotation_id: reference(Quotation) [0..1] {
66
+ modality MAY
67
+ definition "The current quotation; a re-issue supersedes the previous one (its status goes SUPERSEDED), never edits it in place"
68
+ on_delete nullify
69
+ required false
70
+ }
71
+ agreement_id: reference(ConsultingAgreement) [0..1] {
72
+ modality MAY
73
+ definition "The agreement record (ISO/IEC 17065:2012, 4.1.2 on ia_applicant; the same record-keeping doctrine on the other kinds)"
74
+ on_delete nullify
75
+ required false
76
+ }
77
+ converted_application_id: reference(Application) [0..1] {
78
+ modality MAY
79
+ definition "The Application an ia_applicant negotiation converted into (the only kind that converts): set by the conversion, then the negotiation is read-only"
80
+ on_delete nullify
81
+ required false
82
+ }
83
+ decline_reason: text [0..1] {
84
+ modality MAY
85
+ definition "Recorded on the DECLINED leg (provider_declines / requester_declines / external_decline_recorded): the reason is never silently dropped"
86
+ }
87
+ withdrawal_reason: text [0..1] {
88
+ modality MAY
89
+ definition "Recorded on the requester_withdraws leg"
90
+ }
91
+ external_note: text [0..1] {
92
+ modality MAY
93
+ definition "What the parties are settling off-platform while the negotiation parks (the PENDING_EXTERNAL leg's recorded reason: a phone negotiation, a legal review, shipping terms)"
94
+ }
95
+ external_recorded_by: string [0..1] {
96
+ modality MAY
97
+ definition "Who recorded the off-platform outcome (the claimant's name). The platform records the claimed outcome with the claimant's provenance; it never pretends to have witnessed the act itself"
98
+ }
99
+ external_outcome_date: date [0..1] {
100
+ modality MAY
101
+ definition "The date the parties state they settled off-platform, in the claimant's wording (e.g. agreed on 2026-08-20)"
102
+ }
103
+ quoted_date: datetime [0..1] {
104
+ modality MAY
105
+ }
106
+ agreed_date: datetime [0..1] {
107
+ modality MAY
108
+ definition "Both signatures on the agreement (ISO/IEC 17065:2012, 4.1.2), or the recording of a claimed off-platform agreement"
109
+ }
110
+ converted_date: datetime [0..1] {
111
+ modality MAY
112
+ }
113
+ declined_date: datetime [0..1] {
114
+ modality MAY
115
+ }
116
+ withdrawn_date: datetime [0..1] {
117
+ modality MAY
118
+ }
119
+ created: datetime {
120
+ modality SHALL
121
+ }
122
+ modified: datetime {
123
+ modality SHALL
124
+ }
125
+ }
126
+
127
+ class Quotation#data {
128
+ store { quotations }
129
+ description { "The provider's financial quotation (TODO.federation/02 for the engagement parent; TODO.adoption/07 for the test-request quote leg; the fee content per PD-05 §4.2.8/§4.2.9): priced line items with computed amounts and a computed total, a currency, a validity date, and the stated timeline and conditions. Exactly one parent: an Engagement (the negotiation primitive) or a TestRequest (the dispatched request the laboratory quotes against). Record-keeping only: issuance walks the parent INQUIRY → QUOTED (the engagement) or ISSUED → QUOTED (the test request); acceptance rides the agreement signature (the engagement) or the requester's accept act (the test request). A re-quotation supersedes, never edits an issued quotation." }
130
+ indexes { engagement_id test_request_id test_laboratory_id status }
131
+ id: string {
132
+ modality SHALL
133
+ }
134
+ standard_id: string {
135
+ modality SHALL
136
+ }
137
+ engagement_id: reference(Engagement) [0..1] {
138
+ modality MAY
139
+ definition "The engagement this quotation prices (set when the parent is a negotiation)"
140
+ on_delete cascade
141
+ required false
142
+ }
143
+ test_request_id: reference(TestRequest) [0..1] {
144
+ modality MAY
145
+ definition "The dispatched test request this quotation prices (set when the parent is the TODO.adoption/07 quote leg). Exactly one of engagement_id / test_request_id is set."
146
+ on_delete cascade
147
+ required false
148
+ }
149
+ quotation_number: string {
150
+ modality SHALL
151
+ definition "The provider's reference (QUO-<provider>-<year>-<seq>)"
152
+ }
153
+ line_items: reference(QuotationLineItem) [1..*] {
154
+ modality SHALL
155
+ definition "The priced lines (application fee, evaluation days, per-test charges, …); every amount is computed by the quotation service, never keyed by hand"
156
+ }
157
+ currency: string {
158
+ modality SHALL
159
+ definition "The ISO 4217 currency code every line amount and the total are expressed in"
160
+ }
161
+ total_amount: number {
162
+ modality SHALL
163
+ definition "The sum of the line items' computed amounts: computed by the quotation service, stored for the record (the requester sees the same number the provider composed)"
164
+ }
165
+ valid_until: date [0..1] {
166
+ modality MAY
167
+ definition "The quotation's validity date; past it the quotation has lapsed (displayed, never silently enforced)"
168
+ }
169
+ timeline: string [0..1] {
170
+ modality MAY
171
+ definition "The provider's stated delivery timeline (the quote leg's content, TODO.adoption/07: price, currency, timeline, conditions, validity)"
172
+ }
173
+ conditions: text [0..1] {
174
+ modality MAY
175
+ definition "The commercial conditions the provider attaches to the quotation (payment terms, validity conditions, scope caveats), in the provider's wording"
176
+ }
177
+ status: enum {
178
+ modality SHALL
179
+ definition "DRAFT (being composed) → ISSUED (sent to the requester with the parent's hop into QUOTED) → ACCEPTED (the requester's acceptance act) | DECLINED (the requester declines) — or SUPERSEDED when a re-quotation replaces it. Field writes with audit, not a machine: the parent's funnel is the lifecycle that matters."
180
+ enum_values { DRAFT ISSUED ACCEPTED DECLINED SUPERSEDED }
181
+ }
182
+ notes: text [0..1] {
183
+ modality MAY
184
+ }
185
+ manufacturer_id: reference(Manufacturer) [0..1] {
186
+ modality MAY
187
+ definition "Denormalized from the parent (the applicant party, when the pair carries one): the org-visibility index fields are the entities' REAL fields (the requester reads their quotation directly)"
188
+ on_delete restrict
189
+ required false
190
+ }
191
+ issuing_authority_id: reference(IssuingAuthority) [0..1] {
192
+ modality MAY
193
+ definition "Denormalized from the parent (the Issuing Authority party, when the pair carries one)"
194
+ on_delete restrict
195
+ required false
196
+ }
197
+ test_laboratory_id: reference(TestLaboratory) [0..1] {
198
+ modality MAY
199
+ definition "Denormalized from the parent (the Test Laboratory party, when the pair carries one: the provider on ia_tl and tl_applicant, the quoting laboratory on the test-request leg)"
200
+ on_delete restrict
201
+ required false
202
+ }
203
+ issued_date: datetime [0..1] {
204
+ modality MAY
205
+ }
206
+ accepted_date: datetime [0..1] {
207
+ modality MAY
208
+ }
209
+ declined_date: datetime [0..1] {
210
+ modality MAY
211
+ }
212
+ decline_reason: text [0..1] {
213
+ modality MAY
214
+ definition "Recorded when the requester declines the quotation"
215
+ }
216
+ created: datetime {
217
+ modality SHALL
218
+ }
219
+ modified: datetime {
220
+ modality SHALL
221
+ }
222
+ }
223
+
224
+ class QuotationLineItem#data {
225
+ description { "One priced line of a Quotation (TODO.federation/02): what is charged, how many units, the unit price, and the computed amount. Embedded on Quotation.line_items; the amount is quantity × unit_price computed by the quotation service (round-half-up to two decimals), never keyed by hand." }
226
+ helper { true }
227
+ item: text {
228
+ modality SHALL
229
+ definition "What the line charges for (application fee, evaluation day, test charge, …)"
230
+ }
231
+ quantity: number {
232
+ modality SHALL
233
+ }
234
+ unit_price: number {
235
+ modality SHALL
236
+ definition "The per-unit price in the quotation's currency"
237
+ }
238
+ amount: number {
239
+ modality SHALL
240
+ definition "quantity × unit_price, computed by the quotation service and stored for the record"
241
+ }
242
+ }
243
+
244
+ class ConsultingAgreement#data {
245
+ store { consultingAgreements }
246
+ description { "The agreement record against a negotiation (TODO.federation/02; ISO/IEC 17065:2012, 4.1.2 on ia_applicant: certification activities are under a legally enforceable agreement): the agreement date, the signed document references, and the two signature legs (requester and provider). Both signatures complete the negotiation's QUOTED → AGREED hop; either party may sign first (the requester's portal acceptance is one leg; the provider's desk records the other, white-gloves deployments record both at the provider desk). When the act genuinely happened off-platform (TODO.adoption/07's pending-external pattern), the record instead carries the claimed outcome: the external_recorded_* provenance names the claimant and the signature legs stay empty, because the platform never witnessed them. The agreement DOCUMENTS ride as references: the platform records what was supplied, the signed bytes stay with the parties' records (or in the TODO.adoption/03 blob store when bound)." }
247
+ indexes { engagement_id test_laboratory_id status }
248
+ id: string {
249
+ modality SHALL
250
+ }
251
+ standard_id: string {
252
+ modality SHALL
253
+ }
254
+ engagement_id: reference(Engagement) {
255
+ modality SHALL
256
+ definition "The negotiation this agreement governs"
257
+ on_delete cascade
258
+ required true
259
+ }
260
+ agreement_date: date [0..1] {
261
+ modality MAY
262
+ definition "The date on the agreement document"
263
+ }
264
+ documents: reference(DocumentRef) [0..*] {
265
+ modality MAY
266
+ definition "The signed agreement document(s) as references (document_type + reference): the record carries what was supplied, never a copy"
267
+ }
268
+ status: enum {
269
+ modality SHALL
270
+ definition "DRAFT (recorded, signatures outstanding) → SIGNED (both parties signed and the negotiation walks QUOTED → AGREED on the completing signature, or the off-platform outcome was recorded with its claimant provenance from PENDING_EXTERNAL)"
271
+ enum_values { DRAFT SIGNED }
272
+ }
273
+ signed_by_requester: string [0..1] {
274
+ modality MAY
275
+ definition "Who signed for the requester organization"
276
+ }
277
+ requester_signed_date: datetime [0..1] {
278
+ modality MAY
279
+ }
280
+ signed_by_provider: string [0..1] {
281
+ modality MAY
282
+ definition "Who signed for the provider organization"
283
+ }
284
+ provider_signed_date: datetime [0..1] {
285
+ modality MAY
286
+ }
287
+ external_recorded_by: string [0..1] {
288
+ modality MAY
289
+ definition "Set when the agreement is the recorded outcome of an off-platform act (TODO.adoption/07): the claimant's name. The signature legs stay empty on such a record; the platform records the claimed outcome, never a witnessed signature."
290
+ }
291
+ external_recorded_date: datetime [0..1] {
292
+ modality MAY
293
+ definition "When the off-platform outcome was recorded"
294
+ }
295
+ notes: text [0..1] {
296
+ modality MAY
297
+ }
298
+ manufacturer_id: reference(Manufacturer) [0..1] {
299
+ modality MAY
300
+ definition "Denormalized from the parent negotiation (the applicant party, when the pair carries one): the org-visibility index fields are the entities' REAL fields"
301
+ on_delete restrict
302
+ required false
303
+ }
304
+ issuing_authority_id: reference(IssuingAuthority) [0..1] {
305
+ modality MAY
306
+ definition "Denormalized from the parent negotiation (the Issuing Authority party, when the pair carries one)"
307
+ on_delete restrict
308
+ required false
309
+ }
310
+ test_laboratory_id: reference(TestLaboratory) [0..1] {
311
+ modality MAY
312
+ definition "Denormalized from the parent negotiation (the Test Laboratory party, when the pair carries one)"
313
+ on_delete restrict
314
+ required false
315
+ }
316
+ created: datetime {
317
+ modality SHALL
318
+ }
319
+ modified: datetime {
320
+ modality SHALL
321
+ }
322
+ }
323
+
@@ -0,0 +1,359 @@
1
+ class QuantityValue#data {
2
+ description { "Number + optional unit — the INV-1 workhorse (\"no bare numbers\"). Instantiation of metamodel Module A QuantityValue, reduced to the two fields the R 60 parameter layer needs." }
3
+ helper { true }
4
+ value: any {
5
+ modality SHALL
6
+ definition "Decimal or string value (string for enum-like parameter values)"
7
+ }
8
+ unit: string [0..1] {
9
+ modality MAY
10
+ definition "Unit id from value-types.yaml units (kg, g, t, degC, V, mV/V, %, v, counts/v, ...); absent only for dimensionless/string values"
11
+ }
12
+ }
13
+
14
+ class CustodyEvent#data {
15
+ description { "Append-only chain-of-custody record, embedded in MeasuringInstrumentSample.custody_events" }
16
+ helper { true }
17
+ sample_id: reference(MeasuringInstrumentSample) {
18
+ modality SHALL
19
+ on_delete cascade
20
+ required true
21
+ }
22
+ event_type: enum {
23
+ modality SHALL
24
+ enum_values { REQUESTED SHIPPED RECEIVED ASSIGNED_TO_TEST RETURNED DISPOSED }
25
+ }
26
+ from_party_id: string [0..1] {
27
+ modality MAY
28
+ definition "Party that held the sample before this event"
29
+ }
30
+ to_party_id: string {
31
+ modality SHALL
32
+ definition "Party that holds the sample after this event"
33
+ }
34
+ timestamp: datetime {
35
+ modality SHALL
36
+ }
37
+ notes: text [0..1] {
38
+ modality MAY
39
+ }
40
+ }
41
+
42
+ class OperationalStateEntry#data {
43
+ description { "One entry of a sample's operational-state trajectory (TODO.roadmap/07 + task 29, primmel StateTrajectoryEntry): the machine ENTERED `state` at `at` because `fired_by` recorded the transition fire. Append-only evidence — lands in the run's trace next to the conditions log." }
44
+ helper { true }
45
+ state: string {
46
+ modality SHALL
47
+ definition "Node of the operational machine entered (e.g. warming_up, ready)"
48
+ }
49
+ at: datetime {
50
+ modality SHALL
51
+ definition "ISO-8601 timestamp of the entry"
52
+ }
53
+ fired_by: string {
54
+ modality SHALL
55
+ definition "Who/what fired the transition (operator name, process step id; '' = genesis)"
56
+ }
57
+ }
58
+
59
+ class OperationalState#data {
60
+ description { "A sample's current node in one OPERATIONAL state machine (TODO.roadmap/07 + task 29) — instance-level data of the machine declared in data/<rec>/model/state.yaml. Strictly separate from `status` (the measuring_instrument_sample LIFECYCLE machine): the families never mix (primmel C38)." }
61
+ helper { true }
62
+ machine: string {
63
+ modality SHALL
64
+ definition "Id of the operational state machine (model/state.yaml state_machines[].id)"
65
+ }
66
+ current: string {
67
+ modality SHALL
68
+ definition "The machine's current node (e.g. off, warming_up, ready, measuring)"
69
+ }
70
+ trajectory: reference(OperationalStateEntry) [0..*] {
71
+ modality MAY
72
+ definition "Append-only state-entry log (embedded)"
73
+ on_delete cascade
74
+ }
75
+ }
76
+
77
+ class PhysicalDimensions#data {
78
+ description { "The sample's physical dimensions as registered on receipt (R 60-3, 4.9.10 — the report form's load-cell-dimensions entry, whose table carries the pictures/drawings of the dimensions). Every facet is an optional quantity-with-unit in mm; only the dimensions relevant to the instrument's shape are recorded (a cylindrical load cell records height + diameter, never length/width)." }
79
+ helper { true }
80
+ length: reference(QuantityValue) [0..1] {
81
+ modality MAY
82
+ definition "Overall length (QuantityValue { value, unit: mm })"
83
+ }
84
+ width: reference(QuantityValue) [0..1] {
85
+ modality MAY
86
+ definition "Overall width (QuantityValue { value, unit: mm })"
87
+ }
88
+ height: reference(QuantityValue) [0..1] {
89
+ modality MAY
90
+ definition "Overall height (QuantityValue { value, unit: mm })"
91
+ }
92
+ diameter: reference(QuantityValue) [0..1] {
93
+ modality MAY
94
+ definition "Body diameter (QuantityValue { value, unit: mm })"
95
+ }
96
+ }
97
+
98
+ class MeasuringInstrumentModelFamily#data {
99
+ store { measuringInstrumentModelFamilies }
100
+ description { "Family of measuring instruments (OIML V 1:2022, 4.02; R 60-1, 3.4.2). HAS MANY Models (optionally via Groups). Its classification and parameters act as defaults inherited by its groups/models (INV-10)." }
101
+ indexes { manufacturer_id standard_id }
102
+ id: string {
103
+ modality SHALL
104
+ }
105
+ standard_id: string {
106
+ modality SHALL
107
+ }
108
+ family_designation: string {
109
+ modality SHALL
110
+ definition "Human-readable family designation (e.g. 'ACME LC-500 Series')"
111
+ }
112
+ family_code: string [0..1] {
113
+ modality MAY
114
+ definition "Short code used in certificate numbers and URIs"
115
+ }
116
+ manufacturer_id: reference(Manufacturer) {
117
+ modality SHALL
118
+ on_delete restrict
119
+ required true
120
+ }
121
+ classification: map<dimension_id, string> [0..1] {
122
+ modality MAY
123
+ definition "Family-level dimension defaults (family-scope axes: technology, humidity_class, construction)"
124
+ }
125
+ parameters: map<attribute_id, QuantityValue> [0..1] {
126
+ modality MAY
127
+ definition "Family-scope attribute defaults (attributes.yaml scope: family — e_min, e_lim, p_lc, t_min, t_max, rated_output, input_impedance, output_impedance, recommended_excitation, excitation_maximum, safe_overload, transducer_material, atmospheric_protection)"
128
+ }
129
+ created: datetime {
130
+ modality SHALL
131
+ }
132
+ modified: datetime {
133
+ modality SHALL
134
+ }
135
+ }
136
+
137
+ class MeasuringInstrumentModelGroup#data {
138
+ store { measuringInstrumentModelGroups }
139
+ description { "Sub-grouping within a MeasuringInstrumentModelFamily. A group carries the metrological characteristics its member Models share (accuracy class, n_lc, y, z, dr, ...); Models resolve them by delegation (INV-10). Within a group, Models differ only by e_max (R 60-2, Annex D)." }
140
+ indexes { family_id manufacturer_id standard_id }
141
+ id: string {
142
+ modality SHALL
143
+ }
144
+ standard_id: string {
145
+ modality SHALL
146
+ }
147
+ family_id: reference(MeasuringInstrumentModelFamily) {
148
+ modality SHALL
149
+ on_delete cascade
150
+ required true
151
+ }
152
+ manufacturer_id: reference(Manufacturer) {
153
+ modality SHALL
154
+ definition "Denormalized from family_id.manufacturer_id"
155
+ on_delete restrict
156
+ required true
157
+ }
158
+ group_label: string {
159
+ modality SHALL
160
+ definition "Compact label combining class + n_lc (e.g. 'C6', 'B10', 'C3')"
161
+ }
162
+ classification: map<dimension_id, string> [0..1] {
163
+ modality MAY
164
+ definition "Group-scope dimensions (accuracy_class, load_type; humidity_class override of the family default)"
165
+ }
166
+ parameters: map<attribute_id, QuantityValue> [0..1] {
167
+ modality MAY
168
+ definition "Group-identical characteristics (attributes.yaml scope: group — n_lc, v_min, y, z, dr, mpe, mpe_lc, construction_type)"
169
+ }
170
+ created: datetime {
171
+ modality SHALL
172
+ }
173
+ modified: datetime {
174
+ modality SHALL
175
+ }
176
+ }
177
+
178
+ class MeasuringInstrumentModel#data {
179
+ store { measuringInstrumentModels }
180
+ description { "A model of measuring instrument — the subject of type evaluation and approval. Attribute values not set here resolve through group -> family delegation (INV-10)." }
181
+ indexes { family_id group_id manufacturer_id standard_id }
182
+ id: string {
183
+ modality SHALL
184
+ }
185
+ standard_id: string {
186
+ modality SHALL
187
+ }
188
+ model_designation: string {
189
+ modality SHALL
190
+ definition "Specific model designation (e.g. 'ACME-LC-500-C-5kg')"
191
+ }
192
+ manufacturer_id: reference(Manufacturer) {
193
+ modality SHALL
194
+ on_delete restrict
195
+ required true
196
+ }
197
+ family_id: reference(MeasuringInstrumentModelFamily) {
198
+ modality SHALL
199
+ on_delete restrict
200
+ required true
201
+ }
202
+ group_id: reference(MeasuringInstrumentModelGroup) [0..1] {
203
+ modality MAY
204
+ on_delete restrict
205
+ required false
206
+ }
207
+ hardware_revision: string [0..1] {
208
+ modality MAY
209
+ }
210
+ type_approval_ref: reference(Certificate) [0..1] {
211
+ modality MAY
212
+ definition "Certificate issued for this model — filled after D3 approval"
213
+ on_delete nullify
214
+ required false
215
+ }
216
+ description: text [0..1] {
217
+ modality MAY
218
+ }
219
+ classification: map<dimension_id, string> [0..1] {
220
+ modality MAY
221
+ definition "Model dimension values/overrides (technology, accuracy_class, humidity_class, load_type)"
222
+ }
223
+ parameters: map<attribute_id, QuantityValue> [0..1] {
224
+ modality MAY
225
+ definition "Model-scope attributes (e_max, mr_max, warm_up_time, power_voltage, interfaces, output_signal, software_identification; overrides of inherited group/family values)"
226
+ }
227
+ capabilities: string[] [0..*] {
228
+ modality MAY
229
+ definition "Capability ids from data/r60/model/capabilities.yaml"
230
+ }
231
+ created: datetime {
232
+ modality SHALL
233
+ }
234
+ modified: datetime {
235
+ modality SHALL
236
+ }
237
+ }
238
+
239
+ class MeasuringInstrumentSample#data {
240
+ store { measuringInstrumentSamples }
241
+ description { "A physical instance of a MeasuringInstrumentModel submitted for type evaluation. Tracks receipt, dispatch to test labs, and return/disposal through the embedded custody_events log (PD-05 §4.3)." }
242
+ indexes { model_id application_id manufacturer_id serial_number status standard_id }
243
+ id: string {
244
+ modality SHALL
245
+ }
246
+ standard_id: string {
247
+ modality SHALL
248
+ }
249
+ sample_number: string [0..1] {
250
+ modality MAY
251
+ definition "IA-assigned sample number (e.g. 'S-2024-001')"
252
+ }
253
+ serial_number: string {
254
+ modality SHALL
255
+ definition "Manufacturer's serial number on the physical instrument"
256
+ }
257
+ model_id: reference(MeasuringInstrumentModel) {
258
+ modality SHALL
259
+ definition "Catalog model this sample is an instance of"
260
+ on_delete restrict
261
+ required true
262
+ }
263
+ manufacturer_id: reference(Manufacturer) {
264
+ modality SHALL
265
+ on_delete restrict
266
+ required true
267
+ }
268
+ application_id: reference(Application) [0..1] {
269
+ modality MAY
270
+ definition "Application this sample was logged against"
271
+ on_delete restrict
272
+ required false
273
+ }
274
+ manufacturing_date: date [0..1] {
275
+ modality MAY
276
+ }
277
+ received_date: date [0..1] {
278
+ modality MAY
279
+ }
280
+ condition: enum {
281
+ modality SHALL
282
+ definition "The condition the sample arrived in, recorded at receipt registration (the physical instrument's received state)"
283
+ enum_values { NEW USED REFURBISHED DAMAGED }
284
+ }
285
+ condition_notes: text [0..1] {
286
+ modality MAY
287
+ }
288
+ photographs: reference(DocumentRef) [0..*] {
289
+ modality MAY
290
+ definition "Receipt photograph(s) of the physical instrument (R 60-3, 4.9.4 — the report form carries the sample's photographs); the document-store blob slots carry the bytes when the store is bound, the file-name reference otherwise"
291
+ }
292
+ status: enum {
293
+ modality SHALL
294
+ definition "Lifecycle per evaluation/state-machines.yaml measuring_instrument_sample machine"
295
+ enum_values { REQUESTED IN_TRANSIT RECEIVED IN_TESTING TESTING_COMPLETE RETURNED RETAINED DESTROYED DISPOSED }
296
+ }
297
+ current_location: string [0..1] {
298
+ modality MAY
299
+ }
300
+ current_custodian_id: string [0..1] {
301
+ modality MAY
302
+ definition "Reference to the org currently holding the sample (IA, lab, manufacturer)"
303
+ }
304
+ custody_events: reference(CustodyEvent) [0..*] {
305
+ modality SHALL
306
+ definition "Append-only chain-of-custody log (embedded)"
307
+ on_delete cascade
308
+ }
309
+ disposal_method: enum [0..1] {
310
+ modality MAY
311
+ enum_values { RETURNED RECYCLED DESTROYED RETAINED }
312
+ }
313
+ disposal_date: date [0..1] {
314
+ modality MAY
315
+ }
316
+ disposal_certificate: reference(DocumentRef) [0..1] {
317
+ modality MAY
318
+ }
319
+ test_context: map<attribute_id, QuantityValue> [0..1] {
320
+ modality MAY
321
+ definition "Sample-scope test-dependent attributes (attributes.yaml origin: test-dependent — d_min, d_max, v, n, mr, conversion_factor_f); values under test, never inherited downward"
322
+ }
323
+ physical_dimensions: reference(PhysicalDimensions) [0..1] {
324
+ modality MAY
325
+ definition "Physical dimensions registered on receipt (R 60-3, 4.9.10 — the report form's load-cell-dimensions entry); embedded, each facet a QuantityValue in mm"
326
+ }
327
+ selected_for_evaluation: boolean [0..1] {
328
+ modality MAY
329
+ definition "The IA's selection of this sample for the type evaluation (R 60-3, 4.7 — selection of the sample(s) tested): the evaluation tests a subset of the received samples; absent/false = not selected. Only a registered (received) sample is selectable."
330
+ }
331
+ selection_justification: text [0..1] {
332
+ modality MAY
333
+ definition "The recorded justification of the selection decision (R 60-3, 4.7.2 — justification of the selection of the test sample(s), referring to R 60-2, 2.3/2.4 and Annex D)"
334
+ }
335
+ verification_state: enum [0..1] {
336
+ modality MAY
337
+ definition "Verification lifecycle state (TODO.roadmap/21, metamodel v0.6.1) — the sample_verification state machine of evaluation/state-machines.yaml: NOT_VERIFIED → VERIFIED (a verification passes) → REVERIFICATION_DUE (timer: validity window elapsed) | INVALIDATED (signal: an out-of-cycle trigger such as a tyre change) → VERIFIED (re-verification passes). Absent = never verified."
338
+ enum_values { NOT_VERIFIED VERIFIED REVERIFICATION_DUE INVALIDATED }
339
+ }
340
+ seals: reference(SealStatus) [0..*] {
341
+ modality MAY
342
+ definition "Current seal status on the sample (embedded) — set/renewed by passed verifications (marking and securing, e.g. R 91-1, 7.13/8.2.4)"
343
+ }
344
+ verification_signals: reference(VerificationSignal) [0..*] {
345
+ modality MAY
346
+ definition "Posted out-of-cycle verification signals (embedded) — the signal-event channel of the re-verification triggers (e.g. tyre-change on an ego speed meter, R 91-1, 6.15.3 Note 2); consumed by the trigger engine"
347
+ }
348
+ operational_state: reference(OperationalState) [0..1] {
349
+ modality MAY
350
+ definition "The sample's current node in the rec's OPERATIONAL state machine (data/<rec>/model/state.yaml, TODO.roadmap/07 + task 29 — e.g. the R 144 warm-up machine off → warming_up → ready → measuring). Instance-level HAS state with an append-only trajectory; tests gate on it via the precondition `state:` facet (violation ⇒ run invalid, never fail). Absent = no operational state tracked (the gate reads the machine's initial node). Strictly separate from `status` (lifecycle family)."
351
+ }
352
+ created: datetime {
353
+ modality SHALL
354
+ }
355
+ modified: datetime {
356
+ modality SHALL
357
+ }
358
+ }
359
+