An official website of the Disclosure Foundation
1RecordsThe unit of record2ObservablesDetection3OriginsClassification4ClaimsAttribution5ScoringEvaluation6InstrumentsThe instrument layer
DocsOnboardChangelog

The Standard

1RecordsThe unit of record2ObservablesDetection3OriginsClassification4ClaimsAttribution5ScoringEvaluation6InstrumentsThe instrument layer

Docs

Implement the standard

Onboard

Bring your dataset

Changelog

What changed, and when

GitHub

Open standards and tools for UAP research.

The Standard

  • Records
  • Observables
  • Origins
  • Claims
  • Scoring
  • Instruments

Resources

  • Documentation
  • Onboard your data
  • Changelog

Project

  • GitHub
  • Disclosure Foundation
  • Donate

© 2026 Disclosure Foundation. All rights reserved.

Dataset onboarding

Bring your dataset

Have CSV, JSON, or database rows? This workspace walks you through converting your data into valid DisclosureOS records: find the right fields, validate your output, and see exactly what is missing.

30 target fields|226 completeness paths|Migration guide
01

Audit your source data

Understand which fields are always present, how dates are encoded, whether coordinates are real GPS fixes, and what the source's own id scheme is.

Migration guide
02

Write a row mapper

One function from your source row to an Observation. Guard every enum boundary, use stable source-prefixed ids, and carry the raw row in extensions.

Mapper pattern
03

Validate your output

Run validation on the generated JSON files. Use --json for scripted workflows and CI.

npx @disclosureos/cli validate ./out --recursive
04

Check completeness

See which fields are missing and what percentage of the standard your records cover. The missing-fields list tells you what to target next.

npx @disclosureos/cli completeness ./out --recursive
05

Fix and iterate

Update your mapper, re-export, re-validate. Quarantine failures instead of dropping them. Do not fabricate observable or origin claims from keywords.

Fix loop

Runnable examples

Three complete, type-checked examples you can run locally:

pnpm --filter @disclosureos/examples golden-path

Author one record through every layer (Nimitz case).

pnpm --filter @disclosureos/examples migration-path

Convert three source rows, quarantine failures, validate, and score completeness.

pnpm --filter @disclosureos/examples migration-csv-path

Parse CSV rows, guard empty strings, map fields, and run the same validation loop.