rosterQualifiedSurfaces function

List<String> rosterQualifiedSurfaces({
  1. required String design,
  2. required String substation,
})

The ROSTER-QUALIFIED surfaces rosterDecisionIndexCommand is run over for the spec carried in design, each prefixed with substation.

Reads the ## Touches section ONLY — that section is the spec's own statement of what it touches, so the lane cannot mis-derive its own scope. A lib/src/x.dart:Symbol token contributes its PATH half; a backticked token that is not a path (a bare symbol, a shell line) is skipped; duplicates collapse in document order. An empty substation falls back to kUnknownSubstationPrefix. Returns an empty list for a spec with no ## Touches section — the pre-specify state.

Implementation

List<String> rosterQualifiedSurfaces({
  required String design,
  required String substation,
}) => rosterQualifiedPaths(
  paths: [
    for (final match in _backticked.allMatches(_touchesSection(design)))
      match.group(1)!,
  ],
  substation: substation,
);