Skip to content

Eval trace follow-up: lc run syntax note, clean harness env - #191

Merged
EiffL merged 3 commits into
clean_rebuildfrom
eval-run-syntax
Aug 21, 2026
Merged

Eval trace follow-up: lc run syntax note, clean harness env#191
EiffL merged 3 commits into
clean_rebuildfrom
eval-run-syntax

Conversation

@EiffL

@EiffL EiffL commented Aug 21, 2026

Copy link
Copy Markdown
Member

Follow-up to the PR #190 eval trace, which surfaced three harness-attributable frictions (the other findings were agent-side noise).

The lc run convention question, settled

Checked the ecosystem before touching anything: uv run "python -V" fails with Failed to spawn: `python -V` (verified live), docker run img "echo hi" fails with exec: "echo hi": executable file not found — argv with no shell parsing is the convention across docker run, uv run, kubectl exec, pipx run, poetry run, srun. lc run already matches it, so the behavior stands unchanged and the syntax gets one line in the two places it was missing:

  • evals/prompt.md: "Argv style, like docker run or uv run: lc run python scripts/fit.py --output /tmp/x, never a single quoted shell string; for shell syntax use lc run bash -c '...'."
  • docs/cli/run.md: same sentence, in the synopsis.

In the trace, the missing line cost one round trip through a genuinely cryptic failure (/usr/bin/env: '<whole string>': No such file or directory + the sandbox trailer insinuating a denial).

Harness environment

  • UV_PYTHON noise: setup-uv's python-version input exports UV_PYTHON, and the Hardening: close the residues recorded through layer 8 #184 install-settings scrub then (correctly) warned ignored ambient UV_PYTHON — … on every lc run/lc materialize — a dozen-plus unactionable lines the agent ended up grep -v'ing to read its own output. The input is dropped; determinism is kept by pinning --python 3.12 on both tool installs. Same category as the VIRTUAL_ENV cleanup earlier.
  • Truthful dev versions: the shallow checkout had no tags, so hatch-vcs stamped 0.1.dev1+g<sha> into the installed engine — and into every manifest's lc_version. fetch-depth: 0 fixes it.

Validation: label this PR run-eval to see the updated prompt and clean environment in action.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DJzmp2MUhwiNHR94cB91dx

The PR-190 eval trace showed three harness-attributable frictions.

lc run already follows the ecosystem convention — argv, no shell
parsing, exactly docker run and uv run (verified: uv run "python -V"
fails the same way) — so the behavior stands and the syntax gets one
line where it was missing: the eval prompt and the run reference both
now say argv style, never a single quoted string, bash -c for shell
syntax. That one line was the difference between the agent's first
probe working and a cryptic /usr/bin/env error plus a misleading
sandbox trailer.

The harness environment gets the same treatment VIRTUAL_ENV got:
setup-uv's python-version input exported an ambient UV_PYTHON, which
the install-settings scrub then rightly warned about on every single
lc invocation — a dozen unactionable lines the agent ended up
grep -v'ing away. The input is gone and the interpreter is pinned per
tool install instead. And the checkout fetches full history, so
hatch-vcs stamps a truthful dev version instead of 0.1.dev1 into the
installed engine and every manifest it writes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DJzmp2MUhwiNHR94cB91dx
@EiffL EiffL added the run-eval Run the agentic eval on this PR label Aug 21, 2026
@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

✅ Eval

Metric Value
Outputs check success
Agent run success
Turns 40
Tool calls 38
Cost $1.17
Agent wall time 4m01s
Model claude-sonnet-5
lc status
  mode:    direct
  sandbox: landlock (fs: declared, network: allowed)
  crate:   up to date with the outputs

  · current  baseline/best_fit        d2f7ac8
  · current  baseline/hubble_diagram  d2f7ac8
  · current  baseline/residuals       d2f7ac8

3 current
Confusion & pain points (Claude analysis)

Confusion & pain points

  • astra-tools spec metric failed with "Unknown term" — the agent guessed at a schema term (metric) that doesn't exist in ASTRA's type list, wasting a round-trip before falling back to spec recipe and grepping the full guide dump. The CLI's error at least listed valid terms, which let the agent recover, but it suggests the agent had no reliable way to discover valid spec term names up front (e.g., a spec --list or completion) short of triggering a failure first.
  • No documented convention for materialized metric/JSON output shape — the agent spent several tool calls (reading results/README.md, dumping the full guide, grepping for "metric|astra:value|.json") trying to find how a metric output's JSON should be structured for {astra:value} references, ultimately proceeding on inference rather than a confirmed spec answer. This points to a gap in the ASTRA guide/skill content rather than in lightcone-cli itself.
  • Ambiguous data column semantics required manual reverse-engineering — the agent ran several ad hoc awk/python3 statistics passes over data/SCPUnion2.1_mu_vs_z.txt to figure out what column 5 represented, since the task description and data didn't unambiguously distinguish "host-mass probability" from "systematic error." It made a judgment call (column 5 as an added-in-quadrature systematic) and flagged it as unverified rather than being able to confirm it against ground truth — a data/task-description gap in the eval seed, not a tool issue.
  • Otherwise the run was clean: astra validate, uv add, lc materialize, and lc status --json all worked on the first try, and the license/RO-Crate publication flow (declaring license in pyproject.toml then re-running lc materialize) worked exactly as documented with no detours.

Full trace: agent-trace artifact on this run.

@EiffL EiffL added run-eval Run the agentic eval on this PR and removed run-eval Run the agentic eval on this PR labels Aug 21, 2026
The crate line arrived with the hardening pass, in parallel with the
escape fix, so it never met it: the engine's 'declare
[project].license to enable it' rendered as 'declare .license' — rich
reading the brackets as a style tag, swallowing the one word that
names the fix. The sandbox header gets the same escape; both are
engine prose, which the rendering rule already says is data, never
markup. Regression test beside the other header assertions.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DJzmp2MUhwiNHR94cB91dx
@EiffL EiffL added run-eval Run the agentic eval on this PR and removed run-eval Run the agentic eval on this PR labels Aug 21, 2026
@EiffL
EiffL merged commit 13495f9 into clean_rebuild Aug 21, 2026
8 of 9 checks passed
@EiffL
EiffL deleted the eval-run-syntax branch August 21, 2026 10:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-eval Run the agentic eval on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant