Canonical fixtures (VI1.vi, VI2.vi) are tracked by fixtures.manifest.json (bytes + sha256).
The validator keeps fixtures deterministic and records auto-refresh events for review.
- Run locally:
pwsh -File tools/Validate-Fixtures.ps1 -Json - Key exit codes:
0ok,4size issue,6hash mismatch,5multiple issues - JSON output includes
summaryCountsandautoManifestblock (written,reason,path)
When both fixtures change, the validator treats it as deterministic drift and writes a new
manifest (autoManifest.written=true).
The Fixture Drift workflow:
- Runs strict and override validations (
strict.json,override.json) - Notes manifest refreshes in the job summary when
autoManifest.writtenis true - Uploads the refreshed manifest as an artifact
CI can gate on non-zero exit code or inspect autoManifest.written to flag drift.
Fixture Drift stays Linux-only by design. The workflow keeps two Linux jobs:
Fixture Drift (Ubuntu)for fixture validator drift checks.NI Linux Container Compare (Hosted)for NI Linux image parity evidence.
Hosted Windows image proof now lives in Validate under the non-required
vi-history-scenarios-windows lane so fixture drift stays lightweight while
the slower Windows image hydration runs only on the dedicated Windows
validation surface.
Linux container evidence is written under:
results/fixture-drift/ni-linux-container/**- Includes the review suite outputs (
history-report.md,history-report.html,history-summary.json, and related inspection artifacts).
Quick local Linux bootstrap command:
node tools/npm/run-script.mjs docker:ni:linux:bootstrapFor intentional fixture updates (outside automation):
pwsh -File tools/Update-FixtureManifest.ps1 -AllowInclude [fixture-update] in the commit message to acknowledge the change.
fixtures.manifest.json can include a deterministic pair block (schema fixture-pair/v1). It
captures the combined base/head digest and expected outcome.
Fields:
basePath,headPath,algorithm(sha256)canonical,digestexpectedOutcome(identical,diff,any)enforce(notice,warn,fail)
Inject locally:
pwsh -File tools/Update-FixtureManifest.ps1 -Allow -InjectPair `
-SetExpectedOutcome diff `
-SetEnforce warnValidate with evidence:
pwsh -File tools/Validate-Fixtures.ps1 -Json -RequirePair -FailOnExpectedMismatch `
-EvidencePath results/fixture-drift/compare-exec.jsonEvidence search order (when -EvidencePath omitted):
results/fixture-drift/compare-exec.json- Latest
tests/results/**/(compare-exec.json|lvcompare-capture.json)
Outcome mapping: LVCompare exit code 0 → identical, 1 → diff, else unknown (or use the
diff boolean when available).