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

Physical samples and custody

Connect collected specimens to the records describing their custody.

A specimen is a physical object, distinct from a file or measurement. This workflow checks selected collected-specimen declarations, their supplied handoff sequence and the exact bytes of cited records.

Explore the physical-sample structure, or run the synthetic examples.

Describe the selection

FieldMeaning
idLocal specimen declaration ID; not proof of physical identity.
lineageCollected specimen, derived sample, mixture or unknown. Only collected specimens are within this profile's scope.
labelKnown recorded label, or an explicit unknown reason.
collectionDeclared collector and source-record reference, or unknown context.
custodyDocumented ordered handoffs, or explicitly unknown custody.
currentCustodianDeclared holder and source-record reference, or unknown context.
catalogIdentifierOptional existing external identifier; do not invent one to satisfy a recommendation.

Derived samples and mixtures are representable declarations but fail this selected profile's applicability. Do not relabel processed material to obtain a pass. Splitting, mixing and destructive-analysis lineage need further contracts.

Run the published evaluator

Run this from the extracted example folder, after installing its pinned dependency:

import { readFileSync } from "node:fs";
import { evaluatePhysicalSamples } from "@disclosureos/schema/experimental/v2";
const read = (name: string) => readFileSync(`physical-samples/${name}`);
const result = await evaluatePhysicalSamples(
  JSON.parse(read("history.json").toString("utf8")),
  JSON.parse(read("selection.json").toString("utf8")),
  { assets: new Map([["source:report", new Uint8Array(read("custody.txt"))]]) },
);
console.log(result.samples, result.checks, result.custodyAuthenticity);

The JSON Schema export is @disclosureos/schema/experimental/v2/physical-samples/schema, with identifier urn:disclosureos:experimental:physical-sample-selection:0.1.0.

What custody continuity means here

Each handoff declares an ID, from, to and recordRef. The first sender must match the collector, subsequent senders must match the preceding recipient, and the final recipient must match the current custodian. Matching uses exact strings. Self-transfers fail; a return through connected handoffs is permitted.

A documented empty transfer list declares no handoffs and can pass when collector and current holder agree. It must not replace missing history: use unknown custody for that. With incomplete endpoints, a conflict-free sequence remains unchecked.

No transfer timestamps are modeled here. Ordered declarations do not establish chronology, actual possession or completeness. Collection time and place must not be inferred from observation metadata.

Check the records, preserve the limits

Each cited record must resolve to a source in the history and declare SHA-256. Supply the nonempty local bytes under the source reference. Reusing a record does not create independent corroboration. The evaluator neither fetches URLs nor reads the record to determine whether it truly describes the named specimen or holder.

Missing required declarations, conflicting handoffs and mismatching bytes fail. Unavailable bytes leave an otherwise eligible profile unchecked. The result preserves per-sample requirements, reasons, blocked prerequisites and next actions.

external: passed means cited record bytes match their declared digests. Specimen identity, collection/custody authenticity, custody chronology/completeness, record contents, contamination control, composition, origin, redistribution rights, assessment support and scientific eligibility remain unchecked.

Remaining material coverage

Broader material and trace categories, collection/storage metadata, laboratory methods/results, report relationships and derived-sample lineage remain incomplete. This workflow is not the complete physical-material domain or a forensic certification. Its cited records and access labels also do not create an automatic public projection.

Documents and provenance

Preserve exact editions, release history, digital custody and attributable reviews.

Run the provenance examples

Check synthetic documents, testimony and physical-sample records with the published beta.

On this page

Describe the selection
Run the published evaluator
What custody continuity means here
Check the records, preserve the limits
Remaining material coverage