Will it wedge?

Paste a wait-for relation — who is waiting on whom — and this exhibits the cycle if one exists. Everything runs in your browser; nothing is uploaded.

Paste a graph to begin.

Why the empty graph abstains. A graph with no nodes contains no cycle, so “no deadlock” is true — and says nothing whatever about your system. The overwhelmingly likely cause of an empty graph is a config that failed to load or a query that returned no rows, and answering “your system cannot wedge” to that question is a confident answer nobody earned. all(…) over an empty set is True; that is a fact about logic, not evidence about software.

“Nobody waits” is different, and it really is safe. Nodes that exist and wait on nothing genuinely cannot deadlock. Collapsing that case into “empty” would throw away a correct answer, so it is kept separate.

Same check locally, with importers that build the graph from Kubernetes manifests or Python source: pip install gridlock then gridlock import k8s ./manifests | gridlock check -github.com/nickharris808/gridlock. Part of a portfolio of verifiers that abstain rather than guess.