You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A report payload can now say what format it is written in. `bmf_version` is a
top level key of the payload, next to `results`, and it accepts exactly 0 and 1.
An absent key is version 0, so every payload that ingests today ingests
unchanged. Any other value is refused with a message that names the accepted
versions.
At version 1 the `json` adapter node tries its `json_v1` leaf first and falls
back to `json_v0`; at version 0 it tries them in today's order. That reorders
the attempts rather than filtering the payload, so version 1 refuses no v0 shape
and version 0 still ingests a v1 shape through the second attempt. `magic`
inherits the preference through the node, an explicitly named leaf is unaffected
because it is already an exact statement, and no non-JSON adapter reads the key.
An empty payload is now foldable at any version. It is the one payload both
leaves claim, so at version 1 it parses as v1, and since fold is all or nothing
across the array it would otherwise disable fold for every v0 iteration beside
it, changing the number of metric rows a report writes. The fold refusal exists
because a pooled statistic cannot be recomputed from per iteration values, and a
payload that reported nothing has none, so it has nothing to refuse over.
`BmfVersion` is a validated newtype in `bencher_valid` that replaces the enum of
the same name in `bencher_adapter`. The payload's declared version and the
version a leaf parsed are two values of one type, and they have to be able to
differ: a payload that declares version 1 may still hold v0 results.
`/v0/run` carries the key because `JsonNewRun` gains the field and the
conversion into the report payload forwards it. A job based run does not: its
results are the runner's own output rather than the submitted payload.
The v1 thresholds shape and the project gate are later layers, and the CLI gains
no flag here.
0 commit comments