v2 Beta · Integration preview
A complete synthetic measurement
Run the published binding evaluator on documents and actual local bytes.
This example follows a synthetic radial-velocity measurement through its source assertion, declared reduction, raw product, captured channel and instrument configuration. All values, identities, calibration declarations and files are synthetic. It contains no ELDÆON data.
Download the complete example. The archive includes four JSON documents, three small artifacts, a pinned package dependency and run.mjs.
Run the check
Unzip the download, open its measurement folder, and use Node.js 22 or newer:
npm install
npm startThe script reads the supplied documents and local bytes, then calls evaluateMeasurementBindings from @disclosureos/schema/experimental/v2. No provider URLs are fetched by the evaluator.
Expected output:
{
"success": true,
"checks": {
"structural": "passed",
"semantic": "passed",
"profile": "passed",
"external": "not_checked"
},
"scientific": "not_checked",
"clockUncertainty": "not_checked",
"artifactContents": "not_checked"
}Follow the same reading across four documents
| File | What to inspect |
|---|---|
| history.json | observation.measurements[0] declares −3 m/s. Its source is assertion:velocity, which points to product:summary; the declared reduction traces that product to product:raw. |
| context.json | product:captured-raw belongs to acquisition:a1, which pins the instrument configuration and captures channel radar. |
| bindings.json | Connects source:station to instrument:station, and observation product:raw to context product:captured-raw. |
| measurements.json | Connects measurement:velocity to that raw product, channel radar and the explicit instant 2026-07-28T12:10:00Z. |
The channel and measurement both declare radial velocity and m/s. Measurement time falls at the start of the one-minute capture interval. The raw-product, manifest and calibration-report files match their declared byte lengths and hashes.
The history also contains synthetic source and assessment claims. Those are attributed declarations; their outcomes are not conclusions established by the binding evaluator. The calibration review remains unreviewed, and the reduction has not been reproduced.
Try two informative failures
- In
run.mjs, omit the final{ assets }argument. An otherwise eligible profile becomesnot_checkedbecause required artifact bytes were not supplied. The script exits unsuccessfully and prints diagnostics. - Restore that argument, then alter
assets/product-captured-raw.txtwithout changing the metadata. The supplied bytes no longer match their declarations and verification fails.
This demonstrates the difference between missing information and contradictory supplied information. Neither state is a scientific judgment about a real observation.
Use this pattern with a provider
Replace the synthetic material with an agreed sample from one real capture. Preserve native bytes, identifiers, units, time semantics and configuration references. Do not fabricate missing calibration, clock or location context to get a passing result.
A useful first ELDÆON integration will exercise this path on a small native sample before expanding to the full archive. The ELDÆON public preview remains separate from this example and from a validated native-data integration.
Source and implementation
The four documents and three artifacts are copied unchanged from the canonical synthetic example, under its MIT license. The portal adds the runnable wrapper and dependency pin. Read the script.
Continue with Records, Instruments or binding rules and limitations.