Export every recorded input, not only the ones that vary

`export runs` dropped a `param.*` column whose value was constant across the
exported runs, so a downstream filter broke depending on which runs the
selection happened to hold. Every input the selection recorded is a column
now; `--params` still narrows it to a sweep's axis. The metrics default is
unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Hra4ndWMCLU5F3KjUuVAc
This commit is contained in:
2026-08-29 13:47:00 +02:00
co-authored by Claude Opus 5
parent c050a7a52c
commit 73cd37a608
4 changed files with 21 additions and 35 deletions
+11 -8
View File
@@ -873,10 +873,10 @@ def test_an_export_strides_each_series_and_names_its_run(
assert all(steps == [0, 2] for steps in curves.values())
def test_an_exported_run_row_carries_the_inputs_that_vary(
def test_an_exported_run_row_carries_every_recorded_input(
client, superuser_token_headers, exported
):
"""The sweep axis becomes columns; what every run shares stays out of them."""
"""Every input is a column, so the schema does not move with the selection."""
def export(**extra):
answer = client.get(
@@ -890,12 +890,15 @@ def test_an_exported_run_row_carries_the_inputs_that_vary(
rows = _lines(export(format="jsonl"))
assert [row["id"] for row in rows] == ["exp-1", "exp-0"]
assert {row["param.lr"] for row in rows} == {0.1, 0.01}
# `epochs` is the same on both runs, so it is not what they differ by, and
# neither is the model inside the config — but the depth beside it is.
assert "param.epochs" not in rows[0]
assert "param.config.model" not in rows[0]
# `epochs` is the same on both runs and stays a column anyway: which runs
# were asked for is not something a downstream filter should have to know.
assert rows[0]["param.epochs"] == 10
assert rows[0]["param.config.model"] == "mlp"
assert {row["param.config.depth"] for row in rows} == {1, 2}
assert "param.epochs" in _lines(export(format="jsonl", params="epochs"))[0]
narrowed = _lines(export(format="jsonl", params="epochs"))[0]
assert "param.epochs" in narrowed
assert "param.lr" not in narrowed
# A number inside a record is a column of its own, however deep; a string
# is not one of the run's numbers wherever it sits.
@@ -912,7 +915,7 @@ def test_an_exported_run_row_carries_the_inputs_that_vary(
header = export().text.splitlines()[0]
assert header.startswith("id,flow,status,")
assert header.endswith(
"param.config.depth,param.lr,"
"param.config.depth,param.config.model,param.epochs,param.lr,"
"metric.acc,metric.final_metrics.train_loss,"
"metric.test_metrics.known.perfect"
)