Reproducibility¶
gwmock writes one versioned JSON provenance record per generated batch as
*.metadata.json.
Schema¶
Each record is validated at write time and uses schema version 1.0.0.
Consumers must reject unknown major versions.
{
"schema_version": "1.0.0",
"gwmock_version": "x.y.z",
"subpackage_versions": {
"gwmock_signal": "x.y.z",
"gwmock_noise": "x.y.z",
"gwmock_pop": "x.y.z"
},
"config": {},
"config_sha256": "...",
"seed": 42,
"segment_seeds": [123456789, 987654321],
"population": {
"backend": "module:Class",
"source_type": "bbh",
"n_events": 128,
"parameter_names": [],
"metadata": {}
},
"signal": {
"backend": "module:Class",
"waveform_model": "IMRPhenomXPHM",
"detector_network": ["ET1_SARD", "ET2_SARD", "ET3_SARD"],
"metadata": {}
},
"noise": {
"backend": "module:Class",
"psd": "ET_10_full_cryo_psd",
"metadata": {}
},
"outputs": [
{
"kind": "signal",
"path": "output/signal/E-ET1_SARD_STRAIN_BBH-1577491218-1024.gwf",
"channels": ["ET1_SARD:STRAIN"],
"t0": 1577491218,
"duration": 1024,
"sha256": "..."
}
],
"host": {
"platform": "...",
"python": "3.12.x",
"cpu": "...",
"git_sha": "..."
}
}
config stores the resolved configuration snapshot for that run.
segment_seeds stores the deterministic per-segment seeds that gwmock derives
locally. Adapter-backed noise now consumes one shared
gwmock_noise.open_stream(...) iterator per run, so the top-level seed is
recorded once and noise continuation no longer appears as one derived seed per
batch. The subpackage metadata objects are preserved as JSON objects without
gwmock rewriting their internal structure.
For the config shape that feeds this record, see Orchestration and Protocol Contracts.
Reproducing a run¶
For deterministic reproduction, pin gwmock, gwmock-signal, gwmock-noise,
and gwmock-pop to the same versions used originally, then rerun the same
config file. The seed is stored in the config itself:
gwmock simulate config.yaml
In batch reproduction workflows, pass the generated *.metadata.json files
directly to gwmock simulate. Each metadata file carries the exact config
snapshot and per-segment seeds needed to reproduce that batch independently:
# Reproduce specific batches from their metadata files
gwmock simulate metadata/orchestration-0.metadata.json metadata/orchestration-1.metadata.json
# Or reproduce everything from a metadata directory
gwmock simulate metadata/