ArchitecturePipelineStepDescriptor.java

package com.taxonomy.architecture.pipeline;

import java.io.Serializable;

/**
 * Serializable metadata descriptor for a single {@link ArchitecturePipelineStep}.
 *
 * <p>Used by {@link ArchitecturePipelineStepRegistry} to expose step metadata
 * without requiring access to the step implementation itself.
 *
 * @param id               stable, kebab-case step identifier (e.g. {@code "leaf-enrichment"})
 * @param order            numeric order value; lower values run first
 * @param enabledByDefault {@code true} when the step is active in the default pipeline
 * @param coreInvariant    {@code true} when the step enforces a structural invariant that
 *                         must not be bypassed (e.g. anchor selection, node-limit truncation).
 *                         {@code false} marks safe extension points where alternate
 *                         implementations may be substituted.
 */
public record ArchitecturePipelineStepDescriptor(
        String id,
        int order,
        boolean enabledByDefault,
        boolean coreInvariant
) implements Serializable {
}