Specifies bounded DAG execution contracts and evaluates executor receipts for dispatch, cancellation, joins, and effect reconciliation. Use when an implementation must bind a planned DAG to named runtime controls. NOT for claiming an executor is active, spawning agents, or certifying an effect from a plan.
Specifies bounded DAG execution contracts and evaluates executor receipts. A plan does not establish that dispatch, isolation, cancellation, join, or external effects occurred.
Use Runtime lifecycle limits. Planned topology does not establish dispatch, cancellation, join, or effect behavior.
Decision Points
Boundary selection
flowchart TD
A[Task data/effect contract] --> B[Name file, process, network, secret, resource, and context boundaries]
B --> C{Named control enforces required boundary?}
C -->|Yes| D[Record principal, lifetime, and readback]
C -->|No| E[Reduce scope, add control, or stop]
Failure disposition
flowchart TD
A[Failure/timeout receipt] --> B{Effect reconciled and retry safe?}
B -->|No| C[Contain dependents and reconcile]
B -->|Yes| D{Authorized changed-factor experiment?}
D -->|Yes| E[Propose revision/retry with acceptance check]
D -->|No| F[Record failure or escalate]
Join and release
flowchart LR
A[Attempt receipts] --> B{Declared AND/OR/partial join condition met?}
B -->|Yes| C[Release dependents with attributed limitations]
B -->|No| D[Block, contain, or escalate]
Failure Modes
Permission Creep
Symptoms: Child nodes have more permissions than parent
Detection: Compare delegated grants by principal, operation, canonical resource, conditions, expiry and policy version. Tool-name subsets alone do not establish attenuation.
Fix: Have the named policy evaluator derive an attenuated grant; deny or hold unresolved comparisons before dispatch.
Context Pollution
Symptoms: Node sees conversation history from unrelated nodes
Detection: Compare supplied context identities and disclosure scopes with declared input grants; a permitted dependency reference is not leakage.
Fix: Enforce context isolation, only pass declared inputs
Zombie Wave
Symptoms: Wave never completes, some nodes stuck in "running" state
Detection: The named executor has no terminal/cancellation receipt by its declared deadline or heartbeat policy.
Fix: Contain dependents and use the executor's authorized cancellation/reconciliation path; do not assert a kill occurred without its receipt.
Resource Exhaustion
Symptoms: New agents fail to spawn, memory/CPU limits hit
Detection: Agent spawn returns resource error
Fix: Reconcile resource receipts, bound admission and queue eligible nodes; changing isolation alone does not create capacity.
Detection: Compare attributed usage with the node and run budgets under their declared units and accounting source.
Fix: Follow the declared hold/escalation policy; budget data does not itself grant continuation authority.
Worked Examples
Multi-Wave DAG with Failure Recovery
Scenario: 3-wave codebase analysis DAG where Wave 2 node fails
flowchart LR
A[scan-files: completed] --> B[analyze-architecture: malformed output]
A --> C[check-security: completed]
B --> D{Declared partial join condition?}
C --> D
D -->|required architecture output| E[generate-report: blocked]
D -->|partial result explicitly allowed| F[generate-report: attributed limitation]
Reconciliation check: Determine whether an effect was attempted, its idempotency/effect key, and the executor receipt.
Retry guard: Retry only if the policy authorizes a changed-factor attempt, the effect state is reconciled, and its acceptance check is recorded; otherwise contain and escalate.
Wave completion check: One node failed, one succeeded
check-security succeeded, output available
analyze-architecture has an unavailable/unknown attempt result; do not encode that as JSON null.
Dependency check: generate-report requires both outputs
Decision: Can proceed with partial data? Check node config
If required: false → advance with warning
If required: true → halt execution
Expert catches: Checking dependency requirements before advancing wave
Novice misses: Would either block forever or advance with missing critical data
Isolation Trade-offs
Scenario: Code execution node needs filesystem access but has security concerns
Threat assessment: Bash tool + external code = high risk
Isolation decision: select a named control only after its boundary, principal, mount, and readback are evaluated. A container alone does not determine host-write authority.
Trade-off resolution:
Constructed local configuration: a writable mount maps /workspace/src to /container/workspace; the mount grant, not the container label, authorizes that path.
Use a named enforceable command/process policy; the phrase "safe commands" does not constrain subprocesses, filesystem access, or network effects.
Constructed local limits are selected from the task workload and threat model, then recorded with the executor receipt.
Expert catches: Need to balance security with functionality
Novice misses: Would either over-isolate (breaking functionality) or under-isolate (security risk)
Quality Gates
Each node starts only after its required dependency and authority conditions are satisfied.
Each node has valid isolation level for its threat profile
Delegation attenuation is evaluated over complete grants; unresolved resource/condition comparisons block dispatch.
All required trace fields populated (node_id, model, tokens, cost, duration)
Deadlines, cancellation semantics, and readback source are declared; no default timeout is assumed.
Cost budgets defined and monitored per node
Retry is conditioned on idempotency/effect state, changed-factor rationale, budget, and acceptance check.
The reference inspected Kotlin coroutine lifecycle documentation, not an agent-runtime implementation. Book candidate, not Book prose: planned topology, dispatch receipt, and external-effect reconciliation are distinct claims. Compare with the Book-review files before asserting novelty or placement.
NOT-FOR Boundaries
Don't use dag-runtime for:
DAG structure planning → Use dag-planner instead
Output quality validation → Use dag-quality instead
Skill-to-task matching → Use dag-skills-matcher instead
Real-time interactive workflows → Use direct agent calls
Single-step tasks → Use individual skills directly
Expert in 2000s-era music visualization (Milkdrop, AVS, Geiss) and modern WebGL implementations. Specializes in Butterchurn integration, Web Audio API AnalyserNode FFT data, GLSL shaders for audio-reactive visuals, and psychedelic generative art. Activate on "Milkdrop", "music visualization", "WebGL visualizer", "Butterchurn", "audio reactive", "FFT visualization", "spectrum analyzer". NOT for simple bar charts/waveforms (use basic canvas), video editing, or non-audio visuals.
Expert legal research agent for finding and scraping expungement data state by state. Knows authoritative sources, URL patterns, Firecrawl configuration, and 2026 legal landscape.
Expert in 3D computer vision labeling tools, workflows, and AI-assisted annotation for LiDAR, point clouds, and sensor fusion. Covers SAM4D/Point-SAM, human-in-the-loop architectures, and vertical-specific training strategies. Activate on '3D labeling', 'point cloud annotation', 'LiDAR labeling', 'SAM 3D', 'SAM4D', 'sensor fusion annotation', '3D bounding box', 'semantic segmentation point cloud'. NOT for 2D image labeling (use clip-aware-embeddings), general ML training (use ml-engineer), video annotation without 3D (use computer-vision-pipeline), or VLM prompt engineering (use prompt-engineer).
Apply crisis decision-making research to agent routing, uncertainty triage, and coordination failure analysis in time-pressured systems. Use when diagnosing handoff failures, analytical paralysis, or expert judgment under incomplete information. NOT for routine coding, simple CRUD design, or static single-agent tasks with complete information.
Use for insight, reframing, contradiction, impasse, and anomaly-driven problem solving when execution effort no longer helps. NOT for routine optimization, error correction, or well-specified tasks with known solution paths.
Apply cognitive task analysis to expert work that depends on perceptual cues, branching judgment, and recurring monitoring loops. Use when decomposing expert capability into agent structure, simulation design, or validation interviews. NOT for ordinary step-by-step SOP capture or simple pipelines with no tacit cue layer.