On this page
PhaseTimeoutError๏
Use md.PhaseTimeoutError from the public package namespace.
- class PhaseTimeoutError(phase_name: str, timeout_ms: int)[source]๏
- Purpose:
Signal that one scheduled phase exceeded its configured barrier timeout and the resolution pipeline was aborted.
- Raised When:
A phase's units of work do not all report before the barrier deadline. The scheduler runs phases behind barriers, so a phase that never completes would otherwise stall conjure indefinitely; the timeout turns that hang into a diagnosable failure.
- What To Do About It:
A timeout usually means work is blocked, not slow. Look for a constructor that blocks on I/O, a lock held across a phase boundary, or a hook waiting on something that never arrives. Raising the timeout budget hides the hang rather than fixing it.
Contract:
Identifies the phase that timed out.
Preserves the configured timeout value in milliseconds for callers, logs, and higher-level scheduler diagnostics.
Subclasses PhaseSchedulerError, so callers may catch either the specific timeout or the whole scheduler family.
Owned State:
phase_name: the phase that exceeded its budget.
timeout_ms: the configured budget, in milliseconds.
- Registration:
Exported on the public root surface; import, raise, and catch freely.
- Subsystem Context:
One of the 11 utilities/custom_exceptions/ types and one of two concrete children of PhaseSchedulerError. Its sibling PhaseExecutionError means the work RAN and failed; this one means the work never reported at all. That distinction is the whole reason both types exist.
- System Context:
Fires during conjure, at a phase barrier. Because it aborts before a Conduit exists, nothing has been registered into Aether and no cleanup cascade is owed - the failure is total and leaves no partial world.
AGENT_ACCESS: public
- AGENT_PURPOSE:
access: public. Raised when a conjure phase exceeds its barrier timeout; phase_name + timeout_ms locate it. Usually a blocked constructor/lock/hook, not slow work.