xff v0.8.0

xff - Test and Verification Plan

Companion to implementation-plan.md. Project rule:
tests at every changed boundary; a one-off manual check is evidence for an
investigation, not a durable regression guard.

Status: implemented verification map / 2026-09-10

Test layers

Registries and generated documentation

Parser and values

Configuration and policy

Filesystems, matching, and content

Engine and command behavior

Compatibility and examples

Local validation sequence

Start narrow and widen after the focused test passes:

  1. run the owning package's unit/integration target;
  2. regenerate derived documentation or data when its source changes;
  3. run pre-commit for every changed file;
  4. run bazel test //... for the core;
  5. add the targets from tools/extras.py --wildcards for the complete modular
    graph.

Use hermetic Clang for release-representative results. Run the applicable
sanitizer configuration for memory, undefined-behavior, or concurrency changes.

Pull-request CI

The required workflow provides distinct evidence rather than treating one green
build as sufficient:

Job Evidence
pre-commit / trunk Repository policy, formatting, static checks, generated metadata, and workflow lint.
test (ubuntu-latest) Complete core and extras graph under hermetic Clang/libc++, production ThinLTO, required Linux FUSE tests, and staged release binaries.
test (macos-latest) The same production configuration and staged binaries on macOS.
gcc Compilation compatibility with the supported GCC build.
minimal Lean core still builds after the removable extras modules are physically absent.
asan AddressSanitizer plus UndefinedBehaviorSanitizer.
tsan ThreadSanitizer over the parallel implementation.
msan Linux MemorySanitizer with the instrumented libc++ toolchain.
coverage LLVM source coverage, category thresholds, and changed-line/branch enforcement.
fuzz Bounded campaigns for every discovered fuzz target plus committed-corpus replay in ordinary tests.
xff-md The checked-in reference and NOTICE.md match the all-extras generator.
clang-tidy Changed C/C++ translation units checked against the generated hermetic compile database.
Release site tests Release notes, install snippets, links, and configured documentation generation.
done Aggregate gate proving every required dependency completed successfully.

Linux FUSE coverage is an explicit runner promise: those tests fail instead of
silently skipping when the mount path is unavailable. The default platform jobs
stage and execute the binaries produced by their single ThinLTO Bazel test run;
they do not perform a second Bazel build or test invocation.

Release verification

The release workflow independently builds both explicit executable targets for
each platform, stages stripped executables and split debug information, exercises
the staged binaries, constructs .tar.zst archives, and produces SHA256SUMS.
Publication and attestations happen only after the platform artifact jobs and
release metadata checks succeed.

Field-template fuzz isolation

The field fuzz harness binds an in-memory filesystem for every generated path. Content fields
read synthetic input bytes even when a path is absolute or contains parent-directory components.
Every mutation entry point aborts the harness. Corpus cases using {hash} verify the digest against
the synthetic bytes, so removing the VFS binding fails replay instead of silently falling back to
host-path reads. This supplements the evaluator harness's descriptor-level action restrictions.