Original samples smuggled in
A known raw-data key name (samples) anywhere in the capsule is rejected.
Rejected, exit code 1
- $.replay.samples: forbidden raw-measurement/data key
- replay.samples is not allowed by schema
Share an incident as a small, schema-checked JSON capsule plus a seeded recipe that regenerates an artificial replay, instead of shipping the original measurements. This page was generated at build time by the same standard-library Python code as the command-line tool (version 0.1.0, schema 1.0).
Valid, exit code 0. Every value in it is synthetic. Note what is absent: no incident identifier, no device serial, no samples.
{
"schema_version": "1.0",
"software": {
"name": "sample-monitor",
"version": "2.4.1"
},
"configuration": {
"version": "profile-r7"
},
"timestamp_policy": {
"policy": "relative_offset_seconds",
"value": 0
},
"device_channel_group": {
"device_category": "wearable",
"channel_group_category": "inertial"
},
"event_class": "threshold-transition",
"coarse_features": {
"duration_bucket": "1-2s",
"peak_level_bucket": "high",
"trend_bucket": "rising"
},
"replay": {
"generator": "synthetic-linear-drift-v1",
"seed": 417,
"recipe": {
"points": 32,
"baseline": 100.0,
"noise_stddev": 0.25,
"drift_start": 20,
"drift_per_step": 1.0
}
},
"behavior": {
"expected": "The alert remains clear while the synthetic baseline is stable.",
"observed": "The alert changes state as the synthetic drift increases."
},
"reproducibility_checklist": {
"software_version_recorded": true,
"configuration_version_recorded": true,
"synthetic_recipe_and_seed_recorded": true,
"expected_and_observed_behavior_written": true,
"independent_replay_completed": false
}
}Generator synthetic-linear-drift-v1, seed 417, points=32, baseline=100.0, noise_stddev=0.25, drift_start=20, drift_per_step=1.0. The same recipe and
seed produce the same values on CPython 3.x. These numbers are invented by the generator; they are not a
recording of any device.
| Point | Value |
|---|---|
| 0 | 100.40791 |
| 1 | 99.8113 |
| 2 | 99.987953 |
| 3 | 99.929558 |
| 4 | 99.71914 |
| 5 | 100.238632 |
| 6 | 100.027112 |
| 7 | 100.008028 |
| 8 | 99.584359 |
| 9 | 100.100623 |
| 10 | 100.192604 |
| 11 | 100.103669 |
| 12 | 100.103232 |
| 13 | 100.003375 |
| 14 | 99.993674 |
| 15 | 100.224647 |
| 16 | 100.233417 |
| 17 | 99.842272 |
| 18 | 100.324066 |
| 19 | 100.054257 |
| 20 | 99.964421 |
| 21 | 100.884031 |
| 22 | 101.734373 |
| 23 | 102.979471 |
| 24 | 103.970244 |
| 25 | 104.861793 |
| 26 | 105.73547 |
| 27 | 107.150684 |
| 28 | 108.177859 |
| 29 | 108.903522 |
| 30 | 109.705877 |
| 31 | 111.369991 |
Each card below is the example capsule with one deliberate mistake. The messages are the validator's own output, captured when this page was built.
A known raw-data key name (samples) anywhere in the capsule is rejected.
Rejected, exit code 1
Unknown fields are rejected, so additions are visible and need a schema change.
Rejected, exit code 1
Feature values that look like a list of numbers are rejected (a heuristic, not a guarantee).
Rejected, exit code 1
A rounded-hour policy must carry a timestamp at the start of an hour.
Rejected, exit code 1
Recipe values are bounded so every replay stays small and finite.
Rejected, exit code 1