fold/tests/quality
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
..
impacted_tests.json feat: converge quality and scan interfaces 2026-07-29 00:57:33 -04:00
README.md feat: converge quality and scan interfaces 2026-07-29 00:57:33 -04:00

Impacted regression-test policy

impacted_tests.json is the reviewed changed-path map used by fold quality. Every run retains test-selection.json with the changed paths, matched rule IDs, selected tests, and rationale for each selection.

Two suites are unconditional:

  • fold:benchmark_evaluation preserves positive, negative, and regression corpus contracts.
  • fold:source_structure preserves architecture and source-budget contracts.

Rules add subsystem-specific integration and regression tests. Selection is a union, so a change spanning subsystems runs every applicable test. A changed production, build, tool, or test path covered by fallback_globs but by no reviewed rule runs the complete Meson suite. A missing or invalid manifest and git-diff failures also fail closed to the complete suite.

When introducing a subsystem, update the manifest in the same change. Name the behavioral tests that exercise its public effects and give a rationale. Do not remove unconditional or fallback coverage merely to reduce CI time; first add evidence that a narrower rule preserves the relevant regression coverage.

Flake evidence

fold quality --test-repetitions N executes the same selected set independently N times. Each attempt retains its complete console log and a sanitized result artifact. flaky-test-evidence.json classifies each test as stable-pass, stable-fail, stable-skip, flaky (both pass and fail), or inconsistent (missing/skip transitions or malformed evidence). Sanitized artifacts omit the Meson environment and test stdout because the complete console log is retained separately and environments may contain credentials.

A later pass never erases an earlier failure: every attempt and the aggregate classification participate in the gate status. Repetition is evidence, not an automatic retry or quarantine mechanism. The default is one attempt; broader CI tiers may request repeated evidence explicitly.

CI tiers

.github/workflows/quality-gates.yml applies one explicit tier per event:

  • PR (pull request): merge-base differential source scan, impacted regressions once, and the Fold policy manifest.
  • Nightly (daily schedule or manual dispatch): complete Meson suite three times plus the Fold policy manifest, with no branch differential.
  • Release (published release or manual dispatch): complete Meson suite, Fold policy manifest, reviewed 70% line-coverage floor, and release-binary smoke.

Every tier uploads quality-report/, including complete logs, SARIF where applicable, test selection, repeated-test classifications, policy summaries, and compact token measurements. The nightly repetition count collects flake evidence; it does not convert failures into passes. Release coverage uses the previously reviewed floor rather than introducing a new threshold.