schedkit spec -- /root/troupe-standup/wizard-work/null/schedkit/schedkit.py
python 3.14.7

== A. fixtures

== B. invariants

== C. oracle: find_cycles vs brute-force DFS

== D. randomized differential (1000 DAGs x 40 permutations)
   1000 DAGs, 875 oracle comparisons, 5.933s

== E. determinism
   deep chain: 50000 tasks, 50000 waves, 1.640s
   wide graph: 20001 tasks, 2 waves, 0.267s

== F. cycle handling

== G. scale
   50000 tasks, 90000 edges: build 0.588s, plan 1.458s
   relabel+plan 50k: 2.343s

== H. cost shape: acyclic graphs linear, big SCCs iterative
   chain 2000: 0.0202s (quadratic build measured 5.6651s)
   ring 50000: 1.427s, recursionlimit 1000
   2000 disjoint 5-rings: 2000 cycles, 0.193s

== I. topological_order is the SMALLEST linear extension
   300 random DAGs compared against all-permutations brute force

124840 checks, 0 failed, 18.09s
SPEC OK: all 124840 checks held
