An official website of the Disclosure Foundation
Datasets
Meet DisclosureOS v2Install the betaObservation recordsEvent and settingInstruments and acquisitionConnect measurements to instrumentsA complete synthetic measurementClaims and interpretationsTestimony and recorded accountsDocuments and provenancePhysical samples and custodyRun the provenance examplesAssessment and reviewPrepare a dataset contribution

v2 Beta · Integration preview

Observation records

Represent what is known, unknown and sourced.

An observation is the factual record. It keeps original sources, alternative assertions, measured values and declared processing together. Interpretations belong in a separate claim history.

Explore every observation field, including nested alternatives and constraints, directly from the published beta schema.

How the record fits together

PartPurpose
Identity and lifecycleIdentify the record and distinguish creation/update times from event time.
Event time and positionPreserve known, approximate, unknown or redacted values.
Sources and productsInventory the underlying documents, testimony, instrument data and raw or derived products.
Methods and framesDeclare processing methods, versions and coordinate references.
AssertionsRetain source-specific values and their exact locators.
MeasurementsRecord a quantity, value, unit, uncertainty and supporting references.
ProcessingDeclare inputs, outputs, method, actor and time for each processing activity.

Required inventory arrays can be empty. That permits a partial archival record without invented data. It does not mean that the record meets a research profile.

Start with an honest draft

This synthetic draft has no event time, location or measurements. The document contract version is 0.1.0; the npm release containing it is 2.0.0-beta.3.

import { parseExperimentalObservation } from "@disclosureos/records/experimental/v2";
const result = parseExperimentalObservation({
  kind: "observation",
  schemaVersion: "0.1.0",
  id: "synthetic-example",
  status: "draft",
  createdAt: "2026-09-08T00:00:00Z",
  updatedAt: "2026-09-08T00:00:00Z",
  eventTime: { state: "unknown", reason: "not_recorded" },
  position: { state: "unknown", reason: "not_collected" },
  sources: [],
  products: [],
  methods: [],
  frames: [],
  assertions: [],
  measurements: [],
  processing: [],
});
console.log(result.success, result.checks);

Expected: success: true, with structural and semantic checks passed. Profile and external checks remain not_checked. Inspect a draft in your browser.

Preserve time, position and uncertainty

A known or approximate value carries supporting references. Approximate values also declare precision. Unknown and redacted values carry a reason; they are not zeroes or empty strings.

A measured quantity has a signed value, a unit and an uncertainty object. Uncertainty can be unknown, standard, expanded or bound. Expanded uncertainty requires a positive coverage factor; it does not infer a coverage probability. Quantity and uncertainty units must match exactly. The parser does not convert units or certify their physical meaning.

Position declarations retain coordinate frames. Geographic angles use degrees; metric position uncertainty must not be silently rewritten as angular uncertainty. A geodetic altitude needs a vertical-reference declaration with a matching unit. An unknown frame definition stays unknown.

Keep alternatives and selections visible

Assertions retain their source locator and can retain original-author and extractor identities. If a current value cites a local assertion, it needs an explicit selection: who selected it, when, by which method and version, which inputs were considered, and why. The selected value must be copied exactly.

You can preserve several assertions while leaving the current value unknown. The parser does not average competing values or choose an interpretation.

Trace product lineage

Raw products identify their sources. Derived products identify their producing activity. Processing inputs and outputs must resolve consistently in both directions, and local cycles fail validation. A declared processing step does not prove that its output was reproduced.

Normative objects reject unexpected fields. Namespaced extensions can preserve additional JSON, but the core does not validate its meaning. Access labels and redacted fields do not automatically remove sensitive information elsewhere in a document; publication requires a separate review.

Read diagnostics before using the data

parseExperimentalObservation checks structure and local semantics without network access. Structural failure leaves dependent semantic checks not_checked. Diagnostics include codes, severity and JSON Pointers; uncheckedRefs identifies declarations whose underlying content or meaning has not been checked.

A JSON Schema validator can check document structure. Local reference resolution, temporal ordering, selections, unit consistency and processing lineage require the parser or an equivalent semantic implementation.

Obtain the JSON Schema through @disclosureos/records/experimental/v2/observation/schema. Its identifier is urn:disclosureos:experimental:observation:0.1.0.

Continue with instrument context, or run the complete synthetic measurement example.

Supporting research material

An observation may be supported by recorded testimony, released documents or collected specimens. Witness and document entities retain detailed, sourced declarations linked to exact observation snapshots and claim histories. Separate selection contracts cover source provenance and physical custody checks. Broader material descriptions and laboratory analysis remain forthcoming.

Event and setting

Use sourced context for event descriptors, reported objects, places, platforms, environmental conditions, historical time and collection details. Quantities link to existing measurements. Explore its fields.

Witnesses and recorded accounts

The Testimony reference connects a public witness to distinct accounts, recording context and sourced qualifications. Research-entities 0.1.0 supplies these declarations alongside the observation. Attributed reviews use claim-history 0.3.0. Explore the nested fields or run the worked example.

Install the beta

Use exact versions for a reproducible integration.

Event and setting

Sourced context and precise claim references in the v2 beta.

On this page

How the record fits together
Start with an honest draft
Preserve time, position and uncertainty
Keep alternatives and selections visible
Trace product lineage
Read diagnostics before using the data
Supporting research material
Event and setting
Witnesses and recorded accounts