Test Suite Governance Audit

The test-suite governance audit is the core design for the tests scope described by docs/design/audit-standard.html. The durable governance records are core-adr-0002 and core-req-0002.

Problem

Rack can run discovered tests, but committed Rack manifests can drift away from the real test tree. A stale manifest hides missing signoff coverage and makes the repository look governed even when new test files have not been declared in STRATUM.toml.

Configuration

Repositories opt in by registering test roots and signoff strata in their dev-std config. The root-relative paths are intentionally explicit so workspaces and packages do not infer test ownership from unrelated folders.

[tests]
roots = ["tests"]
signoff_strata = ["L99_signoff"]

Audit Contract

For each configured test root, the audit requires rack.toml, reads [strata].order, verifies that every declared stratum has a matching directory and STRATUM.toml, reports stratum-like directories missing from rack.toml, and compares discovered test_*.py files with declared [[subtests]].file entries. Duplicate subtest ids or files fail because they make review evidence ambiguous.

Each configured signoff stratum must be declared in rack.toml, must declare at least one subtest, and must include the signoff concern. That keeps release-facing test suites visible to both humans and automation.

Boundary With Rack

Dev-std owns this first-pass committed-manifest check because Rack does not yet expose a failing audit command for stale manifests. Rack remains the owner of test discovery, test execution, and future runtime evidence. Once Rack provides native audit behavior, dev-std should delegate the manifest check instead of maintaining a parallel interpretation indefinitely.

Verification

The implementation lives in src/wn_dev_std/test_governance.py and is covered by tests/L0_foundation/test_L0_016_test_suite_governance.py. The config schema at docs/contracts/wn_dev_std_config.schema.v0.json documents the [tests] keys used by this scope.