Expand description
Cross-project status resolution over hub entities (spec 2026-07-21-cross-project-graph-design).
Two precisions, deliberately:
statuses_unanchoredresolves from StatusChanges alone — no ancestry, so no CommitFacts cross the wire. A task with no close is open; one with a close is “closed somewhere” (Resolution::Partial), honest that the branch containing it was not established. This is what the cross-project listing uses: enough to pick a blocker, cheap regardless of history.statuses_for_projectresolves exactly against a branch head by walking the CommitFact graph (moved here from levi-dash so the dashboard and any future hub report share one implementation).
Functions§
- default_
head - The branch a project resolves against when none is named: its
mainRefFact if present, else the most recently observed. - statuses_
for_ project - Exact per-branch resolution over the CommitFact graph (moved from
levi-dash/src/resolve_client.rs).Nonehead resolves anchored changes asPartialrather than guessing. - statuses_
unanchored - Status from StatusChanges alone — no ancestry walk, no facts. Open when a
task has no close event; Closed +
Partialwhen it has one (a close exists, but which branches contain it is not established here).