@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,454 @@
1
+ # GENERATED package payload (TODO.v2/01 TCD-6) — the program's governing-document
2
+ # module. The authoring draft is data/oiml-twin-cert/documents/tw-1/document.yaml (document prose has no
3
+ # PRL construct); migrated by build-prl-package. Do not edit by hand.
4
+ # OIML SMART TWIN-CERT DOCUMENT MODULE TW-1 — THE PROGRAM'S GOVERNING
5
+ # DOCUMENT (urn:oiml:pub:cs:twin-1:2027)
6
+ # -----------------------------------------------------------------------------
7
+ # TW-1 "Digital-Twin Fidelity Certification Program — Governing Document",
8
+ # edition 2027 — the normative text every /req/twin-fidelity/* requirement,
9
+ # /conf/twin-fidelity/* conformance test, model register, symbol, behavior,
10
+ # characteristic, term and D2 form of the oiml-twin-cert package cites by
11
+ # clause anchor (TODO.v2/01 TCD-6 work item 1 — the TCD-1 review's backfill
12
+ # contract).
13
+ #
14
+ # ANCHOR CONTRACT (cite-integrity — browser/src/__tests__/
15
+ # twin-1-cite-integrity.test.ts pins it): the cited anchors are EXACTLY
16
+ # 3.1 — the VIML naming record (twin-fidelity evaluation)
17
+ # 4.1–4.4 — the twin-fidelity model (the two-channel relation, the
18
+ # served registers, the probe channel, the declared tolerance)
19
+ # 5.1–5.6 — the normative requirements
20
+ # 6.1–6.5 — the twin-fidelity evaluation (admission + the probe schedule)
21
+ # Every citation in primmel-packages/oiml-twin-cert/ (source { doc … clause },
22
+ # source "urn, clause", <urn>#clause-<c>, and the forms' section "TW-1, <c>"
23
+ # facets) resolves to a section declared here, and every leaf section
24
+ # numbered 3–6 declared here is cited. The clause-6 lead-in carries the
25
+ # certification decision + certificate + surveillance semantics (the
26
+ # subsections are the determination procedures).
27
+ #
28
+ # STATUS: a DECLARED governing document of the platform's own program — the
29
+ # scheme operator's publication, styled on the OIML-CS document pattern
30
+ # (data/oiml-cs/documents/<doc>/), not an OIML publication. The OIML-CS is
31
+ # the program's recorded long-term home (controller decision 4: a new
32
+ # category scheme inside the B 18 framework model when the OIML-CS adopts
33
+ # it — modelled as nothing yet). Pilot values (the LC-500-class register,
34
+ # δ = 0.1 kg, the mtl_f_001 / p_weber register citations) are the scheme's
35
+ # DECLARED pilot parameters — declared examples of the fictional pilot
36
+ # (primmel-packages/acme-lc500), never measured fact.
37
+ #
38
+ # Provenance: analysis/twin-certification-design.md (Q1–Q5 + the five
39
+ # controller decisions, 2026-07-28); the normative content mirrors the
40
+ # landed package — specification/requirements/twin-fidelity.prl,
41
+ # specification/conformance/twin-fidelity.prl, model/*.prl,
42
+ # terminology.prl, execution/forms/*.prl.
43
+ #
44
+ # Data conventions: hand-authored app configuration (no PRL construct for
45
+ # document prose — the oiml-cs documents/<doc>/ module pattern); migrated
46
+ # into the package by the authoring aid (browser/scripts/build-prl-package.ts
47
+ # ships documents/** for certification_program layers verbatim).
48
+ # ---
49
+ document:
50
+ id: tw-1
51
+ urn: urn:oiml:pub:cs:twin-1:2027
52
+ doc: TW-1
53
+ title: "Digital-Twin Fidelity Certification Program — Governing Document"
54
+ edition: 2027
55
+ year: 2027
56
+ status: current
57
+ validity:
58
+ from: '2027-01-01'
59
+ foreword: >
60
+ This document is the governing document of the Digital-Twin Fidelity
61
+ Certification Program operated by the scheme operator (the twin
62
+ certification body). The Program confirms that a digital twin provided
63
+ by a measuring instrument faithfully reflects the physical instrument's
64
+ status — the served value equivalent to the physical state, within
65
+ declared bounds and freshness, continuously. The Program is a per-unit
66
+ certification scheme with surveillance, self-classified as scheme
67
+ type 5 against the ISO/IEC 17067 register; the twin certificate stands
68
+ alone from type evaluation but prerequisites a valid type certificate
69
+ of the underlying instrument. The Program is related to the OIML
70
+ Recommendations by mapping only (maps_to oiml-r60 for the pilot
71
+ register set), composes no Recommendation content, and is recorded as
72
+ a candidate category scheme of the OIML Certification System (OIML-CS)
73
+ — its long-term home.
74
+ sections:
75
+ - clause: "1"
76
+ title: Scope
77
+ prose: >
78
+ This document specifies the Digital-Twin Fidelity Certification
79
+ Program: the twin-fidelity model (clause 4), the program
80
+ requirements a certified twin shall meet (clause 5), and the
81
+ twin-fidelity evaluation — the determination activities, the
82
+ certification decision, the certificate and the surveillance
83
+ regime (clause 6). The object of certification is the serving
84
+ layer of a digital twin of an individual measuring instrument
85
+ (the certified unit): the governed projection of the instrument's
86
+ status the twin serves — declared registers with declared
87
+ freshness and provenance. The Program certifies the fidelity of
88
+ that projection, never the completeness of any larger
89
+ representation the provider operates. Certification of the
90
+ underlying instrument type is outside the scope of this document;
91
+ a valid type certificate is an admission prerequisite (6.1).
92
+ - clause: "2"
93
+ title: Normative references
94
+ prose: >
95
+ The following documents are indispensable for the application of
96
+ this document: ISO/IEC 17000:2020 (conformity assessment —
97
+ vocabulary and general principles, in particular determination
98
+ A.3.2 and attestation A.4.3); ISO/IEC 17065 (requirements for
99
+ bodies certifying products, processes and services); ISO/IEC 17025
100
+ (requirements for the competence of testing and calibration
101
+ laboratories, in particular the personnel-authorization records of
102
+ 6.2.6); ISO/IEC 17067 (product certification schemes — the scheme
103
+ type register against which this Program classifies itself as
104
+ type 5); the OIML Recommendation the Program maps to for the
105
+ certified register set (OIML R 60 for the pilot registers — the
106
+ metrological definitions of the served aspects live there, never
107
+ restated here); OIML B 18 (the OIML-CS framework — the Program's
108
+ recorded long-term home).
109
+ - clause: "3"
110
+ title: Terms and definitions
111
+ prose: >
112
+ For the purposes of this document, the terms and definitions of
113
+ ISO/IEC 17000, the International Vocabulary of Metrology (VIM)
114
+ and the International Vocabulary of Terms in Legal Metrology
115
+ (VIML) apply, together with the following. VIML names no
116
+ twin-verification kind: VIML 2.09 and 2.12–2.14 are verifications
117
+ of the instrument itself (initial, subsequent, in-service), so the
118
+ twin-fidelity discipline is defined by this Program. The naming
119
+ decision and its record are 3.1.
120
+ - clause: "3.1"
121
+ title: twin-fidelity evaluation
122
+ prose: >
123
+ determination activity, and its attestation, confirming that a
124
+ digital twin provided by a measuring instrument faithfully
125
+ reflects the physical instrument's status — the served value
126
+ equivalent to the physical state, within declared bounds and
127
+ freshness, continuously. NOTE — The term is this Program's naming
128
+ decision (accepted 2026-07-28): VIML 2.09 and 2.12–2.14 name
129
+ instrument verifications and no twin-verification kind, so the
130
+ new verification kind is named here — a determination activity
131
+ per ISO/IEC 17000:2020, A.3.2 with attestation per A.4.3, a new
132
+ kind alongside initial, subsequent and in-service verification.
133
+ This entry is the naming decision record.
134
+ - clause: "4"
135
+ title: The twin-fidelity model
136
+ prose: >
137
+ Clause 4 declares the model the requirements of clause 5 and the
138
+ evaluation of clause 6 operate on: the two-channel fidelity
139
+ relation (4.1), the served registers the Program reads (4.2), the
140
+ physical-side probe channel with its sources, timestamps and
141
+ pairing window (4.3), and the declared twin tolerance (4.4). The
142
+ metrological definitions of the served aspects live in the
143
+ Recommendation the Program maps to; this clause declares only the
144
+ binding slots and the evidence registers the Program reads.
145
+ - clause: "4.1"
146
+ title: The two-channel fidelity relation
147
+ prose: >
148
+ Twin fidelity is a TWO-channel relation between the twin's served
149
+ channel and a physical-side reference channel. The serving
150
+ behavior under evaluation is the twin's served indication in
151
+ response to the physical instrument's applied load; the deviation
152
+ the relation judges is the characteristic Δ_ind = |served −
153
+ reference|, quantity-typed over the served register (4.2) and the
154
+ reference register (4.3) paired at a probe point. The deviation
155
+ is derived once, as the declared characteristic
156
+ twin_deviation_indication; requirements and tests consume that
157
+ single derivation, never a restated copy. The relation is closed
158
+ only by the probe channel of 4.3 — a served value alone, however
159
+ fresh, is one channel of a two-channel claim.
160
+ - clause: "4.2"
161
+ title: The served channel — served registers
162
+ prose: >
163
+ The served channel is the set of registers the twin serves and
164
+ the Program reads, each bound at deployment through the Program's
165
+ gateway: the served indication I (the live output reading in
166
+ units of mass, quantity-kind mass, unit kg — the served channel
167
+ of the two-channel fidelity relation) and the served operational
168
+ state (the instrument's off/warming/ready/measuring/fault state
169
+ as served by the twin's state channel). The metrological
170
+ definition of each served aspect lives in the Recommendation the
171
+ Program maps to; this section declares only the binding slots.
172
+ Every served register carries a declared freshness window on its
173
+ serve binding (fresh_within) — the window the requirements of 5.3
174
+ inherit and never re-declare.
175
+ - clause: "4.3"
176
+ title: The reference channel — probe sources, timestamps and the pairing window
177
+ prose: >
178
+ The reference channel is the physical-side evidence register
179
+ family paired with the served registers at a probe point. A
180
+ reference reading arrives by exactly one of three declared probe
181
+ sources, recorded on the evidence with its register citation:
182
+ reference_instrument — a traceable reference instrument, cited by
183
+ equipment-register id with its calibration trace (PREFERRED);
184
+ observer_attestation — a verification officer reads the physical
185
+ instrument's display and records the reading with its observation
186
+ timestamp, attestation per ISO/IEC 17000:2020, A.4.3, admitted
187
+ with the DECLARED traceability limitation: attestation-only
188
+ evidence proves the twin serves what the instrument's own display
189
+ annunciates — twin ≡ display, not twin ≡ mass (the reference IS
190
+ the EUT's own indication, never an independent physical
191
+ standard); sim_ground_truth — ground truth of the declared
192
+ acceptance environment, never a production channel. Each paired
193
+ reading is timestamped on both sides: the twin's OWN served
194
+ timestamp t_srv (the served-timestamp source declared per
195
+ operation — freshness is judged against the twin's own timestamp,
196
+ never the platform's receipt clock) and the reference observation
197
+ timestamp t_obs captured at evidence-capture time; the pairing
198
+ skew Δt_pair = |t_srv − t_obs| is derived once at evidence
199
+ capture and recorded as evidence. A pair whose skew exceeds the
200
+ declared pairing window — at most the probed register's
201
+ fresh_within, declared per register with fresh_within as the
202
+ ceiling, never a fixed platform constant — is INVALID: the
203
+ probe's setup was wrong, never a fail of the twin.
204
+ - clause: "4.4"
205
+ title: The declared twin tolerance
206
+ prose: >
207
+ The twin tolerance δ is the maximum permitted absolute deviation
208
+ between the served and the reference reading at any probe point,
209
+ declared per register by the scheme as a declared fraction of the
210
+ underlying instrument's maximum permissible error — declared by
211
+ the scheme, never a platform constant. For the pilot indication
212
+ register (the LC-500-class load-cell register) the scheme declares
213
+ δ_indication = 0.1 kg (the declared pilot parameter: 25 times the
214
+ good cell's noise σ, so the faithful twin passes cleanly and a
215
+ 0.25 kg lie is unmistakable).
216
+ - clause: "4.5"
217
+ title: The behavioral register family (the creep dwell)
218
+ prose: >
219
+ The behavioral registers close the behavioral fidelity relation
220
+ (5.6) over the creep dwell (6.5): the dwell parameters — the
221
+ declared dwell duration T_dw (the scheme's declaration per
222
+ register, the pilot's 900 s), the dwell load L_dw (≈90 % of
223
+ E_max, the lookupMPE load input), the certified type's accuracy
224
+ class (the lookupMPE class input) and the apportionment factor
225
+ p_lc (0.7 by default for load cells per R 60); the dwell
226
+ readings — the served indication at dwell start I_t0 (the drift
227
+ baseline) and at dwell end I_end, and the constant-reference
228
+ anchors I_ref,t0 and I_ref,end from the declared probe channel
229
+ (4.3); the derived maximum drift Δ_max — the maximum
230
+ |served sample − I_t0| over the recorded dwell series, derived
231
+ once at evidence capture from the recorded series (facts only,
232
+ auditable against it — the same derived-once discipline as the
233
+ pairing skew of 4.3); and the class creep allowance δ_cr =
234
+ lookupMPE(L_dw, accuracy_class, p_lc), the mapped Recommendation's
235
+ own apportioned maximum permissible error at the dwell load,
236
+ computed from the class tables, never a platform constant. The
237
+ behavioral judgment (5.6) is the canonical verdict
238
+ twin_creep_drift_indication read off the Δ_max register, judged
239
+ against δ_cr.
240
+ - clause: "5"
241
+ title: Program requirements
242
+ prose: >
243
+ Clause 5 states the normative requirements a certified twin shall
244
+ meet. A twin-fidelity requirement is, per served register, the
245
+ conjunction of value fidelity (5.2), freshness (5.3) and
246
+ provenance (5.4), plus state fidelity (5.5) and behavioral fidelity (5.6), gated by the
247
+ static-conformance admission (5.1). The requirements are cited by
248
+ the determination activities of clause 6 and judged through the
249
+ verdict chain of the Program's evaluation machinery.
250
+ - clause: "5.1"
251
+ title: Static conformance of the served twin interface (admission)
252
+ prose: >
253
+ A certified twin shall serve exactly the interface its certified
254
+ product package declares: the endpoint identifier, the served
255
+ operations with their payload schemas and quantity kinds, and the
256
+ access scopes shall equal the package's endpoint declaration. A
257
+ twin that mis-serves its declared contract shall not enter
258
+ value-fidelity probing. Verification: inspection — the
259
+ admission-time contract check against the pinned product
260
+ package's endpoint declaration, re-verified at every surveillance
261
+ cycle start.
262
+ - clause: "5.2"
263
+ title: Served indication within the declared twin tolerance
264
+ prose: >
265
+ The twin's served indication shall match the physical
266
+ instrument's indication within the declared tolerance
267
+ δ_indication at every probe point: |served − reference| ≤
268
+ δ_indication, the reference reading taken from a declared probe
269
+ channel (4.3) and paired with the served reading within the
270
+ pairing window. Verification: testing — the probe schedule's
271
+ range and envelope tests (6.2, 6.3): paired reference-vs-served
272
+ readings at the declared load points and envelope corners, each
273
+ pair timestamped within the pairing window.
274
+ - clause: "5.3"
275
+ title: Declared freshness on every fidelity register
276
+ prose: >
277
+ Every fidelity register shall be served under a declared
278
+ freshness window: the serve binding carries fresh_within, and a
279
+ served value older than its window degrades the fidelity verdict
280
+ to indeterminate — never a fail, never a silent pass. The Program
281
+ inherits the window from the serve declaration and never
282
+ re-declares it on the binding. Verification: definitional —
283
+ satisfied by the serve declaration the Program reuses and
284
+ enforced continuously by the verdict machinery's freshness gate.
285
+ - clause: "5.4"
286
+ title: Served-timestamp provenance on every fidelity register
287
+ prose: >
288
+ A certified twin shall serve a parseable timestamp on every
289
+ fidelity register, and the deployment shall declare the
290
+ served-timestamp field per operation (the timestamp_fields
291
+ declaration) so freshness is judged against the twin's own served
292
+ timestamp — a declared-but-absent timestamp is unavailable, never
293
+ invented. Every fidelity fact shall carry provenance: the
294
+ endpoint identifier bound to the certified unit's serial, the
295
+ serving operation, and the definition version pin. Verification:
296
+ definitional — a declaration requirement gated at admission and
297
+ enforced continuously by the freshness gate.
298
+ - clause: "5.5"
299
+ title: Served operational state equals the physical state
300
+ prose: >
301
+ The twin's served operational state shall equal the physical
302
+ instrument's state at every state transition, including fault
303
+ annunciation: a served fault state faithfully reporting the
304
+ instrument's fault is not infidelity — it passes fidelity and
305
+ triggers service. A twin that serves a healthy state over a
306
+ faulted instrument, or a fault state over a healthy one, fails
307
+ state fidelity. Verification: testing — the probe schedule's
308
+ transition test (6.4): the served operational state is compared
309
+ with the reference state at each declared transition.
310
+ - clause: "5.6"
311
+ title: Behavioral fidelity — the creep envelope (class-parameterized)
312
+ prose: >
313
+ Under a CONSTANT reference load held for the declared dwell, the
314
+ twin's served indication shall drift no more than the instrument's
315
+ accuracy-class creep allowance — the behavioral fidelity
316
+ requirement: the twin's dynamics track the physical instrument's,
317
+ not merely its single points. The allowance is parameterized per
318
+ accuracy class through the mapped Recommendation's own apportioned
319
+ maximum permissible error — creep_allowance = lookupMPE(dwell_load,
320
+ accuracy_class, p_lc), the same computation the Recommendation's
321
+ creep test uses (for R 60 the apportionment factor p_lc = 0.7 by
322
+ default). A twin whose creep response exceeds the class envelope
323
+ is unfaithful however cleanly its point probes pass; a reference
324
+ that itself drifts beyond one third of the allowance (the U:MPE
325
+ ≤ 1:3 discipline) voids the setup — INVALID, never a fail.
326
+ Verification: testing — the behavioral probe program (6.5): a
327
+ constant-load dwell with served samples over the dwell and
328
+ constant-reference anchors at both ends.
329
+ - clause: "6"
330
+ title: Twin-fidelity evaluation and certification
331
+ prose: >
332
+ Clause 6 specifies the twin-fidelity evaluation — the Program's
333
+ determination activities — and the certification decision,
334
+ certificate and surveillance regime. The determination set is the
335
+ static-conformance admission (6.1) and the probe schedule (6.2
336
+ the measuring range, 6.3 the operational envelope, 6.4 the
337
+ operational transitions, 6.5 the behavioral creep dwell); every probe test is gated on the
338
+ admission and carries the pairing-window INVALID precondition of
339
+ 4.3, and each probe execution is recorded in the Program's probe
340
+ record — served value and timestamp, reference value and
341
+ observation timestamp, the channel and its register citation, the
342
+ carried traceability limitation when the channel is observer
343
+ attestation, and the pairing skew. The certification decision
344
+ certifies when every fidelity register passes and the admission,
345
+ the timestamp-provenance declaration and the type-certificate
346
+ prerequisite hold; any register fail refuses; anything unprovable
347
+ is inconclusive — silence is not evidence and never a silent
348
+ certify. The twin certificate claims a scoped, conditional
349
+ relation: for the certified unit, the twin served at the
350
+ certified endpoint via the certified operations reflects the
351
+ physical state of the certified registers within the declared
352
+ tolerance and freshness per register, verified by the probe
353
+ schedule on the verification date with served-timestamp
354
+ provenance declared — validity conditional on continuous
355
+ surveillance; a sustained fail suspends; an unresolved fail
356
+ withdraws. Surveillance is the Program's continuous half (scheme
357
+ type 5 — non-dischargeable): the same fidelity requirements are
358
+ re-judged continuously by the Program's monitor over the
359
+ certified-twin fleet, and post-certification infidelity walks the
360
+ certificate machine — a monitor fail flags the certificate and
361
+ opens a service case (investigate), a case unresolved past the
362
+ declared cure window or the declared count of consecutive failed
363
+ cycles suspends, rectification (a re-probe pass, or a re-judged
364
+ surveillance window under the same tolerance returning pass on
365
+ stored snapshots — the twin never re-queried) reinstates, and an
366
+ unresolved fail withdraws. A served fault state faithfully
367
+ reporting the instrument's fault is not infidelity: the
368
+ state-triggered rule opens a service case without flagging the
369
+ certificate — a twin lying about a healthy instrument fails
370
+ fidelity; a twin truthfully serving a fault state passes fidelity
371
+ and triggers service.
372
+ - clause: "6.1"
373
+ title: Static conformance admission
374
+ prose: >
375
+ The admission determination verifies that the twin serves exactly
376
+ the interface its certified product package declares — endpoint
377
+ identifier, operations, payload schemas and quantity kinds,
378
+ access scopes — before any value-fidelity probing: read the
379
+ twin's served schema, operations, access scopes and payload
380
+ semantics and compare them against the pinned product package's
381
+ endpoint declaration; any mismatch is an admission failure and a
382
+ twin that mis-serves its contract never reaches value probes. The
383
+ admission is an inspection determination and is re-verified at
384
+ every surveillance cycle start; its evidence record is the
385
+ Program's static-conformance admission record.
386
+ - clause: "6.2"
387
+ title: Twin-fidelity probe — the measuring range
388
+ prose: >
389
+ The range probe closes the two-channel fidelity relation across
390
+ the measuring range: minimum load, then approximately 25 %, 50 %,
391
+ 75 % and 100 % of E_max, increasing and, where the physics
392
+ demands, decreasing — the load-point discipline of the mapped
393
+ Recommendation's maximum-permissible-error test. At each load
394
+ point, record the reference reading from the declared probe
395
+ channel (4.3) and the served reading fetched through the gateway
396
+ at probe time, each timestamped, and pair the readings within the
397
+ pairing window — a pair whose skew exceeds it is INVALID, never a
398
+ fail. Value fidelity at each point is judged per 5.2 through the
399
+ declared deviation characteristic, and each execution is recorded
400
+ in the Program's probe record (the report format of this
401
+ determination).
402
+ - clause: "6.3"
403
+ title: Twin-fidelity probe — the operational envelope
404
+ prose: >
405
+ The envelope probe closes the two-channel fidelity relation
406
+ across the operational envelope: condition the instrument at each
407
+ declared envelope corner — the rated temperature corners of the
408
+ certified product's declared envelope, and the declared humidity
409
+ corner where the certified product declares a humidity class (the
410
+ corner is the scheme's declaration, never an assumption) — probe
411
+ the paired reading per the range probe's channel discipline (6.2)
412
+ at each corner, each pair timestamped within the pairing window,
413
+ and return to reference conditions for the closing pair. Value
414
+ fidelity at each corner is judged per 5.2 — fidelity holds at
415
+ the envelope extremes, not only at reference conditions.
416
+ - clause: "6.4"
417
+ title: Twin-fidelity probe — the operational transitions
418
+ prose: >
419
+ The transition probe closes the two-channel fidelity relation
420
+ across the operational transitions: the warm-up leg
421
+ (off→warming→ready), the measurement leg (ready→measuring), and
422
+ the fault-annunciation leg and clear. At each declared
423
+ transition, record the physical state from the declared probe
424
+ channel (4.3 — observer attestation: the verification officer
425
+ reads the instrument's own state annunciation, admitted with the
426
+ declared traceability limitation) and the served operational
427
+ state delivered on the twin's state channel, each timestamped,
428
+ and pair within the pairing window of the state register — a
429
+ violating pair is INVALID, never a fail. State fidelity at each
430
+ transition is judged per 5.5: a served fault faithfully reporting
431
+ the instrument's fault passes fidelity and triggers service,
432
+ never a fidelity fail.
433
+ - clause: "6.5"
434
+ title: Twin-fidelity behavioral probe — the creep dwell
435
+ prose: >
436
+ The behavioral probe closes the behavioral fidelity relation
437
+ (5.6): apply the declared dwell load (≈90 % of E_max) and hold it
438
+ CONSTANT for the declared dwell. Record the reference reading at
439
+ dwell start and dwell end from the declared probe channel (4.3) —
440
+ each anchor a timestamped reference-vs-served pair within the
441
+ pairing window (a violating anchor pair is INVALID, never a fail)
442
+ — and sample the served indication through the gateway at the
443
+ declared instants over the dwell. The served drift is derived once
444
+ at evidence capture as the maximum |sample − served at dwell
445
+ start| over the recorded series (facts only — auditable against
446
+ the recorded series), and the creep allowance is computed from the
447
+ class tables as lookupMPE(dwell_load, accuracy_class, p_lc) — the
448
+ mapped Recommendation's own apportioned MPE at the dwell load,
449
+ never a platform constant. A reference that itself drifts beyond
450
+ one third of the allowance (the U:MPE ≤ 1:3 discipline) INVALIDATES
451
+ the setup — never a fail. Behavioral fidelity is judged per 5.6:
452
+ the maximum drift against the class allowance. Each execution is
453
+ recorded in the Program's behavioral probe record (the report
454
+ format of this determination).
@@ -0,0 +1,15 @@
1
+ role scheme_operator {
2
+ label "Scheme Operator"
3
+ description "The twin certification body operating the program (the ISO/IEC 17067 scheme owner): admits twins to certification, issues the twin certificate, and runs surveillance — including the suspension, reinstatement and withdrawal of certificates."
4
+ }
5
+
6
+ role twin_provider {
7
+ label "Twin Provider"
8
+ description "The instrument owner (or manufacturer) providing the digital twin and applying for its certification — the certified unit's serving layer is the object of certification; a valid type certificate of the underlying instrument is a hard admission prerequisite."
9
+ }
10
+
11
+ role verification_officer {
12
+ label "Verification Officer"
13
+ description "The probe agent of the observer-attestation channel: reads the physical instrument's display at a probe point and records the reference reading (with its observation timestamp) into the probe form — attestation per ISO/IEC 17000 A.4.3, admitted with recorded traceability limits. ROLE-LINK DECISION (TCD-3, the R45 review minor — decided and pinned): the linker's R45 leg resolves the attestation citation to a lab personnel register entry — IDENTITY only. The person⇄verification_officer role link is a JUDGMENT the certification decision weighs (D3), declared as data: the citing lab's ISO/IEC 17025 6.2.6 authorization activity verification_attestation on the officer's personnel entry. Attestation-channel probe evidence from an officer WITHOUT the declared authorization is INADMISSIBLE at decision time (the admissibility doctrine — it grounds no certification decision, never a fidelity fail of the twin); the program's own roles register declares the role kind, never the person."
14
+ }
15
+
@@ -0,0 +1,179 @@
1
+ form twin-1/probe-creep {
2
+ name "Twin-Fidelity Behavioral Probe Record (Creep Dwell)"
3
+ description "The D2 evidence record of one behavioral probe execution (TODO.v3/02): the constant-load creep dwell — the declared program parameters (dwell duration, dwell load, accuracy class, apportionment factor), the constant-reference anchors at dwell start and end, the served readings at both ends, the RECORDED served series over the dwell, the derived maximum drift (derived ONCE at evidence capture from that series — auditable against it) and the computed class creep allowance (lookupMPE from the Recommendation's class tables, never a platform constant). Facts only — the behavioral fidelity judgment is the verdict chain's (the canonical creep-drift verdict), never the form's."
4
+ data_class FormInstance#data
5
+ conformance_process /conf/twin-fidelity/probe-creep
6
+ section "TW-1, 6.5"
7
+ requirements { /req/twin-fidelity/creep-envelope }
8
+ ref requirement "urn:oiml:pub:cs:twin-1:2027#clause-5.6"
9
+ ref test-procedure "urn:oiml:pub:cs:twin-1:2027#clause-6.5"
10
+ ref report-format "urn:oiml:pub:cs:twin-1:2027#clause-6.5"
11
+ field probe_point : string {
12
+ label "Probe point"
13
+ description "The behavioral schedule point (e.g. 'creep dwell 90% E_max')."
14
+ required true
15
+ targets { /req/twin-fidelity/creep-envelope }
16
+ }
17
+ field channel : enum {
18
+ label "Probe channel"
19
+ description "The physical-side channel the reference anchors arrived by — the three-source vocabulary (reference_instrument PREFERRED; observer_attestation admitted with the declared traceability limitation; sim_ground_truth in the acceptance environment only, never a production channel)."
20
+ required true
21
+ targets { /req/twin-fidelity/creep-envelope }
22
+ values { reference_instrument { label "Reference instrument" } observer_attestation { label "Observer attestation" } sim_ground_truth { label "Sim ground truth (acceptance only)" } }
23
+ }
24
+ field channel_ref : string {
25
+ label "Channel register citation"
26
+ description "The citation of the channel actually used: the equipment-register id with its calibration trace (reference_instrument), the personnel/participant id of the verification officer (observer_attestation), or the sim deployment id (sim_ground_truth)."
27
+ required true
28
+ targets { /req/twin-fidelity/creep-envelope }
29
+ }
30
+ field traceability_limitation : text {
31
+ label "Declared traceability limitation"
32
+ description "The DECLARED limitation the evidence carries when the channel is observer_attestation (twin ≡ display, not twin ≡ mass). Declared data, never a comment; empty only on the instrument and sim channels."
33
+ measurement_method declared
34
+ targets { /req/twin-fidelity/creep-envelope }
35
+ }
36
+ field dwell_s : number {
37
+ label "Dwell duration"
38
+ description "The declared dwell duration (the scheme's declaration per register — the pilot's 900 s)."
39
+ unit "s"
40
+ required true
41
+ measurement_method declared
42
+ bind model.parameters.dwell_s
43
+ targets { /req/twin-fidelity/creep-envelope }
44
+ }
45
+ field dwell_load : number {
46
+ label "Dwell load"
47
+ description "The applied dwell load (≈90 % E_max — 450 kg for the LC-500-class pilot), held constant over the dwell."
48
+ unit "kg"
49
+ required true
50
+ measurement_method declared
51
+ bind model.parameters.dwell_load
52
+ targets { /req/twin-fidelity/creep-envelope }
53
+ }
54
+ field accuracy_class : string {
55
+ label "Accuracy class"
56
+ description "The certified type's accuracy class (C for the LC-500-class pilot) — the lookupMPE class input."
57
+ required true
58
+ measurement_method declared
59
+ bind model.parameters.accuracy_class
60
+ targets { /req/twin-fidelity/creep-envelope }
61
+ }
62
+ field p_lc : number {
63
+ label "Apportionment factor"
64
+ description "The apportionment factor (0.7 by default for load cells per R 60) — the lookupMPE apportionment input."
65
+ required true
66
+ measurement_method declared
67
+ bind model.parameters.p_lc
68
+ targets { /req/twin-fidelity/creep-envelope }
69
+ }
70
+ field reference_indication_t0 : number {
71
+ label "Reference indication at dwell start"
72
+ description "The reference reading at dwell start (the constant-load anchor)."
73
+ unit "kg"
74
+ required true
75
+ bind sample.test_context.reference_indication_t0
76
+ targets { /req/twin-fidelity/creep-envelope }
77
+ }
78
+ field reference_indication_end : number {
79
+ label "Reference indication at dwell end"
80
+ description "The reference reading at dwell end (the constant-load confirmation — |end − start| ≤ allowance/3 or the setup is INVALID)."
81
+ unit "kg"
82
+ required true
83
+ bind sample.test_context.reference_indication_end
84
+ targets { /req/twin-fidelity/creep-envelope }
85
+ }
86
+ field served_t0 : number {
87
+ label "Served indication at dwell start"
88
+ description "The served indication at dwell start (the drift baseline)."
89
+ unit "kg"
90
+ required true
91
+ bind sample.test_context.served_t0
92
+ targets { /req/twin-fidelity/creep-envelope }
93
+ }
94
+ field served_end : number {
95
+ label "Served indication at dwell end"
96
+ description "The served indication at dwell end."
97
+ unit "kg"
98
+ required true
99
+ bind sample.test_context.served_end
100
+ targets { /req/twin-fidelity/creep-envelope }
101
+ }
102
+ field served_at_t0 : number {
103
+ label "Served timestamp at dwell start"
104
+ description "The twin's OWN served timestamp at dwell start (timestamp_fields), epoch seconds — the series' first served_at."
105
+ unit "s"
106
+ required true
107
+ targets { /req/twin-fidelity/creep-envelope }
108
+ }
109
+ field observed_at_t0 : number {
110
+ label "Observation timestamp at dwell start"
111
+ description "The t0 anchor's reference observation timestamp, epoch seconds."
112
+ unit "s"
113
+ required true
114
+ targets { /req/twin-fidelity/creep-envelope }
115
+ }
116
+ field served_at_end : number {
117
+ label "Served timestamp at dwell end"
118
+ description "The twin's OWN served timestamp at dwell end (timestamp_fields), epoch seconds — the series' last served_at."
119
+ unit "s"
120
+ required true
121
+ targets { /req/twin-fidelity/creep-envelope }
122
+ }
123
+ field observed_at_end : number {
124
+ label "Observation timestamp at dwell end"
125
+ description "The end anchor's reference observation timestamp, epoch seconds."
126
+ unit "s"
127
+ required true
128
+ targets { /req/twin-fidelity/creep-envelope }
129
+ }
130
+ field pair_skew_t0 : number {
131
+ label "Pairing skew at dwell start"
132
+ description "The t0 anchor's pairing skew |served_at_t0 − observed_at_t0| — a skew beyond the pairing window INVALIDATES the execution, never a fail."
133
+ unit "s"
134
+ targets { /req/twin-fidelity/creep-envelope }
135
+ calculation "ocl{abs(served_at_t0 - observed_at_t0)}"
136
+ }
137
+ field pair_skew_end : number {
138
+ label "Pairing skew at dwell end"
139
+ description "The end anchor's pairing skew |served_at_end − observed_at_end| — a skew beyond the pairing window INVALIDATES the execution, never a fail."
140
+ unit "s"
141
+ targets { /req/twin-fidelity/creep-envelope }
142
+ calculation "ocl{abs(served_at_end - observed_at_end)}"
143
+ }
144
+ field served_series : array {
145
+ label "Served dwell series"
146
+ description "The RECORDED served samples over the dwell — one row per declared instant: the served value and its own served timestamp. The raw behavioral evidence; the maximum drift derives from this series, auditable against it."
147
+ required true
148
+ targets { /req/twin-fidelity/creep-envelope }
149
+ items { object fields {
150
+ field served_at : number {
151
+ label "Served timestamp"
152
+ unit "s"
153
+ required true
154
+ }
155
+ field value : number {
156
+ label "Served indication"
157
+ unit "kg"
158
+ required true
159
+ }
160
+ } }
161
+ min_items 2
162
+ }
163
+ field max_drift : number {
164
+ label "Maximum drift"
165
+ description "The maximum |served sample − served_t0| over the recorded series — derived ONCE at evidence capture (auditable against served_series)."
166
+ unit "kg"
167
+ bind sample.test_context.max_drift
168
+ targets { /req/twin-fidelity/creep-envelope }
169
+ }
170
+ field creep_allowance : number {
171
+ label "Creep allowance"
172
+ description "The accuracy-class creep allowance — lookupMPE(dwell_load, accuracy_class, p_lc) from the Recommendation's class tables (never a platform constant)."
173
+ unit "kg"
174
+ bind sample.test_context.creep_allowance
175
+ targets { /req/twin-fidelity/creep-envelope }
176
+ }
177
+ pass_fail { criteria "The execution is admissible: BOTH anchors paired within the pairing window (5 s — a violating pair is INVALID, never a fail) AND the reference constant within one third of the allowance (|reference_end − reference_t0| ≤ creep_allowance / 3 — a drifting reference INVALIDATES the setup, never a fail) — the behavioral judgment itself is the verdict chain's." pass_if "ocl{pair_skew_t0 <= 5 and pair_skew_end <= 5 and abs(reference_indication_end - reference_indication_t0) <= creep_allowance / 3}" }
178
+ }
179
+