# Vercy AI instruction - YAML 1.2 (JSON-compatible) { "vercy": "1.0-draft", "publication": { "status": "published", "adjudicationStatus": "reviewable-draft", "publishableCanonical": false, "generatedAt": "2026-09-02T22:10:41Z", "synthesisSha256": "2f46b3ad2c9e973a5133d35efccbee4c1bbc7891bc5528df5d5dadb4dfb1f0fa", "providerMode": "single-provider-waiver", "providers": [ "Claude" ], "waivedProviders": [ "Grok" ] }, "metaModel": { "id": "WM-MAT-008", "registryId": "vr.wm-mat-008", "name": "Observation / Measurement Record", "version": "0.3.0-research.1", "previousVersions": [], "entryKind": "event", "family": "World Models", "category": "Physical world and living systems", "industry": [ "Cross-industry" ], "domain": [ "PHY.MAT.OBS" ], "tags": [ "observation", "measurement", "record", "phy.mat.obs" ], "status": "published" }, "canonicalUrl": "https://ver.cy/models/wm-mat-008-observation-measurement-record/", "sourceUrl": "https://github.com/ver-cy/world-models/tree/feat/mega-model-registry/research/runs/wm-mat-008", "model": { "registry_id": "vr.wm-mat-008", "model_id": "WM-MAT-008", "name": "Observation / Measurement Record", "entry_kind": "event", "purpose": "Provide a format-neutral context structure for a single observation act and the measurement record it produces, binding a feature of interest, an observable property, an observing procedure, a result value and its unit, together with time, uncertainty, quality, provenance and governance context, so that an AI agent can create, inspect, validate and operate observation records without owning the lifecycles of the sensors, samples, methods or catalogues it references.", "scope_statement": "The subject is the observation event and its resulting record: the act of determining a value for an observable property of a feature of interest by applying an observing procedure, plus everything needed to interpret, trust, correlate and retire that single record. OMS/ISO 19156 and SOSA/SSN both model an Observation as an execution (an act), so this model is an event, not the sensor, the sample, the property definition or the dataset. It carries references, bindings and observation-specific parameters for those neighbours; it does not reproduce their identity, lifecycle or operational machinery. Storage and interface (JSON, XML, RDF, Markdown, Git, MCP, MongoDB, relational LIMS tables) are projections of this semantics, never part of it.", "in_scope": [ "Identity, versioning and classification of one observation record and of the observation act it documents", "Binding to exactly one observable property and one observing procedure, and to the observer, host and deployment that executed it, by reference", "Proximate and ultimate feature of interest, and the reference to the sample or sampling chain when observation is indirect", "Result representation: value, datatype, cardinality, complex or coverage payloads, and the unit of measure or quantity-kind binding", "Absent, censored, below-detection-limit, out-of-range and non-numeric results, with the reason they are absent or bounded", "Measurement uncertainty statements (standard, expanded, coverage factor and coverage probability) recorded against the result", "References to metrological traceability chains and calibration evidence held by other models", "Reference ranges, interpretation codes and recorded statements of conformity together with the identifier of the decision rule applied", "Temporal frame: phenomenon time, result time, valid time and ingestion or observation-capture time, each with explicit offsets", "Aggregation duration, interpolation type, cumulative flags and sampling regime that determine how the value may be resampled", "Observation geometry, observed area and the environmental or operating conditions in force during the act", "Record lifecycle status, amendment, correction, supersession and retraction semantics for this record only", "Recorded quality flags and quality-control outcomes produced elsewhere, plus references to the evidence supporting them", "Provenance chain, derivation from prior observations, responsible agents, ownership and attribution", "Access classification, retention binding, and identifier resolution and cross-system correlation", "Alignment declarations and encoding bindings to external observation standards, and membership in collections, datastreams or series" ], "out_of_scope": [ "The sensor, instrument or observing system as a managed asset, including its own registration, maintenance, firmware and decommissioning lifecycle", "Calibration and traceability records as governed documents: this model references a calibration certificate but does not issue, renew, revoke or verify one", "The sample or specimen as an entity, including collection, preparation, custody transfer, storage and disposal lifecycle", "Definition and governance of observable properties, quantity kinds and controlled vocabularies, including term proposal, deprecation and mapping maintenance", "Unit-of-measure registry maintenance, unit conversion tables and dimensional-analysis services", "The observing procedure or test method as a controlled specification, including method development, validation studies and version approval", "Execution of quality-control tests, rule evaluation, thresholding or automated flagging: this model records the outcome and its provenance, never the evaluator", "Audit-trail capture, tamper-evidence infrastructure and electronic-signature enforcement, which belong to the electronic-records model", "Physical execution of deletion, purge or anonymisation; this model records the disposition decision and its policy binding only", "Dataset catalogue publication, licensing negotiation, DOI minting and distribution management for collections of observations", "Downstream analytics, model assimilation, forecasting and statistical inference beyond recording that a result was derived", "Sensor tasking, actuation and control commands", "Laboratory quality-management-system scope, accreditation status and personnel competence records", "Transport-level streaming guarantees, message ordering, delivery semantics and API pagination" ], "boundary_notes": [ { "neighbor": "Sample / Specimen Record", "distinction": "OMS and SOSA separate the Sample (a feature used to represent another feature) from the Observation (the act). This model carries the reference from the observation to its proximate feature of interest and, where that is a sample, to the sample identifier and the ultimate feature it stands for. Sample identity, sampling act, preparation steps, sub-sampling relationships and custody remain owned by the sample model.", "source_refs": [ "SRC-001", "SRC-002", "SRC-003" ] }, { "neighbor": "Observable Property / Quantity Kind Registry", "distinction": "OMS requires an observation to name exactly one ObservableProperty, and QUDT separates QuantityKind from Unit. This model holds the reference and any observation-specific constraint or qualifier on the measurand; it does not define the property term, its dimension, its synonyms or its deprecation policy.", "source_refs": [ "SRC-002", "SRC-003", "SRC-010" ] }, { "neighbor": "Unit of Measure Registry (UCUM / SI / QUDT)", "distinction": "UCUM and QUDT are governed unit code systems. This model records which code system and code express the result, and any observation-level scaling; it never redefines units, conversion multipliers or dimensional vectors, and it must not silently convert values.", "source_refs": [ "SRC-008", "SRC-009", "SRC-010" ] }, { "neighbor": "Observing Procedure / Test Method Specification", "distinction": "SOSA defines Procedure as a workflow, protocol, plan, algorithm or computational method, and OMS makes the ObservingProcedure a first-class feature. This model records which procedure version was executed and the execution-specific parameters; method authoring, validation and approval belong to the method model.", "source_refs": [ "SRC-002", "SRC-003" ] }, { "neighbor": "Observer / Instrument Asset and Deployment", "distinction": "OMS models Observer, Host and Deployment (with deploymentReason and deploymentTime) as separate features. This model references the observer and the deployment in force at the time of the act; asset lifecycle, platform management and deployment scheduling stay outside.", "source_refs": [ "SRC-002", "SRC-003" ] }, { "neighbor": "Metrological Traceability / Calibration Certificate", "distinction": "VIM defines metrological traceability as a documented unbroken chain of calibrations. This model records the traceability declaration and pointers to the calibration evidence in force; it does not model the calibration act, the reference standard hierarchy or accreditation validity.", "source_refs": [ "SRC-008", "SRC-012" ] }, { "neighbor": "Quality-Control Procedure and Evaluation Service", "distinction": "QARTOD publishes QC test procedures and flag conventions; SensorThings exposes resultQuality as a recorded property. This model stores the resulting flag, the identifier of the test and the identifier of the evaluating agent. Rule authoring, threshold configuration, execution and re-evaluation are owned by the quality-control model and never by this one.", "source_refs": [ "SRC-004", "SRC-015" ] }, { "neighbor": "Electronic Records / Audit Trail", "distinction": "MHRA GxP data-integrity expectations place audit trail, tamper-evidence and signature control on the records system. This model requires that a record be linkable to its audit entries and preserves the original acquisition record as an artifact, but it does not define, generate, secure or query the audit trail itself.", "source_refs": [ "SRC-013" ] }, { "neighbor": "Dataset / Catalogue Publication (DCAT)", "distinction": "DCAT governs Dataset, DatasetSeries, Distribution and DataService, with licensing, access rights and versioning at dataset level. This model records membership pointers from an observation to the collection, datastream or series that contains it; catalogue-level metadata, distribution management and publication workflow stay in the catalogue model.", "source_refs": [ "SRC-014" ] }, { "neighbor": "Time Series / Observation Collection Aggregate", "distinction": "SensorThings binds unitOfMeasurement and observationType at Datastream level, and the OGC Timeseries Profile defines series-level defaults such as interpolationType. Series-level defaults are referenced here so a single record remains interpretable in isolation, but the series aggregate owns its own identity, extent, default resolution and completeness accounting.", "source_refs": [ "SRC-004", "SRC-005" ] }, { "neighbor": "Retention and Disposition Policy", "distinction": "This model records which retention policy applies, the disposition decision and the tombstone it leaves behind. Policy authoring, legal-hold determination and the physical execution of destruction are owned by the adopting Dimension's records policy.", "source_refs": [ "SRC-013", "SRC-014" ] } ] }, "sources": [ { "id": "SRC-001", "title": "Observations, Measurements, and Samples (OMS)", "organization": "Open Geospatial Consortium", "url": "https://www.ogc.org/standards/om/", "version_or_date": "OMS version 3.0, OGC Abstract Specification Topic 20 (OGC 20-082r4), published jointly as ISO 19156:2023", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Defines the normative conceptual schema for observations, for the features involved in the observation process and for sampling features, including sample typing by spatial, material and statistical nature and relationships between samples. Anchors the scope and top-level structure of this model." }, { "id": "SRC-002", "title": "OMS Abstract Specification feature catalogue input (opengeospatial/om-swg)", "organization": "Open Geospatial Consortium (OMS Standards Working Group)", "url": "https://raw.githubusercontent.com/opengeospatial/om-swg/master/oms-abstract-spec/work/shapechange/results/ogc/oms/featurecatalogue/INPUT/oms.md", "version_or_date": "Working feature catalogue, draft status, dated 2021-08-20 in the document header", "source_type": "schema", "primary_source": true, "authority_tier": 2, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Working OGC material listing the OMS classes and their properties: Observation (phenomenonTime, resultTime, validTime, resultQuality, parameter, observedProperty, observer, observingProcedure, proximate and ultimate featureOfInterest, result, relatedObservation), ObservableProperty, Observer, ObservingProcedure, Deployment (deploymentReason, deploymentTime, host), Sample (sampleType, sampledFeature, sampling, preparationStep, relatedSample) and Host. Explicitly working-draft; multiplicities must be re-verified against the published standard." }, { "id": "SRC-003", "title": "Semantic Sensor Network Ontology (SOSA/SSN), 2023 Edition", "organization": "W3C / Open Geospatial Consortium", "url": "https://www.w3.org/TR/vocab-ssn-2023/", "version_or_date": "2023 Edition; namespace http://www.w3.org/ns/sosa/, version IRI http://www.w3.org/ns/sosa/2023/; document state as retrieved 2026-09-03", "source_type": "ontology", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Provides the lightweight core vocabulary for Observation, Sample, Sampling, Sampler, FeatureOfInterest, ObservableProperty, Procedure, Platform, System and Deployment, with hasResult, hasSimpleResult, resultTime, phenomenonTime, madeBySensor, usedProcedure, isSampleOf and hasUltimateFeatureOfInterest, plus the system-capability and operating-conditions module used for context of applicability." }, { "id": "SRC-004", "title": "OGC SensorThings API Part 1: Sensing, Version 1.1 (OGC 18-088)", "organization": "Open Geospatial Consortium", "url": "https://docs.ogc.org/is/18-088/18-088.html", "version_or_date": "Version 1.1, published 2021-08-04", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Concrete normative realisation of the observation model with Thing, Location, HistoricalLocation, Datastream, Sensor, ObservedProperty, Observation and FeatureOfInterest. Supplies Observation properties phenomenonTime, result, resultTime, resultQuality, validTime and parameters, and the Datastream-level unitOfMeasurement, observationType and observedArea used to justify series-level versus record-level binding." }, { "id": "SRC-005", "title": "OGC Timeseries Profile of Observations and Measurements (OGC 15-043r3)", "organization": "Open Geospatial Consortium", "url": "https://docs.ogc.org/is/15-043r3/15-043r3.html", "version_or_date": "Version 1.0, published 2016-09-09", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Establishes that correct machine interpretation of a value requires interpolation type, point versus interval or accumulation semantics, aggregation duration, cumulative flags, qualifiers, censored reason and nil-reason handling, plus series-level defaults. Grounds the aggregation, interpolation and censoring findings." }, { "id": "SRC-006", "title": "PROV-O: The PROV Ontology", "organization": "W3C", "url": "https://www.w3.org/TR/prov-o/", "version_or_date": "W3C Recommendation, 30 April 2013; namespace http://www.w3.org/ns/prov#", "source_type": "ontology", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Supplies the provenance vocabulary used as an alignment: Entity, Activity and Agent with wasGeneratedBy, used, wasDerivedFrom, wasAttributedTo, wasAssociatedWith, actedOnBehalfOf, startedAtTime and endedAtTime, plus the qualified pattern (Generation, Derivation, Attribution, Association, Usage) for recording responsibility and derivation of an observation." }, { "id": "SRC-007", "title": "RFC 3339: Date and Time on the Internet: Timestamps", "organization": "Internet Engineering Task Force", "url": "https://www.rfc-editor.org/rfc/rfc3339", "version_or_date": "July 2002, Proposed Standard (updated by RFC 9557)", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Normative timestamp profile requiring an explicit stated offset to UTC (Z or numeric offset), defining seconds and optional fractional seconds, the -00:00 convention for an unknown local offset, leap-second handling and the conditions under which timestamps sort as strings. Governs every temporal value in this model." }, { "id": "SRC-008", "title": "JCGM Publications: Guides in Metrology (JCGM 100:2008 GUM; JCGM 200:2012 VIM; JCGM 106:2012; JCGM GUM-6:2020)", "organization": "Bureau International des Poids et Mesures / Joint Committee for Guides in Metrology", "url": "https://www.bipm.org/en/committees/jc/jcgm/publications", "version_or_date": "JCGM 100:2008 (with Amd.1:2026), JCGM 101:2008, JCGM 102:2011, JCGM 106:2012, JCGM 200:2012, JCGM GUM-1:2023, JCGM GUM-6:2020; publications page as retrieved 2026-09-03", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Authoritative vocabulary and method for measurand, measurement result, measured quantity value, standard and expanded measurement uncertainty, coverage interval and coverage probability, metrological traceability, calibration, measurement procedure, influence quantity, detection limit, trueness and precision, and for the role of measurement uncertainty in conformity assessment." }, { "id": "SRC-009", "title": "The Unified Code for Units of Measure (UCUM) Specification", "organization": "Regenstrief Institute, Inc. and the UCUM Organization", "url": "https://ucum.org/ucum", "version_or_date": "Version 2.2, released 17 June 2024", "source_type": "standard", "primary_source": true, "authority_tier": 2, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Machine-oriented unit code system built for electronic data interchange, with case-sensitive and case-insensitive symbol forms over 7-bit US-ASCII and compound expressions with multiplication and division operators. Used as the default unit-code binding and as evidence that a unit binding must name its code system." }, { "id": "SRC-010", "title": "QUDT Ontologies (Quantities, Units, Dimensions and Data Types)", "organization": "QUDT.org", "url": "https://www.qudt.org/", "version_or_date": "Release 2.1; site last updated 1 March 2022", "source_type": "ontology", "primary_source": true, "authority_tier": 3, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Separates QuantityKind, Unit, Quantity, QuantityValue, Dimension Vector and System of Units, with conversion multipliers and offsets and applicable-unit relations. Justifies modelling quantity kind and unit as two distinct bindings rather than a single free-text unit string." }, { "id": "SRC-011", "title": "HL7 FHIR Observation resource", "organization": "Health Level Seven International", "url": "https://hl7.org/fhir/observation.html", "version_or_date": "FHIR Release 5 (v5.0.0)", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "An independent, widely deployed observation model used as an alignment and counterexample source: identifier, status (registered, preliminary, final, amended), category, code (1..1), subject, focus, effective[x], issued, performer, value[x], dataAbsentReason, interpretation, method, specimen, device, referenceRange, hasMember, derivedFrom and component. Grounds record status, absent-reason, interpretation, composite results and member relationships." }, { "id": "SRC-012", "title": "ILAC Guidance Series (ILAC-G8:09/2019 Guidelines on Decision Rules and Statements of Conformity; ILAC-G17:01/2021 ILAC Guidelines for Measurement Uncertainty in Testing)", "organization": "International Laboratory Accreditation Cooperation", "url": "https://ilac.org/publications-and-resources/ilac-guidance-series/", "version_or_date": "ILAC-G8 September 2019; ILAC-G17 January 2021", "source_type": "public-authority", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Normative accreditation guidance requiring that a statement of conformity identify the results it applies to, the specification met or not met, and the decision rule applied, and requiring documented evaluation and reporting of measurement uncertainty under ISO/IEC 17025:2017. Grounds the conformity and uncertainty findings." }, { "id": "SRC-013", "title": "'GXP' Data Integrity Guidance and Definitions", "organization": "Medicines and Healthcare products Regulatory Agency (UK)", "url": "https://www.gov.uk/government/publications/guidance-on-gxp-data-integrity", "version_or_date": "Published 9 March 2018; last updated 27 September 2021; notes that the OECD Advisory Document on Data Integrity (September 2021) takes precedence for GLP facilities", "source_type": "public-authority", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Regulator statement of data-integrity expectations across the regulated lifecycle, covering original records and true copies, contemporaneous capture, audit trail, and retention and archiving. Grounds the original-acquisition-record artifact, the amendment rules and the retention and disposition finding, while leaving audit-trail machinery to the records system." }, { "id": "SRC-014", "title": "Data Catalog Vocabulary (DCAT) - Version 3", "organization": "W3C", "url": "https://www.w3.org/TR/vocab-dcat-3/", "version_or_date": "W3C Recommendation, 22 August 2024", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Defines Dataset, DatasetSeries, Distribution and DataService with temporal and spatial coverage, prov:wasGeneratedBy, dcat:qualifiedRelation, versioning (hasVersion, previousVersion), dcterms:accessRights, license and identifier. Used to place catalogue-level publication, licensing and versioning outside this model while retaining membership and access-rights references." }, { "id": "SRC-015", "title": "QARTOD - Quality Assurance / Quality Control of Real Time Oceanographic Data", "organization": "NOAA U.S. Integrated Ocean Observing System (IOOS)", "url": "https://ioos.noaa.gov/project/qartod/", "version_or_date": "Programme active since 2003; Manual for Oceanographic Data Quality Control Flags version 1.2 final; manuals for 14 core variables described as living documents", "source_type": "public-authority", "primary_source": true, "authority_tier": 2, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "Public-authority evidence that quality flags are a distinct, documented, test-driven layer over a value: primary flags (pass, not evaluated, suspect, fail, missing), separate real-time and delayed-mode regimes, and per-variable test manuals. Grounds the quality-flag finding and the separation of flag recording from flag evaluation." }, { "id": "SRC-016", "title": "WIGOS Metadata Guidelines for Data Providers (wmo-im/et-acdm wiki, referencing WMO-No. 1192 and schemas.wmo.int/wmdr)", "organization": "World Meteorological Organization (Expert Team on Metadata, Information Management)", "url": "https://github.com/wmo-im/et-acdm/wiki/wigos-metadata-guidelines-for-data-providers", "version_or_date": "WMO-No. 1192 WIGOS Metadata Standard cited as the published standard; wiki page as retrieved 2026-09-03", "source_type": "first-party-doc", "primary_source": false, "authority_tier": 2, "accessed_at": "2026-09-03T09:00:00Z", "relevance": "First-party WMO working guidance confirming that observational metadata is organised into categories covering station and facility characteristics, deployments and instruments with begin and end dates, data quality and processing, ownership and data policy, and contacts, and that different organisations are the authoritative source for different categories. Used for the ownership, environment and data-policy findings; the standard text itself was not read and this is recorded as an evidence gap." } ], "structure": { "bundles": [ { "id": "observation-act-and-identity", "name": "Observation Act and Identity", "description": "Establishes what one observation record is: how it is identified and versioned, how it is classified, and how it binds to the procedure execution and the executing observer that produced it.", "rationale": "OMS and SOSA both define an Observation as the execution of an observing procedure, not as a value. Any agent operating on such records must first resolve identity, kind and the act itself before it can interpret anything else; SensorThings and FHIR both make identity and a typed classification mandatory entry points.", "source_refs": [ "SRC-001", "SRC-002", "SRC-003", "SRC-004", "SRC-011" ], "layers": [ { "id": "record-identity-and-kind", "name": "Record Identity and Kind", "description": "Identity, versioning and classification of the observation record and of the act it documents.", "source_refs": [ "SRC-002", "SRC-004", "SRC-011", "SRC-014" ], "findings": [ { "id": "observation-identity-and-version", "name": "Observation record identity and version identity", "description": "How a single observation record is uniquely and stably identified, how the identity of the record is distinguished from the identity of the observation act, and how successive versions of the same record are identified without colliding with new observations.", "source_refs": [ "SRC-004", "SRC-011", "SRC-013", "SRC-014" ], "questions": [ { "id": "obs-id-authoritative", "text": "Which system is the master system of record for this observation, and what identifier does it issue?", "kind": "identity", "answer_data": [ "Master system identifier value", "Issuing system identifier and its role (LIMS, SCADA historian, observing service, clinical system)", "Identifier scheme or namespace name", "Whether the identifier is guaranteed stable across export and re-import" ] }, { "id": "obs-id-act-vs-record", "text": "Is this identifier for the observation act or for the record that documents it, and how are the two related when one act yields several records?", "kind": "identity", "answer_data": [ "Act identifier (if separately assigned)", "Record identifier", "Relationship statement between act and record", "Count of records documenting the same act" ] }, { "id": "obs-id-versioning", "text": "How is a corrected or reprocessed version of this record identified relative to its predecessor?", "kind": "provenance", "answer_data": [ "Version identifier or sequence", "Predecessor record reference", "Whether the base identifier is retained across versions", "Rule stating that a new version never reuses a superseded version identifier" ] }, { "id": "obs-id-surrogate", "text": "If no authoritative or governed identifier exists, what surrogate is minted and how is that fact recorded?", "kind": "authority", "answer_data": [ "Surrogate identifier (UUID or ULID)", "Minting authority within the adopting Dimension", "Flag marking the identifier as surrogate", "Migration rule for when an authoritative identifier later appears" ] } ], "data_elements": [ { "id": "de-observation-identifier", "name": "observationIdentifier", "description": "Primary identifier of the observation record, resolved under the model identity priority.", "value_kind": "identifier", "cardinality": "1", "required": true, "source_refs": [ "SRC-004", "SRC-011" ] }, { "id": "de-identifier-scheme", "name": "identifierScheme", "description": "Name or IRI of the scheme, namespace or issuing authority that governs the primary identifier.", "value_kind": "identifier", "cardinality": "1", "required": true, "source_refs": [ "SRC-014" ] }, { "id": "de-alternate-identifier", "name": "alternateIdentifier", "description": "Business or legacy identifiers carried alongside the primary identifier, each qualified by its scheme.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-011", "SRC-014" ] }, { "id": "de-record-version", "name": "recordVersion", "description": "Version designator of this record, monotonic within the base identifier.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-013", "SRC-014" ] } ], "artifacts": [], "inline_only_rationale": "Identity is pure reference data: a set of identifier values, their schemes and their version relations. It has no rendered or stored form of its own, and materialising it as a document would create a second, competing source of truth against the master system that issues the identifier." }, { "id": "observation-classification", "name": "Observation kind and result-type classification", "description": "How an observation is typed so that an agent can predict the shape of the result and the applicable interpretation rules: the observation type or result type, the domain category, and whether the observation is direct, derived, simulated or estimated.", "source_refs": [ "SRC-002", "SRC-004", "SRC-011" ], "questions": [ { "id": "obs-class-result-type", "text": "What result type does this observation declare, and does the declared type match the actual result payload?", "kind": "classification", "answer_data": [ "Observation or result type code (measure, count, category, truth, complex, coverage, timeseries)", "Code list identifier", "Payload conformance verdict" ] }, { "id": "obs-class-category", "text": "Under which domain category or programme is this observation classified for discovery and rule selection?", "kind": "classification", "answer_data": [ "Domain category code", "Governing code list or vocabulary", "Programme, network or study reference" ] }, { "id": "obs-class-derivation-mode", "text": "Was the value obtained by direct determination, by derivation from other observations, by simulation or by expert estimation?", "kind": "definition", "answer_data": [ "Determination mode code", "Reference to source observations where derived", "Justification note for estimated or simulated values" ] }, { "id": "obs-class-profile", "text": "Which observation profile or requirements class does this record claim to satisfy?", "kind": "interoperability", "answer_data": [ "Profile identifier and version", "Requirements class references", "Whether conformance was tested or only asserted" ] } ], "data_elements": [ { "id": "de-observation-type", "name": "observationType", "description": "Code declaring the type of the result, controlling how the result payload is interpreted.", "value_kind": "code", "cardinality": "1", "required": true, "source_refs": [ "SRC-004" ] }, { "id": "de-domain-category", "name": "domainCategory", "description": "Domain or programme classification of the observation, drawn from a named vocabulary.", "value_kind": "code", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-011" ] }, { "id": "de-determination-mode", "name": "determinationMode", "description": "Whether the value was directly determined, derived, simulated or estimated.", "value_kind": "code", "cardinality": "1", "required": true, "source_refs": [ "SRC-002", "SRC-011" ] }, { "id": "de-claimed-profile", "name": "claimedProfile", "description": "Identifier and version of the observation profile the record asserts conformance to, with an explicit tested-or-asserted marker.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-001", "SRC-004" ] } ], "artifacts": [], "inline_only_rationale": "Classification consists of coded values drawn from external vocabularies plus a profile reference. The code lists themselves are owned by vocabulary and profile registries, so this finding carries codes and references only and produces no artifact of its own." } ] }, { "id": "act-and-procedure-execution", "name": "Act and Procedure Execution", "description": "The binding between the observation record and the procedure, observer, host and deployment that executed it, together with the execution-specific parameters in force.", "source_refs": [ "SRC-002", "SRC-003", "SRC-004", "SRC-005" ], "findings": [ { "id": "procedure-and-observer-binding", "name": "Procedure, observer, host and deployment binding", "description": "How the record names the observing procedure that was executed, the observer or system that executed it, the host or platform carrying that observer, and the deployment in force at the time, each by reference to the model that owns it.", "source_refs": [ "SRC-002", "SRC-003", "SRC-004" ], "questions": [ { "id": "proc-bind-which-procedure", "text": "Which observing procedure, at which version, was executed to produce this result?", "kind": "relationship", "answer_data": [ "Procedure reference and version identifier", "Procedure model or registry that owns the reference", "Whether the executed version is still current" ] }, { "id": "proc-bind-observer", "text": "Which observer, sensor, analyst or computational system carried out the procedure?", "kind": "relationship", "answer_data": [ "Observer reference", "Observer kind (instrument, human, algorithm, hybrid)", "Reference to the asset model entry, if any" ] }, { "id": "proc-bind-deployment", "text": "Which deployment of that observer onto which host was in force when the act occurred?", "kind": "composition", "answer_data": [ "Deployment reference", "Host or platform reference", "Deployment time interval covering the act", "Deployment reason recorded by the owning model" ] }, { "id": "proc-bind-deviation", "text": "Were there documented deviations from the procedure during this execution, and where is the deviation record held?", "kind": "exception", "answer_data": [ "Deviation indicator", "Deviation description or code", "Reference to the deviation or nonconformance record", "Impact statement on result validity" ] } ], "data_elements": [ { "id": "de-procedure-reference", "name": "observingProcedureRef", "description": "Reference to the procedure specification and version executed for this observation.", "value_kind": "reference", "cardinality": "1", "required": true, "source_refs": [ "SRC-002", "SRC-003" ] }, { "id": "de-observer-reference", "name": "observerRef", "description": "Reference to the observer, sensor, analyst or computational system that executed the procedure.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002", "SRC-003" ] }, { "id": "de-deployment-reference", "name": "deploymentRef", "description": "Reference to the deployment of the observer on a host that was in force at the time of the act.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002" ] }, { "id": "de-procedure-deviation", "name": "procedureDeviation", "description": "Recorded deviation from the procedure during this execution, with a pointer to the owning deviation record.", "value_kind": "object", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-013" ] } ], "artifacts": [], "inline_only_rationale": "Every element here is an outbound reference to a procedure, asset or deviation record owned by a sibling model. Reproducing those objects locally would duplicate their lifecycles; the record therefore stores only the reference, the version pinned at execution time and the deviation pointer." }, { "id": "observation-parameters", "name": "Observation parameters and influence quantities", "description": "Named execution parameters and influence quantities that qualify the observation but are neither the measurand nor the result: settings, conditions applied, dilution or scaling factors, and any parameter needed to make the result reproducible.", "source_refs": [ "SRC-002", "SRC-004", "SRC-005", "SRC-008" ], "questions": [ { "id": "param-which-named-values", "text": "Which named parameters qualify this observation, and what value and unit does each carry?", "kind": "measurement", "answer_data": [ "Parameter name and defining vocabulary reference", "Parameter value", "Parameter unit code and code system", "Whether the parameter is mandatory for the declared procedure" ] }, { "id": "param-influence-quantities", "text": "Which influence quantities were recorded or controlled because they affect the measured value?", "kind": "constraint", "answer_data": [ "Influence quantity name", "Recorded or nominal value", "Whether it was measured, controlled or assumed", "Reference to the correction applied, if any" ] }, { "id": "param-defaults-inheritance", "text": "Which parameters are inherited from the series, datastream or method default rather than stated on this record?", "kind": "composition", "answer_data": [ "Inherited parameter names", "Source of the default (series, datastream, method)", "Effective value after inheritance", "Override indicator" ] } ], "data_elements": [ { "id": "de-observation-parameter", "name": "observationParameter", "description": "Named value qualifying the observation act, each with name, value, optional unit and defining vocabulary reference.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-002", "SRC-004" ] }, { "id": "de-influence-quantity", "name": "influenceQuantity", "description": "Quantity that is not the measurand but affects the relation between indication and result, with its recorded value and control status.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-008" ] }, { "id": "de-parameter-inheritance", "name": "parameterInheritance", "description": "Statement of which effective parameters were inherited from a series or method default and which were overridden on this record.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005" ] } ], "artifacts": [], "inline_only_rationale": "Parameters are name-value-unit triples plus an inheritance statement. They are read and written as structured fields on the record, and the vocabularies that define parameter names belong to the property registry, so no separate artifact is warranted." } ] } ] }, { "id": "subject-and-property-binding", "name": "Subject and Property Binding", "description": "What was observed and on what: the feature of interest chain including any sample that stood in for it, and the observable property and measurand actually determined.", "rationale": "OMS requires an observation to name its feature of interest and exactly one observable property, and distinguishes the proximate feature (often a sample) from the ultimate feature the result is about. Misbinding either makes the result uninterpretable, so these are separated from the result itself.", "source_refs": [ "SRC-001", "SRC-002", "SRC-003", "SRC-008" ], "layers": [ { "id": "feature-of-interest-chain", "name": "Feature of Interest Chain", "description": "The proximate and ultimate features of interest and the sampling chain that connects them.", "source_refs": [ "SRC-001", "SRC-002", "SRC-003", "SRC-011" ], "findings": [ { "id": "proximate-and-ultimate-feature", "name": "Proximate and ultimate feature of interest", "description": "How the record states the feature the result is actually about and, where observation was indirect, the intermediate feature that was directly observed, so that a result taken on a sample is never mistaken for a result taken on the whole.", "source_refs": [ "SRC-001", "SRC-002", "SRC-003" ], "questions": [ { "id": "foi-ultimate", "text": "Which real-world feature is this result ultimately a statement about?", "kind": "relationship", "answer_data": [ "Ultimate feature of interest reference", "Feature type or class", "Owning entity model or registry" ] }, { "id": "foi-proximate", "text": "Which feature was directly observed, and does it differ from the ultimate feature?", "kind": "relationship", "answer_data": [ "Proximate feature of interest reference", "Indicator of whether proximate and ultimate differ", "Kind of stand-in (sample, sampling location, proxy feature)" ] }, { "id": "foi-representativeness", "text": "On what basis is the proximate feature held to represent the ultimate feature, and what limits that representativeness?", "kind": "evidence", "answer_data": [ "Representativeness statement or basis", "Reference to the sampling design or plan", "Known limitations or bias notes" ] }, { "id": "foi-resolution", "text": "How is a feature reference resolved when the referenced feature is renamed, merged or split?", "kind": "interoperability", "answer_data": [ "Resolution rule", "Reference stability class", "Historical alias handling policy owner" ] } ], "data_elements": [ { "id": "de-ultimate-foi", "name": "ultimateFeatureOfInterestRef", "description": "Reference to the feature the observation result is ultimately about.", "value_kind": "reference", "cardinality": "1", "required": true, "source_refs": [ "SRC-002", "SRC-003" ] }, { "id": "de-proximate-foi", "name": "proximateFeatureOfInterestRef", "description": "Reference to the feature that was directly observed, where different from the ultimate feature.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002", "SRC-003" ] }, { "id": "de-representativeness-basis", "name": "representativenessBasis", "description": "Statement of the basis on which the proximate feature represents the ultimate feature, with known limits.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-001" ] } ], "artifacts": [], "inline_only_rationale": "This finding carries two typed references and a short justification statement. Feature entities, their geometry and their naming history are owned by the entity models being referenced, so materialising them here would duplicate another model's records." }, { "id": "sample-linkage", "name": "Sample linkage and sampling-chain reference", "description": "How an observation made on a sample records which sample, where that sample sits in a sub-sampling or derivation chain, and which preparation steps had been applied before the observation, without absorbing the sample lifecycle.", "source_refs": [ "SRC-001", "SRC-002", "SRC-003", "SRC-011" ], "questions": [ { "id": "sample-which", "text": "Which sample or specimen was this observation performed on?", "kind": "relationship", "answer_data": [ "Sample identifier and issuing system", "Sample type classification (spatial, material, statistical)", "Reference to the sample model entry" ] }, { "id": "sample-chain-position", "text": "Where does that sample sit in the sub-sampling or derived-sample chain relative to the originally collected sample?", "kind": "composition", "answer_data": [ "Parent sample reference", "Chain depth or position", "Relationship kind (sub-sample, split, derived, composite)" ] }, { "id": "sample-preparation-state", "text": "Which preparation steps had been applied to the sample at the moment of observation?", "kind": "process", "answer_data": [ "Preparation step references in applied order", "Preparation completion state at observation time", "Owner of the preparation record" ] }, { "id": "sample-integrity-caveat", "text": "Were there sample-condition findings that qualify the validity of this result?", "kind": "quality", "answer_data": [ "Sample condition code (for example haemolysed, degraded, contaminated, out of hold time)", "Reference to the condition record", "Effect on result usability" ] } ], "data_elements": [ { "id": "de-sample-reference", "name": "sampleRef", "description": "Reference to the sample or specimen on which the observation was performed.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002", "SRC-011" ] }, { "id": "de-sample-chain-ref", "name": "samplingChainRef", "description": "Reference to the parent sample and the relationship kind connecting it to the observed sample.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-001", "SRC-002" ] }, { "id": "de-preparation-state", "name": "preparationStateAtObservation", "description": "Ordered references to the preparation steps completed on the sample before this observation.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-002" ] }, { "id": "de-sample-condition-code", "name": "sampleConditionCode", "description": "Coded condition of the sample that qualifies result validity, with a pointer to the owning condition record.", "value_kind": "code", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-011" ] } ], "artifacts": [], "inline_only_rationale": "The sample, its collection act, its preparation steps and its custody are owned by the sample model. This finding exists to pin the exact sample state that applied at observation time, expressed entirely as references and coded qualifiers, so it must not carry sample artifacts." } ] }, { "id": "property-and-measurand", "name": "Observable Property and Measurand", "description": "The property observed and the fully qualified measurand, including the conditions that make the quantity intended to be measured unambiguous.", "source_refs": [ "SRC-002", "SRC-003", "SRC-008", "SRC-010" ], "findings": [ { "id": "observable-property-binding", "name": "Observable property binding", "description": "How the record names exactly one observable property by reference to a governed vocabulary, distinguishes the property from its quantity kind, and handles properties that are only definable relative to a method.", "source_refs": [ "SRC-002", "SRC-003", "SRC-004", "SRC-010" ], "questions": [ { "id": "prop-which-term", "text": "Which observable property term, from which governed vocabulary and version, does this observation determine?", "kind": "identity", "answer_data": [ "Property term identifier or IRI", "Vocabulary name and version", "Human-readable label as published" ] }, { "id": "prop-quantity-kind", "text": "What quantity kind underlies the property, and is it dimensionally consistent with the recorded unit?", "kind": "validation", "answer_data": [ "Quantity kind reference", "Dimension vector or dimensional expression", "Consistency verdict against the recorded unit" ] }, { "id": "prop-method-dependence", "text": "Is this property method-defined such that results from different procedures are not comparable?", "kind": "constraint", "answer_data": [ "Method-dependence flag", "Procedure reference that defines the property", "Comparability caveat statement" ] }, { "id": "prop-nominal-vs-quantity", "text": "Is the observed characteristic a quantity or a nominal property with no magnitude?", "kind": "classification", "answer_data": [ "Quantity or nominal-property indicator", "Code list reference for nominal values", "Consequence for unit and uncertainty requirements" ] } ], "data_elements": [ { "id": "de-observed-property-ref", "name": "observedPropertyRef", "description": "Reference to exactly one governed observable property term determined by this observation.", "value_kind": "reference", "cardinality": "1", "required": true, "source_refs": [ "SRC-002", "SRC-003" ] }, { "id": "de-quantity-kind-ref", "name": "quantityKindRef", "description": "Reference to the quantity kind underlying the property, used for dimensional validation.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-010" ] }, { "id": "de-method-defined-flag", "name": "methodDefinedProperty", "description": "Indicator that the property is defined by its measurement procedure and is not comparable across procedures.", "value_kind": "boolean", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008" ] }, { "id": "de-property-nature", "name": "propertyNature", "description": "Whether the characteristic is a quantity or a nominal property without magnitude.", "value_kind": "code", "cardinality": "1", "required": true, "source_refs": [ "SRC-008" ] } ], "artifacts": [], "inline_only_rationale": "The property term, its label, its dimension and its governance all live in the vocabulary registry. This finding contributes only the pinned reference, the derived quantity-kind link and two discriminating flags, which are structured fields rather than a document." }, { "id": "measurand-specification", "name": "Measurand specification and stated conditions", "description": "The quantity intended to be measured, stated completely enough to be unambiguous: the property, the feature or matrix it is measured in, and the conditions (temperature, pressure, basis, fraction, time base) under which it is defined.", "source_refs": [ "SRC-008", "SRC-002", "SRC-005" ], "questions": [ { "id": "measurand-statement", "text": "What is the complete statement of the quantity intended to be measured, including the conditions that define it?", "kind": "definition", "answer_data": [ "Measurand statement text or structured expression", "Defining conditions with values and units", "Reference to the definition source" ] }, { "id": "measurand-basis", "text": "On what basis is the value expressed (wet or dry, as-received, normalised, per unit mass, volume or area)?", "kind": "measurement", "answer_data": [ "Expression basis code", "Normalisation reference value and unit", "Whether the basis is a series-level default" ] }, { "id": "measurand-definitional-uncertainty", "text": "What definitional uncertainty arises because the measurand is not fully specified, and is it bounded?", "kind": "constraint", "answer_data": [ "Definitional uncertainty statement", "Whether it is included in the reported uncertainty", "Unspecified conditions that remain" ] }, { "id": "measurand-time-base", "text": "Over what time base or integration window is the measurand defined?", "kind": "temporal", "answer_data": [ "Time base or integration duration", "Whether it is instantaneous, averaged or accumulated", "Source of the time-base default" ] } ], "data_elements": [ { "id": "de-measurand-statement", "name": "measurandStatement", "description": "Complete statement of the quantity intended to be measured with its defining conditions.", "value_kind": "text", "cardinality": "1", "required": true, "source_refs": [ "SRC-008" ] }, { "id": "de-expression-basis", "name": "expressionBasis", "description": "Coded basis on which the value is expressed, including any normalisation reference.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008" ] }, { "id": "de-definitional-uncertainty", "name": "definitionalUncertainty", "description": "Uncertainty arising from incomplete specification of the measurand, with an indicator of whether it is included in the reported uncertainty.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008" ] }, { "id": "de-measurand-time-base", "name": "measurandTimeBase", "description": "Integration window or time base over which the measurand is defined.", "value_kind": "duration", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005" ] } ], "artifacts": [], "inline_only_rationale": "The measurand specification is a compact structured statement attached to the record. Where a fuller specification exists it belongs to the method document owned by the procedure model, so this finding deliberately holds the statement and its conditions inline rather than duplicating a method artifact." } ] } ] }, { "id": "result-quantity-and-uncertainty", "name": "Result, Quantity and Uncertainty", "description": "The result itself: its value and datatype, its unit and quantity binding, its absence or censoring, the uncertainty attached to it, the traceability that makes it comparable, and the interpretation or conformity statement drawn from it.", "rationale": "OMS, SensorThings and FHIR all model the result as a typed slot that can hold simple, complex or absent values, while VIM and GUM require a measurement result to consist of a measured value together with information about its uncertainty. Separating value, unit, absence, uncertainty, traceability and interpretation prevents the common failure of storing a bare number.", "source_refs": [ "SRC-002", "SRC-004", "SRC-005", "SRC-008", "SRC-009", "SRC-011", "SRC-012" ], "layers": [ { "id": "result-representation", "name": "Result Representation", "description": "How the result value is represented, dimensioned and qualified when it is missing or bounded.", "source_refs": [ "SRC-002", "SRC-004", "SRC-005", "SRC-009", "SRC-011" ], "findings": [ { "id": "result-value-and-datatype", "name": "Result value, datatype and cardinality", "description": "How the result payload is carried for simple scalars, categorical values, vectors, components, coverages, images and time-series blocks, including how the declared datatype constrains the payload and how multi-component results relate to their parent.", "source_refs": [ "SRC-002", "SRC-004", "SRC-005", "SRC-011" ], "questions": [ { "id": "result-payload-shape", "text": "What is the shape of the result payload, and which datatype governs its parsing?", "kind": "definition", "answer_data": [ "Payload shape (scalar, category, vector, component set, coverage, series block, binary object)", "Datatype identifier and governing scheme", "Encoding declaration for binary or structured payloads" ] }, { "id": "result-components", "text": "If the result has components, what is each component's property, value and unit, and can the parent be interpreted without them?", "kind": "composition", "answer_data": [ "Component list with property reference, value and unit", "Parent-interpretability statement", "Component ordering rule where order is significant" ] }, { "id": "result-precision-representation", "text": "How many significant figures or what resolution does the recorded value carry, and is that a property of the value or of its rendering?", "kind": "measurement", "answer_data": [ "Recorded resolution or significant figures", "Instrument resolution reference", "Statement separating stored precision from display rounding" ] }, { "id": "result-payload-integrity", "text": "For a large or binary result payload, how is the payload bound to the record and its integrity verified?", "kind": "evidence", "answer_data": [ "Payload reference or locator", "Checksum algorithm and digest", "Payload size and media type", "Binding rule preventing payload substitution" ] } ], "data_elements": [ { "id": "de-result-value", "name": "resultValue", "description": "The value determined by the observation, typed according to the declared observation type.", "value_kind": "other", "cardinality": "1", "required": true, "source_refs": [ "SRC-002", "SRC-004" ] }, { "id": "de-result-datatype", "name": "resultDatatype", "description": "Identifier of the datatype governing parsing of the result payload.", "value_kind": "code", "cardinality": "1", "required": true, "source_refs": [ "SRC-004", "SRC-010" ] }, { "id": "de-result-component", "name": "resultComponent", "description": "Component of a composite result, each with its own property reference, value and unit.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-011" ] }, { "id": "de-recorded-resolution", "name": "recordedResolution", "description": "Resolution or number of significant figures actually carried by the stored value, distinct from display rounding.", "value_kind": "quantity", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008" ] } ], "artifacts": [ { "id": "result-payload-object", "name": "Result payload object", "description": "The stored payload of a complex or binary result that cannot be expressed as a scalar field: spectra, chromatograms, waveforms, images, point clouds, coverage grids or serialised time-series blocks. The payload is bound to the observation record by reference and digest, and is treated as read-only once the record leaves draft.", "media_or_form": [ "binary instrument data file", "raster or image file", "point cloud or mesh file", "tabular or columnar series block", "serialised coverage or grid", "waveform or spectrum encoding" ], "serial": true, "identity_strategy": "Identified by the payload locator issued by the storing system, qualified by the parent observation identifier and a zero-based part index where a result is split into ordered parts; a content digest is recorded so that identity can be re-established independently of the locator.", "source_refs": [ "SRC-004", "SRC-005", "SRC-013" ] } ], "inline_only_rationale": null }, { "id": "unit-and-quantity-binding", "name": "Unit of measure and quantity binding", "description": "How the unit of a quantitative result is recorded unambiguously by naming both the code system and the code, how series-level unit defaults are reconciled with record-level values, and why conversion is forbidden without recording it.", "source_refs": [ "SRC-004", "SRC-008", "SRC-009", "SRC-010" ], "questions": [ { "id": "unit-code-and-system", "text": "Which unit code, from which unit code system and version, applies to the recorded value?", "kind": "identity", "answer_data": [ "Unit code string", "Unit code system name and version (for example UCUM, QUDT, SI symbol set)", "Case sensitivity form used where the code system distinguishes forms", "Human-readable unit label" ] }, { "id": "unit-inheritance-conflict", "text": "If the series or datastream declares a unit and this record declares another, which prevails and how is the conflict recorded?", "kind": "exception", "answer_data": [ "Series-level unit declaration", "Record-level unit declaration", "Precedence rule applied", "Conflict flag and note" ] }, { "id": "unit-conversion-provenance", "text": "Was the value converted from the unit in which it was originally determined, and where is that conversion recorded?", "kind": "provenance", "answer_data": [ "Original unit code and value", "Conversion factor and offset applied", "Agent or system performing the conversion", "Rounding applied during conversion" ] }, { "id": "unit-absent-justification", "text": "If no unit is recorded, is the result genuinely dimensionless or non-quantitative, and how is that asserted?", "kind": "validation", "answer_data": [ "Dimensionless or non-quantitative assertion", "Property nature cross-check", "Validation verdict rejecting silently missing units on quantities" ] } ], "data_elements": [ { "id": "de-unit-code", "name": "unitCode", "description": "Unit code applied to the result value.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009" ] }, { "id": "de-unit-code-system", "name": "unitCodeSystem", "description": "Name and version of the unit code system that governs the unit code.", "value_kind": "identifier", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009", "SRC-010" ] }, { "id": "de-unit-source", "name": "unitBindingSource", "description": "Whether the effective unit came from this record or was inherited from a series or datastream declaration, with the precedence rule applied.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-004" ] }, { "id": "de-conversion-record", "name": "unitConversionRecord", "description": "Record of any conversion from the originally determined unit, holding original value, original unit, factor, offset, rounding and responsible agent.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-010" ] } ], "artifacts": [], "inline_only_rationale": "Unit binding is a pair of coded references plus a conversion audit stub. The unit definitions, conversion multipliers and dimensional vectors are owned by the unit registry, and duplicating them locally would risk drift from the governed code system." }, { "id": "absent-and-censored-results", "name": "Absent, censored and bounded results", "description": "How the record expresses that no value exists, that a value is bounded rather than determined (below detection or quantitation limit, above range), or that a value was suppressed, so that absence is never encoded as zero or as an unexplained null.", "source_refs": [ "SRC-005", "SRC-008", "SRC-011" ], "questions": [ { "id": "absent-reason", "text": "If no result value is present, what is the declared reason for its absence?", "kind": "exception", "answer_data": [ "Absence reason code (not performed, not applicable, error, withheld, lost, out of hold time)", "Code list reference", "Free-text explanation where the code is insufficient" ] }, { "id": "censored-bound", "text": "Is the value censored, and if so what is the bound, its direction and the limit that produced it?", "kind": "measurement", "answer_data": [ "Censoring indicator and direction", "Bound value and unit", "Limit kind (detection limit, quantitation limit, instrument range)", "Reference to how the limit was established" ] }, { "id": "censored-downstream-rule", "text": "What rule must a consumer apply when aggregating or comparing a censored value?", "kind": "constraint", "answer_data": [ "Handling rule reference", "Substitution policy if any and its owner", "Prohibition on silent substitution" ] }, { "id": "absent-suppression", "text": "If the value exists but is withheld, what authority withheld it and under what condition may it be released?", "kind": "access", "answer_data": [ "Suppression indicator", "Withholding authority reference", "Release condition or expiry", "Pointer to the access-classification decision" ] } ], "data_elements": [ { "id": "de-data-absent-reason", "name": "dataAbsentReason", "description": "Coded reason a result value is absent from the record.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-011", "SRC-005" ] }, { "id": "de-censoring", "name": "censoring", "description": "Censoring statement holding direction, bound value, unit and the kind of limit that produced the bound.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005", "SRC-008" ] }, { "id": "de-detection-limit-ref", "name": "detectionLimitRef", "description": "Reference to the established detection or quantitation limit applicable to this procedure and matrix.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008" ] }, { "id": "de-suppression-marker", "name": "suppressionMarker", "description": "Marker that an existing value is withheld, with the withholding authority reference and release condition.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-014" ] } ], "artifacts": [], "inline_only_rationale": "Absence and censoring are expressed as coded reasons, bounds and references to limits established by the method model. There is nothing to render or store as a separate object, and creating one would encourage treating a censored value as though it were a determined value." } ] }, { "id": "uncertainty-traceability-and-interpretation", "name": "Uncertainty, Traceability and Interpretation", "description": "What makes the result usable as evidence: its stated uncertainty, its metrological traceability, and any interpretation or conformity statement drawn from it.", "source_refs": [ "SRC-008", "SRC-011", "SRC-012" ], "findings": [ { "id": "uncertainty-statement", "name": "Measurement uncertainty statement", "description": "How the uncertainty associated with the reported value is stated so that it can be used: the kind of uncertainty, its value and unit, the coverage factor and coverage probability where expanded, and the basis on which it was evaluated.", "source_refs": [ "SRC-008", "SRC-012" ], "questions": [ { "id": "unc-kind-and-value", "text": "What kind of uncertainty is reported, with what numeric value and unit?", "kind": "measurement", "answer_data": [ "Uncertainty kind (standard, combined standard, expanded, coverage interval)", "Uncertainty value and unit or relative expression", "Whether it is absolute or relative to the result" ] }, { "id": "unc-coverage", "text": "For an expanded uncertainty, what coverage factor and coverage probability apply?", "kind": "measurement", "answer_data": [ "Coverage factor", "Coverage probability", "Assumed distribution or effective degrees of freedom" ] }, { "id": "unc-evaluation-basis", "text": "On what basis was the uncertainty evaluated, and which uncertainty budget or method does it come from?", "kind": "evidence", "answer_data": [ "Evaluation basis (measurement model, validation data, proficiency testing, control chart)", "Reference to the uncertainty budget owned by the method model", "Whether contributions specific to this observation were added" ] }, { "id": "unc-omission", "text": "If no uncertainty is reported, is that a declared decision and on what ground?", "kind": "authority", "answer_data": [ "Omission declaration", "Ground for omission (not relevant to validity, not required for this result type)", "Authority accepting the omission" ] } ], "data_elements": [ { "id": "de-uncertainty-kind", "name": "uncertaintyKind", "description": "Coded kind of the reported uncertainty.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008" ] }, { "id": "de-uncertainty-value", "name": "uncertaintyValue", "description": "Numeric uncertainty with its unit or relative expression.", "value_kind": "quantity", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008", "SRC-012" ] }, { "id": "de-coverage-parameters", "name": "coverageParameters", "description": "Coverage factor, coverage probability and assumed distribution or effective degrees of freedom for an expanded uncertainty.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008" ] }, { "id": "de-uncertainty-budget-ref", "name": "uncertaintyBudgetRef", "description": "Reference to the uncertainty budget or evaluation method that produced the stated uncertainty.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008", "SRC-012" ] } ], "artifacts": [], "inline_only_rationale": "The uncertainty attached to a single result is a small set of numeric fields plus a reference. The uncertainty budget itself is a method-level document owned by the procedure model; holding a copy here would create a second budget that could diverge from the validated one." }, { "id": "metrological-traceability", "name": "Metrological traceability declaration", "description": "How the record declares that the result is related to a stated reference through a documented unbroken chain of calibrations, by reference to the calibration and reference-material evidence in force at the time of observation.", "source_refs": [ "SRC-008", "SRC-012" ], "questions": [ { "id": "trace-reference", "text": "To which stated metrological reference is this result traceable?", "kind": "authority", "answer_data": [ "Reference identifier (SI unit realisation, certified reference material, reference procedure, conventional scale)", "Reference-issuing authority", "Whether the reference is internationally recognised" ] }, { "id": "trace-calibration-in-force", "text": "Which calibration of the observer or measuring system was in force when the observation was made?", "kind": "temporal", "answer_data": [ "Calibration record reference", "Calibration validity interval covering the act", "Owner of the calibration record", "Indicator of whether the act fell inside the validity interval" ] }, { "id": "trace-chain-break", "text": "Is any part of the traceability chain unestablished or broken, and how is that disclosed?", "kind": "quality", "answer_data": [ "Chain completeness statement", "Identified break or gap", "Effect on comparability", "Disclosure text carried with the result" ] }, { "id": "trace-reference-material", "text": "Which certified reference materials or reference measurements underpin the chain for this determination?", "kind": "evidence", "answer_data": [ "Reference material identifiers and certificate references", "Assigned value and its uncertainty as certified", "Lot or batch identity where relevant" ] } ], "data_elements": [ { "id": "de-traceability-reference", "name": "metrologicalReference", "description": "Identifier of the stated reference to which the result is traceable, with its issuing authority.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008" ] }, { "id": "de-calibration-in-force", "name": "calibrationInForceRef", "description": "Reference to the calibration record valid at the moment of observation, with the covering validity interval.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-008", "SRC-012" ] }, { "id": "de-chain-completeness", "name": "traceabilityChainCompleteness", "description": "Statement of whether the traceability chain is unbroken, with any identified gap and its consequence for comparability.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008" ] }, { "id": "de-reference-material-ref", "name": "referenceMaterialRef", "description": "References to certified reference materials underpinning the determination, with certificate references.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-008", "SRC-012" ] } ], "artifacts": [], "inline_only_rationale": "Calibration certificates and reference-material certificates are governed artifacts of the calibration and reference-material models, with their own issuance, validity and revocation lifecycles. This finding records only which of them were in force and whether the chain is complete, so it must not carry copies of them." }, { "id": "reference-ranges-and-conformity", "name": "Reference ranges, interpretation and conformity statements", "description": "How a result is turned into a judgement: the reference range or specification limit it was compared against, the resulting interpretation code, and, where a statement of conformity is issued, the decision rule identifier and the risk basis behind it.", "source_refs": [ "SRC-011", "SRC-012", "SRC-008" ], "questions": [ { "id": "interp-reference-range", "text": "Against which reference range or specification limit was this result compared, and for which population or condition does that range apply?", "kind": "relationship", "answer_data": [ "Reference range or limit values with units", "Applicable population, matrix or condition", "Source and version of the range or specification" ] }, { "id": "interp-code", "text": "What interpretation was recorded for the result, and using which code list?", "kind": "classification", "answer_data": [ "Interpretation code (for example high, low, within range, out of specification)", "Code list identifier and version", "Agent that assigned the interpretation" ] }, { "id": "interp-decision-rule", "text": "If a statement of conformity was issued, which decision rule was applied and where is it defined?", "kind": "decision", "answer_data": [ "Decision rule identifier and definition reference", "Whether measurement uncertainty was taken into account and how", "Guard band or acceptance limit applied", "Specification or standard the statement refers to" ] }, { "id": "interp-risk-basis", "text": "What level of false-accept or false-reject risk does the applied decision rule carry, and who accepted it?", "kind": "authority", "answer_data": [ "Stated risk level or probability of false acceptance", "Statistical assumptions declared", "Accepting party reference", "Whether the rule was requested by the customer or inherent in the specification" ] } ], "data_elements": [ { "id": "de-reference-range", "name": "referenceRange", "description": "Reference range or specification limits used for comparison, with units and applicable condition.", "value_kind": "object", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-011" ] }, { "id": "de-interpretation-code", "name": "interpretationCode", "description": "Coded interpretation assigned to the result, with its code list reference.", "value_kind": "code", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-011" ] }, { "id": "de-conformity-statement", "name": "conformityStatement", "description": "Recorded statement of conformity naming the results it applies to and the specification met or not met.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-012" ] }, { "id": "de-decision-rule-ref", "name": "decisionRuleRef", "description": "Identifier of and reference to the decision rule applied, including the guard band and stated risk basis.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-012", "SRC-008" ] } ], "artifacts": [], "inline_only_rationale": "The judgement recorded here is a set of coded values and references. The decision rule is defined and approved elsewhere, and the test report or certificate that publishes the conformity statement is a deliverable of the reporting model, so no artifact is created at the level of a single observation record." } ] } ] }, { "id": "time-place-and-context", "name": "Time, Place and Context", "description": "The temporal frame that makes a value locatable in time, the resampling semantics that make it safe to aggregate, and the spatial and environmental context in which it was obtained.", "rationale": "OMS, SOSA and SensorThings all separate phenomenon time from result time and admit a distinct valid time, and the OGC Timeseries Profile shows that a value cannot be correctly resampled without interpolation and aggregation semantics. SSN adds operating conditions as a context of validity. These are distinct decision surfaces and are grouped apart from the result.", "source_refs": [ "SRC-002", "SRC-003", "SRC-004", "SRC-005", "SRC-007", "SRC-016" ], "layers": [ { "id": "temporal-frame", "name": "Temporal Frame", "description": "The several distinct times attached to an observation and the semantics governing how the value behaves across time.", "source_refs": [ "SRC-002", "SRC-004", "SRC-005", "SRC-007", "SRC-011" ], "findings": [ { "id": "observation-time-semantics", "name": "Phenomenon, result, valid and ingestion time", "description": "How the record distinguishes the time the observed phenomenon applies to, the time the result became available, the interval over which the result is asserted to be valid, and the time the record was captured or ingested, each with an explicit offset.", "source_refs": [ "SRC-002", "SRC-004", "SRC-007", "SRC-011" ], "questions": [ { "id": "time-phenomenon", "text": "To what instant or interval in the real world does this result apply?", "kind": "temporal", "answer_data": [ "Phenomenon time instant or interval with explicit offset", "Whether it is an instant or an interval", "Precision or granularity of the stated time" ] }, { "id": "time-result-vs-ingest", "text": "When did the result become available, and separately when was it captured into this record store?", "kind": "temporal", "answer_data": [ "Result time with explicit offset", "Ingestion or capture time with explicit offset", "Latency between the two", "Whether ingestion time is system-assigned and immutable" ] }, { "id": "time-validity", "text": "Over what period is this result asserted to remain valid for use?", "kind": "state", "answer_data": [ "Valid-time interval with explicit offsets", "Basis for the validity period", "Behaviour after expiry" ] }, { "id": "time-zone-and-clock", "text": "What clock and offset were in force at the observing location, and how are local-time ambiguities resolved?", "kind": "constraint", "answer_data": [ "UTC offset in force at the act", "Time zone identifier where local civil time matters", "Rule for the unknown-offset case", "Clock synchronisation source and known drift" ] } ], "data_elements": [ { "id": "de-phenomenon-time", "name": "phenomenonTime", "description": "Instant or interval in the real world to which the result applies, expressed with an explicit offset.", "value_kind": "timestamp", "cardinality": "1", "required": true, "source_refs": [ "SRC-002", "SRC-004", "SRC-007" ] }, { "id": "de-result-time", "name": "resultTime", "description": "Instant at which the result became available, expressed with an explicit offset.", "value_kind": "timestamp", "cardinality": "1", "required": true, "source_refs": [ "SRC-002", "SRC-004", "SRC-007" ] }, { "id": "de-valid-time", "name": "validTime", "description": "Interval over which the result is asserted to be usable.", "value_kind": "timestamp", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002", "SRC-004" ] }, { "id": "de-ingestion-time", "name": "ingestionTime", "description": "System-assigned instant at which the record was captured into the store, distinct from result time.", "value_kind": "timestamp", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-011", "SRC-013" ] }, { "id": "de-clock-context", "name": "clockContext", "description": "UTC offset and time zone in force at the observing location, with the synchronisation source and known drift.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-007" ] } ], "artifacts": [], "inline_only_rationale": "All temporal context is a small set of timestamp fields plus a clock-context object. It is queried and compared as data, never rendered or exchanged as a standalone object, and materialising it would break the atomicity of the record." }, { "id": "aggregation-and-interpolation", "name": "Aggregation, interpolation and sampling regime", "description": "The semantics that determine how a value may be resampled, aggregated or compared: whether it is instantaneous, averaged, accumulated or cumulative, over what duration, and how interim values between observations may be inferred.", "source_refs": [ "SRC-005", "SRC-004", "SRC-002" ], "questions": [ { "id": "agg-point-vs-interval", "text": "Does this value describe an instant or an interval, and if an interval, over what duration was it aggregated?", "kind": "measurement", "answer_data": [ "Point or interval indicator", "Aggregation duration", "Statistical function applied (mean, maximum, total, count)", "Alignment of the duration to the stated phenomenon time" ] }, { "id": "agg-interpolation", "text": "What interpolation type governs inference of values between this observation and its neighbours?", "kind": "constraint", "answer_data": [ "Interpolation type code", "Code list reference", "Whether the type is inherited from the series default", "Prohibition on interpolation where the type is undefined" ] }, { "id": "agg-cumulative", "text": "Is the value cumulative or a reset-prone running total, and what is the accumulation start reference?", "kind": "state", "answer_data": [ "Cumulative indicator", "Accumulation start reference", "Reset events affecting the total" ] }, { "id": "agg-sampling-regime", "text": "At what nominal frequency or sampling regime was the series producing this observation operating?", "kind": "process", "answer_data": [ "Nominal sampling interval or frequency", "Regime type (scheduled, event-triggered, opportunistic, manual)", "Deviation of this observation from the nominal regime" ] } ], "data_elements": [ { "id": "de-aggregation-duration", "name": "aggregationDuration", "description": "Duration over which the value was aggregated, with the statistical function applied.", "value_kind": "duration", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005" ] }, { "id": "de-interpolation-type", "name": "interpolationType", "description": "Coded interpolation type governing inference of interim values, with the source of the code list.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005" ] }, { "id": "de-cumulative-flag", "name": "cumulativeFlag", "description": "Indicator that the value is a running total, with the accumulation start reference.", "value_kind": "boolean", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005" ] }, { "id": "de-sampling-regime", "name": "samplingRegime", "description": "Nominal sampling interval and regime type in force for the producing series, with any deviation for this observation.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005", "SRC-004" ] } ], "artifacts": [], "inline_only_rationale": "These are interpretation flags and durations carried on the record so that a single observation remains safely resamplable in isolation. The series that supplies the defaults is a separate aggregate with its own identity, so this finding holds effective values only and produces nothing storable." } ] }, { "id": "spatial-and-environmental-context", "name": "Spatial and Environmental Context", "description": "Where the observation applies and under what conditions the observing system was operating.", "source_refs": [ "SRC-001", "SRC-003", "SRC-004", "SRC-016" ], "findings": [ { "id": "observation-geometry", "name": "Observation location, geometry and spatial reference", "description": "How the record states the position or extent the result applies to, distinguishing the location of the observer from the location of the feature or sample, and always naming the coordinate reference system and vertical datum.", "source_refs": [ "SRC-001", "SRC-002", "SRC-004" ], "questions": [ { "id": "geo-applies-to", "text": "To what position or spatial extent does the result apply, as distinct from where the observer stood?", "kind": "spatial", "answer_data": [ "Result geometry or observed area", "Observer position where different", "Statement of which geometry the value is attributed to" ] }, { "id": "geo-crs-and-datum", "text": "Which coordinate reference system, vertical datum and epoch express these coordinates?", "kind": "interoperability", "answer_data": [ "Coordinate reference system identifier", "Vertical datum identifier", "Coordinate epoch where the frame is dynamic", "Axis order convention asserted" ] }, { "id": "geo-positional-quality", "text": "What positional uncertainty attaches to the stated geometry, and how was it obtained?", "kind": "quality", "answer_data": [ "Positional uncertainty value and unit", "Positioning method", "Whether the position is measured, surveyed or nominal" ] }, { "id": "geo-derived-location", "text": "Was the location inherited from a station, site or sample record rather than measured for this observation?", "kind": "provenance", "answer_data": [ "Inheritance indicator", "Source record reference", "Effective date of the inherited position", "Risk note where the source position may have changed" ] } ], "data_elements": [ { "id": "de-result-geometry", "name": "resultGeometry", "description": "Geometry or observed area to which the result is attributed.", "value_kind": "geometry", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-004" ] }, { "id": "de-observer-position", "name": "observerPosition", "description": "Position of the observer at the time of the act, where it differs from the result geometry.", "value_kind": "geometry", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-004" ] }, { "id": "de-spatial-reference", "name": "spatialReferenceContext", "description": "Coordinate reference system, vertical datum, coordinate epoch and axis-order convention for all geometry on the record.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-001" ] }, { "id": "de-positional-uncertainty", "name": "positionalUncertainty", "description": "Uncertainty of the stated position with the positioning method that produced it.", "value_kind": "quantity", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-004" ] } ], "artifacts": [], "inline_only_rationale": "Geometry and its reference frame are structured values on the record. Station, site and sample geometry are owned by the corresponding entity models; this finding records what was effective for this observation and flags inheritance rather than storing a spatial document." }, { "id": "operating-and-environmental-conditions", "name": "Operating and environmental conditions of validity", "description": "The conditions under which the observing system was operating and the environment surrounding it, which bound the applicability of any stated system capability such as accuracy, resolution or detection limit.", "source_refs": [ "SRC-003", "SRC-016", "SRC-008" ], "questions": [ { "id": "cond-operating-range", "text": "Were the observing system's declared normal operating conditions satisfied at the time of the act?", "kind": "validation", "answer_data": [ "Declared operating condition set reference", "Observed conditions at the act", "Within-range verdict", "Consequence for the declared capability" ] }, { "id": "cond-environment", "text": "What environmental context surrounded the observation and could plausibly bias the result?", "kind": "measurement", "answer_data": [ "Environmental descriptors with values and units", "Exposure or siting classification", "Reference to the environment record owned by the station or facility model" ] }, { "id": "cond-capability-validity", "text": "Under which validity context does the stated accuracy, resolution or detection limit hold for this observation?", "kind": "constraint", "answer_data": [ "Capability statement reference", "Validity context conditions", "Whether this observation falls inside that context" ] }, { "id": "cond-degraded-operation", "text": "Was the system operating in a degraded, suboptimal or survival regime, and how is that disclosed with the result?", "kind": "exception", "answer_data": [ "Operating regime code", "Degradation description", "Disclosure carried with the result", "Reference to the fault or maintenance record" ] } ], "data_elements": [ { "id": "de-operating-conditions", "name": "operatingConditionsAtAct", "description": "Conditions under which the observing system was operating at the time of the act, with a within-range verdict against declared normal conditions.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-003" ] }, { "id": "de-environmental-descriptor", "name": "environmentalDescriptor", "description": "Environmental descriptors surrounding the observation, each with value, unit and source.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-016" ] }, { "id": "de-capability-validity-ref", "name": "capabilityValidityRef", "description": "Reference to the system capability statement and the validity context under which it holds for this observation.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-003" ] }, { "id": "de-operating-regime", "name": "operatingRegimeCode", "description": "Coded operating regime (normal, suboptimal, survival, degraded) in force during the act.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-003" ] } ], "artifacts": [], "inline_only_rationale": "Capability statements, siting classifications and maintenance records belong to the observing-system and facility models. This finding contributes only the conditions effective at the act and the verdict against declared capability, which are fields on the record." } ] } ] }, { "id": "quality-validation-and-lifecycle", "name": "Quality, Validation and Lifecycle", "description": "How the record moves through its states, how it is corrected, what quality judgements have been recorded against it, and who is responsible for it.", "rationale": "FHIR makes observation status a mandatory modifier element, QARTOD shows quality flagging as a documented layer distinct from the value, MHRA requires original records and controlled amendment, and PROV-O supplies the responsibility model. Together these form the trust surface of an observation record and are separated from the measurement content.", "source_refs": [ "SRC-006", "SRC-011", "SRC-013", "SRC-014", "SRC-015", "SRC-016" ], "layers": [ { "id": "record-lifecycle", "name": "Record Lifecycle", "description": "The states an observation record can occupy and the controlled transitions between them.", "source_refs": [ "SRC-011", "SRC-013", "SRC-015" ], "findings": [ { "id": "record-status-transitions", "name": "Record status and permitted transitions", "description": "The lifecycle states of an observation record from provisional capture through review to final, amended, superseded or retracted, and the rules governing which transitions are permitted, by whom and with what evidence.", "source_refs": [ "SRC-011", "SRC-013", "SRC-015" ], "questions": [ { "id": "life-current-status", "text": "What is the current lifecycle status of this record, and what does that status permit a consumer to do with it?", "kind": "state", "answer_data": [ "Status code and its governing code list", "Permitted consumer uses at that status", "Whether the status is a modifier that changes result meaning" ] }, { "id": "life-transition-rules", "text": "Which transitions out of the current status are permitted, and what precondition does each require?", "kind": "lifecycle", "answer_data": [ "Permitted target statuses", "Preconditions per transition", "Prohibited transitions and the reason" ] }, { "id": "life-transition-authority", "text": "Who is authorised to move this record between statuses, and how is that authorisation evidenced?", "kind": "authority", "answer_data": [ "Authorised role or agent reference", "Authorisation evidence pointer", "Separation-of-duties constraint where review is required" ] }, { "id": "life-realtime-vs-delayed", "text": "Does this record represent a real-time provisional value or a delayed-mode reviewed value, and are both retained?", "kind": "process", "answer_data": [ "Processing mode code", "Whether the provisional value is retained alongside the reviewed value", "Reference linking provisional and reviewed records" ] } ], "data_elements": [ { "id": "de-record-status", "name": "recordStatus", "description": "Current lifecycle status of the record, drawn from a governed code list and treated as meaning-changing.", "value_kind": "code", "cardinality": "1", "required": true, "source_refs": [ "SRC-011" ] }, { "id": "de-status-transition", "name": "statusTransition", "description": "Record of a status change with source status, target status, instant, responsible agent and precondition satisfied.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-013" ] }, { "id": "de-processing-mode", "name": "processingMode", "description": "Whether the record is a real-time provisional value or a delayed-mode reviewed value.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-015" ] } ], "artifacts": [], "inline_only_rationale": "Status and its transition history are coded fields on the record. The tamper-evident audit trail that independently attests to those transitions is owned by the electronic-records model, so this finding must record state without producing or claiming an audit artifact." }, { "id": "amendment-and-supersession", "name": "Amendment, correction and supersession", "description": "How a result that must change is handled: whether by amendment in place with a reason, by issuing a superseding record, or by retraction, always preserving the prior content and the reason for change.", "source_refs": [ "SRC-011", "SRC-013", "SRC-014" ], "questions": [ { "id": "amend-mechanism", "text": "Which change mechanism applies to this record: amendment, supersession or retraction?", "kind": "lifecycle", "answer_data": [ "Change mechanism code", "Rule selecting the mechanism", "Effect on the previous record's status" ] }, { "id": "amend-reason", "text": "What reason is recorded for the change, and is it classified as a correction, reprocessing or reinterpretation?", "kind": "provenance", "answer_data": [ "Change reason text", "Change classification code", "Reference to the triggering finding or investigation" ] }, { "id": "amend-original-preservation", "text": "How is the superseded content preserved and made retrievable after the change?", "kind": "evidence", "answer_data": [ "Preservation location or version reference", "Retrievability guarantee", "Prohibition on obliterating the prior value" ] }, { "id": "amend-downstream-notice", "text": "How are consumers of the superseded value informed that it has changed?", "kind": "interoperability", "answer_data": [ "Notification or invalidation mechanism reference", "Consumer identification basis", "Owner of the notification process" ] } ], "data_elements": [ { "id": "de-change-mechanism", "name": "changeMechanism", "description": "Coded mechanism by which the record's content was changed.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-011" ] }, { "id": "de-change-reason", "name": "changeReason", "description": "Recorded reason and classification for the change, with a pointer to the triggering finding.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-013" ] }, { "id": "de-supersedes-ref", "name": "supersedesRef", "description": "Reference to the record version this one replaces, and the inverse pointer from the replaced version.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-014" ] } ], "artifacts": [], "inline_only_rationale": "Amendment is expressed by a mechanism code, a reason and version pointers. The preserved prior content lives as an earlier version of the same record rather than as a distinct artifact, and downstream notification is executed by the distribution model, not here." } ] }, { "id": "quality-assessment", "name": "Quality Assessment", "description": "Quality judgements recorded against the observation and the evidence supporting them, recorded but never evaluated here.", "source_refs": [ "SRC-004", "SRC-005", "SRC-012", "SRC-013", "SRC-015", "SRC-016" ], "findings": [ { "id": "quality-flags-and-outcomes", "name": "Quality flags and quality-control outcomes", "description": "How quality judgements produced by external quality-control procedures are attached to the record: the flag value, the code list it comes from, which test produced it, when, and by which agent, without this model owning the tests or their execution.", "source_refs": [ "SRC-004", "SRC-005", "SRC-015", "SRC-016" ], "questions": [ { "id": "qual-flag-value", "text": "What quality flag is recorded against this result, and from which flag code list and version?", "kind": "quality", "answer_data": [ "Flag value", "Flag code list identifier and version", "Human-readable flag meaning", "Whether the flag is primary or secondary level" ] }, { "id": "qual-which-test", "text": "Which quality-control test or test suite produced that flag, and where is the test defined?", "kind": "relationship", "answer_data": [ "Test identifier and version", "Reference to the quality-control model that owns the test", "Test parameters in force", "Test outcome per test where a suite was run" ] }, { "id": "qual-when-and-who", "text": "When was the flag assigned and by which agent or service?", "kind": "provenance", "answer_data": [ "Flag assignment instant with explicit offset", "Assigning agent or service reference", "Whether assignment was automated or manual" ] }, { "id": "qual-flag-conflict", "text": "When several flags disagree, which prevails for consumption and how is the disagreement preserved?", "kind": "exception", "answer_data": [ "Precedence rule", "Prevailing flag", "Retained non-prevailing flags", "Escalation route owner" ] } ], "data_elements": [ { "id": "de-quality-flag", "name": "qualityFlag", "description": "Quality flag recorded against the result, with its value, code list, level and meaning.", "value_kind": "code", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-015", "SRC-004" ] }, { "id": "de-quality-test-ref", "name": "qualityTestRef", "description": "Reference to the quality-control test or suite that produced the flag, with the parameters in force.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-015" ] }, { "id": "de-flag-assignment", "name": "flagAssignment", "description": "Instant, agent and mode (automated or manual) of flag assignment.", "value_kind": "object", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-015", "SRC-006" ] }, { "id": "de-flag-precedence", "name": "flagPrecedenceOutcome", "description": "Prevailing flag after applying the precedence rule, with non-prevailing flags retained.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005" ] } ], "artifacts": [], "inline_only_rationale": "Flags are coded outcomes recorded on the record. Test definitions, thresholds, execution and re-evaluation belong to the quality-control model; carrying an evaluation artifact here would imply ownership of the evaluator, which this model explicitly does not have." }, { "id": "validation-evidence-references", "name": "Validation and verification evidence references", "description": "How the record points to the evidence that supports its acceptance: control results, replicate or duplicate observations, blanks, spikes, proficiency-test outcomes and review sign-offs, each held by the model that owns it.", "source_refs": [ "SRC-012", "SRC-013", "SRC-008", "SRC-015" ], "questions": [ { "id": "valid-supporting-controls", "text": "Which control, blank, spike or replicate observations support the acceptance of this result?", "kind": "evidence", "answer_data": [ "References to supporting observation records", "Control type per reference", "Whether each control passed its acceptance criterion" ] }, { "id": "valid-acceptance-criteria", "text": "Against which acceptance criteria was this result judged, and where are those criteria defined?", "kind": "validation", "answer_data": [ "Acceptance criterion references", "Criterion values in force at the act", "Owner of the criterion definitions" ] }, { "id": "valid-review-signoff", "text": "Was the record reviewed and released, by whom and on what date and time?", "kind": "authority", "answer_data": [ "Reviewer reference", "Review instant with explicit offset", "Review outcome", "Pointer to the signature record held by the records system" ] }, { "id": "valid-method-verification", "text": "Was the procedure verified as fit for purpose in this laboratory for this matrix before the observation?", "kind": "requirement", "answer_data": [ "Verification study reference", "Scope of verification (matrix, range, interferences)", "Whether this observation falls inside the verified scope" ] } ], "data_elements": [ { "id": "de-supporting-observation-ref", "name": "supportingObservationRef", "description": "References to control, blank, spike or replicate observations that support acceptance of this result.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-012", "SRC-015" ] }, { "id": "de-acceptance-criterion-ref", "name": "acceptanceCriterionRef", "description": "References to the acceptance criteria applied, with the values in force at the act.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-012" ] }, { "id": "de-review-record", "name": "reviewRecord", "description": "Reviewer reference, review instant and outcome, with a pointer to the signature held by the electronic-records system.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-013" ] }, { "id": "de-method-verification-ref", "name": "methodVerificationRef", "description": "Reference to the verification study establishing fitness for purpose, with the scope it covers.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-012", "SRC-008" ] } ], "artifacts": [], "inline_only_rationale": "Every item here is a pointer to evidence owned elsewhere: control observations are themselves observation records, acceptance criteria belong to the method model, and signatures belong to the electronic-records system. Materialising an evidence pack here would copy other models' records and create a second, unmanaged source of truth." } ] }, { "id": "provenance-and-responsibility", "name": "Provenance and Responsibility", "description": "Where the record came from, what it was derived from, and who is accountable for it.", "source_refs": [ "SRC-006", "SRC-011", "SRC-013", "SRC-014", "SRC-016" ], "findings": [ { "id": "provenance-chain", "name": "Provenance chain and derivation", "description": "How the record states what generated it, which prior entities it used or was derived from, and how the original acquisition record is preserved so that the reported value can be traced back to what the instrument or observer actually produced.", "source_refs": [ "SRC-006", "SRC-011", "SRC-013" ], "questions": [ { "id": "prov-generating-activity", "text": "Which activity generated this record, and what did that activity use as input?", "kind": "provenance", "answer_data": [ "Generating activity reference and kind", "Input entity references", "Activity start and end instants with explicit offsets" ] }, { "id": "prov-derived-from", "text": "Which prior observations or entities was this result derived from, and by what transformation?", "kind": "relationship", "answer_data": [ "Source observation or entity references", "Transformation or algorithm reference and version", "Whether the derivation is reversible or lossy" ] }, { "id": "prov-original-record", "text": "Where is the original acquisition record, and how is the reported value shown to correspond to it?", "kind": "evidence", "answer_data": [ "Original record reference and digest", "Correspondence statement between original and reported value", "Any processing applied between the two" ] }, { "id": "prov-reprocessing", "text": "Has this record been reprocessed, and which processing version produced the current value?", "kind": "lifecycle", "answer_data": [ "Processing version identifier", "Prior processing versions and their outputs", "Reason for reprocessing" ] } ], "data_elements": [ { "id": "de-generating-activity", "name": "generatingActivityRef", "description": "Reference to the activity that generated the record, with its start and end instants.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-006" ] }, { "id": "de-derived-from-ref", "name": "derivedFromRef", "description": "References to source observations or entities from which this result was derived, with the transformation applied.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-006", "SRC-011" ] }, { "id": "de-processing-version", "name": "processingVersion", "description": "Identifier of the processing version that produced the current value, with prior versions where reprocessed.", "value_kind": "identifier", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-006" ] } ], "artifacts": [ { "id": "original-acquisition-record", "name": "Original acquisition record", "description": "The original record captured at the moment of acquisition, in the form in which the observer or instrument produced it, retained unaltered so that the reported result can be traced back to it. Corrections never overwrite it; they create a new record version that references it.", "media_or_form": [ "instrument-native raw output", "acquisition log or run file", "transcribed field or bench sheet capture", "true copy of an original record with its verification statement" ], "serial": true, "identity_strategy": "Identified by the acquisition-system record key (for example run, batch or injection sequence) qualified by the acquiring system identifier; where the acquisition system issues no key, a digest-addressed identifier is minted by the adopting Dimension and the parent observation identifier plus sequence position is retained as a composite fallback.", "source_refs": [ "SRC-013", "SRC-006" ] } ], "inline_only_rationale": null }, { "id": "ownership-and-attribution", "name": "Ownership, attribution and responsible agents", "description": "Who owns the record, who is attributed as its producer, which organisation is the authoritative source for which part of it, and who may be contacted about it.", "source_refs": [ "SRC-006", "SRC-014", "SRC-016" ], "questions": [ { "id": "own-record-owner", "text": "Which organisation owns this record and is accountable for its correctness?", "kind": "ownership", "answer_data": [ "Owning organisation reference", "Accountability statement", "Effective date of ownership and any transfer history" ] }, { "id": "own-attribution", "text": "To whom is the observation attributed, and does that differ from the owner?", "kind": "ownership", "answer_data": [ "Attributed agent references and roles", "Difference statement between owner and producer", "Delegation relationship where an agent acted on behalf of another" ] }, { "id": "own-authoritative-part", "text": "Which organisation is the authoritative source for each part of the record when several contribute?", "kind": "authority", "answer_data": [ "Part-to-authority mapping", "Conflict resolution rule between contributors", "Effective interval per authority" ] }, { "id": "own-contact", "text": "Who is the responsible contact for questions about this observation, and how is that contact kept current?", "kind": "process", "answer_data": [ "Contact reference", "Contact role", "Owner of contact-record maintenance", "Staleness handling rule" ] } ], "data_elements": [ { "id": "de-owning-organisation", "name": "owningOrganisationRef", "description": "Reference to the organisation accountable for the record, with the effective interval of ownership.", "value_kind": "reference", "cardinality": "1", "required": true, "source_refs": [ "SRC-014", "SRC-016" ] }, { "id": "de-attributed-agent", "name": "attributedAgentRef", "description": "References to the agents to whom the observation is attributed, with their roles and any delegation.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-006" ] }, { "id": "de-authority-mapping", "name": "authoritativeSourceMapping", "description": "Mapping from parts of the record to the organisation that is authoritative for each, with conflict-resolution rule.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-016" ] }, { "id": "de-responsible-contact", "name": "responsibleContactRef", "description": "Reference to the contact record for enquiries about this observation.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-016" ] } ], "artifacts": [], "inline_only_rationale": "Ownership and attribution are reference fields pointing at organisation, agent and contact records maintained by directory models. Copying those records here would duplicate an external register that changes on its own schedule." } ] } ] }, { "id": "governance-access-and-interoperability", "name": "Governance, Access and Interoperability", "description": "How the record is protected and retired, how it is expressed for exchange without losing meaning, how its identifiers resolve across systems, and how it declares its membership in larger collections.", "rationale": "DCAT governs access rights, licence and versioning for published data; MHRA imposes retention and archiving duties; SensorThings, FHIR and OMS provide independent encodings that this model must be projectable into. These are governance and projection concerns, deliberately separated from measurement semantics so that storage and interface remain projections.", "source_refs": [ "SRC-001", "SRC-004", "SRC-005", "SRC-011", "SRC-013", "SRC-014" ], "layers": [ { "id": "access-and-retention", "name": "Access and Retention", "description": "Classification of the record for disclosure and its binding to a retention and disposition policy.", "source_refs": [ "SRC-013", "SRC-014", "SRC-016" ], "findings": [ { "id": "access-classification", "name": "Access classification and disclosure constraints", "description": "How the record declares its sensitivity, the licence or access rights under which it may be used, and any constraint arising from personal, commercial or security sensitivity of the observation or its subject.", "source_refs": [ "SRC-014", "SRC-016", "SRC-013" ], "questions": [ { "id": "acc-classification", "text": "What sensitivity classification applies to this record and to its result payload separately?", "kind": "security", "answer_data": [ "Record classification code", "Payload classification where different", "Classification scheme reference", "Classifying authority" ] }, { "id": "acc-rights-and-licence", "text": "Under which access rights and licence may this observation be used and redistributed?", "kind": "access", "answer_data": [ "Access rights statement", "Licence identifier", "Attribution requirement", "Redistribution constraint" ] }, { "id": "acc-personal-data", "text": "Does the observation identify or relate to an identifiable person, and what constraint follows?", "kind": "privacy", "answer_data": [ "Personal-data indicator", "Basis of the determination", "Applicable protection regime reference", "Owner of the lawful-basis decision" ] }, { "id": "acc-embargo", "text": "Is the record embargoed or restricted for a period, and what releases it?", "kind": "exception", "answer_data": [ "Embargo indicator and expiry with explicit offset", "Releasing condition or authority", "Behaviour of derived products during embargo" ] } ], "data_elements": [ { "id": "de-sensitivity-class", "name": "sensitivityClassification", "description": "Classification of the record and, where different, of its payload, under a named classification scheme.", "value_kind": "code", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-014" ] }, { "id": "de-access-rights", "name": "accessRightsStatement", "description": "Access-rights statement and licence identifier governing use and redistribution.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-014" ] }, { "id": "de-personal-data-flag", "name": "personalDataIndicator", "description": "Indicator that the observation relates to an identifiable person, with the applicable protection-regime reference.", "value_kind": "boolean", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-011" ] }, { "id": "de-embargo", "name": "embargo", "description": "Embargo state with expiry instant and releasing authority.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-016" ] } ], "artifacts": [], "inline_only_rationale": "Classification, licence and embargo are declared values on the record. The policies that define the classification scheme and the enforcement point that honours them belong to the access-policy model; this finding must not imply that it enforces anything." }, { "id": "retention-and-disposition", "name": "Retention, disposition and tombstoning", "description": "How long the record and its payload must be kept, which policy determines that, what disposition decision was reached, and what evidence remains after the record is destroyed.", "source_refs": [ "SRC-013", "SRC-014" ], "questions": [ { "id": "ret-policy-binding", "text": "Which retention policy governs this record, and what retention period does it impose?", "kind": "retention", "answer_data": [ "Retention policy reference and version", "Retention period or trigger", "Start event for the retention clock", "Owner of the policy" ] }, { "id": "ret-payload-vs-record", "text": "Do the record, its result payload and its original acquisition record carry different retention periods?", "kind": "retention", "answer_data": [ "Per-component retention periods", "Justification for divergence", "Rule preventing payload loss while the record is retained" ] }, { "id": "ret-legal-hold", "text": "Is the record under legal hold or another suspension of disposition, and who imposed it?", "kind": "authority", "answer_data": [ "Hold indicator", "Imposing authority reference", "Hold scope and expected review date" ] }, { "id": "ret-tombstone", "text": "What tombstone remains after disposition, and what may it disclose?", "kind": "lifecycle", "answer_data": [ "Tombstone content specification (identifier, disposition instant, policy reference, authority)", "Fields that must not survive disposition", "Resolution behaviour for references to the destroyed record" ] } ], "data_elements": [ { "id": "de-retention-policy-ref", "name": "retentionPolicyRef", "description": "Reference to the retention policy governing the record, with period and clock-start trigger.", "value_kind": "reference", "cardinality": "1", "required": true, "source_refs": [ "SRC-013" ] }, { "id": "de-disposition-decision", "name": "dispositionDecision", "description": "Recorded disposition decision with instant, authorising agent and policy clause relied upon.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-013" ] }, { "id": "de-legal-hold", "name": "legalHold", "description": "Indicator and scope of any suspension of disposition, with the imposing authority.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-013" ] }, { "id": "de-tombstone", "name": "tombstone", "description": "Minimal surviving record after disposition, carrying identifier, disposition instant, policy reference and authorising agent only.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-014" ] } ], "artifacts": [], "inline_only_rationale": "This finding records the policy binding, the decision and the tombstone as data. The retention policy itself is authored by the adopting Dimension's records policy and the physical destruction is executed by the storage platform, so neither may be represented as an artifact owned here." } ] }, { "id": "interoperability-and-membership", "name": "Interoperability and Membership", "description": "Alignment to external observation standards, resolution of identifiers across systems, and membership in collections and series.", "source_refs": [ "SRC-001", "SRC-003", "SRC-004", "SRC-005", "SRC-011", "SRC-014" ], "findings": [ { "id": "standard-alignment-and-encoding", "name": "Standard alignment and encoding binding", "description": "Which external observation standards this record is aligned to, which elements map cleanly, where mappings are lossy, and how the record is projected into a named exchange encoding without the encoding becoming the semantics.", "source_refs": [ "SRC-001", "SRC-003", "SRC-004", "SRC-011" ], "questions": [ { "id": "align-which-standards", "text": "Which external observation standards and versions is this record aligned to, and is the alignment tested or asserted?", "kind": "interoperability", "answer_data": [ "Standard identifiers and versions", "Alignment scope per standard", "Tested or asserted marker", "Evidence reference where tested" ] }, { "id": "align-lossy-mappings", "text": "Which elements are lost, coerced or fabricated when projecting into each target encoding?", "kind": "constraint", "answer_data": [ "Element-level mapping table with loss annotations", "Fabrication risks (for example inferred per-observation units)", "Round-trip fidelity verdict" ] }, { "id": "align-conflicts", "text": "Where do two aligned standards disagree about the same concept, and which is authoritative for this record?", "kind": "decision", "answer_data": [ "Conflicting concept pairs", "Disagreement description", "Authoritative choice and its rationale" ] }, { "id": "align-encoding-binding", "text": "Which encoding and profile was used for a given exchanged representation of this record?", "kind": "provenance", "answer_data": [ "Encoding name and version", "Profile or schema reference", "Producing agent", "Instant of production with explicit offset" ] } ], "data_elements": [ { "id": "de-alignment-declaration", "name": "alignmentDeclaration", "description": "Declaration of each aligned standard, its version, alignment scope and whether conformance was tested.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-001", "SRC-003", "SRC-004", "SRC-011" ] }, { "id": "de-mapping-loss", "name": "mappingLossNote", "description": "Element-level note recording loss, coercion or fabrication in a projection to a target encoding.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-004" ] }, { "id": "de-alignment-conflict", "name": "alignmentConflict", "description": "Recorded disagreement between aligned standards over a concept, with the authoritative choice for this record.", "value_kind": "object", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-011", "SRC-004" ] } ], "artifacts": [ { "id": "encoded-observation-representation", "name": "Encoded observation representation", "description": "A concrete exchanged representation of the observation record in a named standard encoding and profile. It is a projection of the record, never its source of truth: it carries the encoding name, profile reference, producing agent and production instant so that a received representation can be traced back to the record state it was made from.", "media_or_form": [ "structured data document in a named observation encoding", "graph serialisation of the record", "tabular or columnar exchange extract", "message payload bound to a named profile" ], "serial": false, "identity_strategy": "Identified by the parent observation identifier combined with the encoding and profile identifier and the record version projected; a content digest is recorded so that a received representation can be matched to the exact record state that produced it.", "source_refs": [ "SRC-001", "SRC-004", "SRC-011" ] } ], "inline_only_rationale": null }, { "id": "identifier-resolution", "name": "Identifier resolution and cross-system correlation", "description": "How identifiers on and around this record resolve to the things they name, how the same observation is correlated across systems that assign their own keys, and how duplicate or conflicting records are detected and reconciled.", "source_refs": [ "SRC-004", "SRC-011", "SRC-014", "SRC-003" ], "questions": [ { "id": "resolve-mechanism", "text": "How does a consumer resolve each identifier on this record to the entity it names?", "kind": "interoperability", "answer_data": [ "Resolution mechanism per identifier scheme", "Whether the identifier is resolvable or opaque", "Fallback when resolution fails" ] }, { "id": "resolve-cross-system", "text": "How is the same observation correlated when two systems have each assigned their own key?", "kind": "relationship", "answer_data": [ "Correlation key or matching rule", "Confidence of the correlation", "Reference to the accepted master identifier" ] }, { "id": "resolve-duplicates", "text": "What constitutes a duplicate observation, and how is a duplicate reconciled rather than silently merged?", "kind": "validation", "answer_data": [ "Duplicate-detection rule", "Fields that must match", "Reconciliation outcome record", "Prohibition on silent merge" ] }, { "id": "resolve-stale-reference", "text": "What happens when a referenced entity has been superseded, merged or destroyed since the observation was made?", "kind": "exception", "answer_data": [ "Stale-reference handling rule", "Whether the historical reference is preserved as recorded", "Redirection or tombstone behaviour of the target" ] } ], "data_elements": [ { "id": "de-resolution-binding", "name": "identifierResolutionBinding", "description": "Per-scheme statement of how an identifier resolves, whether it is resolvable and the fallback on failure.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-014", "SRC-003" ] }, { "id": "de-correlation-key", "name": "crossSystemCorrelation", "description": "Correlation of this observation with keys assigned in other systems, with matching rule and confidence.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-011" ] }, { "id": "de-duplicate-outcome", "name": "duplicateReconciliationOutcome", "description": "Outcome of duplicate detection, naming the retained record and the reason, without merging content silently.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-004" ] } ], "artifacts": [], "inline_only_rationale": "Resolution bindings, correlation keys and reconciliation outcomes are reference data attached to the record. The resolvers, registries and matching services that operate on them are external systems whose behaviour this model describes but does not own." }, { "id": "collection-and-series-membership", "name": "Collection, datastream and series membership", "description": "How a single observation declares its membership in the collections, datastreams, series or composite observations that contain it, and which properties it inherits from them, without absorbing the containing aggregate's identity or completeness accounting.", "source_refs": [ "SRC-002", "SRC-004", "SRC-005", "SRC-011", "SRC-014" ], "questions": [ { "id": "member-which-container", "text": "Which collection, datastream, series or dataset does this observation belong to?", "kind": "composition", "answer_data": [ "Container reference and kind", "Container-owning model", "Position or ordering within the container where significant" ] }, { "id": "member-inherited-properties", "text": "Which properties does this observation inherit from its container, and which does it override?", "kind": "composition", "answer_data": [ "Inherited property list with effective values", "Overridden properties", "Rule for resolving inheritance conflicts" ] }, { "id": "member-composite-parts", "text": "Is this observation part of a composite or grouped observation, and can it be interpreted on its own?", "kind": "relationship", "answer_data": [ "Parent or group observation reference", "Sibling member references", "Standalone-interpretability verdict" ] }, { "id": "member-standalone-integrity", "text": "If extracted from its container, does the record still carry everything needed to interpret the value?", "kind": "validation", "answer_data": [ "Completeness verdict for standalone use", "Missing inherited elements", "Materialisation rule for extraction" ] } ], "data_elements": [ { "id": "de-container-ref", "name": "containerRef", "description": "References to the collections, datastreams, series or datasets containing this observation, with kind and position.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-004", "SRC-005", "SRC-014" ] }, { "id": "de-inherited-property", "name": "inheritedPropertySet", "description": "Effective values inherited from the container, with overrides and the conflict-resolution rule applied.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005" ] }, { "id": "de-group-membership", "name": "groupMembershipRef", "description": "References to a parent or group observation and its sibling members where the result is part of a composite.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-011", "SRC-002" ] }, { "id": "de-standalone-completeness", "name": "standaloneCompletenessVerdict", "description": "Verdict on whether the record remains interpretable when extracted from its container, listing any missing inherited elements.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005" ] } ], "artifacts": [], "inline_only_rationale": "Membership is expressed as outbound references plus the effective inherited values. The container aggregate has its own identity, extent, completeness accounting and publication lifecycle, so representing it as an artifact here would take ownership of another model's object." } ] } ] } ] }, "functions": [ { "id": "register-observation-record", "name": "Register observation record", "description": "Create a new observation record, resolve its identity under the model identity priority, and establish its initial lifecycle status and ownership.", "inputs": [ "Candidate master-system identifier and its issuing system", "Observation type and determination mode", "Owning organisation reference", "Initial lifecycle status proposal" ], "outputs": [ "Registered observation record with a resolved primary identifier", "Recorded identifier scheme and surrogate marker where applicable", "Initial status and ownership assignment" ], "preconditions": [ "The issuing system is declared as the master system of record, or the absence of an authoritative identifier is explicitly asserted", "The observation type is drawn from a named code list", "An owning organisation reference resolves" ], "effects": [ "A durable record identity exists that later versions extend rather than replace", "A surrogate identifier, where minted, is flagged so it can be superseded by an authoritative identifier later", "No result content is asserted by this function alone" ], "source_refs": [ "SRC-004", "SRC-011", "SRC-014" ] }, { "id": "bind-measurand-context", "name": "Bind measurand and observation context", "description": "Attach the mandatory referents that make the record interpretable: exactly one observable property, exactly one observing procedure, the ultimate feature of interest, and where applicable the proximate feature, sample, observer and deployment.", "inputs": [ "Observable property reference and vocabulary version", "Observing procedure reference and version", "Ultimate and, where applicable, proximate feature of interest references", "Sample, observer and deployment references" ], "outputs": [ "Bound measurand context on the record", "Dimensional consistency verdict between property, quantity kind and unit", "List of unresolved or ambiguous references" ], "preconditions": [ "The property and procedure references resolve in their owning registries", "Where a sample is referenced, its ultimate feature is stated or derivable", "The record is in a status that permits binding" ], "effects": [ "The record can be interpreted without consulting the producing system", "Unresolved references are surfaced rather than silently dropped", "Referenced registries are read only; their entries are not modified" ], "source_refs": [ "SRC-002", "SRC-003", "SRC-010" ] }, { "id": "record-result-and-unit", "name": "Record result value and unit binding", "description": "Attach the result payload, its datatype and, for quantities, its unit code and code system, or record a declared absence or censoring instead of a value.", "inputs": [ "Result value or absence reason", "Declared datatype and observation type", "Unit code and unit code system, where the result is a quantity", "Censoring bound, direction and limit reference where applicable" ], "outputs": [ "Result recorded with a typed payload or an explicit absence or bound", "Unit binding with named code system", "Validation findings where type, unit or absence are inconsistent" ], "preconditions": [ "The measurand context is bound", "A quantity result carries a unit code and code system, or an explicit dimensionless assertion", "Absence is expressed by a coded reason, never by an empty value" ], "effects": [ "Zero is never used to represent an absent or censored value", "Any unit conversion performed is recorded with factor, offset and responsible agent", "A binary or complex payload is bound by reference and digest" ], "source_refs": [ "SRC-004", "SRC-005", "SRC-009", "SRC-011" ] }, { "id": "assert-temporal-frame", "name": "Assert temporal frame", "description": "Set and validate the several distinct times on the record, ensuring each carries an explicit offset and that event time is not conflated with capture time.", "inputs": [ "Phenomenon time instant or interval", "Result time", "Valid-time interval where asserted", "Clock and offset context at the observing location" ], "outputs": [ "Validated temporal frame on the record", "System-assigned ingestion time", "Findings where offsets are missing, ordering is implausible or the clock context is unknown" ], "preconditions": [ "Every supplied time value carries an explicit offset or Z", "The observing location's offset is known, or the unknown-offset convention is used deliberately" ], "effects": [ "Ingestion time is assigned by the receiving system and is not writable by producers", "Phenomenon time, result time and ingestion time remain separately queryable", "Timestamps missing an offset are rejected rather than defaulted to UTC" ], "source_refs": [ "SRC-004", "SRC-007", "SRC-011" ] }, { "id": "record-quality-outcome", "name": "Record externally produced quality outcome", "description": "Attach a quality flag, its code list, the test that produced it, the assigning agent and the assignment instant to the record. This function records an outcome computed elsewhere and never evaluates a rule.", "inputs": [ "Flag value and flag code list identifier", "Quality-control test reference and parameters in force", "Assigning agent reference and assignment instant", "Prevailing-flag precedence rule reference" ], "outputs": [ "Recorded quality flag with full attribution", "Prevailing flag after precedence, with non-prevailing flags retained", "Conflict note where flags disagree" ], "preconditions": [ "The flag value is valid within the declared code list", "The producing test is identified and owned by the quality-control model", "The assignment instant carries an explicit offset" ], "effects": [ "No rule is executed, evaluated or re-evaluated by this model", "Superseded flags are retained rather than overwritten", "Disagreements are surfaced to the owning quality-control process rather than resolved here" ], "source_refs": [ "SRC-004", "SRC-005", "SRC-015" ] }, { "id": "amend-or-supersede-record", "name": "Amend or supersede observation record", "description": "Apply a controlled change to a released record by issuing a new version or a superseding record, preserving prior content and recording the mechanism, reason and authority.", "inputs": [ "Change mechanism selection", "Change reason and classification", "Authorising agent reference", "New content to be asserted" ], "outputs": [ "New record version or superseding record", "Bidirectional supersession references", "Preserved prior version remaining retrievable" ], "preconditions": [ "The record is in a status that permits the selected change mechanism", "The authorising agent holds the required role and satisfies any separation-of-duties constraint", "The original acquisition record remains unaltered" ], "effects": [ "Prior values are never obliterated or overwritten in place", "The reason and classification of every change are retrievable with the record", "Notification of downstream consumers is delegated to the distribution model, not performed here" ], "source_refs": [ "SRC-011", "SRC-013", "SRC-014" ] }, { "id": "assess-record-interpretability", "name": "Assess record interpretability", "description": "Evaluate whether a record carries everything required to interpret its value in isolation, including mandatory referents, unit binding, temporal offsets, aggregation semantics and inherited container properties.", "inputs": [ "Observation record", "Target profile or requirements class", "Container defaults available for inheritance" ], "outputs": [ "Interpretability verdict", "Enumerated missing or ambiguous elements", "Materialisation recommendation for extraction from a container" ], "preconditions": [ "A target profile is named, or the model's own required-element set is used as the baseline", "Container references, where present, resolve" ], "effects": [ "Gaps are reported as findings against the record rather than repaired silently", "Inherited values are reported as inherited, never rewritten as if locally asserted" ], "source_refs": [ "SRC-001", "SRC-004", "SRC-005" ] }, { "id": "project-record-to-encoding", "name": "Project record to an exchange encoding", "description": "Produce a concrete representation of the record in a named encoding and profile, recording the encoding, the record version projected, the producing agent and any element-level loss.", "inputs": [ "Observation record and version", "Target encoding and profile identifier", "Projection options such as inclusion of payloads" ], "outputs": [ "Encoded observation representation with a content digest", "Element-level mapping-loss notes", "Round-trip fidelity verdict" ], "preconditions": [ "The target encoding and profile are declared as an alignment on the record", "The record passes the interpretability assessment for the target profile" ], "effects": [ "The encoding is treated as a projection and never becomes the source of truth", "Loss, coercion or fabrication introduced by the projection is recorded rather than hidden", "Projection does not alter the underlying record" ], "source_refs": [ "SRC-001", "SRC-004", "SRC-011" ] }, { "id": "record-disposition-decision", "name": "Record retention and disposition decision", "description": "Bind the record to its governing retention policy, register any hold, and record the disposition decision and resulting tombstone. Execution of destruction is performed by the storage platform under the adopting Dimension's records policy.", "inputs": [ "Retention policy reference and version", "Retention clock start event", "Hold status and imposing authority where applicable", "Disposition decision and authorising agent" ], "outputs": [ "Retention binding on the record", "Recorded disposition decision with instant and authority", "Tombstone specification for the destroyed record" ], "preconditions": [ "A retention policy reference resolves for the record, its payload and its original acquisition record", "No unexpired hold blocks the decision", "The authorising agent holds the disposition role" ], "effects": [ "This model records the decision and the tombstone; it never performs deletion, purge or anonymisation itself", "References from other records to a destroyed record resolve to the tombstone rather than failing opaquely", "Fields excluded from the tombstone do not survive disposition" ], "source_refs": [ "SRC-013", "SRC-014" ] } ], "composition": [ { "target": "Observable Property / Quantity Kind Registry (candidate sibling model; not yet registered)", "relation": "REFERENCE", "purpose": "Resolve the single observable property term and its underlying quantity kind that the observation determines. This model carries the pinned term reference, vocabulary version and the observation-specific method-dependence flag only; term definition, dimensioning, deprecation and mapping maintenance remain in the registry.", "required": true, "source_refs": [ "SRC-002", "SRC-003", "SRC-010" ] }, { "target": "Observing Procedure / Test Method Specification (candidate sibling model; not yet registered)", "relation": "REFERENCE", "purpose": "Pin the procedure and version executed, plus execution-specific parameters and any recorded deviation pointer. Method authoring, validation studies, approval and withdrawal are owned by the procedure model and are not reproduced here.", "required": true, "source_refs": [ "SRC-002", "SRC-003" ] }, { "target": "Feature of Interest entity models (site, station, material, subject; candidate siblings)", "relation": "REFERENCE", "purpose": "Name the ultimate feature the result is about and, where indirect, the proximate feature. Feature identity, geometry history, renaming, merging and lifecycle stay with the entity model; this model records the reference and the representativeness basis.", "required": true, "source_refs": [ "SRC-001", "SRC-002", "SRC-003" ] }, { "target": "Unit of Measure Registry (UCUM, SI, QUDT bindings; candidate sibling model)", "relation": "REFERENCE", "purpose": "Bind the result unit by naming both code system and code, and record any conversion applied. Unit definitions, conversion multipliers, offsets and dimensional vectors are owned by the registry; the link is required only when the result is a quantity.", "required": false, "source_refs": [ "SRC-008", "SRC-009", "SRC-010" ] }, { "target": "Sample / Specimen Record (candidate sibling model; not yet registered)", "relation": "REFERENCE", "purpose": "Reference the sample observed, its position in the sub-sampling chain and the preparation state effective at the observation instant. Sample collection, preparation execution, custody and disposal lifecycles remain outside this model.", "required": false, "source_refs": [ "SRC-001", "SRC-002", "SRC-011" ] }, { "target": "Observer / Instrument Asset and Deployment (candidate sibling model)", "relation": "REFERENCE", "purpose": "Reference the observer, host and deployment in force at the act, and the declared system capability with its validity context. Asset registration, maintenance, firmware and deployment scheduling are owned by the asset model.", "required": false, "source_refs": [ "SRC-002", "SRC-003" ] }, { "target": "Calibration and Metrological Traceability Record (candidate sibling model)", "relation": "REFERENCE", "purpose": "Record which calibration and reference materials were in force and whether the traceability chain is unbroken. Calibration issuance, validity determination, renewal and revocation belong to the calibration model; no certificate content is copied here.", "required": false, "source_refs": [ "SRC-008", "SRC-012" ] }, { "target": "Quality-Control Procedure and Evaluation Service (candidate sibling model)", "relation": "REFERENCE", "purpose": "Carry the flag value, the identifier of the test that produced it and the assigning agent. Rule authoring, threshold configuration, execution, re-evaluation and enforcement are owned entirely by the quality-control model; this model records outcomes only.", "required": false, "source_refs": [ "SRC-004", "SRC-015" ] }, { "target": "Electronic Records and Audit Trail (candidate sibling model)", "relation": "REFERENCE", "purpose": "Provide linkage from a record and its status transitions to the audit entries and signatures that independently attest to them. Audit capture, tamper-evidence, signature binding and audit query remain wholly outside this model.", "required": false, "source_refs": [ "SRC-013" ] }, { "target": "Retention and Disposition Policy of the adopting Dimension", "relation": "REFERENCE", "purpose": "Bind every record, payload and original acquisition record to a governing retention policy and record the resulting disposition decision and tombstone. Policy authoring, legal-hold determination and physical destruction are executed under the adopting Dimension's policy, not here.", "required": true, "source_refs": [ "SRC-013", "SRC-014" ] }, { "target": "Observation Collection / Datastream / Time Series aggregate (candidate sibling model)", "relation": "REFERENCE", "purpose": "Declare membership and record the effective inherited defaults such as unit, observation type and interpolation type. The aggregate owns its own identity, extent, completeness accounting and publication lifecycle.", "required": false, "source_refs": [ "SRC-004", "SRC-005", "SRC-014" ] }, { "target": "Dataset Catalogue publication model aligned to W3C DCAT 3", "relation": "ALIGN", "purpose": "Align record-level access rights, licence and versioning vocabulary with catalogue-level DCAT terms so that observations aggregate cleanly into published datasets. Catalogue entries, distributions, data services and publication workflow are not modelled here.", "required": false, "source_refs": [ "SRC-014" ] }, { "target": "OGC Abstract Specification Topic 20 / ISO 19156:2023 Observations, Measurements and Samples", "relation": "ALIGN", "purpose": "Declare structural alignment to the OMS conceptual schema for Observation, ObservableProperty, Observer, ObservingProcedure, Deployment and Sample. Alignment is asserted, not certified; conformance requires testing against the published requirements classes.", "required": false, "source_refs": [ "SRC-001", "SRC-002" ] }, { "target": "W3C/OGC SOSA/SSN Semantic Sensor Network Ontology", "relation": "ALIGN", "purpose": "Declare vocabulary alignment for Observation, Result, FeatureOfInterest, Procedure, Sample and the system-capability and operating-conditions terms, enabling graph projection without adopting SSN's actuation surface.", "required": false, "source_refs": [ "SRC-003" ] }, { "target": "W3C PROV-O provenance vocabulary", "relation": "ALIGN", "purpose": "Align the generation, usage, derivation and attribution statements on the record with the PROV starting-point and qualified terms so provenance is portable. Provenance stores, inference and validation services remain external.", "required": false, "source_refs": [ "SRC-006" ] }, { "target": "HL7 FHIR R5 Observation resource", "relation": "ALIGN", "purpose": "Align status, absence reason, interpretation, reference range, component and member semantics with a widely deployed independent observation model, and record where the mappings are lossy. Clinical workflow, encounter and ordering semantics are excluded.", "required": false, "source_refs": [ "SRC-011" ] }, { "target": "Domain observation profiles (clinical, environmental, geotechnical, materials-testing; candidate descendants)", "relation": "EXTEND", "purpose": "Domain profiles specialise this model by constraining code lists, adding domain-mandatory parameters and tightening cardinalities. They must not restate generic identity, versioning, temporal, provenance or retention machinery, which this model already owns.", "required": false, "source_refs": [ "SRC-001", "SRC-004", "SRC-011" ] } ], "serviceLayers": { "dimension": { "owner_package_requirements": [ "The adopting Dimension must nominate a single master system of record for observation identifiers and declare it before any record is registered; where several producing systems exist, the mapping from producing system to master identifier must be published, not inferred.", "The Dimension must bind, per observation programme, the governing retention policy, the applicable data-integrity regime and the accepted unit code system and version, since none of these can be defaulted safely across regions or sectors.", "The Dimension must declare which external registries are authoritative for observable properties, procedures, features of interest, units and quality-control tests, and must record the version pinned at the time of each observation rather than resolving against a moving target.", "The Dimension must define the lifecycle status code list and its permitted transitions, including whether provisional real-time values are retained alongside reviewed values, before enabling amendment or supersession.", "The Dimension must state whether it operates under an accreditation or regulatory regime that imposes uncertainty reporting, decision-rule disclosure or audit-trail duties, and must name the responsible authority." ], "namespace_guidance": "Use one namespace per adopting Dimension for locally minted surrogate identifiers, kept clearly separate from the namespaces of the master systems and external registries the model references. Never mint a local identifier inside a namespace governed by another authority, and never rewrite an external identifier to fit a local pattern. Where a governed IRI exists for a referenced concept, carry it verbatim alongside any local key. Namespace segments must be stable and free of dates, environment names or version numbers, so that a record exported from one deployment resolves identically in another.", "registry_links": [ "Unit code registries: UCUM code system with its version, and QUDT unit and quantity-kind vocabularies where dimensional reasoning is required.", "Observable property and quantity-kind vocabularies nominated by the Dimension, with the version pinned per observation.", "Observing procedure and test-method registers, including the version executed and the verification scope in force.", "Quality-control test registers and their flag code lists, such as programme-specific test suites and their published flag conventions.", "Coordinate reference system and vertical datum registers for any geometry carried on the record.", "Organisation, agent and contact directories used for ownership, attribution and responsible-contact references." ] }, "canon_and_patch": { "canonicalization_rules": [ "The canonical form of a record is the format-neutral element set defined by this model; any JSON, XML, RDF, tabular or document projection is derived and must not be treated as authoritative.", "All timestamps are canonicalised to RFC 3339 with seconds present and an explicit offset; a value whose offset is genuinely unknown uses the -00:00 convention rather than being coerced to Z.", "Numeric result values are stored at the resolution actually determined; display rounding is applied at projection time and never written back into the stored value.", "Unit codes are canonicalised as the pair (code system identifier and version, code string) using the case-sensitive form where the code system distinguishes case; a bare unit string without its code system is not canonical.", "References are canonicalised to the identifier plus the scheme that governs it; a dereferenceable URL may be carried in addition but never replaces the identifier.", "Ordered collections such as result components and payload parts are canonicalised with an explicit zero-based index; ordering must not depend on serialisation order." ], "patch_rules": [ "A released record is patched by creating a new version, never by mutating the released version in place; the prior version remains retrievable.", "Every patch names the changed elements, the change reason, the change classification and the authorising agent; a patch without a reason is rejected.", "A patch may not alter the original acquisition record, the ingestion time or the identity of the observation act.", "Changing the observable property, the observing procedure or the ultimate feature of interest is not a patch: it produces a new observation record, because the measurand is no longer the same.", "Adding a later quality flag or a later interpretation is an additive patch that must not remove or overwrite the earlier flag or interpretation.", "Replacing a surrogate identifier with a newly available authoritative identifier is an additive patch that retains the surrogate as an alternate identifier." ], "compatibility_rules": [ "Adding an optional element, an alternate identifier scheme or a new alignment declaration is backward compatible.", "Tightening a cardinality, narrowing a code list or making an optional element required is breaking and requires a new model version and a migration statement.", "Changing the meaning of an existing element, including redefining a status code or a flag value, is breaking even when the element name is unchanged.", "A domain profile may constrain but may not relax this model's required elements, and may not redefine phenomenon time, result time or ingestion time.", "Alignment to an external standard may be added or revised without breaking this model, provided existing mapping-loss notes are retained rather than silently corrected.", "Deprecated elements are retained for at least one full model version with an explicit deprecation marker and a stated replacement." ] }, "artifact_rules": { "identity_priority": [ "Authoritative master-system identifier issued by the declared system of record for the observation, such as a laboratory information management system result key, an observing service observation key or a clinical result identifier; this identifier takes precedence whenever it exists and must be carried verbatim.", "Governed global identifier or IRI issued by a normative registry or namespace, such as a resolvable observation IRI under a governed namespace or a persistent identifier assigned by a recognised data authority, used when no master-system identifier exists.", "UUID or ULID minted by the adopting Dimension, used only when neither of the above exists, recorded with an explicit surrogate marker and its minting namespace so it can be superseded additively once an authoritative identifier appears.", "A phenomenon time, result time, sample number, file name, run sequence or any date value is never an identifier; such values may only participate as qualifying components of an explicitly scoped composite key alongside a real identifier." ], "timestamp_rule": "All time values use RFC 3339 with seconds always present and an explicit offset or Z; a value whose offset is genuinely unknown uses -00:00 rather than being defaulted to UTC, and fractional seconds are recorded only where the producing system genuinely resolves them. Event time and observation or ingestion time are recorded separately and never conflated: phenomenon time is the event time in the observed world, result time is when the result became available, valid time is the interval over which the result is asserted usable, and ingestion time is assigned by the receiving system on capture, is not writable by producers, and is retained even when it differs from result time by an arbitrary latency.", "serial_naming_rule": "Where an artifact belongs to an ordered series — payload parts of a split result, or acquisition records within a run, batch or injection sequence — the series position is recorded as an explicit zero-based integer index within the scope of the parent observation identifier, together with the acquiring or storing system that assigned any native sequence key. The native key is preserved verbatim; the index is a local ordering aid and never replaces it. Series position must not be encoded in file names, and gaps in a sequence are recorded explicitly rather than being renumbered.", "integrity_rule": "Every artifact carries a content digest with the named algorithm, its byte size and its media form, recorded at the moment it is bound to the observation record. The original acquisition record is immutable once bound: corrections create a new record version that references it, never a rewrite. Encoded representations carry the record version and digest they were projected from, so a received representation can be matched to the exact record state that produced it, and a digest mismatch invalidates the representation rather than the record. Verification of digests is performed by the storing platform; this model records the digest and the verification outcome but does not implement the store." }, "policies": [ "Semantics are storage-neutral and interface-neutral. JSON, XML, RDF, Markdown, Git, MCP and MongoDB are projections of the canonical element set; no projection may introduce, remove or rename semantics, and any loss introduced by a projection must be recorded as a mapping-loss note.", "A value is never published without the context needed to interpret it: measurand, unit or explicit dimensionless assertion, temporal frame with offsets, and either a quality statement or an explicit declaration that none was made. Absence and censoring are always expressed by coded reasons, never by nulls, blanks or zeros.", "External standards are treated as alignments, not as conformance claims. Conformance may be asserted only where testing evidence is referenced; otherwise the alignment is marked as asserted and its known conflicts are recorded.", "This model records outcomes it does not compute. Quality evaluation, decision-rule execution, audit-trail capture, notification and physical deletion are performed by the models and platforms that own them; recording a reference to any of these never confers ownership of their behaviour.", "Corrections are additive. Prior values, prior flags and prior interpretations are retained and retrievable; obliteration of a released value is prohibited regardless of the storage technology in use." ], "crud": { "read": [ "Reading a record returns its effective values including those inherited from a container, with inherited values explicitly marked as inherited.", "A read must expose lifecycle status, quality flags and any absence or censoring alongside the value; returning a bare value without them is a defect.", "Reads of restricted or embargoed records return the record's existence, identity and classification but withhold the payload according to the access decision made by the access-policy model.", "Reading a superseded version is permitted and must indicate that a later version exists, with a reference to it.", "Reading a disposed record returns its tombstone rather than a resolution failure." ], "create": [ "A record may be created only with a resolved identity, an observation type, an owning organisation and an initial lifecycle status.", "Creation must capture ingestion time as a system-assigned value that producers cannot supply or override.", "Creation of a record whose measurand context cannot be bound is permitted only in a provisional status that is explicitly marked as not fit for consumption.", "Where the source system supplies no authoritative identifier, a surrogate is minted with an explicit surrogate marker and the minting namespace recorded.", "Bulk creation from a series or stream must preserve per-record provenance; it may not attribute all records to a single synthetic act." ], "update": [ "Released records are never updated in place; an update produces a new version through the amendment or supersession function.", "Additive updates — later flags, later interpretations, newly resolved authoritative identifiers, additional alignment declarations — retain all prior content.", "Updates that change the observable property, procedure or ultimate feature of interest are prohibited; those produce a new observation record.", "Every update records the changed elements, reason, classification, authorising agent and instant with an explicit offset.", "Updates are refused while the record is under a hold that the hold's imposing authority has not lifted." ], "delete": [ "Records are not deleted on request. Disposition occurs only when the retention period bound to the record expires under its governing retention policy and no hold is in force; this model records the decision and its authority, and the adopting Dimension's records policy owns and executes the destruction.", "The retention binding is evaluated separately for the record, its result payload and its original acquisition record, since these may carry different periods; the payload may not be destroyed while a policy still requires the record it belongs to, unless the policy explicitly permits payload-only disposition.", "On disposition a tombstone is retained carrying only the record identifier, the disposition instant with an explicit offset, the retention policy reference and the authorising agent; the result value, payload, subject references and personal data do not survive.", "References from other observation records or collections to a disposed record resolve to the tombstone, so that derivation chains remain honest rather than failing opaquely.", "Where deletion is demanded on a legal ground outside retention — for example an erasure right or a security incident — the determination and its execution are owned by the adopting Dimension's data-protection and records policy and by the storage platform; this model records only the resulting disposition decision and tombstone and never performs, verifies or attests the destruction itself.", "A hold suspends disposition entirely; disposition attempted against an unexpired hold is refused and the refusal is recorded." ] }, "roles": [ { "name": "Observation Record Steward", "responsibilities": [ "Own the completeness and correctness of records within a programme, including identity resolution and binding of mandatory referents.", "Approve amendments and supersessions and ensure change reasons are recorded.", "Resolve duplicate and cross-system correlation questions without silently merging content." ] }, { "name": "Metrology Authority", "responsibilities": [ "Approve the uncertainty statements, coverage parameters and traceability declarations carried on records.", "Confirm that calibrations and reference materials in force at the act are correctly referenced and that chain breaks are disclosed.", "Rule on whether a decision rule and its risk basis may be applied to a class of results." ] }, { "name": "Data Quality Officer", "responsibilities": [ "Define which quality-control test suites apply to a programme and ensure their flag code lists are declared with versions.", "Maintain the flag precedence rule and adjudicate disagreements escalated from records.", "Verify that flags recorded on records carry test, agent and instant attribution." ] }, { "name": "Dimension Registrar", "responsibilities": [ "Declare the master system of record, the surrogate namespace and the pinned versions of external registries.", "Maintain the lifecycle status code list and its permitted transitions.", "Approve model version changes and publish migration statements for breaking changes." ] }, { "name": "Access and Retention Custodian", "responsibilities": [ "Bind records to sensitivity classifications, licences and retention policies.", "Register and lift holds, and authorise disposition decisions.", "Ensure tombstone content is correct and that disposed records no longer expose withheld fields." ] } ], "access": { "default_rule": "Access is denied unless explicitly granted. The default grant for an authenticated consumer is read access to record identity, classification, lifecycle status and alignment declarations; access to the result value, its payload, its subject references and its original acquisition record requires a grant that names the programme and the sensitivity classification. Write access is never a default and is granted per role and per lifecycle transition. All access decisions are made and enforced by the adopting Dimension's access-policy and enforcement models; this model declares the classification and the required grant, and does not evaluate or enforce entitlements.", "scopes": [ "bundle", "layer", "finding", "artifact" ], "exceptions": [ "Records marked as relating to an identifiable person require an additional grant tied to the applicable data-protection regime, and the lawful-basis determination is owned outside this model.", "Embargoed records expose identity, classification and expected release instant only, until the embargo expires or the releasing authority lifts it; derived products inherit the embargo unless the releasing authority states otherwise.", "Records under legal hold are readable by the hold's imposing authority regardless of embargo, and are not disposable.", "Original acquisition records may carry a stricter grant than the derived result, because they can contain operator identities, instrument diagnostics or unredacted context.", "Where a result underpins a published statement of conformity, the decision rule reference and the uncertainty statement must be released with the result even if other elements remain restricted, since a conformity statement is uninterpretable without them.", "Emergency or safety-critical access may bypass the standard grant only where the adopting Dimension has published a break-glass procedure; the bypass is recorded as an access event by the enforcement model." ], "audit_requirements": [ "Every grant, denial and break-glass access must be recorded by the enforcement and audit models with the requesting agent, the scope requested, the decision and the instant with an explicit offset; this model requires that such records exist and be linkable, and does not generate or hold them.", "Every lifecycle transition, amendment, supersession, disposition decision and hold action must be linkable from the record to the corresponding audit entry.", "Projection of a record into an exchange encoding must be traceable to the record version and the producing agent, so that a released representation can be attributed.", "Disposition must leave evidence that the retention policy and authority relied upon were the ones in force at the time of the decision." ] }, "agents_bootstrap": { "filename": "AGENTS.md", "required_fields": [ "Name", "Type", "Specification URL", "Storage type URL", "Interface URL", "Processes URL", "Model identifier and version", "Master system of record and identifier scheme", "Pinned external registry versions (property, procedure, unit, quality-control test)", "Lifecycle status code list and permitted transitions", "Retention policy binding and disposition authority", "Declared alignments with tested-or-asserted markers and known conflicts" ], "read_order": [ "Read AGENTS.md first to learn the model name, type, and the specification, storage type, interface and processes URLs before touching any record.", "Read the specification at the Specification URL to obtain the canonical, format-neutral element set and the required elements for the target profile.", "Read the storage description at the Storage type URL to learn how the canonical elements are projected into the deployed store, and treat that projection as non-authoritative for semantics.", "Read the interface description at the Interface URL to learn the available read and write operations, their scopes and their access requirements.", "Read the processes description at the Processes URL to learn the permitted lifecycle transitions, amendment mechanisms, disposition procedure and escalation routes before performing any write.", "Resolve the pinned external registry versions and the master system of record before binding or interpreting any measurand context." ] } }, "coverage": { "claim": "Covers one observation act and the measurement record documenting it, as enumerated by a single provider: 6 bundles, 13 layers, 29 findings, 115 questions, 3 artifacts and 9 functions spanning identity, measurand binding, result and unit, uncertainty and metrological traceability, temporal frame, geometry and operating conditions, quality flags, lifecycle, provenance, ownership, access, retention and standard alignment. Coverage is claimed only for what is actually enumerated. Alignment is asserted and not tested, the published OMS/ISO 19156:2023 text was not read, and one whole layer (uncertainty, traceability and conformity) is unreachable through the declared function set. This is not a completeness claim over the observation domain.", "confidence": "medium", "checklist": [ { "dimension": "identity", "status": "covered", "notes": "Identity priority names the authoritative master-system identifier first, then a governed global identifier or IRI, then a Dimension-minted UUID or ULID with an explicit surrogate marker. Record identity is separated from the identity of the observation act, and dates, run numbers and file names are explicitly excluded as identifiers. Cross-system correlation and duplicate reconciliation are modelled without silent merging." }, { "dimension": "lifecycle", "status": "covered", "notes": "Status codes, permitted transitions, transition authority and separation of duties are modelled, along with the distinction between provisional real-time and reviewed delayed-mode records. Amendment, supersession and retraction are additive and preserve prior content. FHIR status codes are used as an alignment and counterexample rather than adopted normatively." }, { "dimension": "relationships", "status": "covered", "notes": "Relationships to feature of interest (proximate and ultimate), sample and sampling chain, procedure, observer, host, deployment, source observations, composite parents and members, and containing collections or datastreams are all modelled as typed references with an explicit statement of which model owns each target." }, { "dimension": "temporal", "status": "covered", "notes": "Phenomenon time, result time, valid time and system-assigned ingestion time are separately modelled, each requiring RFC 3339 with seconds and an explicit offset, with the unknown-offset convention stated. Aggregation duration, interpolation type, cumulative flags and sampling regime cover resampling semantics, and clock context covers offset and drift." }, { "dimension": "provenance", "status": "covered", "notes": "Generation, usage and derivation are aligned to PROV-O; processing version and reprocessing history are modelled; the original acquisition record is retained as an immutable artifact bound by digest so a reported value can be traced to what was actually produced." }, { "dimension": "ownership", "status": "covered", "notes": "Owning organisation, attributed agents with delegation, per-part authoritative source mapping and responsible contact are modelled as references to directory models. The WIGOS practice of different organisations being authoritative for different metadata categories is reflected in the authority mapping." }, { "dimension": "validation", "status": "covered", "notes": "Dimensional consistency between property, quantity kind and unit; declared-type versus payload conformance; acceptance criteria and supporting controls, blanks, spikes and replicates; method verification scope; and an interpretability assessment for standalone extraction. Validation findings are reported, never silently repaired." }, { "dimension": "access", "status": "covered", "notes": "Sensitivity classification at record and payload level, access rights and licence, personal-data indicator, embargo with release authority, and a deny-by-default rule scoped to bundle, layer, finding and artifact. Enforcement and entitlement evaluation are explicitly delegated to the access-policy and enforcement models." }, { "dimension": "retention and deletion", "status": "covered", "notes": "Retention policy binding is mandatory and evaluated separately for record, payload and original acquisition record. Holds suspend disposition. Disposition records decision, instant and authority and leaves a tombstone carrying only identifier, instant, policy reference and authority. Execution of destruction and any erasure-right determination are owned by the adopting Dimension's records and data-protection policy and the storage platform." }, { "dimension": "interoperability", "status": "covered", "notes": "Alignments to OMS/ISO 19156, SOSA/SSN, SensorThings, the OGC Timeseries Profile, FHIR R5, PROV-O and DCAT 3 are declared with tested-or-asserted markers, element-level mapping-loss notes and recorded conflicts. Encoding is treated strictly as a projection with a digest binding it to the record version it came from." }, { "dimension": "spatial", "status": "covered", "notes": "Result geometry is distinguished from observer position; coordinate reference system, vertical datum, coordinate epoch and axis-order convention are required alongside any geometry; positional uncertainty and inherited-position risk are modelled. Site and station geometry management remains in the entity models." }, { "dimension": "measurement uncertainty and metrological traceability", "status": "covered", "notes": "Uncertainty kind, value, coverage factor, coverage probability, distribution or effective degrees of freedom, and the evaluating budget reference are modelled, as is a declared omission with its ground. Traceability records the stated reference, the calibration in force, reference materials and any chain break, all by reference to the calibration model." }, { "dimension": "units and quantity semantics", "status": "covered", "notes": "Unit binding requires both code system with version and code, with the case-sensitivity form where relevant; quantity kind is separated from unit for dimensional checking; series-versus-record unit conflicts have a precedence rule; conversions must be recorded with factor, offset, rounding and agent." }, { "dimension": "result absence, censoring and non-numeric results", "status": "covered", "notes": "Coded absence reasons, censoring with direction, bound and limit kind, detection and quantitation limit references, suppression markers, and an explicit prohibition on encoding absence as zero or an unexplained null. Nominal properties without magnitude are distinguished from quantities." }, { "dimension": "quality flagging and data integrity", "status": "covered", "notes": "Flags carry value, code list and version, level, producing test, assigning agent, instant and precedence outcome, with disagreements retained. Original-record immutability, contemporaneous capture and controlled amendment reflect data-integrity expectations. Evaluation, enforcement and audit-trail capture are explicitly excluded." }, { "dimension": "security", "status": "gap", "notes": "Confidentiality classification, embargo and grant requirements are modelled, but cryptographic signature semantics, key management, non-repudiation and integrity attestation beyond a recorded content digest are deliberately left to the electronic-records and platform-security models. No signature scheme is specified here and none should be inferred." } ], "known_omissions": [ "The published normative text of OGC 20-082r4 / ISO 19156:2023 was not read directly: the OGC HTML exceeded the fetch size limit and the ISO catalogue page returned HTTP 403. Class names and property multiplicities are grounded in OGC working feature-catalogue material explicitly marked draft and dated 2021-08-20, and every cardinality claim in this model must be re-verified against the published requirements classes before the model leaves candidate status.", "WMO-No. 1192, the WIGOS Metadata Standard, was verified only through a WMO Information Management team wiki page and not through the publication itself; the ten metadata categories are therefore treated as indicative and not cited as normative structure.", "The JCGM 200 (VIM) and JCGM 100 (GUM) full texts could not be parsed from their PDFs; metrology terms are grounded in the BIPM JCGM publications index and in ILAC guidance that restates the requirements, so individual clause numbers are not cited.", "The QARTOD flag manual PDF could not be parsed; flag semantics are grounded in the IOOS project page and treated as a community convention, not an international standard.", "Domain-specific observation profiles are not modelled: clinical coding systems, INSPIRE profiles, geoscience and geotechnical observation profiles, and remote-sensing product conventions are all left to EXTEND descendants.", "Sensor tasking and actuation, present in SOSA and in SensorThings Part 2, are excluded entirely; a model that must both observe and command will need a sibling actuation model.", "Uncertainty propagation methods, including Monte Carlo propagation and multivariate output quantities, are referenced but not modelled; only the resulting statement is carried.", "Streaming delivery guarantees, event ordering at transport level, back-pressure and API pagination are excluded as interface concerns.", "Cost, effort and instrument-time accounting for an observation are not modelled.", "Multi-language labelling and localisation of codes and statements are not addressed." ], "conflicts": [ "OMS and SOSA expose resultQuality and metadata as open, untyped slots, whereas ILAC guidance and accreditation practice require specific uncertainty content and an identified decision rule. This model carries both and claims conformance to neither.", "SensorThings binds unitOfMeasurement and observationType at Datastream level while OMS and SOSA permit per-observation results; round-tripping between them can either lose per-observation unit information or fabricate it. This is recorded as a mapping-loss case rather than resolved.", "FHIR R5 Observation.effective[x] and issued do not map one-to-one onto phenomenon time, result time and valid time; issued behaves closer to a publication or ingestion time, so a naive mapping silently changes temporal meaning.", "UCUM and QUDT are independent unit systems with overlapping but non-identical identifiers and different treatment of annotations and arbitrary units; a record may need both bindings, and they can disagree.", "QARTOD primary flags, WMO data-quality categories and FHIR interpretation codes are mutually incompatible code lists addressing overlapping concerns; no single flag vocabulary is adopted, and the code list must always be named with its version.", "The OGC working feature catalogue shows most Observation properties as 0..* with constraints requiring exactly one of several key properties, which conflicts with the tighter mandatory cardinalities implied by SensorThings and FHIR. Until the published standard is read, this model states required elements on its own authority and marks the discrepancy.", "PROV-O uses xsd:dateTime, which permits a timestamp without an offset, whereas this model requires an explicit offset under RFC 3339; projections to PROV must not drop the offset." ], "regional_assumptions": [ "MHRA GxP data-integrity expectations are UK-specific and, for GLP facilities, the OECD advisory document takes precedence; equivalent obligations elsewhere differ in detail and the adopting Dimension must bind the applicable regime rather than assuming this one.", "ILAC guidance applies where the laboratory operates under an accreditation body signatory to the ILAC arrangement; observations produced outside accreditation carry no such obligation and their conformity statements have different standing.", "WIGOS metadata expectations apply to WMO member observing programmes; they are used here only as evidence that observational metadata is categorised and multi-authority, not as a universal requirement.", "QARTOD conventions originate in US ocean observing and are not international standards; other regions use different flag schemes.", "Personal-data implications of observations about identifiable people depend entirely on the applicable data-protection regime, which is not assumed; the lawful-basis determination is placed outside this model.", "UCUM is dominant in health informatics while SI symbols and QUDT dominate in engineering and physical sciences; the default unit code system must be declared per Dimension rather than assumed.", "Coordinate reference frames may be dynamic in some jurisdictions, which is why a coordinate epoch is modelled; deployments in static-frame regions may leave it unset." ], "adversarial_checks": [ "Tested whether a unit should be mandatory on every observation. OMS, SOSA and FHIR all admit categorical, boolean and complex results, and VIM distinguishes nominal properties from quantities, so a mandatory unit would be unsupported. Unit binding is therefore conditional on the property being a quantity, with an explicit dimensionless assertion required rather than a silent omission.", "Tested whether recording resultQuality implies ownership of quality evaluation. SensorThings exposes resultQuality as a recorded property and QARTOD publishes test procedures as a separate programme, so the evaluator is demonstrably a different thing from the record. Rule authoring, execution and re-evaluation were moved out of scope and into a REFERENCE link, and the quality function was renamed to record an externally produced outcome.", "Tested whether FHIR Observation.status could serve as a universal lifecycle code list. It is healthcare-scoped and not normative outside FHIR, so the lifecycle is modelled abstractly with the Dimension declaring its own code list, and FHIR is retained only as an alignment with a recorded mapping risk.", "Tested whether phenomenon time and result time could be collapsed into a single timestamp. OMS, SOSA and SensorThings all keep them distinct, and the Timeseries Profile shows aggregation intervals differing from result instants, so collapsing was rejected and a fourth time — system-assigned ingestion time — was added because MHRA-style contemporaneity requires capture time to be independently attested.", "Tested whether an uncertainty budget should be an artifact of the observation record. Budgets are established per method and per matrix, not per result, so holding one here would create a second copy that could diverge from the validated one. The budget was left as a reference to the method model and only the resulting statement is carried.", "Tested whether the model should own deletion. It cannot: retention policy authoring, legal-hold determination and physical destruction all sit with the adopting Dimension and the storage platform. The delete rule was rewritten to record a disposition decision and tombstone and to name the external owner of execution.", "Tested whether declaring an encoded representation as an artifact violates format-neutrality. It does not, provided the encoding is explicitly a projection carrying the record version and digest it was made from and never the source of truth; that constraint was written into the artifact description, the canonicalisation rules and the projection function.", "Searched for a counterexample to the proximate-versus-ultimate feature distinction being necessary. Direct in-situ observation makes them identical, but OMS retains both because indirect observation through a sample is the general case; the proximate reference is therefore optional rather than removed, with a representativeness basis required when the two differ." ] }, "researchAdjudication": { "providerMode": "single-provider-waiver", "activeProviders": [ "claude" ], "waivedProviders": [ "grok" ], "providerPolicy": { "contract_version": "1.0.0", "mode": "single-provider-waiver", "effective_at": "2026-08-29T09:06:27Z", "scope": "Queued subject-model research from WM-XCT-013 onward", "active_providers": [ "claude" ], "waived_providers": [ { "provider": "grok", "authorized_by": "repository owner", "authorized_at": "2026-08-29T09:06:27Z", "reason": "The repository owner explicitly instructed the research queue to continue without Grok after repeated structured-output failures." } ], "review_rule": "Claude-only results require a separate no-tools adversarial audit and remain reviewable drafts with a visible single-provider hold." }, "boundaryDecision": { "entry_kind": "event", "status": "accepted", "rationale": "Two independent axes must not be collapsed. Record plane: the frozen registry value standalone-mm says only that this is a self-standing meta-model record rather than a fragment, mixin or profile of another entry; it classifies the registry row, carries no subject semantics and is not in the schema enum, so it cannot be reused as the subject kind. Subject-model plane: the defensible schema kind is event. OMS/ISO 19156 and SOSA/SSN define an Observation as the execution of an observing procedure, and this result's own rules are act-anchored: a patch may not alter the identity of the observation act, and changing the observable property, procedure or ultimate feature of interest is explicitly not a patch but a new observation because the measurand has changed. That is event identity. The entity reading was tested and rejected: versioning, status transitions, amendment, supersession, retention and access look entity-like, but they govern the documentation of an immutable occurrence, which is exactly what a governed event record needs under a data-integrity regime, and the result already forbids in-place mutation of released content. Aggregate was rejected because the series, datastream and collection are explicitly disclaimed and own their own extent and completeness accounting; relationship was rejected because the record carries result, uncertainty, provenance and lifecycle of its own rather than only binding referents; registry, classifier, mixin and pattern do not fit a single concrete occurrence record. The published draft must state both axes so descendants do not treat the record plane label as a subject kind." }, "decisions": [ { "concept": "Subject-model entry kind: event, against the frozen registry value standalone-mm", "disposition": "accepted (event), dual-axis note mandatory", "rationale": "standalone-mm classifies the registry record plane and is not a schema kind. The subject is the observation act; identity is anchored on the immutable measurand triple of property, procedure and ultimate feature of interest, and the result's own patch rules treat any change to that triple as a new observation rather than a version." }, { "concept": "Splitting into a separate Observation Act (event) and Measurement Record (entity) model", "disposition": "rejected", "rationale": "OMS, SOSA, SensorThings and FHIR all address the act and its record as one thing. A split would create a mandatory one-to-one pair, duplicate identity resolution across both halves, and break the existing rule that a measurand change yields a new record rather than a new version of a shared act." }, { "concept": "Aggregate root scoped to the single observation record, with series, datastream and collection excluded", "disposition": "accepted", "rationale": "Membership is carried as outbound references plus effective inherited values, and the container keeps its own identity, extent and completeness accounting. The SensorThings datastream-level unit and observation-type binding is handled as a recorded mapping-loss case rather than absorbed, which keeps the boundary honest." }, { "concept": "original-acquisition-record claimed as an artifact of one observation record", "disposition": "flagged defect, accepted only with a stated cardinality", "rationale": "The identity strategy names run, batch and injection sequence keys, which routinely span many observations, so the artifact is many-to-one against the record that claims it. The draft must state the sharing cardinality and that immutability enforcement belongs to the electronic-records model, which the same result places out of scope." }, { "concept": "encoded-observation-representation identity strategy", "disposition": "flagged defect, correction required before candidate exit", "rationale": "Parent observation identifier plus encoding and profile identifier plus projected record version does not distinguish two projections of the same version made at different instants by different agents. The projection function already records agent and loss, so agent and instant, or the content digest, must be part of identity rather than adjacent metadata." }, { "concept": "result-payload-object identified locator-first", "disposition": "flagged inconsistency", "rationale": "The artifact identity strategy leads with the payload locator issued by the storing system, while the model's own identity priority states that a file name, run sequence or similar value is never an identifier. Digest plus parent observation identifier plus zero-based part index should lead, with the locator retained as a resolution aid only." }, { "concept": "Uncertainty, traceability and conformity layer has no function", "disposition": "deferred", "rationale": "Three findings and twelve questions covering the model's distinctive metrology value are unreachable through the nine declared functions, and hold, embargo and derivation binding are similarly thin. No function may be added in single-provider mode, so this is carried as deferred research and a visible draft note rather than repaired here." }, { "concept": "access.scopes of bundle, layer, finding and artifact against an element-level default grant", "disposition": "flagged inconsistency, mapping required", "rationale": "The declared scopes are context-structure planes of the model document, while the default rule grants over instance elements such as identity, classification, status, result value, payload, subject references and the acquisition record. Without a stated mapping the deny-by-default rule is not enforceable by the access-policy model it delegates to." }, { "concept": "Unconditional release of decision rule and uncertainty alongside a published conformity statement", "disposition": "accepted with conditioning requirement", "rationale": "The exception is grounded in ILAC guidance, which the same result's regional assumptions limit to laboratories under an ILAC-arrangement accreditation body. Stated unconditionally in access.exceptions it over-claims, so it must be conditioned on the adopting Dimension's declared accreditation or regulatory regime." }, { "concept": "Cardinality grounded in the draft 2021 OGC working feature catalogue rather than published OMS/ISO 19156:2023", "disposition": "accepted as disclosed, publication-held", "rationale": "The anchor source of the entire boundary argument was not read: the OGC HTML exceeded the fetch limit and the ISO catalogue returned 403. The result discloses this and states required elements on its own authority, which is defensible for a draft but must not survive into candidate exit unverified." }, { "concept": "Composite source identifiers SRC-008 (seven JCGM documents) and SRC-012 (two ILAC guides)", "disposition": "flagged for splitting", "rationale": "One source id standing for several distinct publications makes every source_refs entry non-specific and makes the admitted absence of clause-level citation impossible to repair. Splitting into per-document ids is a prerequisite for any later conformance evidence." }, { "concept": "Registry placement under NAV.PHY.MAT.OBS with a WM-MAT identifier prefix", "disposition": "deferred to registry review", "rationale": "The evidence base spans geospatial, clinical, oceanographic and meteorological practice and the model is used as a cross-cutting substrate, which the materials nav path and MAT prefix understate. The registry record is frozen, so this is raised for the registrar rather than changed here." }, { "concept": "Empty frozen relationship contract against eleven asserted neighbour boundaries", "disposition": "publication-held", "rationale": "The result names eleven owning neighbours and describes REFERENCE links to them, while parent_ids, contains_ids, aligned_model_ids and relations_ref are all empty and the contract is an empty array. The ownership boundary is therefore prose-only and unenforced, which the draft must state plainly." }, { "concept": "Tombstone treated as evidence of disposition while destruction is disclaimed", "disposition": "accepted with wording condition", "rationale": "The audit requirement that disposition leave evidence of the policy and authority in force sits close to the disclaimer that this model never verifies or attests destruction. The draft must say the tombstone records a decision, not an erasure attestation, and that a persisted identifier may itself require assessment under the applicable data-protection regime." }, { "concept": "Absence and censoring expressed by coded reasons, never by null, blank or zero, and unit binding conditional rather than mandatory", "disposition": "accepted", "rationale": "Both survived challenge on their own evidence: nominal properties without magnitude and categorical or complex results make a mandatory unit unsupportable, while a censored or absent value silently encoded as zero is the specific failure this rule exists to prevent. The explicit dimensionless assertion closes the silent-omission path." } ], "publicationHolds": [ "Single-provider hold: Grok was waived by the repository owner on 2026-08-29 after repeated structured-output failures, so no independent second-provider review exists. The registry provenance line also credits a prior Claude adversarial audit, and this audit is likewise Claude, so every adversarial pass on this model is same-provider. The draft must carry this on its face and must not be read as cross-provider corroborated.", "Live source and version verification hold: all sixteen source URLs, retrieval dates and version pins must be re-verified before publication, with specific attention to SRC-001 OMS 3.0 / OGC 20-082r4 / ISO 19156:2023, SRC-003 SOSA/SSN 2023 Edition, the SRC-008 JCGM set including the claimed JCGM 100:2008 Amd.1:2026, SRC-009 UCUM 2.2, SRC-010 QUDT 2.1 and the SRC-002 raw GitHub draft catalogue dated 2021-08-20.", "Cardinality hold: the published normative OMS/ISO 19156:2023 requirements classes were never read. Every required-element and multiplicity claim rests on a draft working catalogue marked draft and dated 2021-08-20, and the result itself records a conflict between that catalogue's 0..* properties and the tighter cardinalities implied by SensorThings and FHIR. The model may not leave candidate status until each cardinality is re-verified against the published text.", "Relationship-contract hold: the frozen contract is empty while the result asserts eleven owning neighbours and describes REFERENCE links to sibling models that are not registered. The draft must state that the ownership boundary is currently narrative and unenforced, and no downstream model may rely on those links until the contract is populated.", "Artifact-identity hold: the encoded-observation-representation identity strategy cannot distinguish repeated projections of the same record version by different agents, the result-payload-object identity contradicts the model's own rule that a locator or file name is never an identifier, and the original-acquisition-record is many-to-one against the observations that claim it. These three defects must be corrected or explicitly disclosed in the published draft.", "Entry-kind hold: the frozen registry carries entry_kind standalone-mm, which classifies the record plane only. Publication must state the subject-model kind as event alongside the record-plane value, so that no consumer treats standalone-mm as a semantic classification of the observation itself.", "Independent second-provider review was explicitly waived by the repository owner; this Claude-only result remains a reviewable draft." ], "deferredResearch": [ "Obtain and read the published OGC 20-082r4 / ISO 19156:2023 requirements classes directly, then re-derive every required element and multiplicity in this model against them and retire the 2021 draft feature catalogue as the cardinality basis.", "Split the composite source identifiers into one id per publication (JCGM 100, 101, 102, 106, 200, GUM-1, GUM-6; ILAC-G8 and ILAC-G17 separately), obtain parseable texts of GUM and VIM, and re-attach clause-level citations to the uncertainty, measurand and traceability findings.", "Design an uncertainty, traceability and conformity function for the next revision so that the whole layer is reachable through the function set, together with functions for identifier resolution and duplicate reconciliation, provenance and derivation binding, and access classification, embargo and hold registration.", "Verify WMO-No. 1192 WIGOS Metadata Standard and the QARTOD flag manual from their publications rather than a wiki page and a programme landing page, and re-assess the findings that currently lean on SRC-015 and SRC-016 as one of only three or four refs.", "Refer the registry placement to the Dimension Registrar: NAV.PHY.MAT.OBS, the PHY.MAT.OBS domain tags, the WM-MAT identifier prefix and the 0.00 robotics factor all understate a model whose evidence spans geospatial, clinical, oceanographic and meteorological practice and whose SOSA grounding is sensor-centric.", "Resolve whether measurement uncertainty is taken into account in the conformity decision (guard-band treatment under ILAC-G8) needs its own question, since the current interp-decision-rule and interp-risk-basis pair records the rule and the accepted risk but not how uncertainty entered the judgement.", "Populate the relationship contract with the eleven asserted neighbours, assigning link types and stating which side owns each referent, so the ownership boundary becomes machine-checkable rather than prose." ] }, "statistics": { "sources": 16, "bundles": 6, "layers": 13, "findings": 29, "questions": 115, "artifacts": 3, "functions": 9 } }