Files
jobtrackingapp/docs/verification/pol-002-ai-privacy.md
T

2.3 KiB

POL-002 verification — AI privacy and external consent

Updated: 2026-08-03

Status: IMPLEMENTED — NOT VERIFIED.

Implemented

  • Server-persisted per-user AI enable/disable and external-processing consent.
  • Live AI authorization rejects a Pro user who disables AI with the stable ai_disabled reason.
  • Optional job enrichment and queued CV processing recheck the live AI-enabled preference.
  • External /cv/* processing requires administrator enablement, supported provider configuration, current Pro entitlement, AI enabled and explicit user consent.
  • The sidecar independently rejects external selection unless its administrator gate and the backend permission header are both present.
  • Settings UI explains local-only/default behaviour and cannot opt in while the deployment gate is unavailable.
  • Provider credentials remain environment/server-only.

Automated evidence

  • Focused backend policy/entitlement/worker/CV tests: 72/72.
  • Focused policy/header tests after final changes: 28/28.
  • Sidecar tests: 18/18, including absent/present permission-header routing.
  • Focused settings/entitlement UI tests: 8/8.
  • Full backend: 576/576.
  • Full frontend: 47/47 suites, 158/158 tests.
  • Frontend production build: pass.
  • EF pending-model check: pass; SQLite script adds AiEnabled DEFAULT 1 and ExternalAiProcessingAllowed DEFAULT 0.
  • docker compose config --quiet: pass with expected unset optional-environment warnings.
  • git diff --check: pass; line-ending notices only.

Unverified / remaining

  • Browser verification is blocked by administrator policy.
  • No external provider, paid service, production environment or real private data was used.
  • MariaDB migration execution remains unavailable.
  • Direct clean dotnet ef database update fails in the pre-existing historical SQLite migration chain before this migration (AddJobEntityAndProspectStages expects a reconciler-added column). The application startup reconciler path was not exercised because the local process-launch command was blocked by execution policy.
  • Background operations do not yet carry a policy snapshot; they fail safe to local. AI-001/AI-002 own durable admission/recheck, actual-provider/reason recording, cost controls, payload minimization and bounded local-first fallback triggers.