# Reproducing the local qualification Run from the repository root with existing installed dependencies and the pinned SDK. Create artifact directories first. PowerShell wrappers must preserve native exit codes; `$ErrorActionPreference='Stop'` plus redirected native stderr incorrectly treated benign process warnings as terminating errors in early attempts. Original failures remain under `.artifacts/phase9/`; final counts come only from completed zero-retry reports and exit metadata. ```powershell $env:DOTNET_ROOT='C:\Users\Connor\.dotnet' $env:DOTNET_HOST_PATH="$env:DOTNET_ROOT\dotnet.exe" rtk proxy python docs/redesign/phase-9/p9-00/inventory.py rtk proxy $env:DOTNET_HOST_PATH test JobTrackerApi.Tests/JobTrackerApi.Tests.csproj --configuration Release --no-restore --logger 'trx;LogFileName=phase9.trx' --results-directory .artifacts/phase9/backend ``` Inventory regeneration reflects the current checkout: the entry inventory has58 browser source files; Phase9 adds one ordinary spec, so regeneration has59. Do not overwrite the entry snapshot and mislabel it original evidence. From `job-tracker-ui`: ```powershell rtk proxy node node_modules/jest/bin/jest.js --runInBand --json --outputFile=../.artifacts/phase9/frontend.json rtk proxy npm run typecheck rtk proxy npm run lint $env:NEXT_PUBLIC_API_BASE_URL='http://localhost:5302/api' rtk proxy npm run build $env:PLAYWRIGHT_STATIC_EXPORT='true' $env:PLAYWRIGHT_PREBUILT_EXPORT='true' $env:CV_FIDELITY_OUTPUT='E:\Storage\Projects\Active\Job tracker\.artifacts\phase9\fidelity' $env:CV_SETTINGS_FIDELITY_OUTPUT='E:\Storage\Projects\Active\Job tracker\.artifacts\phase9\settings-fidelity' $env:PLAYWRIGHT_JSON_OUTPUT_NAME='E:\Storage\Projects\Active\Job tracker\.artifacts\phase9\ordinary-accepted.json' rtk proxy node node_modules/@playwright/test/cli.js test --retries=0 --reporter=list,json --output=../.artifacts/phase9/ordinary-accepted-results ``` Run separate browser configurations sequentially, each with its own JSON/output name: `playwright.cv-ai.config.ts`, `playwright.auth-recovery.config.ts`, `playwright.rate-limits.config.ts`, `playwright.ingress.config.ts`, `playwright.pdf.config.ts`, and `../docs/redesign/phase-5/p5-15/p5-15-01/diagnostics/playwright.config.ts`. Use the same CLI `--config=... --retries=0 --reporter=list,json`. The Phase9 lane uses `../docs/redesign/phase-9/p9-05/diagnostics/playwright.config.ts` (18 cases). Native PDF admission uses inert processes; it is distinct from native rendering fidelity. The configs start isolated synthetic local API/storage and a static frontend. Do not point these workflows at production. Successful native reads/writes, scoped intercepted failure responses and withheld model operations must remain distinguishable. From `tools/summarizer`, `SKIP_MODEL_LOAD=1`, run `rtk proxy .venv/Scripts/python.exe -m pytest -q tests --junitxml=../../.artifacts/phase9/sidecar.xml`. No inference semantics are qualified by these56 contracts. The unchanged `scripts/verify-cv-fidelity.py` takes a corpus directory containing `measurements.json` and native PDF/preview fixtures. It requires the existing Python PDF/Pillow dependencies (bundled workspace runtime used in this run). Invoke it separately for the fidelity corpus and the combined Settings measurements. Never increase its tolerances to clear a failure. After accepted reports exist, `rtk proxy python docs/redesign/phase-9/evidence.py` builds portable cases, route/axe/RD21/performance records and hashes raw reports. `rtk proxy python docs/redesign/phase-9/reconcile.py` checks362 ordinary cases,396 route vectors and57 unchanged preservation dispositions before generating final ledgers. Missing or failed data must not be replaced with baseline counts. Source/artifact identities are retained in `p9-00/source-manifest.json`.