Replace hardcoded path patterns with a config-driven framework that
reads classification rules from [tool.devx.classify] in pyproject.toml.
Design principles:
- Safe-by-default: unknown files → user-facing (never skip releases)
- Config-driven: projects declare paths, framework handles logic
- Layered rules: user_facing_overrides > infrastructure_overrides >
infrastructure patterns > default (user-facing)
- Tag system: orthogonal categories for CI conditional execution
(e.g., "ansible" tag for molecule test gating)
- Transparent: every classification has a human-readable reason
- Proper glob matching: ** for recursive, * within segments
Backward-compatible API preserved (is_user_facing, is_workflow_only,
classify_changes, has_user_facing_changes) with optional legacy
patterns parameter for existing callers.
Projects like GRM and infra can now plug in their own criteria via
pyproject.toml without modifying framework code.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>