railiance-fabric/docs/coordination-graph.md

51 lines
1.9 KiB
Markdown
Raw Normal View History

# Coordination graph (workplans and waits)
State Hub owns workplans. Fabric does not author them. This view *projects*
open workplans and open tasks into the existing graph explorer so chokepoints
are inspectable.
```bash
# JSON payload (residuals omitted by default)
railiance-fabric export --format coordination --state-hub http://127.0.0.1:8000
# Include flavor=residual
railiance-fabric export --format coordination --include-residuals --state-hub http://127.0.0.1:8000
# UI (local registry server)
make graph-explorer
# then open
# http://127.0.0.1:8765/ui/graph-explorer?mode=coordination
# optional: &include_residuals=true
```
## Nodes
Open workplans (`proposed|ready|active|blocked|backlog`) and their open
tasks (`todo|progress|wait`).
`flavor: residual` workplans and their tasks are **omitted by default**.
Unspecified flavor stays visible. The word “residual” in a title is not a
flavor. The explorer checkbox / `include_residuals` query includes them
(parity with State Hub `include_residuals`).
Workplan nodes carry `flavor` / `nodeClass`
(`planning` | `implementation` | `refactoring` | `extension` | `residual` |
`unspecified`).
## Edges (precedence)
1. **Indexed `depends_on`** (`edgeSource: indexed`, `edgeType: depends_on`)
from State Hub workplan `depends_on` (and `/state/deps` when the list
endpoint does not yet carry the field). These do not require a wait note.
2. **Citation `waits_on`** (`edgeSource: citation`) when a wait/human task
cites another workplan id in its prose **and** no indexed `depends_on`
already exists for that pair. Fallback for files not yet backfilled
(`CUST-WP-0072`). Never the reverse: citations do not replace indexed
edges.
3. **`belongs_to`** task → workplan.
Chokepoint size is in-degree of **visible** (by default: non-residual)
workplan nodes from `depends_on` and remaining `waits_on` edges.
Solid blue = indexed `depends_on`. Dashed amber = citation `waits_on`.