001package gudusoft.gsqlparser.ir.semantic.diff;
002
003/**
004 * Classification of a {@link CanonicalLineageEdge}. Slice 7 records three
005 * roles:
006 *
007 * <ul>
008 *   <li>{@link #SELECT} โ€” output column receives data from the base column.</li>
009 *   <li>{@link #FILTER} โ€” base column appears in a WHERE predicate reachable
010 *       from the outer query.</li>
011 *   <li>{@link #JOIN} โ€” base column appears in a JOIN predicate
012 *       (JOIN ... ON or JOIN ... USING) reachable from the outer
013 *       query.</li>
014 * </ul>
015 *
016 * <p>{@code GROUP_BY} is intentionally absent in slice 7. See the slice-7
017 * design at {@code docs/designs/sql-semantic-governance-unified-roadmap.md}
018 * ยง13 step 5 (and the slice-7 plan) for the rationale.
019 */
020public enum EdgeRole {
021    SELECT,
022    FILTER,
023    JOIN
024}