Repository navigation
Make --check JSON agree with its exit code; show recipe-less outputs in status - #241
cailmdaley wants to merge 7 commits into
Conversation
A check with planned outputs fails the gate, so report ok as false. Co-Authored-By: GPT-6 Luna <noreply@openai.com>
The plan preserves non-executable declarations so users can see what still needs a recipe. Co-Authored-By: GPT-6 Luna <noreply@openai.com>
A `from:` re-export stands for an output that is already reported, and the nine-character `no recipe` state pushed its row out of the table. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
✅ Eval
lc statusConfusion & pain points (Claude analysis)Confusion & pain points
Full trace: |
|
@claude can you show me what the output of lc materialize would look like in the 2 situations mentioned in this PR before and after the fix, grounded in the code |
|
Claude finished @EiffL's task in 24s —— View job Before/after output for the two situations in this PRThese are derived from the diff ( One correction to the framing: situation 2 is a 1.
|
|
@claude review this PR and see why the tests fail |
|
Claude finished @EiffL's task in 29s —— View job Review of #241 and why the tests failI read the diff and the CI logs for the failed run, and I did not re-run the suite myself. Why CI failsOnly The cause is not in this PR. The image build runs (3.11.17 on the 3.11 job). The image pins This is a time-dependent environmental failure, so Possible fixes, each outside this PR:
None of the failures touch Review of the changeThe change is correct and small. Findings, in order of importance:
Your open questionShould |
|
I have read the Developer Certificate of Origin and I hereby sign the DCO for this PR |
Docs moved to LightconeResearch/docs (#251); the four doc edits this branch made are carried there.
|
@EiffL i think the failing tests also fail on main, and aren't related to this PR. so I think this can be merged if you're happy with it |
`ok` meant "nothing failed or was blocked" in a run, which check mode can never violate, so `--check --json` reported `"ok": true` while exiting 1. Redefining it as the exit code left it identical to `up_to_date` in check mode: a second name for one fact, and the name agents misread as "done". The report now carries only keys that say what they mean: a run succeeded when `failed` and `blocked` are empty, a check passes when `up_to_date` is true, and the exit code is nonzero when any of `failed`, `blocked` or `planned` is non-empty. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
On the open question, whether
The smoke-suite problem was that "
Both are drafts until a CLI release includes this PR. |
Cheap agents running a five-task smoke suite against the agent-skills
lightconeplugin, on lc 0.5.0rc5, hit twolcbehaviours that mislead them. Each is fixed here, with a test that fails onmain.lc materialize --check --jsonsaid"ok": trueand exited 1 when outputs were still to build. An agent reading the JSON concluded that it was done.okis removed from the materialize report. In a real run it meant "nothing failed or was blocked", which check mode can never violate. Redefining it as the exit code would have made it identical toup_to_datein check mode. The report now starts withup_to_date:failedandblockedare empty.up_to_dateis true.failed,blockedorplannedis non-empty.--helpstates the contract. A check with planned work still prints "would be made" rather than "did not finish".eval.ymlreads onlyup_to_dateandcurrent, so it is unaffected. The decision is recorded in CLAUDE.md. Follow-up outside this repo:docs(commands/materialize.mdx,concepts.mdx) still namesokas a key to branch on.A declared output with no recipe vanished from
lc status. An agent asked to wire a missing recipe couldn't see what was missing. Such outputs now appear in both human and--jsonstatus with the stateno recipe, andcounts["no recipe"]counts them. Re-exports (from:) are not listed this way, since their target output is already listed. The empty-report message now reads "The analysis declares no output."Tests: the full suite minus
test_container_smoke.pygives 1152 passed and 3 skipped. The 4 container smoke tests fail identically onmainlocally ("No such image: sha256:…" on Docker 27.3.1), which looks environmental. A reviewer copied the new tests ontoorigin/main, saw them fail for the stated reasons, and ran both commands by hand on a mixed spec.Two questions for review:
lc materialize --checkalso fail while some declared output has no recipe? The lightcone skill calls--check"the gate" and tells agents they're done when it passes, so today an unwired output passes the gate.counts{current,behind,stale}and three states. It needs ano reciperow once this lands; that follow-up goes in agent-skills.Not included: the smoke suite also reported that the local cluster sizes itself from host CPUs instead of the container limit. That doesn't reproduce. Inside the smoke image,
lc compute resourcesreports 2 CPUs underdocker --cpus=2and 3 under--cpuset-cpus=0-2, because dask'sCPU_COUNTalready honours affinity and cgroup quotas. The original observation came from a Harbor run on Docker Desktop that didn't apply the quota.Claude Opus 5.5 on behalf of Cail
🤖 Generated with Claude Code
https://claude.ai/code/session_01UJCxD1csvG8NnxWLtew9uB