@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.
- package/AGENTS.md +60 -0
- package/LICENSE +21 -0
- package/README.md +68 -0
- package/acme-cgm-200/model/cgm200.prl +284 -0
- package/acme-cgm-200/model/r144-map.prl +337 -0
- package/acme-cgm-200/package.primmel +39 -0
- package/acme-cgm-system/model/cgm-system.prl +125 -0
- package/acme-cgm-system/model/r144-map.prl +75 -0
- package/acme-cgm-system/model/sample-line.prl +42 -0
- package/acme-cgm-system/package.primmel +23 -0
- package/acme-lc500/model/lc500.prl +218 -0
- package/acme-lc500/model/passport.prl +43 -0
- package/acme-lc500/model/r60-map.prl +161 -0
- package/acme-lc500/model/twin-cert-map.prl +114 -0
- package/acme-lc500/package.primmel +35 -0
- package/acme-md3xx/model/md350.prl +317 -0
- package/acme-md3xx/model/r129-map.prl +346 -0
- package/acme-md3xx/package.primmel +49 -0
- package/acme-rs180/model/r91-map.prl +234 -0
- package/acme-rs180/model/rs180.prl +236 -0
- package/acme-rs180/package.primmel +47 -0
- package/ims-demo/model/ims.prl +23 -0
- package/ims-demo/model/isms-map.prl +60 -0
- package/ims-demo/model/qms-map.prl +73 -0
- package/ims-demo/package.primmel +42 -0
- package/isms-ref/model/isms.prl +34 -0
- package/isms-ref/package.primmel +35 -0
- package/iso-iec-17000/package.primmel +8 -0
- package/iso-iec-17000/terminology.prl +268 -0
- package/iso-iec-17025/package.primmel +10 -0
- package/iso-iec-17025/specification/requirements/lab.prl +474 -0
- package/iso-iec-17025/terminology.prl +72 -0
- package/iso-iec-17065/package.primmel +10 -0
- package/iso-iec-17065/specification/requirements/body.prl +446 -0
- package/iso-iec-17065/terminology.prl +103 -0
- package/iso-iec-17067/package.primmel +10 -0
- package/iso-iec-17067/specification/requirements/scheme-content.prl +300 -0
- package/iso-iec-17067/terminology.prl +24 -0
- package/oiml-cs/package.primmel +10 -0
- package/oiml-cs/specification/discrepancies.prl +26 -0
- package/oiml-cs/specification/requirements/cs.prl +515 -0
- package/oiml-cs-dataspace/.primmel-allowlist.prl +25 -0
- package/oiml-cs-dataspace/package.primmel +9 -0
- package/oiml-cs-dataspace/specification/dataspace.prl +73 -0
- package/oiml-cs-dataspace/specification/policies.prl +68 -0
- package/oiml-integrated-ref/model/probe-pairing.prl +71 -0
- package/oiml-integrated-ref/package.primmel +10 -0
- package/oiml-r129/.primmel-allowlist.prl +2 -0
- package/oiml-r129/evaluation/processes.prl +152 -0
- package/oiml-r129/evaluation/workflow.prl +48 -0
- package/oiml-r129/execution/forms/admin/adjustments-modifications.prl +30 -0
- package/oiml-r129/execution/forms/admin/checklist.prl +70 -0
- package/oiml-r129/execution/forms/admin/configuration.prl +31 -0
- package/oiml-r129/execution/forms/admin/equipment-info.prl +27 -0
- package/oiml-r129/execution/forms/admin/general-info.prl +63 -0
- package/oiml-r129/execution/forms/admin/identification.prl +49 -0
- package/oiml-r129/execution/forms/admin/sample-selection.prl +30 -0
- package/oiml-r129/execution/forms/admin/summary-results.prl +50 -0
- package/oiml-r129/execution/forms/emc/bursts.prl +88 -0
- package/oiml-r129/execution/forms/emc/esd.prl +66 -0
- package/oiml-r129/execution/forms/emc/low-voltage-battery.prl +58 -0
- package/oiml-r129/execution/forms/emc/rf-immunity-conducted.prl +59 -0
- package/oiml-r129/execution/forms/emc/rf-immunity-radiated.prl +59 -0
- package/oiml-r129/execution/forms/emc/surge.prl +61 -0
- package/oiml-r129/execution/forms/emc/voltage-dips.prl +62 -0
- package/oiml-r129/execution/forms/emc/voltage-variation.prl +58 -0
- package/oiml-r129/execution/forms/env/damp-heat-cyclic.prl +43 -0
- package/oiml-r129/execution/forms/env/damp-heat-steady.prl +50 -0
- package/oiml-r129/execution/forms/env/static-temperatures.prl +61 -0
- package/oiml-r129/execution/forms/shared/headers.prl +86 -0
- package/oiml-r129/execution/forms/tests/acoustics.prl +44 -0
- package/oiml-r129/execution/forms/tests/ambient-light.prl +46 -0
- package/oiml-r129/execution/forms/tests/construction-examination.prl +46 -0
- package/oiml-r129/execution/forms/tests/examination-checklist.prl +51 -0
- package/oiml-r129/execution/forms/tests/object-shape.prl +43 -0
- package/oiml-r129/execution/forms/tests/orientation-position.prl +31 -0
- package/oiml-r129/execution/forms/tests/repeatability.prl +65 -0
- package/oiml-r129/execution/forms/tests/speed-movement.prl +59 -0
- package/oiml-r129/execution/forms/tests/surface-characteristics.prl +44 -0
- package/oiml-r129/execution/forms/tests/warm-up-time.prl +35 -0
- package/oiml-r129/execution/subforms/dimension-measurement.prl +93 -0
- package/oiml-r129/layers.prl +50 -0
- package/oiml-r129/model/attributes.prl +243 -0
- package/oiml-r129/model/behaviors.prl +79 -0
- package/oiml-r129/model/capabilities.prl +29 -0
- package/oiml-r129/model/characteristics.prl +8 -0
- package/oiml-r129/model/conditions.prl +23 -0
- package/oiml-r129/model/instrument.prl +67 -0
- package/oiml-r129/model/state.prl +22 -0
- package/oiml-r129/model/twin.prl +23 -0
- package/oiml-r129/package.primmel +15 -0
- package/oiml-r129/payload/application.yaml +40 -0
- package/oiml-r129/payload/conditions-common-test.yaml +8 -0
- package/oiml-r129/payload/formulas-variants.yaml +33 -0
- package/oiml-r129/payload/promises.yaml +102 -0
- package/oiml-r129/payload/sample-data.yaml +300 -0
- package/oiml-r129/references.prl +306 -0
- package/oiml-r129/sources-prd/coverage.json +59 -0
- package/oiml-r129/sources-prd/r129-1.sentences.json +4238 -0
- package/oiml-r129/sources-prd/r129-2.sentences.json +1139 -0
- package/oiml-r129/sources-prd/r129-3.sentences.json +3809 -0
- package/oiml-r129/sources-prd/r129-4.sentences.json +1227 -0
- package/oiml-r129/specification/calculations.prl +83 -0
- package/oiml-r129/specification/conformance/disturbance-tests.prl +212 -0
- package/oiml-r129/specification/conformance/effect-tests.prl +70 -0
- package/oiml-r129/specification/conformance/examinations.prl +83 -0
- package/oiml-r129/specification/conformance/metrological-tests.prl +178 -0
- package/oiml-r129/specification/formulas.prl +9 -0
- package/oiml-r129/specification/requirements/electronic.prl +46 -0
- package/oiml-r129/specification/requirements/metrological.prl +83 -0
- package/oiml-r129/specification/requirements/object-limitations.prl +99 -0
- package/oiml-r129/specification/requirements/software.prl +57 -0
- package/oiml-r129/specification/requirements/technical.prl +134 -0
- package/oiml-r129/specification/symbols.prl +187 -0
- package/oiml-r129/specification/tables.prl +74 -0
- package/oiml-r129/terminology.prl +415 -0
- package/oiml-r129/value-types.prl +40 -0
- package/oiml-r144/.primmel-allowlist.prl +2 -0
- package/oiml-r144/entities/instrument.prl +360 -0
- package/oiml-r144/entities/test-execution.prl +228 -0
- package/oiml-r144/entities/workflow.prl +2075 -0
- package/oiml-r144/evaluation/processes.prl +152 -0
- package/oiml-r144/evaluation/workflow.prl +48 -0
- package/oiml-r144/execution/forms/sec-3-report/03-01-laboratory-info.prl +19 -0
- package/oiml-r144/execution/forms/sec-3-report/03-02-test-location.prl +14 -0
- package/oiml-r144/execution/forms/sec-3-report/03-03-manufacturer-info.prl +18 -0
- package/oiml-r144/execution/forms/sec-3-report/03-04-applicant-info.prl +19 -0
- package/oiml-r144/execution/forms/sec-3-report/03-05-type-identification.prl +80 -0
- package/oiml-r144/execution/forms/sec-3-report/03-06-type-composition.prl +31 -0
- package/oiml-r144/execution/forms/sec-3-report/03-07-visual-examination.prl +46 -0
- package/oiml-r144/execution/forms/sec-3-report/03-08-test-conclusions.prl +46 -0
- package/oiml-r144/execution/forms/sec-3-report/03-09-general-conclusion.prl +19 -0
- package/oiml-r144/execution/forms/sec-3-report/03-10-responsible-persons.prl +27 -0
- package/oiml-r144/execution/forms/sec-tests/ambient-pressure-test.prl +59 -0
- package/oiml-r144/execution/forms/sec-tests/bursts-mains-test.prl +52 -0
- package/oiml-r144/execution/forms/sec-tests/bursts-signal-test.prl +55 -0
- package/oiml-r144/execution/forms/sec-tests/cold-test.prl +48 -0
- package/oiml-r144/execution/forms/sec-tests/cross-sensitivity-test.prl +92 -0
- package/oiml-r144/execution/forms/sec-tests/damp-heat-test.prl +50 -0
- package/oiml-r144/execution/forms/sec-tests/documentation-examination.prl +52 -0
- package/oiml-r144/execution/forms/sec-tests/drift-test.prl +83 -0
- package/oiml-r144/execution/forms/sec-tests/dry-heat-test.prl +53 -0
- package/oiml-r144/execution/forms/sec-tests/error-determination.prl +37 -0
- package/oiml-r144/execution/forms/sec-tests/esd-test.prl +53 -0
- package/oiml-r144/execution/forms/sec-tests/flow-spillover-test.prl +83 -0
- package/oiml-r144/execution/forms/sec-tests/leakproofness-test.prl +41 -0
- package/oiml-r144/execution/forms/sec-tests/low-battery-test.prl +48 -0
- package/oiml-r144/execution/forms/sec-tests/power-reduction-test.prl +49 -0
- package/oiml-r144/execution/forms/sec-tests/power-supply-test.prl +57 -0
- package/oiml-r144/execution/forms/sec-tests/repeatability-test.prl +60 -0
- package/oiml-r144/execution/forms/sec-tests/response-time-test.prl +43 -0
- package/oiml-r144/execution/forms/sec-tests/rf-emf-test.prl +47 -0
- package/oiml-r144/execution/forms/sec-tests/shock-test.prl +50 -0
- package/oiml-r144/execution/forms/sec-tests/surge-test.prl +52 -0
- package/oiml-r144/execution/forms/sec-tests/vibration-test.prl +58 -0
- package/oiml-r144/execution/forms/sec-tests/warm-up-time-test.prl +69 -0
- package/oiml-r144/execution/forms/shared/headers.prl +132 -0
- package/oiml-r144/execution/subforms/cgm-point.prl +99 -0
- package/oiml-r144/layers.prl +44 -0
- package/oiml-r144/model/attributes.prl +679 -0
- package/oiml-r144/model/behaviors.prl +117 -0
- package/oiml-r144/model/capabilities.prl +99 -0
- package/oiml-r144/model/characteristics.prl +27 -0
- package/oiml-r144/model/conditions.prl +46 -0
- package/oiml-r144/model/instrument.prl +85 -0
- package/oiml-r144/model/state.prl +18 -0
- package/oiml-r144/model/twin.prl +25 -0
- package/oiml-r144/package.primmel +15 -0
- package/oiml-r144/payload/application.yaml +80 -0
- package/oiml-r144/payload/attributes-pair-list.yaml +18 -0
- package/oiml-r144/payload/conditions-common-test.yaml +74 -0
- package/oiml-r144/payload/formulas-variants.yaml +32 -0
- package/oiml-r144/payload/promises.yaml +118 -0
- package/oiml-r144/payload/sample-data.yaml +643 -0
- package/oiml-r144/references.prl +594 -0
- package/oiml-r144/sources-prd/coverage.json +114 -0
- package/oiml-r144/sources-prd/r144-1.sentences.json +2797 -0
- package/oiml-r144/sources-prd/r144-2.sentences.json +1627 -0
- package/oiml-r144/sources-prd/r144-3.sentences.json +838 -0
- package/oiml-r144/specification/calculations.prl +123 -0
- package/oiml-r144/specification/conformance/examination.prl +87 -0
- package/oiml-r144/specification/conformance/performance-tests.prl +755 -0
- package/oiml-r144/specification/formulas.prl +37 -0
- package/oiml-r144/specification/reference-materials.prl +87 -0
- package/oiml-r144/specification/requirements/controls.prl +51 -0
- package/oiml-r144/specification/requirements/metrological.prl +299 -0
- package/oiml-r144/specification/requirements/report.prl +35 -0
- package/oiml-r144/specification/requirements/technical.prl +455 -0
- package/oiml-r144/specification/symbols.prl +357 -0
- package/oiml-r144/specification/tables.prl +95 -0
- package/oiml-r144/specification/test-point-sets.prl +15 -0
- package/oiml-r144/terminology.prl +308 -0
- package/oiml-r144/value-types.prl +49 -0
- package/oiml-r60/.primmel-allowlist.prl +2 -0
- package/oiml-r60/entities/workflow.prl +2079 -0
- package/oiml-r60/evaluation/processes.prl +152 -0
- package/oiml-r60/evaluation/workflow.prl +48 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-01-authority-info.prl +76 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-02-synopsis.prl +20 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-03-01-examinations.prl +27 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-03-02-a-performance-general.prl +81 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-03-02-b-performance-digital.prl +104 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-04-01-manufacturer.prl +21 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-04-02-applicant.prl +44 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-04-03-testing-laboratories.prl +69 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-05-load-cell-type-info.prl +83 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-06-accessories.prl +41 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-07-sample-selection.prl +71 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-01-general-info.prl +103 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-02-performance-info.prl +66 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-03-digital-info.prl +35 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-04-photographs.prl +12 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-05-documentation.prl +27 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-06-inscriptions.prl +126 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-07-model-range.prl +143 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-09-12-previous-tests.prl +26 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-01-force-generating-system.prl +89 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-02-weights.prl +61 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-03-temperature-chamber.prl +96 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-04-climate-chamber.prl +96 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-05-indicator.prl +92 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-06-terminal.prl +86 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-07-barometric-pressure-meter.prl +62 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-08-thermometer.prl +62 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-09-moisture-analyser.prl +62 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-10-additional-test-equipment.prl +69 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/04-10-11-remarks.prl +11 -0
- package/oiml-r60/execution/forms/sec-4-evaluation-report/test-usage-matrix.prl +85 -0
- package/oiml-r60/execution/forms/sec-5-examination/documentation-examination.prl +53 -0
- package/oiml-r60/execution/forms/sec-5-examination/marking-examination.prl +104 -0
- package/oiml-r60/execution/forms/sec-5-examination/software-examination.prl +86 -0
- package/oiml-r60/execution/forms/sec-5-examination/suitability-examination.prl +56 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/barometric-pressure.prl +176 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/bursts.prl +129 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/conducted-emc.prl +170 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/creep-dr.prl +327 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/emc-susceptibility.prl +115 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/esd.prl +224 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/humidity-ch.prl +300 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/humidity-sh.prl +235 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/initial-tests.prl +129 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/load-cell-errors.prl +280 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/load-test.prl +29 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/performance-test-summary.prl +82 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/power-voltage.prl +166 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/repeatability.prl +189 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/short-time-power.prl +98 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/span-stability.prl +242 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/surge.prl +142 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/temperature-mdlo.prl +180 -0
- package/oiml-r60/execution/forms/sec-6-performance-tests/warm-up-time.prl +207 -0
- package/oiml-r60/execution/forms/shared/headers.prl +255 -0
- package/oiml-r60/execution/subforms/load-test-row.prl +55 -0
- package/oiml-r60/execution/subforms/test-procedures.prl +33 -0
- package/oiml-r60/layers.prl +46 -0
- package/oiml-r60/model/attributes.prl +642 -0
- package/oiml-r60/model/behaviors.prl +165 -0
- package/oiml-r60/model/capabilities.prl +57 -0
- package/oiml-r60/model/characteristics.prl +27 -0
- package/oiml-r60/model/conditions.prl +50 -0
- package/oiml-r60/model/instrument.prl +96 -0
- package/oiml-r60/model/processes.prl +54 -0
- package/oiml-r60/model/state.prl +22 -0
- package/oiml-r60/model/twin.prl +16 -0
- package/oiml-r60/package.primmel +16 -0
- package/oiml-r60/payload/annexes-part4.yaml +122 -0
- package/oiml-r60/payload/application.yaml +83 -0
- package/oiml-r60/payload/conditions-common-test.yaml +121 -0
- package/oiml-r60/payload/formulas-variants.yaml +55 -0
- package/oiml-r60/payload/promises.yaml +224 -0
- package/oiml-r60/payload/sample-data.yaml +5025 -0
- package/oiml-r60/payload/symbols-formula-notes.yaml +21 -0
- package/oiml-r60/references.prl +549 -0
- package/oiml-r60/sources-prd/coverage.json +740 -0
- package/oiml-r60/sources-prd/r60-1.sentences.json +2173 -0
- package/oiml-r60/sources-prd/r60-2.sentences.json +2961 -0
- package/oiml-r60/sources-prd/r60-3.sentences.json +4212 -0
- package/oiml-r60/sources-prd/r60-a.sentences.json +3361 -0
- package/oiml-r60/specification/calculations.prl +318 -0
- package/oiml-r60/specification/conformance/class-specific.prl +1120 -0
- package/oiml-r60/specification/conformance/electronic.prl +483 -0
- package/oiml-r60/specification/conformance/examination.prl +183 -0
- package/oiml-r60/specification/conformance/metrological.prl +478 -0
- package/oiml-r60/specification/constraints.prl +58 -0
- package/oiml-r60/specification/formulas-used.prl +43 -0
- package/oiml-r60/specification/formulas.prl +20 -0
- package/oiml-r60/specification/requirements/class-specific.prl +655 -0
- package/oiml-r60/specification/requirements/classification.prl +114 -0
- package/oiml-r60/specification/requirements/electronic.prl +222 -0
- package/oiml-r60/specification/requirements/metrological.prl +381 -0
- package/oiml-r60/specification/requirements/technical.prl +146 -0
- package/oiml-r60/specification/symbols.prl +599 -0
- package/oiml-r60/specification/tables.prl +182 -0
- package/oiml-r60/specification/test-sequences.prl +72 -0
- package/oiml-r60/terminology.prl +920 -0
- package/oiml-r60/value-types.prl +46 -0
- package/oiml-r91/.primmel-allowlist.prl +3 -0
- package/oiml-r91/entities/instrument.prl +359 -0
- package/oiml-r91/entities/workflow.prl +2075 -0
- package/oiml-r91/evaluation/processes.prl +152 -0
- package/oiml-r91/evaluation/workflow.prl +48 -0
- package/oiml-r91/execution/forms/evidence-file.prl +41 -0
- package/oiml-r91/execution/forms/report-evaluation/appraisal.prl +30 -0
- package/oiml-r91/execution/forms/report-evaluation/checklist-summary.prl +43 -0
- package/oiml-r91/execution/forms/report-evaluation/checklist.prl +76 -0
- package/oiml-r91/execution/forms/report-evaluation/configuration-samples.prl +22 -0
- package/oiml-r91/execution/forms/report-evaluation/corrective-actions.prl +24 -0
- package/oiml-r91/execution/forms/report-evaluation/descriptions.prl +47 -0
- package/oiml-r91/execution/forms/report-evaluation/evaluation-identification.prl +219 -0
- package/oiml-r91/execution/forms/report-evaluation/test-report-summary.prl +33 -0
- package/oiml-r91/execution/forms/report-general/adjustments.prl +12 -0
- package/oiml-r91/execution/forms/report-general/alignment-aiming.prl +17 -0
- package/oiml-r91/execution/forms/report-general/checking-facility.prl +17 -0
- package/oiml-r91/execution/forms/report-general/configuration.prl +12 -0
- package/oiml-r91/execution/forms/report-general/identification.prl +216 -0
- package/oiml-r91/execution/forms/report-general/indications-controls.prl +17 -0
- package/oiml-r91/execution/forms/report-general/sealing.prl +21 -0
- package/oiml-r91/execution/forms/report-general/software-description.prl +26 -0
- package/oiml-r91/execution/forms/report-general/summary-environmental.prl +35 -0
- package/oiml-r91/execution/forms/report-general/summary-tests.prl +35 -0
- package/oiml-r91/execution/forms/report-general/test-equipment.prl +36 -0
- package/oiml-r91/execution/forms/report-general/test-interface.prl +16 -0
- package/oiml-r91/execution/forms/report-tests/01-01-field-test.prl +84 -0
- package/oiml-r91/execution/forms/report-tests/01-02-statistical-analysis.prl +76 -0
- package/oiml-r91/execution/forms/report-tests/01-03-image-evidence.prl +30 -0
- package/oiml-r91/execution/forms/report-tests/02-01-dynamic-performance.prl +92 -0
- package/oiml-r91/execution/forms/report-tests/02-02-speed-linearity.prl +23 -0
- package/oiml-r91/execution/forms/report-tests/02-03-distance-linearity.prl +67 -0
- package/oiml-r91/execution/forms/report-tests/02-04-angle-linearity.prl +59 -0
- package/oiml-r91/execution/forms/report-tests/03-01-dry-heat-operating.prl +38 -0
- package/oiml-r91/execution/forms/report-tests/03-02-dry-heat-storage.prl +48 -0
- package/oiml-r91/execution/forms/report-tests/03-03-cold-operating.prl +40 -0
- package/oiml-r91/execution/forms/report-tests/03-04-cold-storage.prl +48 -0
- package/oiml-r91/execution/forms/report-tests/03-05-damp-heat-cyclic.prl +40 -0
- package/oiml-r91/execution/forms/report-tests/03-06-water.prl +48 -0
- package/oiml-r91/execution/forms/report-tests/03-07-sand-and-dust.prl +48 -0
- package/oiml-r91/execution/forms/report-tests/03-08-salt-mist.prl +48 -0
- package/oiml-r91/execution/forms/report-tests/03-09-vibration-random.prl +40 -0
- package/oiml-r91/execution/forms/report-tests/03-10-mechanical-shock.prl +48 -0
- package/oiml-r91/execution/forms/report-tests/03-11-dc-mains-voltage-variation.prl +40 -0
- package/oiml-r91/execution/forms/report-tests/03-12-ripple-on-dc-mains.prl +47 -0
- package/oiml-r91/execution/forms/report-tests/03-13-ac-mains-voltage-variation.prl +40 -0
- package/oiml-r91/execution/forms/report-tests/03-14-ac-mains-frequency-variation.prl +40 -0
- package/oiml-r91/execution/forms/report-tests/03-15-dc-mains-voltage-dips.prl +46 -0
- package/oiml-r91/execution/forms/report-tests/03-16-ac-mains-voltage-dips.prl +46 -0
- package/oiml-r91/execution/forms/report-tests/03-17-ac-mains-frequency-harmonics.prl +47 -0
- package/oiml-r91/execution/forms/report-tests/03-18-vlf-lf-disturbances.prl +46 -0
- package/oiml-r91/execution/forms/report-tests/03-19-bursts-ac-dc-mains.prl +44 -0
- package/oiml-r91/execution/forms/report-tests/03-20-surges-ac-dc-mains.prl +45 -0
- package/oiml-r91/execution/forms/report-tests/03-21-bursts-signal-lines.prl +45 -0
- package/oiml-r91/execution/forms/report-tests/03-22-surges-signal-lines.prl +46 -0
- package/oiml-r91/execution/forms/report-tests/03-23-ac-mains-magnetic-field.prl +45 -0
- package/oiml-r91/execution/forms/report-tests/03-24-conducted-rf-common-mode.prl +46 -0
- package/oiml-r91/execution/forms/report-tests/03-25-rf-electromagnetic-fields.prl +49 -0
- package/oiml-r91/execution/forms/report-tests/03-26-electrostatic-discharges.prl +47 -0
- package/oiml-r91/execution/forms/report-tests/03-27-internal-battery-low-voltage.prl +40 -0
- package/oiml-r91/execution/forms/report-tests/03-28-road-vehicle-battery.prl +40 -0
- package/oiml-r91/execution/forms/report-tests/03-29-transient-supply-lines.prl +47 -0
- package/oiml-r91/execution/forms/report-tests/03-30-transient-other-lines.prl +45 -0
- package/oiml-r91/execution/forms/report-tests/03-31-battery-cranking.prl +45 -0
- package/oiml-r91/execution/forms/report-tests/03-32-load-dump.prl +47 -0
- package/oiml-r91/execution/forms/report-tests/03-33-acceleration.prl +66 -0
- package/oiml-r91/execution/forms/report-tests/03-34-further-influence.prl +60 -0
- package/oiml-r91/execution/forms/report-tests/03-35-installation-alignment.prl +29 -0
- package/oiml-r91/execution/forms/report-tests/04-01-doppler-radar.prl +43 -0
- package/oiml-r91/execution/forms/report-tests/04-02-range-finding.prl +42 -0
- package/oiml-r91/execution/forms/report-tests/04-03-average-speed.prl +41 -0
- package/oiml-r91/execution/forms/report-tests/04-04-fixed-distance.prl +40 -0
- package/oiml-r91/execution/forms/report-tests/04-05-image-based.prl +41 -0
- package/oiml-r91/execution/forms/report-tests/04-06-across-road.prl +42 -0
- package/oiml-r91/execution/forms/report-tests/05-01-moving-field-test.prl +29 -0
- package/oiml-r91/execution/forms/report-tests/05-02-ego-field-test.prl +57 -0
- package/oiml-r91/execution/forms/report-tests/05-03-moving-traffic-simulation.prl +31 -0
- package/oiml-r91/execution/forms/report-tests/06-01-software-general.prl +25 -0
- package/oiml-r91/execution/forms/report-tests/06-02-software-protection.prl +25 -0
- package/oiml-r91/execution/forms/report-tests/06-03-software-hardware-support.prl +24 -0
- package/oiml-r91/execution/forms/report-tests/06-04-software-separation.prl +25 -0
- package/oiml-r91/execution/forms/report-tests/06-05-software-maintenance.prl +24 -0
- package/oiml-r91/execution/forms/report-tests/07-general-remarks.prl +11 -0
- package/oiml-r91/execution/forms/shared/header-a.prl +63 -0
- package/oiml-r91/execution/subforms/software-matrix-row.prl +30 -0
- package/oiml-r91/execution/subforms/speed-measurement-row.prl +38 -0
- package/oiml-r91/layers.prl +46 -0
- package/oiml-r91/model/artifacts.prl +29 -0
- package/oiml-r91/model/attributes.prl +698 -0
- package/oiml-r91/model/behaviors.prl +142 -0
- package/oiml-r91/model/capabilities.prl +88 -0
- package/oiml-r91/model/characteristics.prl +27 -0
- package/oiml-r91/model/conditions.prl +37 -0
- package/oiml-r91/model/instrument.prl +147 -0
- package/oiml-r91/model/state.prl +22 -0
- package/oiml-r91/model/twin.prl +17 -0
- package/oiml-r91/package.primmel +14 -0
- package/oiml-r91/payload/application.yaml +201 -0
- package/oiml-r91/payload/conditions-common-test.yaml +19 -0
- package/oiml-r91/payload/promises.yaml +142 -0
- package/oiml-r91/payload/sample-data.yaml +464 -0
- package/oiml-r91/references.prl +72 -0
- package/oiml-r91/sources-prd/coverage.json +106 -0
- package/oiml-r91/sources-prd/r91-1.sentences.json +4696 -0
- package/oiml-r91/sources-prd/r91-2.sentences.json +2067 -0
- package/oiml-r91/sources-prd/r91-3.sentences.json +5210 -0
- package/oiml-r91/sources-prd/r91-4.sentences.json +474 -0
- package/oiml-r91/specification/calculations.prl +26 -0
- package/oiml-r91/specification/conformance/influence-disturbance.prl +1792 -0
- package/oiml-r91/specification/conformance/metrological.prl +906 -0
- package/oiml-r91/specification/formulas.prl +10 -0
- package/oiml-r91/specification/requirements/class-specific.prl +308 -0
- package/oiml-r91/specification/requirements/metrological.prl +176 -0
- package/oiml-r91/specification/requirements/technical.prl +173 -0
- package/oiml-r91/specification/symbols.prl +323 -0
- package/oiml-r91/specification/tables.prl +136 -0
- package/oiml-r91/terminology.prl +535 -0
- package/oiml-r91/value-types.prl +26 -0
- package/oiml-smart-core/entities/comments.prl +101 -0
- package/oiml-smart-core/entities/cs-operations.prl +492 -0
- package/oiml-smart-core/entities/cs-participants.prl +470 -0
- package/oiml-smart-core/entities/engagement.prl +323 -0
- package/oiml-smart-core/entities/instrument.prl +359 -0
- package/oiml-smart-core/entities/module-b.prl +214 -0
- package/oiml-smart-core/entities/operated-schemes.prl +141 -0
- package/oiml-smart-core/entities/parties.prl +429 -0
- package/oiml-smart-core/entities/payment-records.prl +92 -0
- package/oiml-smart-core/entities/verification.prl +187 -0
- package/oiml-smart-core/entities/workflow.prl +2075 -0
- package/oiml-smart-core/evaluation/roles.prl +65 -0
- package/oiml-smart-core/evaluation/state-machines.prl +1157 -0
- package/oiml-smart-core/package.primmel +10 -0
- package/oiml-smart-core/specification/competence-kinds.prl +64 -0
- package/oiml-smart-core/specification/constraints.prl +40 -0
- package/oiml-smart-core/specification/invariants.prl +90 -0
- package/oiml-smart-core/specification/predicates.prl +116 -0
- package/oiml-smart-module-emc-disturbances/package.primmel +10 -0
- package/oiml-smart-module-env-iec60068/package.primmel +10 -0
- package/oiml-smart-module-examination-docs/package.primmel +10 -0
- package/oiml-smart-module-reference-materials/package.primmel +10 -0
- package/oiml-smart-module-report-headers/package.primmel +10 -0
- package/oiml-smart-module-software-d31/package.primmel +10 -0
- package/oiml-smart-module-specimen-governance/entities/test-execution.prl +228 -0
- package/oiml-smart-module-specimen-governance/package.primmel +10 -0
- package/oiml-twin-cert/documents/tw-1/document.yaml +454 -0
- package/oiml-twin-cert/evaluation/roles.prl +15 -0
- package/oiml-twin-cert/execution/forms/probe-creep.prl +179 -0
- package/oiml-twin-cert/execution/forms/probe.prl +99 -0
- package/oiml-twin-cert/execution/forms/static-conformance.prl +50 -0
- package/oiml-twin-cert/model/attributes.prl +243 -0
- package/oiml-twin-cert/model/behaviors.prl +8 -0
- package/oiml-twin-cert/model/characteristics.prl +18 -0
- package/oiml-twin-cert/model/monitors.prl +16 -0
- package/oiml-twin-cert/package.primmel +16 -0
- package/oiml-twin-cert/specification/conformance/twin-fidelity.prl +176 -0
- package/oiml-twin-cert/specification/requirements/twin-fidelity.prl +137 -0
- package/oiml-twin-cert/specification/symbols.prl +36 -0
- package/oiml-twin-cert/terminology.prl +8 -0
- package/oimlsmart-primmel-packages-0.1.0.tgz +0 -0
- package/package.json +17 -0
- package/qms-ref/model/qms.prl +31 -0
- package/qms-ref/package.primmel +38 -0
- package/quarry-belt-scale/model/ops.prl +115 -0
- package/quarry-belt-scale/package.primmel +36 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
conformance_class /conf/twin-fidelity {
|
|
2
|
+
title "Twin-fidelity conformance tests"
|
|
3
|
+
name "Twin-fidelity conformance determination"
|
|
4
|
+
target /req/twin-fidelity
|
|
5
|
+
subject "digital twin fidelity evaluation"
|
|
6
|
+
description "The twin-fidelity program's determination half (the ISO/IEC 17065 determination activities of the scheme): the static-conformance admission check and the probe schedule — paired reference-vs-served readings across the measuring range, the operational envelope and the operational transitions, each pair timestamped within the pairing window. The physical-side channel is the three-source provenance facet (TCD-2): reference_instrument (a traceable reference, cited by equipment-register id — PREFERRED) | observer_attestation (a verification officer reads the physical display into the probe form — admitted with the DECLARED 'twin ≡ display, not twin ≡ mass' traceability limitation) | sim_ground_truth (the acceptance environment only, never a production channel). Every probe test is gated on the static-conformance admission (dependencies) and carries the pairing-window INVALID precondition; the D2 probe form (result_forms { probe }) records one probe execution — served value and timestamp, reference value and observation timestamp, the channel and its register citation, and the pairing skew. Surveillance (the scheme's type-5 continuous half) reuses the same fidelity requirements through the monitor runtime (TCD-4)."
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
conformance_test /conf/twin-fidelity/static-conformance-admission {
|
|
10
|
+
name "Static conformance admission"
|
|
11
|
+
purpose "Verify that the twin serves exactly the interface its certified product package declares — endpoint identifier, operations, payload schemas and quantity kinds, access scopes — before any value-fidelity probing: a twin that mis-serves its contract never reaches value probes."
|
|
12
|
+
method "Read the twin's served schema, operations, access scopes and payload semantics and compare them against the pinned product package's endpoint declaration (the C84-class startup check, already enforced against the sim's own schema in the acceptance environment). Any mismatch is an admission failure."
|
|
13
|
+
type Inspection
|
|
14
|
+
kind software-examination
|
|
15
|
+
reference { doc "urn:oiml:pub:cs:twin-1:2027" clause "6.1" }
|
|
16
|
+
targets { /req/twin-fidelity/static-conformance }
|
|
17
|
+
result_forms { static-conformance }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
conformance_test /conf/twin-fidelity/probe-range {
|
|
21
|
+
name "Twin-fidelity probe — the measuring range"
|
|
22
|
+
purpose "Close the two-channel fidelity relation across the measuring range: paired reference-vs-served readings at the declared load points, each pair timestamped and paired within the pairing window, judging value fidelity per /req/twin-fidelity/indication-band."
|
|
23
|
+
method "At each load point, record the reference reading from the declared probe channel (the pilot's traceable deadweight force standard — reference_instrument, PREFERRED; observer attestation admitted with the declared traceability limits; sim ground truth in the acceptance environment only) and the served reading fetched through the gateway at probe time, each timestamped; pair the readings within the pairing window (at most the indication register's fresh_within — a pair whose skew exceeds it is INVALID, never a fail)."
|
|
24
|
+
type Testing
|
|
25
|
+
kind performance
|
|
26
|
+
reference { doc "urn:oiml:pub:cs:twin-1:2027" clause "6.2" }
|
|
27
|
+
targets { /req/twin-fidelity/indication-band }
|
|
28
|
+
binds_to { sample.test_context.indication sample.test_context.reference_indication sample.test_context.served_at sample.test_context.observed_at model.parameters.twin_tolerance_indication }
|
|
29
|
+
dependencies { /conf/twin-fidelity/static-conformance-admission }
|
|
30
|
+
variables {
|
|
31
|
+
variable reference_indication { type number unit "kg" source measured description "The physical-side reading paired with the served value at this load point — the pilot lab's deadweight force standard (equipment register id + calibration trace; observer attestation or sim ground truth where the execution records them — the channel actually used is evidence in the probe form)." provenance { channel reference_instrument ref "mtl_f_001" observed_at observed_at } }
|
|
32
|
+
variable served_indication { type number unit "kg" source measured description "The served indication fetched through the gateway at probe time." }
|
|
33
|
+
variable served_at { type number unit "s" source measured description "The twin's own served timestamp for the served reading (timestamp_fields), epoch seconds." }
|
|
34
|
+
variable observed_at { type number unit "s" source measured description "The reference observation timestamp captured at evidence-capture time, epoch seconds." }
|
|
35
|
+
variable observed_at_t0 { type number unit "s" source measured description "The t0 anchor's reference observation timestamp, epoch seconds." }
|
|
36
|
+
variable observed_at_end { type number unit "s" source measured description "The end anchor's reference observation timestamp, epoch seconds." }
|
|
37
|
+
variable served_at_t0 { type number unit "s" source measured description "The twin's own served timestamp at dwell start (timestamp_fields), epoch seconds — the series' first served_at." }
|
|
38
|
+
variable served_at_end { type number unit "s" source measured description "The twin's own served timestamp at dwell end (timestamp_fields), epoch seconds — the series' last served_at." }
|
|
39
|
+
variable pair_skew_t0 { type number unit "s" source derived derivation "ocl{abs(served_at_t0 - observed_at_t0)}" description "The t0 anchor's pairing skew — a skew beyond the pairing window is INVALID, never a fail." }
|
|
40
|
+
variable pair_skew_end { type number unit "s" source derived derivation "ocl{abs(served_at_end - observed_at_end)}" description "The end anchor's pairing skew — a skew beyond the pairing window is INVALID, never a fail." }
|
|
41
|
+
variable pair_skew { type number unit "s" source derived derivation "ocl{abs(served_at - observed_at)}" description "The pairing skew |served timestamp − reference observation timestamp| — a pair whose skew exceeds the pairing window is INVALID, never a fail." }
|
|
42
|
+
}
|
|
43
|
+
preconditions {
|
|
44
|
+
precondition pairing-window { check "ocl{pair_skew <= 5}" description "The pairing window: the paired readings are taken within the register's fresh_within of each other (5 s for the indication register) — the window is declared per register with fresh_within as the ceiling, never a fixed platform constant (controller decision 5). A pair violating the window is INVALID — the test's setup was wrong, never a fail." }
|
|
45
|
+
}
|
|
46
|
+
procedure {
|
|
47
|
+
1 "Probe the measuring range: minimum load, then ≈25 %, 50 %, 75 % and 100 % of E_max, increasing and (where the physics demands) decreasing — the load-point discipline of the Recommendation's MPE test; each point a timestamped reference-vs-served pair" outputs { reference_indication served_indication observed_at served_at }
|
|
48
|
+
}
|
|
49
|
+
acceptance_criteria {
|
|
50
|
+
type composite
|
|
51
|
+
pass_if "ocl{indication_band_criterion}"
|
|
52
|
+
criterion indication_band_criterion { target /req/twin-fidelity/indication-band description "|served − reference| ≤ δ_indication at every range point (canonical verdict — never restated here)" accepts { verdict twin_deviation_indication op lte limit "ocl{twin_tolerance_indication}" } }
|
|
53
|
+
}
|
|
54
|
+
result_forms { probe }
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
conformance_test /conf/twin-fidelity/probe-envelope {
|
|
58
|
+
name "Twin-fidelity probe — the operational envelope"
|
|
59
|
+
purpose "Close the two-channel fidelity relation across the operational envelope: paired reference-vs-served readings at the declared envelope corners, each pair timestamped and paired within the pairing window, judging value fidelity per /req/twin-fidelity/indication-band at the envelope extremes, not only at reference conditions."
|
|
60
|
+
method "Condition the instrument at each declared envelope corner and probe the paired reading per the range test's channel discipline (the pilot's traceable deadweight force standard — reference_instrument, PREFERRED; observer attestation admitted with the declared traceability limits; sim ground truth in the acceptance environment only), each pair timestamped within the pairing window. The envelope declaration: the rated temperature corners of the certified product's declared envelope (t_min … t_max — −10 … +40 °C for the pilot LC-500, the pinned product import's temp_envelope promise) and return; the humidity corner applies where the certified product declares a humidity class (the pilot declares none — the corner is the scheme's declaration, never an assumption)."
|
|
61
|
+
type Testing
|
|
62
|
+
kind performance
|
|
63
|
+
reference { doc "urn:oiml:pub:cs:twin-1:2027" clause "6.3" }
|
|
64
|
+
targets { /req/twin-fidelity/indication-band }
|
|
65
|
+
binds_to { sample.test_context.indication sample.test_context.reference_indication sample.test_context.served_at sample.test_context.observed_at model.parameters.twin_tolerance_indication }
|
|
66
|
+
dependencies { /conf/twin-fidelity/static-conformance-admission }
|
|
67
|
+
variables {
|
|
68
|
+
variable reference_indication { type number unit "kg" source measured description "The physical-side reading paired with the served value at this envelope corner — the pilot lab's deadweight force standard (the channel actually used is evidence in the probe form)." provenance { channel reference_instrument ref "mtl_f_001" observed_at observed_at } }
|
|
69
|
+
variable served_indication { type number unit "kg" source measured description "The served indication fetched through the gateway at the corner." }
|
|
70
|
+
variable served_at { type number unit "s" source measured description "The twin's own served timestamp for the served reading (timestamp_fields), epoch seconds." }
|
|
71
|
+
variable observed_at { type number unit "s" source measured description "The reference observation timestamp captured at evidence-capture time, epoch seconds." }
|
|
72
|
+
variable observed_at_t0 { type number unit "s" source measured description "The t0 anchor's reference observation timestamp, epoch seconds." }
|
|
73
|
+
variable observed_at_end { type number unit "s" source measured description "The end anchor's reference observation timestamp, epoch seconds." }
|
|
74
|
+
variable served_at_t0 { type number unit "s" source measured description "The twin's own served timestamp at dwell start (timestamp_fields), epoch seconds — the series' first served_at." }
|
|
75
|
+
variable served_at_end { type number unit "s" source measured description "The twin's own served timestamp at dwell end (timestamp_fields), epoch seconds — the series' last served_at." }
|
|
76
|
+
variable pair_skew_t0 { type number unit "s" source derived derivation "ocl{abs(served_at_t0 - observed_at_t0)}" description "The t0 anchor's pairing skew — a skew beyond the pairing window is INVALID, never a fail." }
|
|
77
|
+
variable pair_skew_end { type number unit "s" source derived derivation "ocl{abs(served_at_end - observed_at_end)}" description "The end anchor's pairing skew — a skew beyond the pairing window is INVALID, never a fail." }
|
|
78
|
+
variable pair_skew { type number unit "s" source derived derivation "ocl{abs(served_at - observed_at)}" description "The pairing skew |served timestamp − reference observation timestamp| — a pair whose skew exceeds the pairing window is INVALID, never a fail." }
|
|
79
|
+
variable envelope_temperature_min { type number unit "degC" source declared description "The low temperature corner of the certified product's declared envelope (t_min — −10 °C for the pilot LC-500)." }
|
|
80
|
+
variable envelope_temperature_max { type number unit "degC" source declared description "The high temperature corner of the certified product's declared envelope (t_max — +40 °C for the pilot LC-500)." }
|
|
81
|
+
}
|
|
82
|
+
preconditions {
|
|
83
|
+
precondition pairing-window { check "ocl{pair_skew <= 5}" description "The pairing window: the paired readings are taken within the register's fresh_within of each other (5 s for the indication register) — the window is declared per register with fresh_within as the ceiling, never a fixed platform constant (controller decision 5). A pair violating the window is INVALID — the test's setup was wrong, never a fail." }
|
|
84
|
+
}
|
|
85
|
+
procedure {
|
|
86
|
+
1 "Condition at the low temperature corner (t_min of the declared envelope) and probe the paired reading at the probe load" outputs { reference_indication served_indication observed_at served_at }
|
|
87
|
+
2 "Condition at the high temperature corner (t_max of the declared envelope) and probe the paired reading at the probe load" outputs { reference_indication served_indication observed_at served_at }
|
|
88
|
+
3 "Return to reference conditions and probe the closing pair; where the certified product declares a humidity class, condition at the declared humidity corner and probe" outputs { reference_indication served_indication observed_at served_at }
|
|
89
|
+
}
|
|
90
|
+
acceptance_criteria {
|
|
91
|
+
type composite
|
|
92
|
+
pass_if "ocl{indication_band_criterion}"
|
|
93
|
+
criterion indication_band_criterion { target /req/twin-fidelity/indication-band description "|served − reference| ≤ δ_indication at every envelope corner (canonical verdict — never restated here)" accepts { verdict twin_deviation_indication op lte limit "ocl{twin_tolerance_indication}" } }
|
|
94
|
+
}
|
|
95
|
+
result_forms { probe }
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
conformance_test /conf/twin-fidelity/probe-transitions {
|
|
99
|
+
name "Twin-fidelity probe — the operational transitions"
|
|
100
|
+
purpose "Close the two-channel fidelity relation across the operational transitions: the served op_state paired with the physical state at each transition, warm-up, measurement, fault annunciation and clear, judging state fidelity per /req/twin-fidelity/state-fidelity — a served fault faithfully reporting the instrument's fault is not infidelity."
|
|
101
|
+
method "At each declared transition, record the physical state from the declared probe channel (observer attestation — the verification officer reads the instrument's own state annunciation into the probe form, admitted with the DECLARED traceability limitation: the reference IS the EUT's own display, twin ≡ display semantics; sim ground truth in the acceptance environment only) and the served op_state delivered on the twin's state channel, each timestamped; pair within the pairing window (at most the state register's fresh_within — 1 s on the certified product's state serve; a violating pair is INVALID, never a fail)."
|
|
102
|
+
type Testing
|
|
103
|
+
kind performance
|
|
104
|
+
reference { doc "urn:oiml:pub:cs:twin-1:2027" clause "6.4" }
|
|
105
|
+
targets { /req/twin-fidelity/state-fidelity }
|
|
106
|
+
binds_to { sample.test_context.op_state sample.test_context.reference_state sample.test_context.served_at sample.test_context.observed_at }
|
|
107
|
+
dependencies { /conf/twin-fidelity/static-conformance-admission }
|
|
108
|
+
variables {
|
|
109
|
+
variable reference_state { type string source measured description "The physical operational state observed at the transition — the verification officer reads the instrument's state annunciation (the declared channel of the state-fidelity leg; the channel actually used is evidence in the probe form)." provenance { channel observer_attestation ref "p_weber" observed_at observed_at limitation "Attestation-only evidence proves the twin serves what the instrument's own display annunciates — twin ≡ display, not twin ≡ mass: the reference IS the EUT's own indication, never an independent physical standard." } }
|
|
110
|
+
variable served_op_state { type string source measured description "The served operational state at the same transition (the twin's state channel)." }
|
|
111
|
+
variable served_at { type number unit "s" source measured description "The twin's own served timestamp for the state reading (timestamp_fields), epoch seconds." }
|
|
112
|
+
variable observed_at { type number unit "s" source measured description "The state observation timestamp captured at evidence-capture time, epoch seconds." }
|
|
113
|
+
variable pair_skew { type number unit "s" source derived derivation "ocl{abs(served_at - observed_at)}" description "The pairing skew |served timestamp − state observation timestamp| — a pair whose skew exceeds the pairing window is INVALID, never a fail." }
|
|
114
|
+
}
|
|
115
|
+
preconditions {
|
|
116
|
+
precondition pairing-window { check "ocl{pair_skew <= 1}" description "The pairing window: the paired state readings are taken within the register's fresh_within of each other (1 s for the state register — the certified product serves its state channel at fresh_within 1 s, the ceiling; controller decision 5). A pair violating the window is INVALID — the test's setup was wrong, never a fail." }
|
|
117
|
+
}
|
|
118
|
+
procedure {
|
|
119
|
+
1 "Probe the warm-up leg: off→warming→ready — the served op_state is paired with the physical state at each step of the power-on sequence" outputs { reference_state served_op_state observed_at served_at }
|
|
120
|
+
2 "Probe the measurement leg: ready→measuring — the served op_state is paired with the physical state at measurement start" outputs { reference_state served_op_state observed_at served_at }
|
|
121
|
+
3 "Probe the fault-annunciation leg and clear: drive the instrument to fault, pair the annunciation, then clear and pair the recovery — a served fault faithfully reporting the instrument's fault passes fidelity and triggers service, never a fidelity fail" outputs { reference_state served_op_state observed_at served_at }
|
|
122
|
+
}
|
|
123
|
+
acceptance_criteria {
|
|
124
|
+
type composite
|
|
125
|
+
pass_if "ocl{state_fidelity_criterion}"
|
|
126
|
+
criterion state_fidelity_criterion { target /req/twin-fidelity/state-fidelity pass_if "ocl{served_op_state = reference_state}" description "served op_state ≡ reference state at every transition, fault annunciation included" }
|
|
127
|
+
}
|
|
128
|
+
result_forms { probe }
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
conformance_test /conf/twin-fidelity/probe-creep {
|
|
132
|
+
name "Twin-fidelity behavioral probe — the creep dwell"
|
|
133
|
+
purpose "Close the behavioral fidelity relation (TODO.v3/02): under a CONSTANT reference load held for the declared dwell, the twin's served indication must drift no more than the instrument's accuracy-class creep allowance — the twin's dynamics track the physical instrument's, parameterized per accuracy class through the Recommendation's own apportioned MPE (the same lookupMPE computation the mapped Recommendation's creep test uses). A twin whose creep response exceeds the class envelope is unfaithful however cleanly its point probes pass."
|
|
134
|
+
method "Apply the declared dwell load (≈90 % of E_max) and hold it CONSTANT for the declared dwell. Record the reference reading at dwell start and dwell end from the declared probe channel (the pilot lab's deadweight force standard — reference_instrument, PREFERRED; observer attestation admitted with the declared traceability limits; sim ground truth in the acceptance environment only) and sample the served indication through the gateway at the declared instants over the dwell (each anchor a timestamped reference-vs-served pair within the pairing window of 4.3). The served drift is derived ONCE at evidence capture as the maximum |sample − served at dwell start| over the recorded series (facts only — auditable against the recorded series), and the creep allowance is computed from the class tables as lookupMPE(dwell_load, accuracy_class, p_lc). A reference that itself drifts beyond one third of the allowance (the U:MPE ≤ 1:3 discipline) voids the setup — INVALID, never a fail."
|
|
135
|
+
type Testing
|
|
136
|
+
kind performance
|
|
137
|
+
reference { doc "urn:oiml:pub:cs:twin-1:2027" clause "6.5" }
|
|
138
|
+
targets { /req/twin-fidelity/creep-envelope }
|
|
139
|
+
binds_to { sample.test_context.max_drift sample.test_context.creep_allowance sample.test_context.reference_indication_t0 sample.test_context.reference_indication_end }
|
|
140
|
+
dependencies { /conf/twin-fidelity/static-conformance-admission }
|
|
141
|
+
variables {
|
|
142
|
+
variable reference_indication_t0 { type number unit "kg" source measured description "The reference reading at dwell start — the constant-load anchor (equipment register id + calibration trace; observer attestation or sim ground truth where the execution records them)." provenance { channel reference_instrument ref "mtl_f_001" observed_at observed_at } }
|
|
143
|
+
variable reference_indication_end { type number unit "kg" source measured description "The reference reading at dwell end — the constant-load confirmation. A reference that drifts beyond one third of the allowance voids the setup (INVALID, never a fail)." provenance { channel reference_instrument ref "mtl_f_001" observed_at observed_at } }
|
|
144
|
+
variable served_t0 { type number unit "kg" source measured description "The served indication at dwell start (the drift baseline), fetched through the gateway at dwell start." }
|
|
145
|
+
variable served_end { type number unit "kg" source measured description "The served indication at dwell end, fetched through the gateway at dwell end." }
|
|
146
|
+
variable observed_at { type number unit "s" source measured description "The reference observation timestamp captured at evidence-capture time, epoch seconds." }
|
|
147
|
+
variable observed_at_t0 { type number unit "s" source measured description "The t0 anchor's reference observation timestamp, epoch seconds." }
|
|
148
|
+
variable observed_at_end { type number unit "s" source measured description "The end anchor's reference observation timestamp, epoch seconds." }
|
|
149
|
+
variable served_at_t0 { type number unit "s" source measured description "The twin's own served timestamp at dwell start (timestamp_fields), epoch seconds — the series' first served_at." }
|
|
150
|
+
variable served_at_end { type number unit "s" source measured description "The twin's own served timestamp at dwell end (timestamp_fields), epoch seconds — the series' last served_at." }
|
|
151
|
+
variable pair_skew_t0 { type number unit "s" source derived derivation "ocl{abs(served_at_t0 - observed_at_t0)}" description "The t0 anchor's pairing skew — a skew beyond the pairing window is INVALID, never a fail." }
|
|
152
|
+
variable pair_skew_end { type number unit "s" source derived derivation "ocl{abs(served_at_end - observed_at_end)}" description "The end anchor's pairing skew — a skew beyond the pairing window is INVALID, never a fail." }
|
|
153
|
+
variable max_drift { type number unit "kg" source measured description "The maximum |served sample − served_t0| over the recorded dwell series — derived ONCE at evidence capture from the recorded series (facts only, auditable against the probe-creep form's series), the operand of the creep-envelope criterion." }
|
|
154
|
+
variable dwell_s { type number unit "s" source declared description "The declared dwell duration (the scheme's declaration per register — the pilot's 900 s dwell; the type test's 30 min is the Recommendation's own program, the scheme declares its practical dwell)." }
|
|
155
|
+
variable dwell_load { type number unit "kg" source declared description "The dwell's applied load (≈90 % E_max — 450 kg for the LC-500-class pilot), the lookupMPE load input." }
|
|
156
|
+
variable accuracy_class { type string source declared description "The certified type's accuracy class (C for the LC-500-class pilot) — the lookupMPE class input. Class-parameterized: the allowance resolves from the same class tables the Recommendation's tests use." }
|
|
157
|
+
variable p_lc { type number unit "dimensionless" source declared description "The apportionment factor (0.7 by default for load cells per R 60) — the lookupMPE apportionment input." }
|
|
158
|
+
variable creep_allowance { type number unit "kg" source computed derivation "ocl{lookupMPE(dwell_load, accuracy_class, p_lc)}" description "The accuracy-class creep allowance — the Recommendation's own apportioned MPE at the dwell load, computed from the class tables (never a platform constant)." }
|
|
159
|
+
}
|
|
160
|
+
preconditions {
|
|
161
|
+
precondition pairing-window { check "ocl{pair_skew_t0 <= 5 and pair_skew_end <= 5}" description "The pairing window: BOTH anchors' reference-vs-served readings are taken within the register's fresh_within of each other (5 s for the indication register — TW-1, 6: every probe test carries the pairing-window INVALID precondition of 4.3). A pair violating the window is INVALID — the setup was wrong, never a fail." }
|
|
162
|
+
precondition reference-constant { check "ocl{abs(reference_indication_end - reference_indication_t0) <= creep_allowance / 3}" description "The reference must be constant within one third of the allowance (the U:MPE ≤ 1:3 discipline): a drifting reference invalidates the setup — INVALID, never a fail." }
|
|
163
|
+
}
|
|
164
|
+
procedure {
|
|
165
|
+
1 "Apply the declared dwell load and hold it constant; record the reference and served readings at dwell start, each timestamped (the pairing pair)" outputs { reference_indication_t0 served_t0 observed_at_t0 served_at_t0 }
|
|
166
|
+
2 "Sample the served indication at the declared instants over the dwell (the series is recorded in the probe-creep form; the maximum drift derives at capture)" outputs { max_drift }
|
|
167
|
+
3 "Record the reference and served readings at dwell end, each timestamped (the pairing pair); compute the creep allowance from the class tables" outputs { reference_indication_end served_end observed_at_end served_at_end creep_allowance }
|
|
168
|
+
}
|
|
169
|
+
acceptance_criteria {
|
|
170
|
+
type composite
|
|
171
|
+
pass_if "ocl{creep_drift_criterion}"
|
|
172
|
+
criterion creep_drift_criterion { target /req/twin-fidelity/creep-envelope description "max served drift over the dwell ≤ the class creep allowance (canonical verdict — never restated here)" accepts { verdict twin_creep_drift_indication op lte limit "ocl{creep_allowance}" } }
|
|
173
|
+
}
|
|
174
|
+
result_forms { probe-creep }
|
|
175
|
+
}
|
|
176
|
+
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
requirement_class /req/twin-fidelity {
|
|
2
|
+
title "Twin-fidelity program requirements"
|
|
3
|
+
name "Twin-fidelity requirements"
|
|
4
|
+
description "The digital-twin fidelity certification program's requirement set (TODO.v2/01 TCD-1; analysis/twin-certification-design.md Q1). A twin-fidelity requirement is, per twin register (served aspect), the conjunction of three claims landing on machinery that already exists: value fidelity (|served − reference| ≤ δ, quantity-typed, over the served register and the reference_* evidence register), freshness (the serve's fresh_within plus the verdict service's gate — inherited, never re-declared), and provenance (endpoint id bound to the certified unit, served-timestamp source, fact provenance) — plus state fidelity (the twin truthfully serves fault states). Every requirement cites the program's own governing document (urn:oiml:pub:cs:twin-1:2027)."
|
|
5
|
+
subject "digital twin of a measuring instrument"
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
requirement /req/twin-fidelity/static-conformance {
|
|
9
|
+
name "Static conformance of the served twin interface (admission)"
|
|
10
|
+
statement "A certified twin shall serve exactly the interface its certified product package declares: the endpoint identifier, the served operations with their payload schemas and quantity kinds, and the access scopes shall equal the package's endpoint declaration. A twin that mis-serves its declared contract shall not enter value-fidelity probing."
|
|
11
|
+
obligation shall
|
|
12
|
+
acceptance_criteria {
|
|
13
|
+
type: "qualitative"
|
|
14
|
+
items:
|
|
15
|
+
- description: "Endpoint identifier equals the pinned product package's endpoint declaration"
|
|
16
|
+
- description: "Served operations, payload schemas and quantity kinds equal the declaration"
|
|
17
|
+
- description: "Access scopes equal the declaration"
|
|
18
|
+
- description: "A twin that mis-serves its contract is excluded from value-fidelity probing"
|
|
19
|
+
}
|
|
20
|
+
verification { method inspection description "Admission-time contract check against the pinned product package's endpoint declaration (the abstract import acme-lc500@2021 — C83's edition-pin discipline); the C84-class startup check, re-verified at every surveillance cycle start." }
|
|
21
|
+
ref derives-from "urn:oiml:pub:cs:twin-1:2027#clause-5.1"
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
requirement /req/twin-fidelity/indication-band {
|
|
25
|
+
name "Served indication within the declared twin tolerance"
|
|
26
|
+
statement "The twin's served indication shall match the physical instrument's indication within the declared tolerance δ_indication at every probe point: |served − reference| ≤ δ_indication, the reference reading taken from a declared probe channel and paired with the served reading within the pairing window."
|
|
27
|
+
binds_to { sample.test_context.indication sample.test_context.reference_indication }
|
|
28
|
+
limit {
|
|
29
|
+
quantity { kind mass unit "kg" }
|
|
30
|
+
accepts {
|
|
31
|
+
verdict twin_deviation_indication
|
|
32
|
+
op lte
|
|
33
|
+
limit "ocl{twin_tolerance_indication}"
|
|
34
|
+
}
|
|
35
|
+
uses { sample.test_context.indication sample.test_context.reference_indication model.parameters.twin_tolerance_indication }
|
|
36
|
+
}
|
|
37
|
+
parameters {
|
|
38
|
+
param twin_tolerance_indication: number { description "The declared indication tolerance δ_indication in kg — the metrologically honest anchor: a declared fraction of the underlying instrument's maximum permissible error, declared by the scheme per register, never a platform constant." unit "kg" default 0.1 }
|
|
39
|
+
}
|
|
40
|
+
obligation shall
|
|
41
|
+
acceptance_criteria {
|
|
42
|
+
type: "threshold"
|
|
43
|
+
description: "|served − reference| ≤ δ_indication at every probe point"
|
|
44
|
+
limit:
|
|
45
|
+
expression: "|served − reference|"
|
|
46
|
+
operator: "lte"
|
|
47
|
+
threshold_expression: "δ_indication"
|
|
48
|
+
unit: "kg"
|
|
49
|
+
per_condition: "per probe point, per fidelity register"
|
|
50
|
+
}
|
|
51
|
+
verification { method testing description "The probe schedule's range and envelope tests (/conf/twin-fidelity/probe-range, /conf/twin-fidelity/probe-envelope): paired reference-vs-served readings at the declared load points and envelope corners, each pair timestamped within the pairing window." }
|
|
52
|
+
ref derives-from "urn:oiml:pub:cs:twin-1:2027#clause-5.2"
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
requirement /req/twin-fidelity/freshness-declaration {
|
|
56
|
+
name "Declared freshness on every fidelity register"
|
|
57
|
+
statement "Every fidelity register shall be served under a declared freshness window: the serve binding carries fresh_within, and a served value older than its window degrades the fidelity verdict to indeterminate — never a fail, never a silent pass. The program inherits the window from the serve declaration and never re-declares it on the binding."
|
|
58
|
+
binds_to { sample.test_context.indication sample.test_context.op_state }
|
|
59
|
+
obligation shall
|
|
60
|
+
acceptance_criteria {
|
|
61
|
+
type: "qualitative"
|
|
62
|
+
items:
|
|
63
|
+
- description: "Every fidelity register's serve binding declares fresh_within"
|
|
64
|
+
- description: "A stale served value degrades the verdict to indeterminate — never a fail, never a silent pass"
|
|
65
|
+
- description: "The window is inherited from the serve declaration, never re-declared on the binding"
|
|
66
|
+
}
|
|
67
|
+
verification { method definitional description "Satisfied by the serve declaration the program reuses (fresh_within is mandatory on a live serve binding) and enforced continuously by the verdict service's freshness gate; no separate window is declared (§14.12 forbids re-declaring it on the binding)." }
|
|
68
|
+
ref derives-from "urn:oiml:pub:cs:twin-1:2027#clause-5.3"
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
requirement /req/twin-fidelity/timestamp-provenance {
|
|
72
|
+
name "Served-timestamp provenance on every fidelity register"
|
|
73
|
+
statement "A certified twin shall serve a parseable timestamp on every fidelity register, and the deployment shall declare the served-timestamp field per operation (timestamp_fields) so freshness is judged against the twin's own served timestamp — a declared-but-absent timestamp is unavailable, never invented. Every fidelity fact shall carry provenance: the endpoint identifier bound to the certified unit's serial, the serving operation, and the definition version pin."
|
|
74
|
+
obligation shall
|
|
75
|
+
acceptance_criteria {
|
|
76
|
+
type: "qualitative"
|
|
77
|
+
items:
|
|
78
|
+
- description: "A parseable served timestamp on every fidelity register"
|
|
79
|
+
- description: "timestamp_fields declared per operation at deployment"
|
|
80
|
+
- description: "Endpoint identifier bound to the certified unit's serial"
|
|
81
|
+
- description: "Fidelity facts carry provenance (integration, operation) and the definition version pin"
|
|
82
|
+
}
|
|
83
|
+
verification { method definitional description "A declaration requirement gated at admission (the deployment's timestamp_fields declaration) and enforced continuously by the freshness gate — an absent served timestamp is unavailable, so the verdict degrades to indeterminate." }
|
|
84
|
+
ref derives-from "urn:oiml:pub:cs:twin-1:2027#clause-5.4"
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
requirement /req/twin-fidelity/state-fidelity {
|
|
88
|
+
name "Served operational state equals the physical state"
|
|
89
|
+
statement "The twin's served operational state shall equal the physical instrument's state at every state transition, including fault annunciation: a served fault state faithfully reporting the instrument's fault is not infidelity — it passes fidelity and triggers service. A twin that serves a healthy state over a faulted instrument, or a fault state over a healthy one, fails state fidelity."
|
|
90
|
+
binds_to { sample.test_context.op_state sample.test_context.reference_state }
|
|
91
|
+
limit {
|
|
92
|
+
expression "ocl{sample.test_context.op_state = sample.test_context.reference_state}"
|
|
93
|
+
uses { sample.test_context.op_state sample.test_context.reference_state }
|
|
94
|
+
}
|
|
95
|
+
obligation shall
|
|
96
|
+
acceptance_criteria {
|
|
97
|
+
type: "threshold"
|
|
98
|
+
description: "served op_state ≡ physical state at every transition, fault annunciation included"
|
|
99
|
+
limit:
|
|
100
|
+
expression: "served op_state"
|
|
101
|
+
operator: "eq"
|
|
102
|
+
threshold_expression: "reference state"
|
|
103
|
+
unit: "state code"
|
|
104
|
+
per_condition: "per operational transition, fault annunciation included"
|
|
105
|
+
}
|
|
106
|
+
verification { method testing description "The probe schedule's transition test (/conf/twin-fidelity/probe-transitions): off→warming→ready, ready→measuring, and the fault-annunciation leg and clear — the served op_state is compared with the reference state at each transition." }
|
|
107
|
+
ref derives-from "urn:oiml:pub:cs:twin-1:2027#clause-5.5"
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
requirement /req/twin-fidelity/creep-envelope {
|
|
111
|
+
name "Creep-envelope fidelity (behavioral)"
|
|
112
|
+
statement "Under a CONSTANT reference load held for the declared dwell, the twin's served indication shall drift no more than the instrument's accuracy-class creep allowance — the behavioral fidelity class (TODO.v3/02): the twin's dynamics track the physical instrument's, not merely its single points. The allowance is parameterized per accuracy class through the Recommendation's own apportioned MPE — creep_allowance = lookupMPE(dwell_load, accuracy_class, p_lc), the same computation the mapped Recommendation's creep test uses (for R 60 the apportionment factor p_lc = 0.7 by default). A twin whose creep response exceeds the class envelope is unfaithful however cleanly its point probes pass; a reference that itself drifts beyond one third of the allowance (the U:MPE ≤ 1:3 discipline) voids the setup — INVALID, never a fail."
|
|
113
|
+
binds_to { sample.test_context.max_drift sample.test_context.creep_allowance sample.test_context.reference_indication_t0 sample.test_context.reference_indication_end }
|
|
114
|
+
limit {
|
|
115
|
+
quantity { kind mass unit "kg" }
|
|
116
|
+
accepts {
|
|
117
|
+
verdict twin_creep_drift_indication
|
|
118
|
+
op lte
|
|
119
|
+
limit "ocl{creep_allowance}"
|
|
120
|
+
}
|
|
121
|
+
uses { sample.test_context.max_drift sample.test_context.creep_allowance }
|
|
122
|
+
}
|
|
123
|
+
obligation shall
|
|
124
|
+
acceptance_criteria {
|
|
125
|
+
type: "threshold"
|
|
126
|
+
description: "max served drift over the dwell ≤ the class creep allowance (lookupMPE apportioned); reference constant within allowance/3"
|
|
127
|
+
limit:
|
|
128
|
+
expression: "max drift over the dwell"
|
|
129
|
+
operator: "lte"
|
|
130
|
+
threshold_expression: "creep allowance (class-parameterized)"
|
|
131
|
+
unit: "kg"
|
|
132
|
+
per_condition: "per declared dwell, per accuracy class"
|
|
133
|
+
}
|
|
134
|
+
verification { method testing description "The behavioral probe program (/conf/twin-fidelity/probe-creep): a dwell at ≈90 % E_max with served samples over the dwell and constant-reference anchors at both ends, judged per the class tables." }
|
|
135
|
+
ref derives-from "urn:oiml:pub:cs:twin-1:2027#clause-5.6"
|
|
136
|
+
}
|
|
137
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
symbol indication {
|
|
2
|
+
name "Served indication"
|
|
3
|
+
definition "The twin's SERVED indication — the live output reading in units of mass served by the twin interface (the served channel of the two-channel fidelity relation); the register is declared in model/attributes.prl."
|
|
4
|
+
type number
|
|
5
|
+
unit "kg"
|
|
6
|
+
latex "I"
|
|
7
|
+
kind observable
|
|
8
|
+
quantity_kind mass
|
|
9
|
+
origin measured
|
|
10
|
+
ref derives-from "urn:oiml:pub:cs:twin-1:2027#clause-4.2"
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
symbol reference_indication {
|
|
14
|
+
name "Reference indication"
|
|
15
|
+
definition "The physical-side reference indication paired with the served indication at a probe point (the reference channel of the two-channel fidelity relation); the register is declared in model/attributes.prl."
|
|
16
|
+
type number
|
|
17
|
+
unit "kg"
|
|
18
|
+
latex "I_{ref}"
|
|
19
|
+
kind observable
|
|
20
|
+
quantity_kind mass
|
|
21
|
+
origin measured
|
|
22
|
+
ref derives-from "urn:oiml:pub:cs:twin-1:2027#clause-4.3"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
symbol max_drift {
|
|
26
|
+
name "Maximum served drift over the dwell"
|
|
27
|
+
definition "The maximum |served sample − served_t0| over the behavioral probe's recorded dwell series, derived ONCE at evidence capture (the operand of the creep-envelope criterion — the behavioral fidelity class, TODO.v3/02); the register is declared in model/attributes.prl."
|
|
28
|
+
type number
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
symbol creep_allowance {
|
|
32
|
+
name "Creep allowance (class-parameterized)"
|
|
33
|
+
definition "The accuracy-class creep allowance — the mapped Recommendation's own apportioned MPE at the dwell load, lookupMPE(dwell_load, accuracy_class, p_lc) from the class tables; the register is declared in model/attributes.prl."
|
|
34
|
+
type number
|
|
35
|
+
}
|
|
36
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
term twin-fidelity-evaluation {
|
|
2
|
+
label "twin-fidelity evaluation"
|
|
3
|
+
definition "determination activity, and its attestation, confirming that a digital twin provided by a measuring instrument faithfully reflects the physical instrument's status — the served value equivalent to the physical state, within declared bounds and freshness, continuously"
|
|
4
|
+
section "3.1"
|
|
5
|
+
note "VIML names no twin-verification kind: VIML 2.09 and 2.12–2.14 are verifications of the instrument itself (initial, subsequent, in-service), so the twin-fidelity discipline is this program's to define (TODO.roadmap/63:57–62). DECISION (controller, 2026-07-28 — analysis/twin-certification-design.md question 2, ACCEPTED): the new verification kind is named twin-fidelity evaluation — a determination activity per ISO/IEC 17000:2020, A.3.2 with attestation per A.4.3, a new VerificationProcess kind alongside initial/subsequent/in-service (the metamodel v0.6.1 D1 hook). This entry is the naming decision record (TCD-1 work item 4)."
|
|
6
|
+
source "urn:oiml:pub:cs:twin-1:2027, 3.1"
|
|
7
|
+
}
|
|
8
|
+
|
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@oimlsmart/primmel-packages",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "The OIML SMART platform's authoritative model content: every Recommendation, the OIML-CS scheme, the CASCO foundations, the shared modules, and the product/program reference packages as Primmel (.prl) packages — the single source of truth the platform's data trees regenerate from. Consumed by the smart monorepo (oimlsmart/smart) at a pinned version (TODO.repos/02).",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/oimlsmart/primmel-packages.git"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "node scripts/check-all.mjs && node scripts/round-trip.mjs"
|
|
12
|
+
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"@primmel/primmel": "^1.9.1"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# ─────────────────────────────────────────────────────────────────────
|
|
2
|
+
# qms-ref — the toy QMS process tree (TODO.v2/02 VL-3;
|
|
3
|
+
# view-lens-design.md Q4).
|
|
4
|
+
#
|
|
5
|
+
# *** FICTIONAL TEACHING MODEL — NO ISO 9001 CONTENT. *** These are
|
|
6
|
+
# invented processes, not clauses of any real standard.
|
|
7
|
+
#
|
|
8
|
+
# The tree is deliberately the smallest shape that exercises every
|
|
9
|
+
# calculus rule when ims-demo maps into it:
|
|
10
|
+
#
|
|
11
|
+
# PlanQms — a SERIAL parent (child_composition all, the default):
|
|
12
|
+
# both children mapped-full ⇒ the parent aggregates to
|
|
13
|
+
# full and a CLOSURE proposal fires.
|
|
14
|
+
# ImproveQms — a GATEWAY parent (exclusive branches, the minimum is
|
|
15
|
+
# "at least one branch fulfilled"): one child mapped-full,
|
|
16
|
+
# the other untouched ⇒ the parent aggregates to MINIMAL
|
|
17
|
+
# and the untouched child stays NONE (the visible gap).
|
|
18
|
+
# ─────────────────────────────────────────────────────────────────────
|
|
19
|
+
|
|
20
|
+
process PlanQms {
|
|
21
|
+
name "Plan the QMS"
|
|
22
|
+
process QualityPolicy { name "Quality policy" }
|
|
23
|
+
process QualityObjectives { name "Quality objectives" }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
process ImproveQms {
|
|
27
|
+
name "Improve the QMS"
|
|
28
|
+
child_composition gateway
|
|
29
|
+
process CorrectiveAction { name "Corrective action" }
|
|
30
|
+
process ContinualImprovement { name "Continual improvement" }
|
|
31
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# ─────────────────────────────────────────────────────────────────────
|
|
2
|
+
# qms-ref — a FICTIONAL toy quality-management-system reference model
|
|
3
|
+
# (TODO.v2/02 VL-3; the analysis view-lens-design.md Q4 worked example).
|
|
4
|
+
#
|
|
5
|
+
# *** FICTIONAL TEACHING MODEL — NO ISO 9001 CONTENT. ***
|
|
6
|
+
# This package is a tiny invented process tree that merely EXERCISES the
|
|
7
|
+
# coverage calculus (aggregation, gateway minimum, inheritance, closure
|
|
8
|
+
# discovery). It is not, and does not derive from, ISO 9001 or any other
|
|
9
|
+
# real management-system standard (controller decision 2: toy references
|
|
10
|
+
# — licensing and maintenance both avoided; the calculus mechanics are
|
|
11
|
+
# what's being proven). Any resemblance to a real standard's clause
|
|
12
|
+
# structure is coincidental and unintentional.
|
|
13
|
+
#
|
|
14
|
+
# Package kind: NONE declared (absent = the ordinary default). Per the
|
|
15
|
+
# design (view-lens-design.md Q4), "reference" and "implementation" are
|
|
16
|
+
# ROLES at the ends of a mapping chain, not manifest kinds — the
|
|
17
|
+
# quarry-belt-scale precedent. None of the enumerated kinds applies:
|
|
18
|
+
# not the shared kernel (core), not a capability module consumed by ≥2
|
|
19
|
+
# recs (module), not a publishable OIML Recommendation (rec — this is
|
|
20
|
+
# fictional teaching content), not a manufacturer's product model
|
|
21
|
+
# (product_reference), not a scheme operator's program
|
|
22
|
+
# (certification_program).
|
|
23
|
+
#
|
|
24
|
+
# Authored-native: PRL is the only source form. The SSOT guard excludes
|
|
25
|
+
# the package by name (browser/scripts/ssot-guard.ts AUTHORED_NATIVE);
|
|
26
|
+
# its drift guard is `primmel check` (the from-packages proof lints every
|
|
27
|
+
# package under primmel-packages/ dynamically). It is never generated
|
|
28
|
+
# into the data trees (regenerate-data discovers trees from data/, and
|
|
29
|
+
# no data tree references this package).
|
|
30
|
+
# ─────────────────────────────────────────────────────────────────────
|
|
31
|
+
package {
|
|
32
|
+
id qms-ref
|
|
33
|
+
title "Toy QMS reference model (fictional — teaching model for the view/lens calculus)"
|
|
34
|
+
version "2026"
|
|
35
|
+
editions { 2026 }
|
|
36
|
+
default_spelling eng-Latn
|
|
37
|
+
description "A tiny FICTIONAL quality-management-system reference tree (no ISO 9001 content): one serial parent and one gateway parent with two children each — just enough structure for the coverage calculus to aggregate, apply the gateway minimum, and propose closure. The reference end of the ims-demo ⇒ qms-ref lens (TODO.v2/02, view-lens-design.md Q4)."
|
|
38
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# ─────────────────────────────────────────────────────────────────────
|
|
2
|
+
# Quarry belt scale — the operations model + the usage mapping
|
|
3
|
+
# (TODO.roadmap/36; doctrine ch. 15 §15.3–§15.4).
|
|
4
|
+
#
|
|
5
|
+
# The user's own model: the belt-scale subject with its design
|
|
6
|
+
# parameters (quantity literals as qualifier strings, the same
|
|
7
|
+
# convention the product package declares — the design-time validation
|
|
8
|
+
# vocabulary), the design-review requirement, the batch process, and the
|
|
9
|
+
# compliance monitor. Then the `acme-lc500#…` aliases of the consumed
|
|
10
|
+
# product aspects and the map_profile that makes the import a mapping:
|
|
11
|
+
# the quarry's usage mapped to the product's promised aspects.
|
|
12
|
+
#
|
|
13
|
+
# Four aspects are consumed:
|
|
14
|
+
# mpe_within — the certified accuracy envelope (chain-complete:
|
|
15
|
+
# the product maps it to R 60 class C MPE);
|
|
16
|
+
# e_max — the design-time integration (capacity within
|
|
17
|
+
# E_max; chain-complete via measuring-range-max);
|
|
18
|
+
# fault_annunciation — the state gate (no batch while the cell reports
|
|
19
|
+
# fault; chain-complete via no-significant-faults);
|
|
20
|
+
# indication — the live register feed (operational data, NOT an
|
|
21
|
+
# R 60 compliance claim: the product maps it to the
|
|
22
|
+
# twin-fidelity program (Phase 1.1), so the chain
|
|
23
|
+
# rule flows compliance to
|
|
24
|
+
# twin-fidelity/indication-band through it).
|
|
25
|
+
# ─────────────────────────────────────────────────────────────────────
|
|
26
|
+
|
|
27
|
+
quantity_register si {
|
|
28
|
+
kind mass { dimensions { M 1 } si_unit kg description "Mass." }
|
|
29
|
+
unit kg { symbol "kg" label "kilogram" kind mass factor 1 }
|
|
30
|
+
kind dimensionless { si_unit "1" }
|
|
31
|
+
unit dimensionless { label "dimensionless" kind dimensionless }
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
subject QuarryBeltScale {
|
|
35
|
+
is {
|
|
36
|
+
metadata {
|
|
37
|
+
name "Quarry belt-scale installation no. 3"
|
|
38
|
+
integrator "Quarry Aggregates Ltd — plant engineering"
|
|
39
|
+
}
|
|
40
|
+
design_parameters {
|
|
41
|
+
capacity : "400 kg"
|
|
42
|
+
}
|
|
43
|
+
promises {
|
|
44
|
+
capacity_within_emax {
|
|
45
|
+
target capacity_hold
|
|
46
|
+
level range { min 0 max 500 unit kg }
|
|
47
|
+
statement "The installation's rated capacity stays within the cell's E_max envelope — designed against the as-certified reference content of the pinned abstract import (edition 2021)."
|
|
48
|
+
verified_by { /req/ops/design-review }
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
has {
|
|
53
|
+
attributes {
|
|
54
|
+
throughput : mass test_dependent
|
|
55
|
+
tare : mass test_dependent
|
|
56
|
+
}
|
|
57
|
+
characteristics {
|
|
58
|
+
capacity_hold c_cap = ocl{self.throughput - self.tare}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
requirement /req/ops/design-review {
|
|
64
|
+
name "Design review against the product reference model"
|
|
65
|
+
statement "The installation is designed against the LC-500's promised envelope: the rated capacity lies within E_max, the batch process runs within the certified accuracy class, and no batch runs while the cell reports fault. Validated at design time over the pinned abstract import."
|
|
66
|
+
verification { method examination description "Design-time review of the installation model against the imported product reference content (doctrine ch. 15 §15.3 mode 1)." }
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
requirement /req/ops/batch-gate {
|
|
70
|
+
name "Batch gate on the twin's operational state"
|
|
71
|
+
statement "No batch runs while the cell reports fault — the twin's operational state (served via watch_state, the product's declared state channel) gates the batch process live (doctrine ch. 15 §15.3 mode 2: twin state gates user processes; the fault_annunciation mapping's runtime half)."
|
|
72
|
+
verification { method examination description "Runtime gate: the compliance monitor judges the served operational state — a batch attempted while the cell serves fault fails the gate (state = fault ⇒ the gate trips), never a silent skip." }
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
process batch_weighing {
|
|
76
|
+
name "Batch weighing"
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
# The consumed product aspects — local alias declarations of the
|
|
80
|
+
# reference elements this model maps to (the C21 alias discipline),
|
|
81
|
+
# cited at the pinned edition, never content-merged.
|
|
82
|
+
process acme-lc500#mpe_within { name "alias: ACME class C6 error promise" }
|
|
83
|
+
process acme-lc500#e_max { name "alias: ACME E_max design parameter (500 kg)" }
|
|
84
|
+
process acme-lc500#fault_annunciation { name "alias: ACME significant-fault promise" }
|
|
85
|
+
process acme-lc500#indication { name "alias: ACME served live indication (get_indication)" }
|
|
86
|
+
|
|
87
|
+
map_profile acme-lc500 {
|
|
88
|
+
description "The quarry's usage mapped to the LC-500's promised aspects — the import is a mapping too, so coverage applies (doctrine ch. 15 §15.3): how much of the product's promised envelope does this installation actually use?"
|
|
89
|
+
mapping {
|
|
90
|
+
batch_weighing -> acme-lc500#mpe_within {
|
|
91
|
+
description "The batch process runs within the cell's certified MPE envelope."
|
|
92
|
+
justification "The operation consumes the as-certified accuracy promise (mode 1); the IA's engine monitors it live (mode 2)."
|
|
93
|
+
}
|
|
94
|
+
capacity_within_emax -> acme-lc500#e_max {
|
|
95
|
+
description "The scale's capacity is within the cell's E_max."
|
|
96
|
+
justification "Design-time integration against the promised envelope — the §15.3 example, validated numerically by the product-coverage gate."
|
|
97
|
+
}
|
|
98
|
+
batch_weighing -> acme-lc500#fault_annunciation {
|
|
99
|
+
description "No batch runs while the cell reports fault."
|
|
100
|
+
justification "The twin's operational state gates the user's process (mode 2 — watch_state drives the batch gate)."
|
|
101
|
+
}
|
|
102
|
+
batch_weighing -> acme-lc500#indication {
|
|
103
|
+
description "The batch throughput reads the cell's live indication from the endpoint."
|
|
104
|
+
justification "Served aspects feed user registers (mode 2 — get_indication per batch); operational data, not a compliance claim."
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
monitor batch_watch {
|
|
110
|
+
over { QuarryBeltScale }
|
|
111
|
+
triggers { every 1h on signal batch_complete }
|
|
112
|
+
evaluate { requirements { /req/ops/design-review } promises all }
|
|
113
|
+
emit { evidence -> workspace verdicts -> verdict_log }
|
|
114
|
+
escalate { on fail { flag_certificate open_service_case } on invalid { open_service_case } }
|
|
115
|
+
}
|