Research-Stack/5-Applications/hutter_prize/DETERMINISM_POLICY.md

57 lines
1.5 KiB
Markdown

# Determinism Policy
Public-facing builders should be deterministic unless they explicitly declare
otherwise.
For this repo, that means:
- rerunning the same public builder with the same inputs should produce the same bytes
- nonessential timestamps should be excluded from public manifests
- nonessential absolute paths should be excluded from public manifests
- deterministic fingerprints should be preferred over fresh run markers
## Why This Matters
This project leans heavily on one-way artifacts:
- hashes
- manifests
- review packets
- public prep bundles
If those drift without a good reason, trust drops fast.
## Current Scope
This policy currently applies most directly to:
- `scripts/build_review_packet.py`
- `scripts/prepare_public_artifact.py`
Those builders are expected to be byte-stable on rerun for the same inputs.
## Verification Tool
The reference verifier is:
- `scripts/verify_builder_determinism.py`
That script rebuilds a bundle twice in separate temporary directories and checks
whether the relative output files hash to the same values.
## Explicit Exceptions
Not every artifact in the repo is expected to be deterministic in this way.
Benchmark and experiment outputs may legitimately contain:
- timing measurements
- run stamps
- observation-time receipts
Those are observational artifacts, not stable publication bundles.
## Working Rule
If a builder is meant for public handoff or archival packaging, assume it should be
deterministic until proven otherwise.