hive-jobq-wire
Wire types for serving a hive-jobq graph to a viewer, plus
the traits a host implements to say how its graph renders.
Why this is not part of hive-jobq. The scheduler crate is logic: a graph,
a resource pool, a run loop. Presentation is a different concern with a
different audience, and folding it in means every consumer of the scheduler
also carries a JSON vocabulary it may never serve — the two get remixed and
stay that way. A separate crate keeps that boundary where it can be seen.
A host implements WireNode for its node payload N and WireResource for
its resource name R. GraphWire::wire_snapshot is then blanket-implemented
for hive_jobq::Graph<N, R> — so the projection exists exactly when both types
have said how they render, and a payload that hasn't cannot reach a viewer at
all.