SCHEDULE · HAND OFF · VERIFY
Asynchronous work: worker capacity versus dependencies
Run six local transformations. Watch dependency gates, worker assignments, retries and the exact artifacts produced.
Scroll the dependency board horizontally to inspect every task. The task selector below provides the same states and artifacts as text.
Input and task inspection
Your experiment
Run with one worker and then two. Observe which ready branch waits for capacity and compare modeled completion times. Extra capacity cannot bypass a dependency.
Load takes 2s, filtering 4s, joining 3s and verification 5s. Branch durations are adjustable. Default parallel execution with two workers takes 26 modeled seconds; serial execution or one worker takes 34. Use 0.5× for a slower inspection.
Load → filter → sum/histogram → join → verify. The filter retains values at least as large as the chosen threshold. Sum produces count/total; histogram produces actual bins. Verification recomputes count and weighted sum from the bins. A verified result exists only if they agree.
Scheduler events
Offline deterministic dependency scheduler, not an A2A/ADK protocol implementation, Java coroutine runtime, Airflow/Dagster service or LLM agent. All transformations execute locally without arbitrary code, external tools or network calls. Task durations are fixed teaching inputs independent of input length. Ready tasks take free worker slots in the displayed task order. A failed attempt commits no artifact; retries wait the chosen fixed delay. Exhausted failure blocks descendants, or cancels unfinished work under fail-fast. Tasks completing exactly at the deadline succeed before cancellation of unfinished tasks. No scheduling overhead, durable checkpoint, distributed race, compensation, network latency or persistent resume is modeled. Workflow concepts · DAG dependencies.
Separate concurrency from dependency
This browser executes a finite graph of six deterministic local functions. Asynchronous readiness means a task may start when its dependencies have committed results and a worker slot is free. It does not mean every node starts together. Load and filter must finish before either branch is eligible; join waits for both sum and histogram, and verification waits for join. The two branches can overlap with two workers under Independent branches. One worker serializes ready work, while Histogram waits for sum creates a dependency that extra workers cannot remove. No Java thread, coroutine or ADK process runs here.
Control data and dependencies
The JSON integer array is the actual input, limited to twenty-four integers between minus one thousand and one thousand. Minimum retained value keeps entries greater than or equal to that threshold; duplicates remain distinct observations. Branch dependency either lets histogram and sum start independently after filtering or makes histogram wait for sum. Worker slots limits simultaneous tasks to one or two. Sum duration and Histogram duration specify invented service seconds independent of input size. Load, filter, join and verify take two, four, three and five modeled seconds respectively. These are teaching inputs, not measurements of Java, Dagster or an LLM.
Measure the critical path and inspect blocked work
At defaults, load finishes at two and filter at six modeled seconds. Sum then runs from six to fourteen and histogram from six to eighteen. Join finishes at twenty-one and verification at twenty-six. Select one worker: sum still ends at fourteen, histogram instead ends at twenty-six, and verification finishes at thirty-four. Restore two workers and choose Histogram waits for sum: completion remains thirty-four because dependency, not capacity, serializes the branches. While paused at modeled second eight under independent branches, both workers are busy but neither branch has committed an artifact. Inspect task exposes that distinction as text. A permanently failed sum with one attempt blocks join even if histogram finishes successfully.
Separate attempt failure from workflow failure
Open Failure and retry controls. Injected failure task chooses sum, histogram, join, or no injected failure. Failure behavior chooses the first attempt or every attempt. Maximum attempts includes the original attempt; one means no retry. Retry delay is a fixed wait after a failed attempt, during which its worker is free. Exhausted failure policy either finishes independent work while blocking descendants or cancels unfinished work immediately. Disabled controls have no effect on the current scenario. Inject one extra zero into histogram counts produces inconsistent artifacts: the weighted sum stays unchanged but the count increases, so verification rejects the result. Retries cannot repair that deterministic corruption.
Inspect states, artifacts and time
Play and Pause inspect the generated schedule over sixty viewing seconds. Next event advances to the next scheduler state; Restart rewinds without changing inputs; Speed changes the inspection pace, while Modeled time scrubs the schedule and pauses playback. Editing inputs rebuilds the scenario and starts inspection unless reduced motion is requested. Inspect task selects a node, as does clicking its card. The text below reports dependencies, attempt, worker, error and committed artifact, providing an alternative to the diagram. A running task has no committed output. Final preview describes the eventual outcome even when the board still shows an earlier state.
Use a bounded local contract
Workflow deadline cancels unfinished tasks, but completions exactly at the deadline are processed first. With default inputs a deadline of twenty-six permits verification and twenty-five cancels it. Every transformation is executed locally in memory; there is no persisted checkpoint, distributed worker, remote tool, external side effect or production benchmark. The ready-task order is fixed by the displayed graph. Dependency edges express this fixture policy; they do not implement an ADK agent conversation or the complete Dagster asset system. A verified result proves only that this local histogram and sum agree on count and weighted total.
Keep comparisons and observations
Capture baseline saves the visible result and current inputs as a comparison point. Change a scheduling parameter, then use Replace baseline to record the new outcome or Clear baseline to remove the saved comparison. Baselines do not run another worker or prove an independent result. The notebook stores your observations locally in this browser; Export notes downloads that text as JSON. Expand experiment opens the workspace full screen and Exit full screen returns to the page. On a phone, focus the dependency board and use horizontal scrolling to reach its right-hand tasks, or use Inspect task to read the same state and artifact without interpreting the canvas. Speed settles elapsed time before switching pace; pausing or hiding the tab freezes inspection.