# ECP-0037: Cross-OS Determinism Testing (macOS + Linux)

Status: Draft
Author: Codex
Reviewers: founder@every.channel
Created: 2026-02-07

## Decision

Add an explicit cross-OS determinism test workflow for the CMAF ladder pipeline.

We will treat the determinism target as:

- identical output bytes for `init.mp4` and `segment_*.m4s` for the same synthetic input,
- given the same ffmpeg/x264 build and the same every.channel version,
- across macOS and Linux.

## Motivation

- Our core thesis depends on multiple independent nodes producing byte-identical artifacts.
- Without automated cross-OS checks, determinism will silently regress.

## Scope

In scope:
- Keep an ignored Rust test that produces a deterministic synthetic TS and verifies:
  - bit-identical outputs across two runs on one host,
  - keyframe alignment at segment boundaries.
- Add a script that exports a canonical test input and compares outputs from two machines.

Out of scope:
- Perfect determinism across different ffmpeg/x264 versions.
- Hardware encoder determinism.

## Implementation

- Local test: `crates/ec-node/tests/determinism_cmaf_ladder.rs`
- Cross-OS procedure:
  1. On macOS and Linux, run the same nix flake dev environment (pins ffmpeg).
  2. Run `cargo test -p ec-node --test determinism_cmaf_ladder -- --ignored --nocapture`.
  3. Emit a JSON summary of sha256s per variant (init + segments) into `tmp/determinism/<os>.json`.
  4. Compare the JSON across OS.

## Notes

- Even with pinned ffmpeg, Apple vs Linux libc may still perturb behavior.
- If cross-OS byte equality fails but in-host determinism holds, we can treat it as:
  - still useful for availability (single-encoder determinism),
  - but not sufficient for multi-source "same bytes" dedupe.

