- fail closed on MCP input and compile database policy - add shared scan catalogs, finding queries, and tiered gates
157 lines
4.1 KiB
JSON
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/**"
|
|
]
|
|
}
|