# Meridian mixed recordings, revision 1

Entirely synthetic, independently authored sources for the first mixed workspace. No ELDÆON data is included. The original Meridian CSV files, documents and canonical validation receipt remain unchanged.

Four panels expose five instruments: visible camera, thermal camera A, spectrum receiver, and two separately identified environmental meters. The remaining field-study and instrument-bench entries in the approved coverage map remain outstanding.

## Reproduce

From this repository, run `node apps/disclosureos/examples/meridian/recordings/build.mjs --write`. From the downloaded `recordings-v1` folder, run `node build.mjs --write`. Requires Node 22 and ffmpeg with libx264. The manifest captures the encoder version and arguments; different ffmpeg builds may produce different MP4 bytes. Numerical files are deterministic. The generator and scenario travel with the example.

`manifest.json` declares every source hash, byte length, unit, shape, ordering, cadence, model, instrument and limitation. Hashes identify bytes, not scientific validity. The recipe input is the approved r2 authoring scenario; its original `specified_not_generated` status is historical. This separate release identifies the five generated examples.

## Read the arrays

Thermal files contain ten 60×80 frames each. Values are little-endian float32 in `[time,row,column]` order. Global frame `i=floor(second/2)` is in chunk `floor(i/10)`; byte offset is `((i%10)*4800+row*80+column)*4`. The viewer fetches only the current 192 KB chunk and verifies its digest before reading it. Apparent temperature is synthetic, with no emissivity correction or physical calibration. Color uses a fixed 18–24.5 °C scale; numerical inspection reads the array, never the displayed color.

Spectrum is 120×128 little-endian float32 in `[time,frequency]` order. Byte offset is `(floor(second/2)*128+bin)*4`. Frequency bin edges are `430+bin*10/128` and `430+(bin+1)*10/128` MHz. Values are dBm per bin, not spectral density. The receiver model is independent of the visible/thermal generator; timing near 90 seconds does not establish a common physical cause.

Weather keeps both meter identities, both humidity series and native units in the CSV. Samples are instantaneous at 10-second intervals, with the last sample at 230 seconds. The display explicitly holds the most recent sample and reports its age. No interpolation or uncertainty estimate is invented.

Video is a 240-second, 12 fps H.264 viewing product from procedural RGB8 frames. `frames.csv` maps each zero-based frame to authored device time, generated light elevation, fixed pointing and field of view. Frame inspection identifies the frame containing the requested playhead time; HTML video decoding is not a scientific frame-extraction guarantee. Decode with ffmpeg for exact extraction. The millisecond timestamp is rounded; `frame/12` is the exact relative time.

## Scope and reuse

The mixed-source manifest is an application fixture, not a new DisclosureOS schema. Canonical acquisition/product bindings for these new sources are still pending. The original eight-check canonical receipt covers only the original record packet and scalar readings. The workspace and Build page keep this distinction explicit.

The downloadable Meridian ZIP contains this entire source directory and the current viewer. Its preparation script copies versioned recording assets into the standalone public directory. Data and generated imagery: CC0. Generator and viewer code: MIT.
