An official website of the Disclosure Foundation

Introduction

Overview

Modules

TaxonomyClassificationReference Systems

Guides

Claiming Origins

Classification

OriginClaim, hypothesis weights, and confidence distributions

Classification is how an evaluator's judgment about origin attaches to a record. The types model the two axes of disagreement separately: alternatives within one evaluator's claim, and competing claims between evaluators.

OriginClaim

One evaluator's verdict — the shared Claim envelope plus the hypothesis fields:

interface OriginClaim {
  primaryHypothesis: string;                  // OCS node id, e.g. '1.1.3'
  confidence: number;                         // [0, 1] — confidence in the primary
  alternativeHypotheses?: HypothesisWeight[]; // also-entertained, weighted
  rationale?: string;
  evaluatedBy?: string;
  evaluatedAt?: string;
  evidenceRefs?: string[];
}

interface HypothesisWeight {
  nodeId: string;       // OCS node id
  confidence: number;   // [0, 1]
  label?: string;       // display convenience
}

Build with the factory — it asserts every node id exists in the taxonomy and parses confidence ranges:

import { createOriginClaim } from '@disclosureos/origins';

const claim = createOriginClaim('1.1.3', 0.4, {
  rationale: 'Performance exceeds known aerospace capability; cannot exclude advanced terrestrial program.',
  alternativeHypotheses: [
    { nodeId: '1.1.1.2.1', confidence: 0.25, label: 'Classified U.S. program' },
    { nodeId: '2.2.1', confidence: 0.1, label: 'Misinterpretation' },
  ],
  evidenceRefs: ['sensor:princeton-spy1-radar'],
  evaluatedBy: 'example-institution',
});

createOriginClaim('9.9.9', 0.5); // throws: Unknown OCS node ID

Confidences within a claim need not sum to 1 — the gap is honest unresolved uncertainty.

The origin slot

A flat array of claims. Push, never replace:

observation.origin = [claimFromInstitutionA, claimFromInstitutionB];

Institution A says 1.1.3 at 0.4; Institution B says 2.1.5 (hoax) at 0.7. Both stand, attributed and evidence-linked. Compellingness scoring reads the spread and flags the case contested — which is exactly what a reader should know.

ConfidenceDistribution

For analyses that assign confidence across many hypotheses explicitly, with the remainder tracked:

import { createConfidenceDistribution } from '@disclosureos/origins';

const dist = createConfidenceDistribution([
  { nodeId: '1.1.1.1.2', confidence: 0.5, label: 'Celestial' },
  { nodeId: '1.1.1.2.4', confidence: 0.3, label: 'Private/commercial craft' },
]);
// dist.unresolved === 0.2 — computed, the distribution always accounts for 1.0

CategoryConfidence

A simplified eight-bucket distribution for quick, coarse classification — useful for triage UIs and bulk imports before detailed analysis:

interface CategoryConfidence {
  conventional: number;       // OCS 1.1.1
  cryptoterrestrial: number;  // OCS 1.1.2
  extraterrestrial: number;   // OCS 1.1.3
  extradimensional: number;   // OCS 1.2
  interdimensional: number;   // OCS 1.3
  psychosocial: number;       // OCS 2
  metaphysical: number;       // OCS 3
  insufficientData: number;   // cannot classify
}

insufficientData is a first-class answer. Most honest triage of historical records lands there.

Validation

import { validateOriginClassification, isOriginClaim } from '@disclosureos/origins';

const issues = validateOriginClassification(observation.origin); // ValidationIssue[]

For the whole enriched record, use parseEnrichedObservation.

Taxonomy

The OCS tree — node anatomy, the three domains, and the traversal API

Reference Systems

Hynek, Vallée, AARO, and GEIPAN — institutional classification systems for historical interop

On this page

OriginClaim
The origin slot
ConfidenceDistribution
CategoryConfidence
Validation