An official website of the Disclosure Foundation

Introduction

Overview

Modules

ObservationShared PrimitivesExtension SlotsCompanions

Guides

Composing an ObservationValidating at Boundaries

Companions

Constants, guards, factories, formatters, and labels for the record lexicon

Every vocabulary in the lexicon ships companions — at minimum a constants array and a type guard, plus labels and formatters where the values surface in a UI. This page is the reference for what records provides and where.

Subpaths

SubpathContents
@disclosureos/records/constantsValue arrays: SOURCE_TYPES, TIMES_OF_DAY, SITE_TYPES, OBJECT_SHAPES, ...
@disclosureos/records/guardsType guards: isSourceType, isTimeOfDay, isObjectShape, ...
@disclosureos/records/factoriescreateObservation, createTemporalData, createMediaAttachment, createSensorReading
@disclosureos/records/formattersformatTemporalData, formatFuzzyDate, formatDateRange, formatSourceType, ...
@disclosureos/records/labelsDisplay maps: SOURCE_TYPE_LABELS, TIME_OF_DAY_LABELS, OBJECT_SHAPE_LABELS, ...
@disclosureos/records/validatorsvalidateObservation, isValidLatitude, isValidLongitude, isValidISODate

Everything is also re-exported from the package barrel.

Constants and guards

Constants are derived directly from the Zod schemas (Schema.options), so they can never drift from the types. Guards are built with makeGuard(Schema) — they narrow unknown to the schema's type:

import { SOURCE_CREDIBILITIES } from '@disclosureos/records/constants';
import { isSourceCredibility } from '@disclosureos/records/guards';

SOURCE_CREDIBILITIES;
// ['official', 'verified', 'credible', 'unverified', 'questionable', 'disputed', 'unknown']

if (isSourceCredibility(input)) {
  // input: SourceCredibility
}

Covered vocabularies include source types and credibility, temporal certainty, date granularity and range types, time of day, media types, site/terrain types, airspace classes, location sensitivity, coordinate precision, object shapes, maneuver types, relation kinds, confidence levels, and publication status.

Factories

Factories fill defaults, generate ids, and parse on construction — they throw on invalid input and their return values are guaranteed valid:

import {
  createObservation,
  createTemporalData,
  createMediaAttachment,
  createSensorReading,
} from '@disclosureos/records/factories';

const temporal = createTemporalData('2004-11-14', 'exact', { durationSeconds: 300 });

const photo = createMediaAttachment('image', 'https://example.org/frame.png');
// photo.id auto-generated — citable via evidenceRef('media', photo.id)

const radar = createSensorReading('shipborne_radar', 'radar_phased_array');
// radar.id auto-generated — citable via evidenceRef('sensor', radar.id)

createMediaAttachment and createSensorReading auto-generate stable ids precisely so that claims can cite them.

Formatters and labels

Formatters turn structured values into prose; labels map enum values to display names:

import { formatTemporalData, formatFuzzyDate } from '@disclosureos/records/formatters';
import { OBJECT_SHAPE_LABELS } from '@disclosureos/records/labels';

formatTemporalData({ date: '2004-11-14', dateCertainty: 'approximate' });
// "2004-11-14 [Approximate]"

formatFuzzyDate({ value: '1947-07', granularity: 'month', certainty: 'approximate' });
// "July 1947"

OBJECT_SHAPE_LABELS['tic_tac']; // "Tic Tac"

The temporal formatters understand the full fuzzy-date model — exact dates, ranges, granularities, and relative dates — so UIs never reimplement date display logic.

Validators

import {
  validateObservation,
  isValidLatitude,
  isValidLongitude,
  isValidISODate,
} from '@disclosureos/records/validators';

validateObservation is the package's record-level validator — see Validating at Boundaries for usage patterns and the strip hazard.

Extension Slots

Provenance, identifiers, testimony, physical evidence, and documents — the forensic surfaces

Composing an Observation

Build a complete record step by step — from minimal facts to citable evidence

On this page

Subpaths
Constants and guards
Factories
Formatters and labels
Validators