Repository health

This page records configured repository controls and known gaps. A workflow definition is tooling evidence, not proof that an arbitrary commit passed, and no repository control establishes production readiness, legal compliance, or independent security assurance.

Control State Enforcement or gap
CodeQL Configured for JavaScript/TypeScript Advanced setup analyzes web/ on relevant changes, a weekly schedule, and manual dispatch; it does not analyze Rust
cargo-audit Configured in security CI One repository-owned runner builds exact cargo-audit 0.22.2 with Rust 1.88.0 and the tool's packaged lockfile, verifies that executable, then checks the committed workspace lockfile against the current RustSec advisory database without rewriting it
cargo-deny Configured in security CI The pinned action checks advisories, licenses, bans, and dependency sources against repository policy
Trivy Configured in security CI SHA-pinned trivy-action v0.36.0 runs Trivy v0.70.0 against the repository filesystem for vulnerability, secret, and misconfiguration findings at the declared severity policy
Semgrep CE Configured in security CI A digest-pinned Semgrep CE image runs declared community rules with metrics disabled
Dependabot Configured Weekly Cargo, npm, and GitHub Actions update proposals are defined; configuration does not guarantee that an update exists, is safe, or has been merged
cargo-fuzz Scheduled and bounded Four product-semantic and five parser targets replay reviewed seeds and compile on relevant PRs, then run bounded scheduled/manual campaigns; the older committed parser baseline remains evidence only for its recorded commit
cargo-mutants Scoped and manual Selected policy, planner/runtime, and extraction contracts have evidenced review campaigns; no mutation workflow, workspace-wide baseline, or aggregate score is committed
Source coverage Enforced, scoped Rust 1.88.0 and the explicit LLVM backend of cargo-tarpaulin 0.37.2 enforce the accepted exact 21,439/24,842 aggregate and changed-line ratio for tracked Rust files under crates/*/src/** and xtask/src/**; venom.coverage.v2 binds a normalized line-state digest, changed-file presence is fail-closed, and advisory Codecov upload remains best-effort
MSRV Configured in CI Workspace packages declare Rust 1.88; the compatibility matrix also exercises stable, beta, and nightly
Cross-platform runtime smoke Configured in CI A focused Rust 1.88.0 matrix builds the default CLI and exercises CLI metadata, one deterministic loopback scan, atomic report paths, core wire stability, exact-origin authority, and redirect observation on Ubuntu, Windows, and macOS; it is not platform certification, all-features evidence, or a release-readiness claim
SemVer Configured for termivar-core cargo xtask semver compares the all-features core API with the recorded former-name v0.9.0-alpha baseline using a patch-compatibility threshold
Current-head downstream consumers Configured in CI One dedicated lockfile supports four separate package tests for default core, deterministic assessment/reporting, the Legacy Scanner SDK facade, and plugin API 0.2 against the same checkout; this is not cross-version or external-adoption evidence
Endpoint-scale evidence Initial controlled record The loopback-only real-runtime harness recorded fixed 100-endpoint, 1,000-endpoint, and 10,000-request workloads for source 27321ef in workflow run 33292247976; this is not an accepted repeatable baseline, SLA, capacity claim, or regression threshold
Architecture boundaries Configured in CI cargo xtask architecture checks virtual-root source, workspace edges, protected imports, transport-free reasoning, and responsibility ownership behind ten modular root source facades

Release evidence

The release workflow defines formatting, architecture, Clippy, workspace-test, dependency-policy, and cross-platform build gates. cargo xtask release runs a local preflight without tagging or publishing. A release claim must identify the exact commit and retain the corresponding GitHub Actions result; the existence of either command is not evidence that it passed.

The separate Tests-workflow runtime-smoke matrix adds host-native execution on Ubuntu, Windows, and macOS. It uses deterministic loopback fixtures and a small set of path, scope, redirect, and wire-format checks; it does not replace the release workflow's artifact builds or establish broad platform support by configuration alone.

The initial endpoint-scale record is tied to source commit 27321efbbf49cb2adbc72afb699d1b31ea407486 and workflow run 33292247976. Its Markdown and validated JSON retain the runner, workload, request-accounting, and variance metadata. One controlled run does not establish an accepted repeatable baseline or a release performance threshold.

Public API compatibility scope

The configured Public API Compatibility CI job runs cargo-semver-checks 0.50.0 through cargo xtask semver. It compares only the current termivar-core, with all features enabled, against the historical venom-core package at commit 9f65c661028af2d7129caeee640f9b6185c357ca, the commit referenced by the annotated v0.9.0-alpha tag. The explicit patch comparison mode makes a detected breaking change fail even though the unreleased workspace has moved to the distinct 0.10.0-alpha.3 development line.

The all-features comparison deliberately enables core's non-default legacy-contracts feature. That feature preserves the historical configuration, error, event, raw finding, vulnerability, and HTTP records solely for the pinned v0.9.0-alpha API check; passing the check does not place those records in the default core crate or the default product runtime.

This is deliberately a core-contract gate, not a workspace-wide stability claim. ADR 0007 makes ScanContext constructor-owned, non-exhaustive, and responsible for a private knowledge base. That transition is intentionally source-incompatible with the tagged v0.9.0-alpha struct-literal contract. termivar-scanner therefore remains Preview and outside the blocking job until the next Preview release provides an immutable post-transition baseline. The CLI, API, and proxy crates are not covered by this check.

The SemVer command remains separate from cargo xtask release; CI installs the declared analysis-tool version and runs the compatibility job independently.

The compat/current-head/ workspace uses one dedicated lockfile and separate package invocations to add downstream-shaped compile evidence for four isolated feature closures. Its path dependencies all resolve to the same checkout, so a pass catches current-revision API drift but does not establish compatibility with a published release, a Rust ABI, a deprecation window, or external adoption. The lifecycle inventory and exact boundaries are recorded in Public API compatibility status.

Workflow supply-chain posture

The security workflow uses top-level read-only repository permissions and grants narrower job-level write permissions only where SARIF publication requires them. RustSec audit execution is repository-owned: the executable is version-pinned, compiled with Rust 1.88.0 using its upstream packaged lockfile, and shared by test, security, and release gates. The advisory database remains live rather than vendored or frozen. cargo-deny remains a separate commit-SHA-pinned policy action; application dependencies are not modified to repair CI-tool dependency drift. The Trivy action is commit-SHA pinned and the Semgrep CE container is image-digest pinned. Trivy's action version and scanner version are separate and both are declared.

This hardening reduces mutable-reference risk but does not eliminate workflow supply-chain risk. Workflow actions are full-SHA pinned and container jobs are digest-pinned by architecture policy; hosted runners and downloaded toolchains remain external dependencies, and Dependabot proposals still require review.

Open gaps

  • CodeQL covers JavaScript/TypeScript only and does not replace Rust-specific dependency, Clippy, fuzz, or review controls.
  • The security workflow configuration does not establish that its latest run passed; consult the result for the exact commit under review.
  • Trivy, Semgrep, Cargo Audit, and cargo-deny are scoped automated tools and can produce false positives and false negatives.
  • Fuzzing is time-bounded and does not prove parser safety.
  • Scoped mutation campaigns do not establish project-wide mutation adequacy; survivor classification remains a review responsibility.
  • Coverage is a scoped regression signal, not proof that the tests are adequate or that uncovered behavior is safe.
  • Scanner construction policy and same-revision downstream fixtures are documented, but Scanner SDK and plugin contracts still lack an accepted post-transition compatibility baseline and cross-version evidence.
  • Automated API linting and current-head compilation do not prove released-version Rust source compatibility; public-API review remains required.
  • No independent downstream adoption has been documented; repository-authored fixtures and demonstrations do not count as external adoption.
  • No independent security audit, penetration-test report, or compliance certification has been completed.
  • Initial controlled endpoint evidence exists, but no repeatable accepted performance baseline, SLA, capacity certification, or regression threshold has been established.
  • A supported API listener, TLS-intercepting MITM proxy, and durable distributed control plane remain absent. The process-local coordinator is Experimental and does not fill that product gap.