Releasing a Corpus & Metadata¶
Export a dataset release along with metadata and manifest verification:
This exports three primary artifacts:
| Output Artifact | Description | Schema / Reference |
|---|---|---|
corpus.jsonl |
The exported event corpus | Corpus Schema |
manifest.json |
Certified record: seed, config, gate verdict, label distribution | pharos.manifest |
croissant.json |
MLCommons Croissant metadata with Responsible AI extension | pharos.croissant |
Enforced Gate Verification
The export CLI refuses to write output if the generated corpus fails its shortcut gate check. An un-gated or invalid dataset cannot be released.
Reproducibility & Cryptographic Hashing¶
Because Pharos is a procedural dataset generator, every release is uniquely specified by (version, commit, seed, config).
SHA-256 Digest Certification
The cryptographic sha256 hash in croissant.json MUST equal the exact hash of corpus.jsonl. This allows downstream consumers to verify bit-identical reproducibility.
MLCommons Croissant & Responsible AI Metadata¶
Pharos automatically emits Croissant JSON-LD metadata conforming to NeurIPS dataset requirements, enriched with the Responsible AI (RAI) extension.
Responsible AI Block Fields¶
rai:dataBiases: Documents surface baselines and permutation null distributions.rai:dataLimitations: Declares that data is synthetically generated for privacy/governance research and must not be used to train operational classifiers.rai:personalSensitiveInformation: Confirms security labels are synthetic lattice constructions and do not model real organizations or clearance systems.rai:dataCollectionMissingData: Documents event coverage guarantees and historical dataset corrections.
Automated Metadata Validation¶
Validate Croissant JSON-LD metadata against official MLCommons schemas:
# Install validation dependencies
uv sync --group croissant
# Run validation suite
uv run pytest tests/test_croissant_validation.py
Preventing Schema Drift
Metadata generation is driven directly by pharos.croissant and programmatically validated with mlcroissant in CI, preventing hand-authored spec drift.
Provenance Block Structure¶
Every exported measurement and manifest records audit provenance metadata:
{
"pharos_version": "0.1.0",
"git_commit": "1ec0d01a2b3c",
"git_dirty": false,
"generated_at": "2026-07-30T19:12:04+00:00",
"python": "3.13.1",
"platform": "Linux-6.6.87-x86_64",
"executable": ".venv/bin/python3",
"seed": 7,
"model": "qwen2.5:7b-instruct"
}
The first seven keys are in every artifact this repository has written. The rest are
conditional, and their absence is information: seed appears where a run is seeded,
while model, model_key and endpoint appear only where a model was called --- so a
measurement that claims to be model-free and carries a model is a measurement that is
not what it says. Individual scripts add their own parameters beside these, such as the
draw or fleet count a sweep ran over.
Deterministic Manifests vs. Measurement Stamps
Measurement result artifacts log timestamps and git_dirty flags. Dataset manifest.json files omit timestamps to ensure two manifests built from identical seeds yield identical hashes.