Drop stale rule numbering in validate_post_graph
The function had "Rule 1" and "Rule 3" labels but no Rule 2 — the
missing rule was the per-job pre-graph checks that moved into
registration::register. With only two rules left here (acyclic and
reachability), the numbering is just dead weight.

Assisted-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
change yvvtyotxlqqtskypmvtlqkkwwoorrovr
commit dd30ad488184a56021b0108222681e282c74a4bd
author Alpha Chen <alpha@kejadlen.dev>
date
parent lvlvtymz
diff --git a/src/ci/pipeline.rs b/src/ci/pipeline.rs
index e914fe4..b284a79 100644
--- a/src/ci/pipeline.rs
+++ b/src/ci/pipeline.rs
@@ -379,9 +379,9 @@ fn validate_post_graph(
     let mut errors = Vec::new();
     let mut cycle_members: std::collections::HashSet<&str> = std::collections::HashSet::new();
 
-    // Rule 1: acyclic. Each non-trivial strongly connected component
-    // is a distinct cycle. A single-node SCC is only a cycle if it has
-    // a self-edge.
+    // Acyclic. Each non-trivial strongly connected component is a
+    // distinct cycle. A single-node SCC is only a cycle if it has a
+    // self-edge.
     for scc in petgraph::algo::tarjan_scc(graph) {
         let is_cycle = scc.len() > 1 || (scc.len() == 1 && graph.contains_edge(scc[0], scc[0]));
         if !is_cycle {
@@ -397,7 +397,7 @@ fn validate_post_graph(
         errors.push(StructureError::Cycle { cycle_jobs, spans });
     }
 
-    // Rule 3: reachability — every job's transitive inputs must include a source ref.
+    // Reachability — every job's transitive inputs must include a source ref.
     //
     // TODO: replace the `quire/` prefix check with a whitelist of real
     // source refs (`quire/push`, etc.) once those are implemented, so