Back to app index

Local → Global WBS (Sheaf Playground)

Edit tasks / dependencies / patches with the forms below (or use the raw JSON tab). Click Compute to see the graph + a scheduled “global section” attempt.
Educational mode
What this is modelling (click to fold)

Think of your WBS DAG as a base space. Each local plan (“patch”) assigns start-times to some tasks. Where two patches overlap, we can compare their assignments on shared tasks: that mismatch is a Čech 1-cochain δ.

If δ=0 on every overlap, the local plans are compatible and can “glue” into a single global assignment (a global section), subject to precedence constraints, resource caps, and time windows.

This is a toy obstruction: it is not full sheaf cohomology, but it keeps the same “glueability” intuition.
Try these quick experiments

1 Load “Patch conflict” and watch δ jump & the conflict list populate.

2 In Patches, align the conflicting pinned time, then recompute: δ should drop.

3 In Resources, reduce a cap and see how schedule feasibility changes (even if δ=0).

Pin mode: Risk smoothing: 2
Global section
—
“Exists” means: δ=0 on overlaps and schedule meets windows/resources.
Obstruction energy δ
—
We sum sup-norm disagreements over overlapping patch pairs.
Diagnostics
—
Slack + smoothed risk + constraint warnings.
Tip: Click a node on the right to inspect it.
Task fields explained

Window is [earliest start, latest end]. We mark a miss if (start < window[0]) or (end > window[1]).

Risk is just a scalar field on vertices; we smooth it by averaging over neighbors for a chosen number of rounds.

Resources are per-time-step capacities. This prototype uses discrete time and unit capacities by default.

Dependencies are directed edges u → v (u must finish before v starts).
Why topology matters here

The sheaf story is happiest on a DAG: local-to-global questions are well-behaved, and scheduling can be done in a topological order. If you add a cycle, we still draw it, but “earliest start” becomes underdetermined (and the topo-sort warns).

A patch pins some task start-times (soft or hard, depending on pin mode).
Interpretation note.
In an actual sheaf, restriction maps must satisfy identities on triple overlaps. Here we only measure pairwise disagreements; it’s closer to a “consistency energy” than a full cocycle condition.
Caps apply globally at each discrete time step.
Resource model caveat

This is a coarse “per time-step” capacity check. Many real schedulers use cumulative constraints, calendars, and non-integer time. Still, it’s enough to see how local consistency (δ=0) is not the same thing as global feasibility.

If you edit JSON directly, click “Apply”.
Selected task
—
Click a task node or a Gantt bar to inspect.
Inspector shows: window slack, pins, smoothed risk, and which constraints were active in placement.

Graph view

Scheduled task Window miss / infeasible Patch disagreement

Gantt view

Overlap consistency δ on patches

Why not glue? (conflicts & misses)