fold/tests/quality/impacted_tests.json
trvon b0b51f1e71
feat: converge quality and scan interfaces
- fail closed on MCP input and compile database policy
- add shared scan catalogs, finding queries, and tiered gates
2026-07-29 00:57:33 -04:00

157 lines
4.1 KiB
JSON

{
"schema_version": 1,
"always": [
{
"test": "fold:benchmark_evaluation",
"rationale": "Preserve positive, negative, and regression corpus contracts for every change."
},
{
"test": "fold:source_structure",
"rationale": "Preserve production architecture and source-budget contracts for every change."
}
],
"rules": [
{
"id": "analysis-and-detectors",
"globs": [
"src/analysis/**",
"include/fold/analysis/**"
],
"tests": [
"fold:quality_precision",
"fold:source_metamorphic",
"fold:sast_security_e2e",
"fold:cross_tu_security"
],
"rationale": "Detector and symbolic-analysis changes need precision, metamorphic, security, and cross-TU regressions."
},
{
"id": "cli-router-and-reports",
"globs": [
"src/cli/**",
"include/fold/cli/**",
"src/report/**",
"include/fold/report/**"
],
"tests": [
"fold:scan_e2e",
"fold:subprocess_fanout"
],
"rationale": "CLI, router, and report changes affect observable scan behavior and subprocess orchestration."
},
{
"id": "binary-analysis",
"globs": [
"src/backend/r2*",
"include/fold/backend/r2*",
"src/binary/**",
"include/fold/binary/**"
],
"tests": [
"fold:binary_backend",
"fold:binary_rop"
],
"rationale": "Binary backend changes need extraction and binary-security regression coverage."
},
{
"id": "source-backend",
"globs": [
"src/backend/clang*",
"include/fold/backend/clang*"
],
"tests": [
"fold:scan_e2e",
"fold:cross_tu_security",
"fold:sast_security_e2e"
],
"rationale": "Source backend changes affect scan routing, cross-TU behavior, and security findings."
},
{
"id": "ir-and-symbolic-model",
"globs": [
"src/ir/**",
"include/fold/ir/**",
"src/symbolic/**",
"include/fold/symbolic/**"
],
"tests": [
"fold:expr_json_roundtrip",
"fold:guarded_facts",
"fold:symbolic_arrays",
"fold:quality_precision"
],
"rationale": "IR and symbolic-model changes need serialization, fact, array, and detector precision regressions."
},
{
"id": "rust-frontend",
"globs": [
"src/backend/rust*",
"include/fold/backend/rust*",
"tools/fold-rust/**"
],
"tests": [
"fold:rust_frontend",
"fold:expr_json_roundtrip"
],
"rationale": "Rust frontend changes need wire-format and frontend integration coverage."
},
{
"id": "swift-frontend",
"globs": [
"src/backend/swift*",
"include/fold/backend/swift*",
"tools/fold-swift/**"
],
"tests": [
"fold:swift_frontend",
"fold:expr_json_roundtrip"
],
"rationale": "Swift frontend changes need wire-format and frontend integration coverage."
},
{
"id": "scan-e2e-test",
"globs": [
"tests/integration/test_scan_e2e.cpp"
],
"tests": [
"fold:scan_e2e"
],
"rationale": "Changes to the scan end-to-end regression must execute that regression."
},
{
"id": "lint-policy",
"globs": [
"tests/lint/**"
],
"tests": [
"fold:benchmark_evaluation",
"fold:source_structure"
],
"rationale": "Lint policy changes retain the unconditional harness and architecture regression checks."
},
{
"id": "quality-harness",
"globs": [
"scripts/benchmarks/**",
"scripts/fold_quality.py",
"scripts/select_impacted_tests.py",
"tests/benchmarks/**",
"tests/architecture/**",
"tests/quality/**"
],
"tests": [
"fold:benchmark_evaluation",
"fold:source_structure"
],
"rationale": "Quality-harness changes need their Python and architecture regression suites."
}
],
"fallback_globs": [
"meson.build",
"meson_options.txt",
"src/**",
"include/**",
"tools/**",
"tests/**"
]
}