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