<?php

declare(strict_types=1);

namespace Drupal\flowdrop\Plugin\FlowDropNodeProcessor;

/**
 * Marker interface for node processors that never execute.
 *
 * Processors implementing this interface declare that they have no runtime
 * behaviour — they exist purely as design-time artifacts (e.g. a Note node
 * carrying documentation). Orchestrators exclude them entirely: no job is
 * generated and no execution-graph entry is created, regardless of how the
 * node is wired. This is an intent declared on the processor, not inferred
 * from graph topology — an orphan (edgeless) node of an ordinary processor is
 * still a legitimate, executable node.
 *
 * This interface is intentionally empty. It serves as a type marker, detected
 * via instanceof/is_subclass_of the same way TriggerNodeProcessorInterface is,
 * giving compile-time safety that attribute-based detection would not.
 *
 * A future "presentational" node concept may extend this interface
 * (presentational ⊂ non-executable), never the reverse.
 *
 * @see \Drupal\flowdrop_node_processor\Plugin\FlowDropNodeProcessor\Note
 * @see \Drupal\flowdrop_pipeline\Service\JobGenerationService::isNonExecutableNodeProcessor()
 * @see \Drupal\flowdrop_runtime\Service\Compiler\WorkflowCompiler::shouldExcludeNode()
 *
 * @internal This interface is not part of the public API and may change without notice.
 */
interface NonExecutableNodeProcessorInterface {
}
