diff --git a/docs/redesign/phase-9/COMMANDS.md b/docs/redesign/phase-9/COMMANDS.md
new file mode 100644
index 0000000..fb79163
--- /dev/null
+++ b/docs/redesign/phase-9/COMMANDS.md
@@ -0,0 +1,38 @@
+# 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`.
diff --git a/docs/redesign/phase-9/README.md b/docs/redesign/phase-9/README.md
index 8c5e119..4e75ce7 100644
--- a/docs/redesign/phase-9/README.md
+++ b/docs/redesign/phase-9/README.md
@@ -1,6 +1,6 @@
# Phase 9 — Comprehensive QA and regression qualification
-Entry: `1c24e406f194f0f42277d837b3008a7a28dca26a`, clean working tree and direct Phase 8 remote equality verified 22 October 2026. Work branch: `feature/phase9-full-qa`. Main remains `5f835e54a9b74e6b71418422e28431b2af06453f`; it is not the redesign base.
+Entry: `1c24e406f194f0f42277d837b3008a7a28dca26a`, clean working tree and direct Phase 8 remote equality verified 22 October 2026. Work branch: `feature/phase9-full-qa`. Main was observed at `5f835e54a9b74e6b71418422e28431b2af06453f` at entry; later HTTP502 prevents a fresh remote claim. It is not the redesign base.
## Execution plan
diff --git a/docs/redesign/phase-9/RISKS.md b/docs/redesign/phase-9/RISKS.md
new file mode 100644
index 0000000..7c0f1ca
--- /dev/null
+++ b/docs/redesign/phase-9/RISKS.md
@@ -0,0 +1,41 @@
+# Retained risk and release register
+
+Stable RD IDs come from [Phase 7](../phase-7/DEBT.md); the [Phase 8 acceptance](../phase-8/p8-05/FINAL_ACCEPTANCE.md) is the entry qualification. Severity below describes potential impact if the gate is ignored, not a claim that an untested system is currently broken. None of the production conditions was rechecked live or repaired in Phase 9.
+
+Phase 9 can complete an assessment while withholding acceptance. Open high data-integrity risks and required human/provider evidence must stay visible in the final decision. Phase 10 receives a bounded handoff, not deletion authority.
+
+| ID | Current status / reproducibility | Severity / user impact | Owner, next action and evidence required for closure | Gate |
+|---|---|---|---|---|
+| RD01 / F04 | OPEN; local static/loopback ingress contracts only | High: wrong client identity or exposed ingress | Release operator: actual TLS/IPv6/firewall/topology/trusted peer and deployed auth evidence | Production |
+| RD02 | NOT TESTED: independently verified off-disk complete backup/restore | Critical if recovery needed: irreversible loss | Release operator: isolated restore of DB/files/CVs/keys/tombstones, hashes and recovery rehearsal | Production |
+| RD03 / F19 | PARTIAL: SQLite and generated MariaDB SQL; MariaDB runtime unavailable | High: schema/provider/startup disagreement | Database owner: actual approved MariaDB migration, restart, CRUD/constraints/concurrency and effective configuration proof | Production; provider acceptance |
+| RD04 | NOT TESTED: intended Linux rollback | High: failed release cannot be reversed | Release operator: isolated failure/rollback rehearsal using complete prior images/configuration/recovery set | Production |
+| RD05 | OPEN: old runner crashes/deployed identity not superseded | High: healthy endpoint may serve wrong release | Infrastructure owner: native core/operator diagnosis, successful protected CI, exact deployed SHA and authenticated smoke | Production |
+| RD06 | PARTIAL: finite axe/DOM/keyboard evidence; human checks open | High accessibility impact | Accessibility tester: [M09-01–06](p9-03/MANUAL_CHECKLIST.md), contextual contrast/reader evidence; triage every applicable incomplete | Acceptance qualification; production |
+| RD07 | NOT TESTED: physical input/AT/alternate browsers/forced colors | Medium/High usability exclusion | Product/accessibility owners: actual supported devices/browser/input versions and complete workflows | Acceptance qualification; production |
+| RD08 / C11 / P5-13 | DEFERRED; no new model qualification or activation | High: unqualified proposal semantics | Separate AI qualification owner: production-equivalent identity/inference, original 366-call protocol, independent human semantics, review UI/integration evidence | AI activation; production |
+| RD09 | Local withheld-operation contract retained; deployed withholding NOT TESTED | High: unreviewed AI write/external request | Release/AI owners: keep 503/no-provider/no-write guards, verify actual deployment independently | Production / AI |
+| RD10 | PARTIAL: native local PDF corpus and visual sheets; deployed fonts/photo/print absent | Medium/High document reliability | Document owner: intended Linux/fonts/photo/crop/print and alternate-browser proof, original bytes/geometry | Acceptance qualification; production |
+| RD11 | Scoped SQLite bootstrap/WAL mechanism repaired before entry; broad reliability remains PARTIAL | High if preference save fails | Database owner: retain held-reader/write proof, distinguish old reproduced mechanism from unproven provider/contention cases | Reliability qualification |
+| RD12 | PARTIAL: notification draft/failure recovery and SQLite tests; complete contention/provider behavior unqualified | Medium: settings may not persist | Database/settings owners: intended-provider overlapping writes and failure/reload recovery with no data loss | Reliability qualification |
+| RD13 | Historical Rules 500 mechanism remains UNCONFIRMED | Medium: failed save/draft retention | Rules/API owners: original failure trace plus controlled causal reproduction and successor regression; passing retry alone insufficient | Reliability qualification |
+| RD14 | Historical command/dialog focus incident remains UNCONFIRMED; settled drawer proof is a separate finite result | Medium/High keyboard access | Shared UI owner: preserve original observations, reproduce affected modal transitions and actual reader/trap/return behavior | Accessibility qualification |
+| RD15 | Historical intermittent CV section expansion cause unproven | Medium: editing disrupted | CV owner: retain failed observation and reproduce causally before closing; do not weaken expansion assertions | Reliability qualification |
+| RD16 | Scoped company-error repair retained; wider reader/dialog/date contract PARTIAL | Medium: recovery/access | Company/UI owners: native failed-save → retained draft → successful retry plus human dialogue checks | Preservation qualification |
+| RD17 | Board remains O(N); 200/1,000-job and new bounded 250-job observations are finite | Medium: growing rendering cost | Jobs owner: agreed budget, bounded sustained profile and CPU/frame attribution before optimization; preserve full membership | Performance qualification |
+| RD18 | NOT TESTED: physical drag/drop/cancel/browser variants | Medium access/workflow risk | Input/device tester: real Board/CV selection and named alternatives, no hidden result cap | Human/device qualification |
+| RD19 | DEFERRED: reviewed `followMode` consumer | Medium workflow limitation | Product/mail owner: separate explicit mode→review/action/fallback design; no auto-send or uncertain resend | Deferred scope; not silently completed |
+| RD20 | Optional P5-05 quick preview DEFERRED; Phase 8 Dashboard scope was delivered separately | Low optional scope | Product owner: explicit separate brief; retain existing full workspace and all routes | Deferred scope |
+| RD21 | OPEN: canonical Career/generic job revision contract and creation-intent idempotency | High: stale editor can overwrite acknowledged edits | Domain/API/UI owners: separate bounded contract issue covering both callers, server compare-and-swap/transaction semantics, conflict recovery and backward compatibility; characterization is not safety acceptance | Data-integrity acceptance; production |
+| RD22 / F20 | NOT TESTED: enabled-worker outage recovery/durability | High: duplicate/lost async work | Worker owner: isolated enabled-producer failure/restart/recovery, no-loss/no-duplicate proof before activation | Production / enabled producer |
+| RD23 / F21 | OPEN: actual calendar offset/DST/date-only semantics | Medium: wrong event time | Calendar owner: dedicated boundary/DST/provider proof in authorised sandbox before semantic changes | Calendar qualification |
+| RD24 | NOT TESTED: billing/deletion/retention/provider cleanup policy and configuration | High privacy/lifecycle impact | Product/security/operator owners: approved policy, explicit destructive-action authority, isolated recovery/cleanup proof | Production / lifecycle activation |
+| RD25 | PARTIAL: local SMTP/HTTP/provider contracts; actual OAuth/Turnstile/mail/calendar/model unavailable | High identity/privacy/delivery impact | Approved provider/human tester: sandbox consent/revoke/reconnect/origin/state/delivery/uncertain-attempt proof | Provider acceptance; production |
+| RD26 | Legacy Job/Application cutover OPEN | High compatibility/data loss if removed | Migration owner: expand/verify/contract, restore/rollback and all readers/writers/aliases before removal | Phase 10 deletion eligibility; production |
+| RD27 | NOT TESTED: actual monitoring/alert/recovery coverage | High operational detection risk | Operations owner: effective sink, alert trigger, responder/runbook and recovery observations | Production |
+| RD28 | Ongoing evidence/provenance obligation | High if failures are misrepresented | QA owner: exact source hashes/counts, original failures, no retries/skips/assertion relaxation; separate characterization from safe behavior | Every decision |
+| P9-OPS-01 | Previously reported EXT4/Docker storage errors UNRECHECKED | Critical if disk faults persist | Production operator only: independent storage-health/repair and recovery qualification under separate authority | Production |
+| P9-SEC-01 | Live advisories NOT REFRESHED; inherited NuGet Pkcs high/moderate and expiring dev exception retained | High dependency risk until assessed | Dependency owner: authorised live advisory refresh, actual locked versions/paths and exception expiry review; offline policy tests do not clear advisories | Production |
+| P9-PUB-01 | Feature publication initially blocked by Git server HTTP 502 | Medium review/recoverability risk | Git service owner / QA: successful normal push and direct ref equality for each published checkpoint; never force push | Publication / handoff completeness |
+
+The pre-existing duplicate initial reminder read is tracked as P9-PERF-01 in [DEFECTS.md](p9-06/DEFECTS.md). No shared loader/query framework was introduced without measured benefit and consumer proof. The new admin vendor-locale repair closes only P9-L01 after its integrated successor; it does not certify every third-party or provider string.
diff --git a/docs/redesign/phase-9/evidence.py b/docs/redesign/phase-9/evidence.py
new file mode 100644
index 0000000..2111f01
--- /dev/null
+++ b/docs/redesign/phase-9/evidence.py
@@ -0,0 +1,119 @@
+"""Summarize completed raw QA artifacts; missing lanes stay missing."""
+import hashlib
+import base64
+import json
+from pathlib import Path
+import xml.etree.ElementTree as ET
+from datetime import datetime, timezone
+
+ROOT = Path(__file__).resolve().parents[3]
+HERE = Path(__file__).resolve().parent
+RAW = ROOT / '.artifacts/phase9'
+
+
+def digest(path):
+ return hashlib.sha256(path.read_bytes()).hexdigest()
+
+
+def browser_cases(suites):
+ rows = []
+ for suite in suites:
+ rows.extend(browser_cases(suite.get('suites', [])))
+ for spec in suite.get('specs', []):
+ for test in spec.get('tests', []):
+ rows.append(dict(file=spec.get('file'), title=spec['title'], status=test['status'],
+ results=[dict(status=r['status'], retry=r.get('retry', 0), durationMs=r.get('duration', 0),
+ errors=r.get('errors', []), attachments=r.get('attachments', [])) for r in test.get('results', [])]))
+ return rows
+
+
+def attached_json(attachment):
+ body = base64.b64decode(attachment['body']) if 'body' in attachment else Path(attachment['path']).read_bytes()
+ return json.loads(body)
+
+
+def write_json(path, value):
+ path.parent.mkdir(parents=True, exist_ok=True)
+ path.write_text(json.dumps(value, ensure_ascii=False, indent=2) + '\n', encoding='utf-8')
+
+
+assert browser_cases([{'specs': [{'title': 'self-check', 'tests': [{'status': 'expected', 'results': [{'status': 'passed'}]}]}]}])[0]['results'][0]['status'] == 'passed'
+
+
+if __name__ == '__main__':
+ report = dict(observedUtc=datetime.now(timezone.utc).isoformat(), lanes={}, rawFiles={})
+ report['documentOracle'] = dict(path='scripts/verify-cv-fidelity.py', sha256=digest(ROOT / 'scripts/verify-cv-fidelity.py'), qualification='Original unchanged oracle; native rendering and admission counts are separate.')
+ sources = dict(ordinary='ordinary-accepted', ai='ai', auth='auth', rate='rate', ingress='ingress', pdf='pdf', preferences='preferences', phase9='phase9-frozen')
+ for lane, source in sources.items():
+ file = RAW / f'{source}.json'
+ if not file.exists():
+ continue
+ data = json.loads(file.read_text(encoding='utf-8-sig'))
+ cases = browser_cases(data['suites'])
+ report['lanes'][lane] = dict(stats=data['stats'], cases=len(cases),
+ retries=sum(max(len(c['results']) - 1, 0) for c in cases),
+ statuses={status: sum(c['status'] == status for c in cases) for status in ['expected', 'unexpected', 'flaky', 'skipped']},
+ fileFailures=data.get('errors', []))
+ folder = HERE / ('p9-01' if lane == 'ordinary' else 'p9-05' if lane == 'phase9' else 'p9-06')
+ folder.mkdir(parents=True, exist_ok=True)
+ if lane == 'phase9':
+ matrix, axe, screenshots = [], [], []
+ for case in cases:
+ for attachment in case['results'][0]['attachments']:
+ name = attachment['name']
+ if name == 'phase9-route-matrix':
+ sample = attached_json(attachment)
+ for row in sample['samples']:
+ row.pop('bodyText', None)
+ matrix.append(row)
+ elif name == 'phase9-settled-axe':
+ axe.append(attached_json(attachment))
+ elif name == 'phase9-rd21-characterization':
+ write_json(HERE / 'p9-04/rd21.json', attached_json(attachment))
+ elif name == 'phase9-sustained-performance':
+ write_json(HERE / 'p9-05/performance.json', attached_json(attachment))
+ if attachment['contentType'] == 'image/png':
+ path = Path(attachment['path'])
+ screenshots.append(dict(case=case['title'], name=name, path=str(path.relative_to(ROOT)), sha256=digest(path)))
+ assert len(matrix) == 396
+ write_json(HERE / 'p9-02/route-results.json', matrix)
+ write_json(HERE / 'p9-02/screenshots.json', screenshots)
+ write_json(HERE / 'p9-03/settled-axe.json', axe)
+ if lane == 'ordinary':
+ for case in cases:
+ for attachment in case['results'][0]['attachments']:
+ if attachment['name'].startswith('route-census-') and attachment['contentType'] == 'application/json':
+ write_json(HERE / 'p9-01' / (attachment['name'] + '.json'), attached_json(attachment))
+ for case in cases:
+ for result in case['results']:
+ for attachment in result['attachments']:
+ if 'body' in attachment:
+ body = base64.b64decode(attachment.pop('body'))
+ attachment.update(bytes=len(body), sha256=hashlib.sha256(body).hexdigest())
+ (folder / f'{lane}-cases.json').write_text(json.dumps(cases, ensure_ascii=False, indent=2) + '\n', encoding='utf-8')
+ frontend = RAW / 'frontend.json'
+ if frontend.exists():
+ data = json.loads(frontend.read_text(encoding='utf-8-sig'))
+ report['lanes']['frontend'] = {k: data.get(k) for k in ['success', 'numPassedTestSuites', 'numFailedTestSuites', 'numPassedTests', 'numFailedTests', 'numPendingTests', 'numTodoTests', 'startTime']}
+ backend = RAW / 'backend/phase9.trx'
+ if backend.exists():
+ doc = ET.parse(backend)
+ report['lanes']['backend'] = doc.find('.//{*}Counters').attrib
+ cases = [dict(name=e.get('testName'), outcome=e.get('outcome'), duration=e.get('duration')) for e in doc.findall('.//{*}UnitTestResult')]
+ (HERE / 'p9-00/backend-cases.json').write_text(json.dumps(cases, indent=2) + '\n', encoding='utf-8')
+ sidecar = RAW / 'sidecar.xml'
+ if sidecar.exists():
+ report['lanes']['sidecar'] = ET.parse(sidecar).find('.//testsuite').attrib
+ report['failedOrSupersededAttempts'] = {}
+ for lane in ['phase9', 'phase9-successor', 'phase9-final', 'phase9-qualified', 'phase9-accepted', 'ordinary', 'ordinary-final', 'landing-red', 'landing-green', 'landing-qualified']:
+ file = RAW / f'{lane}.json'
+ if file.exists():
+ data = json.loads(file.read_text(encoding='utf-8-sig'))
+ report['failedOrSupersededAttempts'][lane] = data.get('stats')
+ for file in sorted(RAW.glob('*-exit.json')):
+ report['lanes'][file.stem.replace('-exit', '') + 'Process'] = json.loads(file.read_text(encoding='utf-8-sig'))
+ for file in sorted(RAW.rglob('*')):
+ if file.is_file() and file.suffix in ['.json', '.xml', '.trx', '.log'] and 'results' not in file.parts:
+ report['rawFiles'][str(file.relative_to(ROOT))] = dict(bytes=file.stat().st_size, sha256=digest(file))
+ (HERE / 'validation.json').write_text(json.dumps(report, indent=2, ensure_ascii=False) + '\n', encoding='utf-8')
+ print(json.dumps(report['lanes'], indent=2))
diff --git a/docs/redesign/phase-9/p9-00/backend-cases.json b/docs/redesign/phase-9/p9-00/backend-cases.json
new file mode 100644
index 0000000..f769a90
--- /dev/null
+++ b/docs/redesign/phase-9/p9-00/backend-cases.json
@@ -0,0 +1,5422 @@
+[
+ {
+ "name": "JobTrackerApi.Tests.JobCvMatchServiceTests.Curated_tag_matches_synonym_spelling_in_cv",
+ "outcome": "Passed",
+ "duration": "00:00:00.0002761"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AiWorkspaceTests.Another_users_job_is_not_found",
+ "outcome": "Passed",
+ "duration": "00:00:00.0025871"
+ },
+ {
+ "name": "JobTrackerApi.Tests.SavedJobSearchSqliteTests.Saved_search_filters_run_state_alert_toggle_dismiss_and_delete_survive_sqlite_readback",
+ "outcome": "Passed",
+ "duration": "00:00:00.2496321"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CsvExportTests.Text_policy_is_idempotent_and_survives_independent_CSV_parsing(value: \"\u00a0\u200b\ufeff=1+1\", expected: \"'\u00a0\u200b\ufeff=1+1\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0016037"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiGroundingTests.Only_exact_candidate_quotes_and_supported_claims_are_accepted(quote: \"\", verdict: \"supported\", expected: False)",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000696"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CareerProfileServiceTests.CvDateNormalizer_parses_common_formats_without_guessing(input: \"2019-03\", expected: \"2019-03\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000083"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationAssetsTests.An_ai_draft_only_becomes_a_version_when_the_user_saves_it",
+ "outcome": "Passed",
+ "duration": "00:00:00.0070861"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ForwardedIngressTests.Untrusted_socket_peer_cannot_forge_IP_scheme_or_host(peer: \"198.51.100.20\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000547"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationAssetsTests.Tailoring_never_writes_to_the_career_profile_or_the_variant",
+ "outcome": "Passed",
+ "duration": "00:00:00.0445227"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportServiceTests.Preview_rejects_equivalent_private_literals_before_http_send(url: \"http://[::ffff:127.0.0.1]/\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0390950"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobApplicationsEndpointBehaviorTests.Create_normalizes_structured_salary",
+ "outcome": "Passed",
+ "duration": "00:00:00.0815715"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiGroundingTests.Only_exact_candidate_quotes_and_supported_claims_are_accepted(quote: \"Built APIs.\", verdict: \"unsupported\", expected: False)",
+ "outcome": "Passed",
+ "duration": "00:00:00.0621365"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiGroundingTests.Synthetic_semantic_assessments_enforce_the_grounding_contract(fixture: { \"id\": \"nb-to-en\", \"source\": \"Utviklet p\u00e5litelige API-er med C# og SQL.\", \"proposal\": \"Built reliable APIs using C# and SQL.\", \"verdict\": \"supported\", \"expectedSupported\": true })",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000410"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AccountPlansTests.Premium_subscription_status_requires_current_access(status: \"past_due\", expected: False)",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000024"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvProfileDiffServiceTests.Merge_never_blanks_or_deletes_existing_data",
+ "outcome": "Passed",
+ "duration": "00:00:00.0132259"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ProEntitlementAuthorizationTests.Explicit_ai_action_requires_the_pro_policy(controller: typeof(JobTrackerApi.Controllers.ProfileCvController), action: \"Improve\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000195"
+ },
+ {
+ "name": "JobTrackerApi.Tests.MigrationChainTests.Gmail_review_decision_adoption_preserves_legacy_rows",
+ "outcome": "Passed",
+ "duration": "00:00:00.6077028"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationIntelligenceTests.Match_requires_an_explicitly_linked_cv_before_scoring_anything",
+ "outcome": "Passed",
+ "duration": "00:00:00.0023505"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Redirect_to_private_destination_is_returned_as_fetch_failure_without_following(status: 301)",
+ "outcome": "Passed",
+ "duration": "00:00:00.3209984"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_literal_without_dns_or_dial(url: \"http://0x7f000001/\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0846005"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationWorkspaceTests.Overview_counts_documents_and_ai_history",
+ "outcome": "Passed",
+ "duration": "00:00:00.1822800"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CsvExportTests.Text_policy_is_idempotent_and_survives_independent_CSV_parsing(value: \"\", expected: \"\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0021399"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiReadinessTests.Unavailable_review_service_blocks_generation_and_apply_without_side_effects(apply: True)",
+ "outcome": "Passed",
+ "duration": "00:00:00.1495728"
+ },
+ {
+ "name": "JobTrackerApi.Tests.MicrosoftGraphControllerTests.Disconnect_calls_service_for_authenticated_user",
+ "outcome": "Passed",
+ "duration": "00:00:00.0026290"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobCvMatchServiceTests.Quality_fixtures_keep_useful_terms_and_suppress_noise(name: \"Short\", title: \"Data developer\", description: \"Python and SQL.\", expected: [\"Python\", \"SQL\"], excluded: [\"and\"])",
+ "outcome": "Passed",
+ "duration": "00:00:00.0024558"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobQueryParityTests.Table_pages_and_board_have_identical_owned_membership(scenario: \"custom\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.2176690"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_denied_dns_addresses_before_any_socket_attempt(address: \"172.16.0.1\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0655195"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobLifecycleEventTests.Entering_an_interview_stage_records_interview_scheduled",
+ "outcome": "Passed",
+ "duration": "00:00:00.0202231"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiReadinessTests.Source_change_during_generation_does_not_issue_a_stale_proposal",
+ "outcome": "Passed",
+ "duration": "00:00:00.2123429"
+ },
+ {
+ "name": "JobTrackerApi.Tests.EmailDraftsControllerTests.Direct_ids_and_job_lists_do_not_cross_tenants",
+ "outcome": "Passed",
+ "duration": "00:00:00.1200394"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AiUsageMeterTests.Reservation_is_idempotent_and_success_can_replace_the_conservative_estimate",
+ "outcome": "Passed",
+ "duration": "00:00:00.1467034"
+ },
+ {
+ "name": "JobTrackerApi.Tests.HumanLanguageCatalogTests.Common_languages_resolve_without_relying_on_host_culture_data(language: \"Polish\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0004484"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationIntelligenceTests.Analysis_degrades_gracefully_without_an_advert",
+ "outcome": "Passed",
+ "duration": "00:00:00.0052027"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiReadinessTests.Job_requirements_are_context_not_candidate_evidence",
+ "outcome": "Passed",
+ "duration": "00:00:00.1772490"
+ },
+ {
+ "name": "JobTrackerApi.Tests.EmailStatusClassifierTests.Handles_empty_input",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000340"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ProfileCvControllerTests.Parse_falls_back_to_section_parsing_when_ai_json_is_invalid",
+ "outcome": "Passed",
+ "duration": "00:00:00.0189791"
+ },
+ {
+ "name": "JobTrackerApi.Tests.InterviewAiContextTests.Context_is_scoped_to_the_requesting_user",
+ "outcome": "Passed",
+ "duration": "00:00:01.6044629"
+ },
+ {
+ "name": "JobTrackerApi.Tests.MicrosoftGraphProviderTests.GetConnectionAsync_returns_null_when_not_connected",
+ "outcome": "Passed",
+ "duration": "00:00:00.0022165"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobPipelineTests.OrderOf_sorts_canonical_before_custom",
+ "outcome": "Passed",
+ "duration": "00:00:00.0003362"
+ },
+ {
+ "name": "JobTrackerApi.Tests.SessionsControllerTests.LocalSessionValidator_rejects_a_token_with_no_sid_claim",
+ "outcome": "Passed",
+ "duration": "00:00:00.0009263"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobQueryParityTests.Table_pages_and_board_have_identical_owned_membership(scenario: \"company\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.2686365"
+ },
+ {
+ "name": "JobTrackerApi.Tests.EmailSendAttemptStoreTests.Direct_attempt_ids_are_tenant_scoped_and_store_no_message_content",
+ "outcome": "Passed",
+ "duration": "00:00:00.2802590"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_denied_dns_addresses_before_any_socket_attempt(address: \"64:ff9b:1::a01:203\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0459717"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CompanyCreateCompatibilityTests.Ascii_case_insensitive_reuse_and_trimmed_input_remain_compatible",
+ "outcome": "Passed",
+ "duration": "00:00:00.1855805"
+ },
+ {
+ "name": "JobTrackerApi.Tests.EmailProviderDeliveryTests.Graph_send_uses_mail_send_scope_and_classifies_rejection_as_known",
+ "outcome": "Passed",
+ "duration": "00:00:00.1176092"
+ },
+ {
+ "name": "JobTrackerApi.Tests.GmailControllerTests.Refresh_linked_threads_reports_empty_and_disconnected_states",
+ "outcome": "Passed",
+ "duration": "00:00:00.0126180"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CsvExportTests.Every_text_column_is_safe_while_typed_numbers_and_dates_keep_their_formats",
+ "outcome": "Passed",
+ "duration": "00:00:00.0030273"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobPipelineTests.Ghosted_and_waiting_are_still_canonical_stages",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000445"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportServiceTests.Preview_allows_public_hostname_resolution_and_fetches_html",
+ "outcome": "Passed",
+ "duration": "00:00:00.0180365"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobPipelineTests.Normalize_canonicalizes_prospect_synonyms(input: \"in preparation\", expected: \"Preparing\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000059"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvExtractionCoverageTests.Plain_text_fallback_reads_bounded_utf8",
+ "outcome": "Passed",
+ "duration": "00:00:00.0017793"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationChecklistTests.Reordering_persists_the_new_order",
+ "outcome": "Passed",
+ "duration": "00:00:00.0109925"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobApplicationsFollowUpDraftTests.Follow_up_draft_uses_imported_thread_and_saved_package_context",
+ "outcome": "Passed",
+ "duration": "00:00:00.0331619"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobCvMatchServiceTests.Empty_cv_reports_no_signal",
+ "outcome": "Passed",
+ "duration": "00:00:00.0005547"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_literal_without_dns_or_dial(url: \"http://[::1]/\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0562937"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobApplicationsApplicationPackageTests.Save_application_drafts_cannot_mutate_another_users_application",
+ "outcome": "Passed",
+ "duration": "00:00:00.0029318"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobPipelineTests.IsProspect_false_for_post_application_stages(status: \"Ghosted\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000025"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CareerProfileServiceTests.SaveVersionAsync_preserves_existing_ids_across_saves",
+ "outcome": "Passed",
+ "duration": "00:00:00.0041517"
+ },
+ {
+ "name": "JobTrackerApi.Tests.SqliteMigrationHelperTests.Export_payload_shape_can_be_serialized",
+ "outcome": "Passed",
+ "duration": "00:00:00.0042720"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationChecklistTests.Seeding_is_idempotent_across_reads",
+ "outcome": "Passed",
+ "duration": "00:00:00.0077922"
+ },
+ {
+ "name": "JobTrackerApi.Tests.SessionContextMiddlewareTests.Missing_old_and_forged_contexts_never_reach_an_authenticated_mutation(method: \"PUT\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0001067"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationChecklistTests.Next_pending_follows_the_category_priority",
+ "outcome": "Passed",
+ "duration": "00:00:00.0050602"
+ },
+ {
+ "name": "JobTrackerApi.Tests.StrategySnapshotOperationTests.Producer_returns_202_and_duplicate_click_reuses_the_operation",
+ "outcome": "Passed",
+ "duration": "00:00:00.2427089"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CareerProfileServiceTests.CvDateNormalizer_parses_common_formats_without_guessing(input: null, expected: null)",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000043"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AttachmentConsistencyTests.Rename_changes_metadata_without_moving_bytes",
+ "outcome": "Passed",
+ "duration": "00:00:00.3796417"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ProfileCvControllerTests.Parse_uses_forced_ai_normalizer_output_when_enabled",
+ "outcome": "Passed",
+ "duration": "00:00:00.0479428"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CareerProfileServiceTests.Versions_are_listed_newest_first_with_the_current_flagged",
+ "outcome": "Passed",
+ "duration": "00:00:00.0136774"
+ },
+ {
+ "name": "JobTrackerApi.Tests.DocumentsControllerTests.MariaDb_composition_keeps_unicode_markers_ordinal_and_paging_parameterized_without_connecting",
+ "outcome": "Passed",
+ "duration": "00:00:00.0893273"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobApplicationsAuthorizationTests.GetHistory_returns_not_found_for_other_users_job",
+ "outcome": "Passed",
+ "duration": "00:00:00.0079097"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationChecklistTests.Custom_items_can_be_added_and_deleted",
+ "outcome": "Passed",
+ "duration": "00:00:00.0096293"
+ },
+ {
+ "name": "JobTrackerApi.Tests.OwnershipGuardTests.Attachments_controller_has_owned_attachment_lookup_helper",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000805"
+ },
+ {
+ "name": "JobTrackerApi.Tests.HumanLanguageCatalogTests.Norwegian_aliases_resolve_to_the_canonical_name(alias: \"bokm\u00e5l\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0055651"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AiOperationQueueTests.Admission_is_pro_only_idempotent_bounded_and_contains_no_raw_payload",
+ "outcome": "Passed",
+ "duration": "00:00:00.1820604"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CorrespondenceControllerTests.Paged_inbox_returns_every_owned_message_without_the_legacy_cap",
+ "outcome": "Passed",
+ "duration": "00:00:00.2214034"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvProcessingOperationTests.Retryable_provider_failure_keeps_run_queued_and_records_provenance",
+ "outcome": "Passed",
+ "duration": "00:00:00.3646445"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AuthAndSystemControllerTests.VerifyEmail_confirms_account_on_valid_token",
+ "outcome": "Passed",
+ "duration": "00:00:00.0031149"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobQueryParityTests.Table_pages_and_board_have_identical_owned_membership(scenario: \"needs-work\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.2746770"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobApplicationsEndpointBehaviorTests.Save_application_drafts_updates_cover_letter_and_notes",
+ "outcome": "Passed",
+ "duration": "00:00:00.0407072"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiReadinessTests.Evaluator_unavailable_fails_closed_and_provider_error_never_changes_content",
+ "outcome": "Passed",
+ "duration": "00:00:00.1375803"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ProductionConfigTests.Summarizer_service_exposes_section_summarization_api",
+ "outcome": "Passed",
+ "duration": "00:00:00.0094085"
+ },
+ {
+ "name": "JobTrackerApi.Tests.UserOperationStoreTests.Running_cancellation_is_acknowledged_or_recovered_after_expiry",
+ "outcome": "Passed",
+ "duration": "00:00:00.3975546"
+ },
+ {
+ "name": "JobTrackerApi.Tests.HumanLanguageCatalogTests.Technical_skills_are_not_treated_as_human_languages(skill: \"Go\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0005246"
+ },
+ {
+ "name": "JobTrackerApi.Tests.HumanLanguageCatalogTests.Technical_skills_are_not_treated_as_human_languages(skill: \"Java\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000106"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ImapProviderTests.GetConnectionAsync_returns_null_when_not_connected",
+ "outcome": "Passed",
+ "duration": "00:00:00.0016388"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationChecklistTests.Deleting_a_system_item_dismisses_it_instead_of_resurrecting_it",
+ "outcome": "Passed",
+ "duration": "00:00:00.0083412"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiReadinessTests.Authored_save_cannot_forge_server_AI_provenance(source: \" AI:grammar \")",
+ "outcome": "Passed",
+ "duration": "00:00:00.2037080"
+ },
+ {
+ "name": "JobTrackerApi.Tests.DashboardPreferencesTests.Invalid_payload_does_not_save(payload: \"{\\\"version\\\":1,\\\"revision\\\":0,\\\"widgets\\\":[{\\\"id\\\"\"\u00b7\u00b7\u00b7, expected: 400)",
+ "outcome": "Passed",
+ "duration": "00:00:01.5013040"
+ },
+ {
+ "name": "JobTrackerApi.Tests.MicrosoftTokenValidatorTests.Issuer_must_exactly_match_the_signed_tid",
+ "outcome": "Passed",
+ "duration": "00:00:00.0011590"
+ },
+ {
+ "name": "JobTrackerApi.Tests.MigrationChainTests.User_rule_settings_adoption_preserves_legacy_rows",
+ "outcome": "Passed",
+ "duration": "00:00:00.5204069"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AiWorkspaceTests.Generate_stores_an_interaction_and_returns_it",
+ "outcome": "Passed",
+ "duration": "00:00:00.0124334"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CsvExportTests.Long_text_null_typed_cells_and_deleted_row_selection_remain_valid",
+ "outcome": "Passed",
+ "duration": "00:00:00.0428494"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvBuilderTests.Public_render_bypasses_the_tenant_filter",
+ "outcome": "Passed",
+ "duration": "00:00:00.1257758"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AttachmentConsistencyTests.Cancelled_copy_cleans_staging_and_writes_no_rows",
+ "outcome": "Passed",
+ "duration": "00:00:01.8448444"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_denied_dns_addresses_before_any_socket_attempt(address: \"100.127.255.255\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0593412"
+ },
+ {
+ "name": "JobTrackerApi.Tests.MicrosoftTokenValidatorTests.Tenant_modes_accept_only_their_documented_accounts(mode: \"11111111-1111-1111-1111-111111111111\", tokenTenant: \"11111111-1111-1111-1111-111111111111\", accepted: True)",
+ "outcome": "Passed",
+ "duration": "00:00:00.0005199"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ProfileCvControllerTests.Normalized_markdown_parse_preserves_web_developer_bullets_and_skills",
+ "outcome": "Passed",
+ "duration": "00:00:00.0262886"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_denied_dns_addresses_before_any_socket_attempt(address: \"febf::1\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0565640"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobApplicationsAuthorizationTests.GetMatchScore_returns_not_found_for_other_users_job",
+ "outcome": "Passed",
+ "duration": "00:00:00.0035839"
+ },
+ {
+ "name": "JobTrackerApi.Tests.TwoFactorControllerTests.Challenge_with_unknown_pending_token_is_rejected",
+ "outcome": "Passed",
+ "duration": "00:00:00.0066159"
+ },
+ {
+ "name": "JobTrackerApi.Tests.SessionContextMiddlewareTests.Missing_old_and_forged_contexts_never_reach_an_authenticated_mutation(method: \"POST\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0002292"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CompanyCreateCompatibilityTests.An_identical_foreign_name_creates_a_separate_owned_company_and_preserves_source_normalization",
+ "outcome": "Passed",
+ "duration": "00:00:00.1596753"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationWorkspaceTests.Next_step_asks_for_the_advert_when_there_is_no_description",
+ "outcome": "Passed",
+ "duration": "00:00:00.0115374"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Http_client_timeout_cancels_resolution_connect_and_headers(phase: \"dns\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.3102764"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ForwardedIngressTests.Trusting_the_entire_internet_fails_configuration(value: \"0.0.0.0/0\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0002821"
+ },
+ {
+ "name": "JobTrackerApi.Tests.InterviewPrepTests.Follow_up_is_not_reachable_for_another_users_application",
+ "outcome": "Passed",
+ "duration": "00:00:00.0854646"
+ },
+ {
+ "name": "JobTrackerApi.Tests.MigrationChainTests.Job_workspace_note_adoption_preserves_outputs_and_cascade_relationships",
+ "outcome": "Passed",
+ "duration": "00:00:02.5728932"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ExternalOriginTests.Production_requires_one_clean_https_origin(value: null)",
+ "outcome": "Passed",
+ "duration": "00:00:00.0001340"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiReadinessTests.Fabricated_or_mixed_provider_output_cannot_obtain_an_applicable_proposal(invented: \"Built internal web applications and led internatio\"\u00b7\u00b7\u00b7)",
+ "outcome": "Passed",
+ "duration": "00:00:00.1985058"
+ },
+ {
+ "name": "JobTrackerApi.Tests.PdfRenderAdmissionTests.Failing_observability_cannot_strand_an_admission_slot",
+ "outcome": "Passed",
+ "duration": "00:00:00.0126147"
+ },
+ {
+ "name": "JobTrackerApi.Tests.MigrationChainTests.Interview_prep_item_adoption_preserves_user_content_and_practice_state",
+ "outcome": "Passed",
+ "duration": "00:00:00.9062113"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportServiceTests.Preview_rejects_equivalent_private_literals_before_http_send(url: \"http://169.254.169.254/\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0007111"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiReadinessTests.Edited_proposal_is_re_evaluated_and_unsupported_edit_has_no_mutation",
+ "outcome": "Passed",
+ "duration": "00:00:00.1617498"
+ },
+ {
+ "name": "JobTrackerApi.Tests.UsersControllerTests.Delete_rejects_deleting_the_final_administrator",
+ "outcome": "Passed",
+ "duration": "00:00:00.0031539"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationAssetsTests.Cover_letter_history_is_scoped_to_its_owner",
+ "outcome": "Passed",
+ "duration": "00:00:00.0046212"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_denied_dns_addresses_before_any_socket_attempt(address: \"255.255.255.255\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0043795"
+ },
+ {
+ "name": "JobTrackerApi.Tests.SummarizerServiceTests.Metadata_path_returns_a_typed_sanitized_provider_failure_while_legacy_path_returns_null",
+ "outcome": "Passed",
+ "duration": "00:00:00.0747895"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_denied_dns_addresses_before_any_socket_attempt(address: \"10.1.2.3\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0113714"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationWorkspaceTests.Overview_separates_application_answers_from_human_notes",
+ "outcome": "Passed",
+ "duration": "00:00:00.0057673"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_denied_dns_addresses_before_any_socket_attempt(address: \"0.1.2.3\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0803189"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiGroundingTests.Missing_malformed_unknown_or_extra_assessments_fail_closed(assessment: \"{\\\"verdict\\\":\\\"SUPPORTED\\\",\\\"coverageComplete\\\":tr\"\u00b7\u00b7\u00b7)",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000247"
+ },
+ {
+ "name": "JobTrackerApi.Tests.StrategySnapshotOperationTests.Worker_persists_one_result_and_provider_metadata_then_GET_is_read_only",
+ "outcome": "Passed",
+ "duration": "00:00:00.8223535"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiGroundingTests.Synthetic_semantic_assessments_enforce_the_grounding_contract(fixture: { \"id\": \"unsupported-qualification\", \"source\": \"Built reliable APIs.\", \"proposal\": \"Holds a doctorate in computing.\", \"verdict\": \"unsupported\", \"expectedSupported\": false })",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000234"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobPipelineTests.Normalize_canonicalizes_casing_and_synonyms(input: \"APPLIED\", expected: \"Applied\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000528"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CsvExportTests.Text_policy_is_idempotent_and_survives_independent_CSV_parsing(value: \"\\udb40\\udc01=1+1\", expected: \"'\\udb40\\udc01=1+1\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0012416"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobCvMatchServiceTests.Section_coverage_reports_where_matches_are_concentrated",
+ "outcome": "Passed",
+ "duration": "00:00:00.0018567"
+ },
+ {
+ "name": "JobTrackerApi.Tests.SessionContextMiddlewareTests.Missing_old_and_forged_contexts_never_reach_an_authenticated_mutation(method: \"PATCH\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0043051"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiReadinessTests.Fabricated_or_mixed_provider_output_cannot_obtain_an_applicable_proposal(invented: \"Senior engineer at Microsoft.\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.1795663"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ProfileCvControllerTests.Parse_uses_classifier_fallback_when_plain_text_has_no_real_sections",
+ "outcome": "Passed",
+ "duration": "00:00:00.0253857"
+ },
+ {
+ "name": "JobTrackerApi.Tests.PdfRenderAdmissionTests.Invalid_configuration_prevents_host_start(name: \"MaxConcurrentRenders\", value: \"0\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0035924"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobApplicationsMariaDraftTests.Save_application_drafts_can_store_recruiter_message",
+ "outcome": "Passed",
+ "duration": "00:00:00.0036501"
+ },
+ {
+ "name": "JobTrackerApi.Tests.GmailControllerTests.Import_thread_reports_imported_and_skipped_counts_for_repeat_calls",
+ "outcome": "Passed",
+ "duration": "00:00:00.0434526"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationIntelligenceTests.Match_counts_ai_suggestions_without_generating_any",
+ "outcome": "Passed",
+ "duration": "00:00:00.0062485"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvProfileDiffServiceTests.A_language_level_change_is_an_update_a_new_language_is_an_add",
+ "outcome": "Passed",
+ "duration": "00:00:00.0004756"
+ },
+ {
+ "name": "JobTrackerApi.Tests.PdfRenderAdmissionTests.Shutdown_cancels_active_process_and_rejects_new_work",
+ "outcome": "Passed",
+ "duration": "00:00:00.1315548"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ProEntitlementAuthorizationTests.Explicit_ai_action_requires_the_pro_policy(controller: typeof(JobTrackerApi.Controllers.ProfileCvController), action: \"ExportProfileCvPdf\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000514"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvCorpusHarnessTests.Local_cv_corpus_harness_produces_repeatable_parse_report_when_available",
+ "outcome": "Passed",
+ "duration": "00:00:00.0039197"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobPipelineTests.Normalize_canonicalizes_casing_and_synonyms(input: \"interviews\", expected: \"Interview\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000022"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvRevisionReadinessTests.Independent_stale_save_or_restore_cannot_replace_the_newer_revision(restore: True)",
+ "outcome": "Passed",
+ "duration": "00:00:00.2122754"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CsvExportTests.Text_policy_is_idempotent_and_survives_independent_CSV_parsing(value: \"normal text\", expected: \"normal text\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0019474"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobApplicationsFollowUpDraftTests.Legacy_follow_up_delivery_is_gone_and_has_no_smtp_dependency",
+ "outcome": "Passed",
+ "duration": "00:00:00.0539679"
+ },
+ {
+ "name": "JobTrackerApi.Tests.EmailDraftsControllerTests.Nonfailed_attempts_cannot_rotate_identity_or_change_draft_and_history(status: \"pending\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.1518996"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_denied_dns_addresses_before_any_socket_attempt(address: \"::ffff:10.1.2.3\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0469827"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AuthAndSystemControllerTests.Me_result_includes_configured_build_metadata",
+ "outcome": "Passed",
+ "duration": "00:00:00.0046831"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvBuilderTests.Multi_entry_sections_flow_between_entries_instead_of_leaving_a_blank_page",
+ "outcome": "Passed",
+ "duration": "00:00:00.0011206"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AccountPlansTests.Premium_subscription_status_requires_current_access(status: \"canceled\", expected: False)",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000019"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvProfileDiffServiceTests.Merge_preserves_existing_items_and_adds_new_information",
+ "outcome": "Passed",
+ "duration": "00:00:00.0076411"
+ },
+ {
+ "name": "JobTrackerApi.Tests.MicrosoftTokenValidatorTests.Tid_and_oid_are_required_guids(tenantId: \"11111111-1111-1111-1111-111111111111\", objectId: null)",
+ "outcome": "Passed",
+ "duration": "00:00:00.0003274"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobCvMatchServiceTests.Quality_fixtures_keep_useful_terms_and_suppress_noise(name: \"Norwegian\", title: \"Senior systemutvikler\", description: \"Vi ser etter deg som har erfaring med C# og ASP.NE\"\u00b7\u00b7\u00b7, expected: [\"C#\", \"ASP.NET Core\", \"designe skalerbare distribuerte systemer\"], excluded: [\"med\", \"til\", \"for\", \"som\", \"erfaring\", \u00b7\u00b7\u00b7])",
+ "outcome": "Passed",
+ "duration": "00:00:00.0061556"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AttachmentConsistencyTests.Database_failure_during_delete_restores_quarantined_bytes_and_row",
+ "outcome": "Passed",
+ "duration": "00:00:00.3544725"
+ },
+ {
+ "name": "JobTrackerApi.Tests.NotificationSettingsControllerTests.Get_returns_the_authenticated_users_preference",
+ "outcome": "Passed",
+ "duration": "00:00:00.0015393"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvBuilderTests.Render_pulls_content_from_the_master_profile",
+ "outcome": "Passed",
+ "duration": "00:00:00.3862129"
+ },
+ {
+ "name": "JobTrackerApi.Tests.GmailControllerTests.Job_candidates_rejects_invalid_job_id",
+ "outcome": "Passed",
+ "duration": "00:00:00.0218757"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AccountPlansTests.Admin_role_receives_pro_capabilities",
+ "outcome": "Passed",
+ "duration": "00:00:00.0002346"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_denied_dns_addresses_before_any_socket_attempt(address: \"100.64.0.1\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0142096"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiGroundingTests.Numeric_unit_changes_fail_even_when_the_reviewer_approves",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000958"
+ },
+ {
+ "name": "JobTrackerApi.Tests.GmailControllerTests.Unlink_thread_cannot_remove_another_users_messages",
+ "outcome": "Passed",
+ "duration": "00:00:00.0960701"
+ },
+ {
+ "name": "JobTrackerApi.Tests.SummarizerServiceTests.Summarize_section_uses_cv_rewrite_endpoint",
+ "outcome": "Passed",
+ "duration": "00:00:00.0014732"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ExternalOriginTests.Production_requires_one_clean_https_origin(value: \"https://jobs.example.test#fragment\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0003626"
+ },
+ {
+ "name": "JobTrackerApi.Tests.InterviewPrepTests.Setting_a_follow_up_updates_the_existing_field_and_records_an_event",
+ "outcome": "Passed",
+ "duration": "00:00:00.0305036"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobPipelineTests.Normalize_empty_becomes_default(input: \" \")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000438"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobPipelineTests.IsProspect_true_for_pre_application_stages(status: \"Saved\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000051"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ProfileCvControllerTests.Normalized_markdown_parse_preserves_real_estate_job_and_language_levels",
+ "outcome": "Passed",
+ "duration": "00:00:00.0036791"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Production_dial_path_cannot_reach_a_loopback_listener",
+ "outcome": "Passed",
+ "duration": "00:00:00.0037692"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiReadinessTests.Confirmed_stale_apply_reproduction_is_now_an_API_conflict",
+ "outcome": "Passed",
+ "duration": "00:00:00.1682749"
+ },
+ {
+ "name": "JobTrackerApi.Tests.MeteredSummarizerServiceTests.Cv_factual_review_is_admitted_and_finalized_by_the_shared_usage_gate",
+ "outcome": "Passed",
+ "duration": "00:00:00.1446332"
+ },
+ {
+ "name": "JobTrackerApi.Tests.UserOperationStoreTests.Concurrent_duplicate_creation_returns_one_operation",
+ "outcome": "Passed",
+ "duration": "00:00:00.2173270"
+ },
+ {
+ "name": "JobTrackerApi.Tests.MicrosoftTokenValidatorTests.Tenant_modes_accept_only_their_documented_accounts(mode: \"consumers\", tokenTenant: \"11111111-1111-1111-1111-111111111111\", accepted: False)",
+ "outcome": "Passed",
+ "duration": "00:00:00.0130253"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvBuilderTests.Resolver_respects_explicit_section_order",
+ "outcome": "Passed",
+ "duration": "00:00:00.0004332"
+ },
+ {
+ "name": "JobTrackerApi.Tests.EmailControllerTests.Search_rejects_unknown_or_disconnected_provider",
+ "outcome": "Passed",
+ "duration": "00:00:00.0052779"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobApplicationsAppliedDateHistoryTests.Re_applying_after_a_backwards_move_stamps_a_fresh_date_and_leaves_history_intact",
+ "outcome": "Passed",
+ "duration": "00:00:00.0849371"
+ },
+ {
+ "name": "JobTrackerApi.Tests.BuildMetadataTests.Unresolved_placeholders_and_blanks_are_rejected(raw: null)",
+ "outcome": "Passed",
+ "duration": "00:00:00.0001000"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CsvExportTests.Text_policy_is_idempotent_and_survives_independent_CSV_parsing(value: \"a\\\"b\", expected: \"a\\\"b\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0015804"
+ },
+ {
+ "name": "JobTrackerApi.Tests.RulesEngineProspectTests.An_applied_job_past_the_threshold_still_ghosts",
+ "outcome": "Passed",
+ "duration": "00:00:00.0001295"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AttachmentFlagsRecomputeTests.Deleting_the_only_resume_attachment_clears_HasResume",
+ "outcome": "Passed",
+ "duration": "00:00:00.0095620"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ExternalOriginTests.Production_requires_one_clean_https_origin(value: \"https://jobs.example.test?query=1\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000144"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationIntelligenceTests.Match_only_reads_the_requesting_users_profile",
+ "outcome": "Passed",
+ "duration": "00:00:00.0044094"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationChecklistTests.Another_users_checklist_is_not_reachable",
+ "outcome": "Passed",
+ "duration": "00:00:00.0029852"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobPipelineTests.Normalize_canonicalizes_casing_and_synonyms(input: \"Interviewing\", expected: \"Interview\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000049"
+ },
+ {
+ "name": "JobTrackerApi.Tests.DocumentsControllerTests.Cleared_letter_history_answer_markers_and_structured_tailoring_keep_their_real_sources",
+ "outcome": "Passed",
+ "duration": "00:00:01.2657479"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobPipelineTests.Normalize_canonicalizes_withdrawn_synonyms(input: \"cancelled\", expected: \"Withdrawn\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0001738"
+ },
+ {
+ "name": "JobTrackerApi.Tests.DocumentsControllerTests.Search_treats_wildcards_literally_folds_Nordic_metadata_and_never_searches_content",
+ "outcome": "Passed",
+ "duration": "00:00:00.5402799"
+ },
+ {
+ "name": "JobTrackerApi.Tests.SessionsControllerTests.RevokeOthers_revokes_every_other_session_but_leaves_the_current_one_usable",
+ "outcome": "Passed",
+ "duration": "00:00:00.0121528"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_denied_dns_addresses_before_any_socket_attempt(address: \"::ffff:127.0.0.1\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0618372"
+ },
+ {
+ "name": "JobTrackerApi.Tests.GmailControllerTests.Refresh_linked_threads_imports_new_messages_for_known_thread_ids",
+ "outcome": "Passed",
+ "duration": "00:00:00.0561347"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationWorkspaceTests.Overview_returns_recent_activity_newest_first",
+ "outcome": "Passed",
+ "duration": "00:00:00.0090709"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobApplicationsApplicationPackageTests.Save_application_drafts_updates_and_clears_answer_without_changing_human_notes",
+ "outcome": "Passed",
+ "duration": "00:00:00.0034251"
+ },
+ {
+ "name": "JobTrackerApi.Tests.OwnershipGuardTests.Summarizer_service_uses_sha256_cache_key_builder",
+ "outcome": "Passed",
+ "duration": "00:00:00.0005257"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiReadinessTests.Whole_document_proposal_cannot_review_multiple_headline_items_then_drop_one_on_apply",
+ "outcome": "Passed",
+ "duration": "00:00:00.1742880"
+ },
+ {
+ "name": "JobTrackerApi.Tests.BillingControllerTests.Webhook_rejects_an_invalid_Stripe_signature",
+ "outcome": "Passed",
+ "duration": "00:00:00.0080977"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobApplicationsControllerTests.Save_application_drafts_request_supports_the_complete_application_package",
+ "outcome": "Passed",
+ "duration": "00:00:00.0004321"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AuthAndSystemControllerTests.Exchange_legacy_microsoft_link_sends_proof_but_does_not_sign_in",
+ "outcome": "Passed",
+ "duration": "00:00:00.0280743"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AuthAndSystemControllerTests.Unlink_microsoft_refuses_a_passwordless_last_credential",
+ "outcome": "Passed",
+ "duration": "00:00:00.0040692"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiReadinessTests.Unavailable_review_service_blocks_generation_and_apply_without_side_effects(apply: False)",
+ "outcome": "Passed",
+ "duration": "00:00:00.2527835"
+ },
+ {
+ "name": "JobTrackerApi.Tests.DashboardPreferencesTests.All_known_widgets_and_empty_reset_save_roundtrip_in_order",
+ "outcome": "Passed",
+ "duration": "00:00:01.0354889"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobOpportunitySyncTests.Backfill_links_each_legacy_application_once",
+ "outcome": "Passed",
+ "duration": "00:00:01.3850294"
+ },
+ {
+ "name": "JobTrackerApi.Tests.RulesEngineProspectTests.A_prospect_is_never_followed_up_or_ghosted_however_old(status: \"Interested\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000066"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationWorkspaceTests.Overview_reports_checklist_progress",
+ "outcome": "Passed",
+ "duration": "00:00:00.0066324"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationWorkspaceTests.Overview_surfaces_the_attached_cv_variant",
+ "outcome": "Passed",
+ "duration": "00:00:00.0120464"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ApplicationAssetsTests.Restoring_a_version_that_does_not_exist_is_a_miss",
+ "outcome": "Passed",
+ "duration": "00:00:00.0643211"
+ },
+ {
+ "name": "JobTrackerApi.Tests.GmailControllerTests.Unlink_thread_removes_messages_and_sets_review_decision",
+ "outcome": "Passed",
+ "duration": "00:00:00.0638468"
+ },
+ {
+ "name": "JobTrackerApi.Tests.SqliteDateTimeOffsetCompatibilityTests.Affected_workspace_queries_order_dates_and_preserve_owner_scope",
+ "outcome": "Passed",
+ "duration": "00:00:00.3029966"
+ },
+ {
+ "name": "JobTrackerApi.Tests.PdfRenderAdmissionTests.Invalid_configuration_prevents_host_start(name: \"MaxConcurrentRenders\", value: \"9\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0379223"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AuthAndSystemControllerTests.Exchange_microsoft_token_rejects_unmatched_account_when_registration_disabled",
+ "outcome": "Passed",
+ "duration": "00:00:00.0060302"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobCvMatchServiceTests.Title_keywords_are_weighted_and_missing_ones_rank_first",
+ "outcome": "Passed",
+ "duration": "00:00:00.0003975"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AiPrivacyPolicyTests.External_processing_requires_admin_gate_user_consent_and_pro(adminEnabled: True, userAllowed: True, pro: False, expectedProvider: \"local\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.1921157"
+ },
+ {
+ "name": "JobTrackerApi.Tests.MicrosoftTokenValidatorTests.Tid_and_oid_are_required_guids(tenantId: \"11111111-1111-1111-1111-111111111111\", objectId: \"not-a-guid\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0005754"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobPipelineTests.Normalize_canonicalizes_prospect_synonyms(input: \"shortlisted\", expected: \"Interested\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0000025"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobImportHttpTransportTests.Handler_rejects_literal_without_dns_or_dial(url: \"http://2130706433/\")",
+ "outcome": "Passed",
+ "duration": "00:00:00.0470854"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ProfileCvControllerTests.Approved_fixture_regression_for_new_resume_docx_keeps_contact_and_role_core_fields_stable",
+ "outcome": "Passed",
+ "duration": "00:00:00.0017171"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ProfileCvControllerTests.Background_processing_rechecks_pro_after_queueing",
+ "outcome": "Passed",
+ "duration": "00:00:00.0474573"
+ },
+ {
+ "name": "JobTrackerApi.Tests.CvAiReadinessTests.Pending_proposal_cannot_overwrite_newer_CV_or_canonical_source(canonical: True)",
+ "outcome": "Passed",
+ "duration": "00:00:00.1969042"
+ },
+ {
+ "name": "JobTrackerApi.Tests.DatabaseBackupRunnerTests.RunOnce_creates_a_restorable_backup_file",
+ "outcome": "Passed",
+ "duration": "00:00:00.0525120"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobDiscoveryControllerTests.Saved_search_tracks_new_seen_and_dismissed_results_per_owner",
+ "outcome": "Passed",
+ "duration": "00:00:01.1610482"
+ },
+ {
+ "name": "JobTrackerApi.Tests.AccountDataExportTests.Account_export_requires_a_session_created_within_fifteen_minutes",
+ "outcome": "Passed",
+ "duration": "00:00:00.7473763"
+ },
+ {
+ "name": "JobTrackerApi.Tests.BackupControllerTests.Backup_controller_requires_local_authorization",
+ "outcome": "Passed",
+ "duration": "00:00:00.0001090"
+ },
+ {
+ "name": "JobTrackerApi.Tests.ProfileCvControllerTests.Rewrite_section_returns_rewrite_empty_detail_when_ai_health_is_healthy",
+ "outcome": "Passed",
+ "duration": "00:00:00.0069748"
+ },
+ {
+ "name": "JobTrackerApi.Tests.JobCvMatchServiceTests.Quality_fixtures_keep_useful_terms_and_suppress_noise(name: \"Noisy HTML\", title: \"Frontend developer\", description: \"