Filter
PrimaryPathFirst
A filter that asks whether the main business flow is still obvious, concentrated, and more important than the supporting scaffolding around it.
The question this filter asks
Can a new contributor trace the real product path quickly, or has the supporting code become more visible than the business flow itself?
CLI watch output, HTML reports, and programmatic FilterVerdict evaluation.
The overall verdict passes at the configured passingScore (0.70 by default).
Discoverability and flow clarity.
Signals it scores
Each verdict combines several sub-scores so teams can see what is pulling the filter up or down.
Scores the percentage of code that sits on the main flow against the configured target (0.60 by default).
Scores abstraction layers per primary-path file against a target ratio of roughly one layer per three primary-path files.
Scores total project count against a target of five or fewer projects.
How to interpret the result
A low PrimaryPathFirst score means teams have to learn the supporting machinery before they can learn the product flow.
- If concentration drops, too little of the codebase is on the primary path.
- If abstraction dilution drops, the business flow is wrapped in too many layers.
- If project count drops, the solution shape itself is hiding the path behind too many boundaries.
What to do next when it drops
Filters are only useful if they drive a clear next move.
- Mark the real path with [PrimaryPath] attributes where the conventions are not enough.
- Move core orchestration into fewer, more direct files and folders.
- Merge or remove low-value projects that exist mainly to preserve ceremony.
Related pages
Jump to the command or analyzer docs that typically trigger action from this filter.
SF0004
Deep call chains are one of the cleanest signs that the primary path is buried.
AnalyzerSF0007
When support files are referenced more than the primary path, discoverability has already flipped.
Guidecsproj reference
Use explicit analyzer installation and primary-path annotations when you need the IDE and CLI to agree.