Skip to content

web: navigate from unresolved to resolved CA build steps - #1682

Merged
Ericson2314 merged 1 commit into
NixOS:masterfrom
obsidiansystems:ca-resolve-ui
Aug 5, 2026
Merged

web: navigate from unresolved to resolved CA build steps#1682
Ericson2314 merged 1 commit into
NixOS:masterfrom
obsidiansystems:ca-resolve-ui

Conversation

@amaanq

@amaanq amaanq commented Apr 24, 2026

Copy link
Copy Markdown
Member

Note

This depends on #1629

Resolved CA steps do not own the log users are trying to inspect, so
leaving them as terminal pages makes the build view look stuck or failed
in the wrong place. The log page now follows the recorded resolution chain
to the step that actually performed the work, while preserving a pending
page for unresolved, running, or malformed chains.

The redirect banner is reconstructed from BuildSteps instead of session
flash so copied log URLs and refreshes keep the same context. The JSON
summary exposes the same durable resolution data for API clients that
need to follow CA build steps without scraping HTML.

@amaanq
amaanq marked this pull request as draft April 24, 2026 16:09
@Ericson2314

Copy link
Copy Markdown
Member
  1. nixlog URL is for any type of step, not just build steps. Resolve steps should have pages too.
  2. "resolve of" should be "resolution of"

@Ericson2314
Ericson2314 marked this pull request as ready for review August 5, 2026 05:31
Build steps are conceptually a sum type: a real build step, or a
Resolved (status=13) step that is a pure redirection to another
derivation and never builds anything itself. The UI now reflects that:
step pages for Resolved steps show a distinct Resolution layout with
the original drv, the resolved basename, and a link to the terminal
step (or a pending state when it has not been scheduled yet), instead
of the Build/Substitution info table.

Resolution is one-shot: a resolved derivation is basic (all inputs
realized), so it can never itself be resolved again. There are
therefore no resolution chains to follow -- finding the terminal step
is a single lookup. Corrupt resolveddrvpath values (a slash, a
self-reference) need no special-casing: the lookup simply matches
nothing and the step renders as pending.

Since a Resolved step never builds, it has no log: its log endpoint
returns 404 and the build page offers no log links for such steps. The
actual log lives at the terminal step, whose pretty log page carries a
banner linking back to the resolution origin(s).

Co-authored-by: John Ericson <John.Ericson@Obsidian.Systems>
Assisted-By: Claude Fable 5 <noreply@anthropic.com>
@Ericson2314
Ericson2314 added this pull request to the merge queue Aug 5, 2026
Merged via the queue into NixOS:master with commit 7a623fe Aug 5, 2026
2 checks passed
@Ericson2314
Ericson2314 deleted the ca-resolve-ui branch August 5, 2026 07:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants