No embeddable TS library answers "what's runnable now" with rules
Status: open/proposed
Statement
Section titled “Statement”No TypeScript library answers: given a dependency graph and node statuses,
what is runnable now — with pluggable eligibility rules, priority ordering,
and goal-direction? Python’s graphlib.TopologicalSorter offers a bare
get_ready() / done() frontier and nothing else; the engines that do more
(Airflow, Dagster, Prefect) are heavyweight runtimes, not embeddable
libraries. There is room for a small, embeddable piece that fills the gap.
Who/what it affects
Section titled “Who/what it affects”- The JS/TS ecosystem: no dependency-readiness library with rules exists.
- Any embedder needing readiness scheduling without adopting a full workflow runtime.
- The SDLC plugin as the first consumer, validating the shape as a standalone library.
Evidence
Section titled “Evidence”graphlib.TopologicalSorter(Python stdlib):get_ready()/done()/is_active()— an incremental frontier with no rules, ordering, or goal-direction (graph-scheduler-research).- The demand is proven inside large systems — Kubernetes’ filter→score
scheduling, Airflow’s
trigger_rulesandpriority_weight, Buck2’s weighted local scheduler — but each ships only as part of a big runtime (graph-scheduler-research). - A survey of JS graph libraries (graphology, graphlib/dagre) finds
topological primitives but no readiness/scheduling layer
(
graph-scheduler-research).
Toward resolution
Section titled “Toward resolution”PR-DZTZ-graph-scheduler — a small, embeddable library with a zero-dep core, shipped as its own OSS package, that carries the readiness engine plus the rule / ordering / goal-direction layer the ecosystem lacks.