Repository navigation
Show each output's state in lc view, from the engine - #265
Conversation
The provenance panel read "Status unavailable" for every output, and the figure cards carried no marker: the page filled astra-ui's run slot but never its status slot. One route, `/lightcone/api/status`, now answers with `materialize.status` — the call `lc status` makes — keyed `<universe>/<output id>`, and the page asks it again after every resolution. The browser still holds no copy of the classification rule; a project the engine cannot read is a 422 and the page shows no state. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
✅ Eval
lc statusConfusion & pain points (Claude analysis)Confusion & pain points
Full trace: |
An unfetched input's verdict reads "changed"; only the report's warning says it is merely not in this clone. The route now sends the warnings with the verdicts and the page shows them above the inventory — the two lines `lc status` prints. The status request moved inside the resolution loop, so a burst of disk changes costs one classification walk, not one per event. Also: the app docstring names the third route, and the thread hop takes the function directly. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Why
Opening an output in
lc viewshowed Status unavailable, and the figure cards carried no freshness marker, even on a fully current project. The page filled astra-ui'srenderProvenanceslot with the recorded run but never itsgetOutputStatusslot (or the provenance panel'sstatus), so astra-ui fell back to its unknown label.What
GET /lightcone/api/status, answered bymaterialize.status— the same calllc statusmakes — as{outputs: {"<universe>/<output id>": {state, detail}}}, run off the event loop since it hashes declared inputs. A project the engine cannot read is a 422 carrying the engine's message. Token-gated like every other route.Inventoryand the open output's provenance panel. A failed request shows no state rather than an error.Tests
test_an_outputs_state_is_the_engines: a real project served, the route's JSON equalsmaterialize.status(root)in-process.test_a_project_the_engine_cannot_read_has_no_state: 422 on a directory that is not an lc project./lightcone/api/statusadded totest_every_route_needs_the_token.Verified by hand on a materialized project: the dialog reads Status: Current with the run's time and revision.
🤖 Generated with Claude Code