lean-bench

2.2. Versioning🔗

Every row carries a top-level integer schema_version. The current version is 1.

The version increments on any breaking change. Breaking changes are:

  • Removing a required field.

  • Renaming a required field.

  • Changing the type of a required field.

  • Changing the meaning of an existing field (e.g. flipping units).

  • Adding a required field (older writers won't emit it, so older data fails the new reader).

  • Promoting an existing optional field to required (same reason).

  • Tightening the value domain of a field in a way that rejects previously-valid data (e.g. making result_hash mandatory when it was optional).

The following changes are non-breaking (additive) and do NOT bump the version:

  • Adding a new optional field. Older readers ignore it; older writers still produce valid v1 rows.

  • Documenting a previously-tolerated behaviour (e.g. accepting a shorter result_hash).

  • Widening the value domain of an existing field (e.g. accepting more status strings).

  • Making a previously-required field optional, provided readers continue to handle the field's absence as if the prior emit-side default were present.

Bumps are integer (1 → 2 → 3). There is no semver minor; consumers key on the integer only.