ruvnet/ruflo · error · GasTownError

UNKNOWN

UNKNOWN

Error message

Execution cancelled

What it means

Formula execution noticed signal.aborted while scheduling the next wave of parallel steps — the caller's AbortSignal cancelled the run. Execution stops with this error (status set accordingly) rather than continuing to launch steps; it is the intended cancellation path, not a crash.

Source

Thrown at v3/plugins/gastown-bridge/src/formula/executor.ts:773

        const getReadySteps = (): Step[] => {
          const ready: Step[] = [];
          for (const step of orderedSteps) {
            if (completed.has(step.id) || inProgress.has(step.id)) continue;
            const deps = stepDeps.get(step.id);
            if (!deps || [...deps].every(d => completed.has(d))) {
              ready.push(step);
            }
          }
          return ready;
        };

        // Execute in parallel waves
        while (completed.size < orderedSteps.length) {
          // Check for cancellation
          if (signal.aborted) {
            progress.status = 'cancelled';
            this.emit('execution:cancelled', executionId);
            throw new GasTownError(
              'Execution cancelled',
              GasTownErrorCode.UNKNOWN,
              { executionId }
            );
          }

          const readySteps = getReadySteps();
          if (readySteps.length === 0 && inProgress.size === 0) {
            // Deadlock - should not happen with valid DAG
            break;
          }

          // Limit parallel execution
          const batchSize = Math.min(readySteps.length, maxParallel - inProgress.size);
          const batch = readySteps.slice(0, batchSize);

          if (batch.length === 0) {
            // Wait for in-progress steps to complete

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Check the cancellation source (AbortSignal/timeout) and restart the operation if the cancellation was unintended.
  2. Handle cancellation as a control-flow path: clean up partial state and surface a resumable status to the caller.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at v3/plugins/gastown-bridge/src/formula/executor.ts:773 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/96b52d0a4a135719. Report an issue: GitHub.