Files
jobtrackingapp/docs/redesign/phase-9/p9-00/inventory.json
T

2689 lines
107 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"baseline": "1c24e406f194f0f42277d837b3008a7a28dca26a",
"routes": {
"/": [
"Navigate",
"LandingPage"
],
"/dashboard": [
"DashboardView"
],
"/analytics": [
"AnalyticsPage"
],
"/discover": [
"JobDiscoveryPage"
],
"/jobs": [
"JobTable"
],
"/jobs/:id": [
"ApplicationWorkspacePage"
],
"/reminders": [
"RemindersView"
],
"/operations": [
"OperationsPage"
],
"/kanban": [
"LegacyBoardRedirect"
],
"/companies": [
"CompaniesTable"
],
"/offers": [
"OfferComparisonPage"
],
"/correspondence": [
"CorrespondenceInboxPage"
],
"/correspondence/review": [
"LegacyCorrespondenceReviewRedirect"
],
"/profile": [
"ProfilePage"
],
"/applications/:id": [
"LegacyApplicationRedirect"
],
"/career": [
"CareerWorkspacePage"
],
"/career/builder": [
"CvBuilderPage"
],
"/career/builder/:id": [
"CvBuilderEditor"
],
"/documents": [
"DocumentsPage"
],
"/admin/audit": [
"AdminAuditPage"
],
"/admin/users": [
"AdminUsersPage"
],
"/admin/system": [
"AdminSystemPage"
],
"/trash": [
"JobTable"
],
"/settings": [
"SettingsView"
],
"/settings/connected-accounts": [
"ConnectedAccountsPage"
],
"/login": [
"LoginPage"
],
"/register": [
"LoginPage"
],
"/forgot-password": [
"ForgotPasswordPage"
],
"/reset-password": [
"ResetPasswordPage"
],
"/verify-email": [
"VerifyEmailPage"
],
"/confirm-email-change": [
"VerifyEmailPage"
],
"/microsoft-legacy-relink": [
"MicrosoftLegacyRelinkPage"
],
"/cv/:slug": [
"PublicCvPage"
]
},
"preservation": [
{
"id": "PRES-E01",
"capability": "**PRES-E01** — Public product/plans; honest unavailable billing",
"entry": "`/`",
"owners": "LandingPage, planCatalog; AccountPlans",
"existingEvidence": "[F:landing-page][F:landing-page.test.tsx], [F:planCatalog][F:planCatalog.test.ts], [F:LandingPage.authRedirect][F:LandingPage.authRedirect.test.tsx]; [B:AccountPlans][B:AccountPlansTests]. Free/Pro copy, unavailable checkout and authenticated redirect",
"historicGap": "Actual checkout/provider availability; public mobile/keyboard review",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-E02",
"capability": "**PRES-E02** — Local login/register/remember, challenge, reset and verification",
"entry": "`/login; /register; /forgot-password; /reset-password; /verify-email`",
"owners": "LoginPage, TurnstileWidget, VerifyEmailPage; AuthController",
"existingEvidence": "[F:login-page][F:login-page.test.tsx], [F:verify-email-page][F:verify-email-page.test.tsx], [F:turnstile-widget][F:turnstile-widget.test.tsx]; [B:LocalAuthIdentity][B:LocalAuthIdentityTests], [B:AuthAndSystemController][B:AuthAndSystemControllerTests]. Configuration gates, two-factor branch, safe redirect, verification outcomes; smoke login",
"historicGap": "Real reset-email delivery, Turnstile widget/browser configuration, complete reset submit journey",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-E03",
"capability": "**PRES-E03** — Google/Microsoft login, link, legacy relink and popup results",
"entry": "`/login; /microsoft-legacy-relink; provider callbacks`",
"owners": "GoogleAuthCard, MicrosoftAuthCard, MicrosoftLegacyRelinkPage; token validators",
"existingEvidence": "[F:login-page][F:login-page.test.tsx], [F:microsoft-legacy-relink-page][F:microsoft-legacy-relink-page.test.tsx]; [B:GoogleTokenValidator][B:GoogleTokenValidatorTests], [B:MicrosoftTokenValidator][B:MicrosoftTokenValidatorTests], [B:LocalAuthIdentity][B:LocalAuthIdentityTests]. Provider failure/relink presentation and token validation",
"historicGap": "Real consent/popups, revoked grants, provider sandbox; callbacks must retain origin/state",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-E04",
"capability": "**PRES-E04** — 2FA challenge/recovery/setup/disable; trusted-device revocation",
"entry": "`/profile; /login`",
"owners": "TwoFactorSettingsCard, TwoFactorChallenge; TwoFactorController",
"existingEvidence": "[F:two-factor-settings][F:two-factor-settings.test.tsx], [F:login-page][F:login-page.test.tsx]; [B:TwoFactorController][B:TwoFactorControllerTests], [B:SessionsController][B:SessionsControllerTests]. Setup/recovery presentation, disable failure/retry; server trusted-device/session checks",
"historicGap": "Real mobile authenticator/recovery and trusted-device UI traversal",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-E05",
"capability": "**PRES-E05** — Session list/current device, revoke one/others, logout",
"entry": "`/profile; shell user menu`",
"owners": "SessionsSettingsCard, AppShell, auth; SessionsController",
"existingEvidence": "[F:session-boundary][F:session-boundary.test.ts], [F:account-scoped-state][F:account-scoped-state.test.tsx]; [B:SessionsController][B:SessionsControllerTests], [B:AuthSessionRevocation][B:AuthSessionRevocationTests]. Own active sessions only, revoke ownership and next-request invalidation; B02 browser logout",
"historicGap": "Session-list card UI selection/refresh after remote revoke",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-E06",
"capability": "**PRES-E06** — Avatar, account names/headline, email change and password",
"entry": "`/profile; /confirm-email-change`",
"owners": "ProfilePage; AuthController, AvatarStorage",
"existingEvidence": "[F:profile-page][F:profile-page.test.tsx], [F:verify-email-page][F:verify-email-page.test.tsx]; [B:AvatarStorage][B:AvatarStorageTests], [B:LocalAuthIdentity][B:LocalAuthIdentityTests]. Email change password/confirmation contract; safe avatar storage and identity endpoints",
"historicGap": "Avatar upload/remove and password-change browser journeys",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-E07",
"capability": "**PRES-E07** — Desktop collapse/mobile drawer, active nav and command search/actions",
"entry": "`Shell; Ctrl/Cmd+K`",
"owners": "AppShell, QuickCommandDialog; job/company search APIs",
"existingEvidence": "[F:sidebar-active-nav][F:sidebar-active-nav.test.ts], [F:app-shell-notifications][F:app-shell-notifications.test.tsx], [F:quick-command-preservation][F:quick-command-preservation.test.tsx]; [B:JobApplicationsAuthorization][B:JobApplicationsAuthorizationTests], [B:CompanyRelationship][B:CompanyRelationshipTests]. Active matching and notification entry; NEW job/company destinations, reviewed add and search reset; NEW browser keyboard navigation",
"historicGap": "Drawer focus return and collapse persistence in EN/NB; all command destinations before shell migration",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-E08",
"capability": "**PRES-E08** — Theme/system, EN/NB hydration, toast/confirm/prompt and errors",
"entry": "`Shell; preferences; fallback routes`",
"owners": "themePrefs, I18nProvider, confirm, prompt; auth preference",
"existingEvidence": "[F:theme-state][F:theme-state.test.tsx], [F:i18n-provider][F:i18n-provider.test.tsx], [F:confirm][F:confirm.test.tsx], [F:prompt][F:prompt.test.tsx], [F:dialog-flow][F:dialog-flow.test.tsx]; [B:LocalAuthIdentity][B:LocalAuthIdentityTests]. Hydrated theme/language, confirmation/cancellation and dialog behavior",
"historicGap": "Not-found/error-boundary retry route; full locale/theme/state cross-product and OS theme changes",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-E09",
"capability": "**PRES-E09** — Account-switch private-state disposal and stale request rejection",
"entry": "`All private routes; tabs/BFCache/focus`",
"owners": "App, api, sessionBoundary; SessionContextMiddleware",
"existingEvidence": "[F:session-boundary][F:session-boundary.test.ts], [F:account-scoped-state][F:account-scoped-state.test.tsx]; [B:SessionContextMiddleware][B:SessionContextMiddlewareTests], [B:CurrentUserIdLiveEvaluation][B:CurrentUserIdLiveEvaluationTests], [B:OwnershipGuard][B:OwnershipGuardTests]. B02 stale mutation/read abort, account-scoped state; four real-API/two-tab account-isolation browser cases",
"historicGap": "Real BFCache variations and long offline retry; preserve server precondition even with old bundles",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-J01",
"capability": "**PRES-J01** — NAV discovery/filter/sort/source/deadline/details",
"entry": "`/discover`",
"owners": "JobDiscoveryPage; JobDiscoveryController",
"existingEvidence": "[F:job-discovery][F:job-discovery.test.tsx]; [B:JobDiscoveryController][B:JobDiscoveryControllerTests], [B:JobOpportunitySync][B:JobOpportunitySyncTests]. Search/sort/source details, empty versus failure/retry; responsive discovery browser",
"historicGap": "Live NAV freshness/API availability; long result keyboard traversal",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-J02",
"capability": "**PRES-J02** — Saved searches, run/delete/alerts, result changes/dismissal",
"entry": "`/discover`",
"owners": "JobDiscoveryPage; saved-search/alert services",
"existingEvidence": "[F:job-discovery][F:job-discovery.test.tsx]; [B:SavedJobSearchAlert][B:SavedJobSearchAlertTests], [B:JobDiscoveryController][B:JobDiscoveryControllerTests]. Saved search run, pause and dismiss controls; owner-scoped alert results",
"historicGap": "Scheduler-to-notification browser journey, delete confirmation on mobile",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-J03",
"capability": "**PRES-J03** — Reviewed manual/URL/paste job create, company/tags/dates, duplicates",
"entry": "`Shell AddJobModal`",
"owners": "AddJobModal; JobImportService, JobApplicationsController",
"existingEvidence": "[F:quick-capture][F:quick-capture.test.tsx]; [B:JobImportService][B:JobImportServiceTests], [B:JobImportHttpTransport][B:JobImportHttpTransportTests], [B:JobApplicationsController][B:JobApplicationsControllerTests]. Preview before write, URL prefills, manual browser create; B01 real connection boundary",
"historicGap": "Duplicate warning and company/date edge UI; creation-intent idempotency remains separate unresolved contract",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-J04",
"capability": "**PRES-J04** — Extension/bookmarklet/share capture; post-create attachment/CV",
"entry": "`?add= / ?addtext=; QuickCaptureCard; browser-extension`",
"owners": "App, captureUrl, QuickCaptureCard; job/CV APIs",
"existingEvidence": "[F:captureUrl][F:captureUrl.test.ts], [F:quick-capture][F:quick-capture.test.tsx], [F:quick-command-preservation][F:quick-command-preservation.test.tsx]; [B:JobImportService][B:JobImportServiceTests], [B:CvBuilder][B:CvBuilderTests]. Capture URL encoding/review/no auto-create, post-create CV; extension node tests; NEW keyboard add opens review only",
"historicGap": "Installed extension permissions/browser-share flow and optional attachment failure recovery",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-J05",
"capability": "**PRES-J05** — Job filters/sort/page/columns, saved views and row/mobile actions",
"entry": "`/jobs`",
"owners": "JobTable, SavedViewsMenu; JobApplicationsController",
"existingEvidence": "[F:application-workspace-overlay][F:application-workspace-overlay.test.tsx], [F:account-scoped-state][F:account-scoped-state.test.tsx], [F:daily-control-loop][F:daily-control-loop.test.tsx]; [B:JobApplicationsController][B:JobApplicationsControllerTests], [B:JobApplicationsEndpointBehavior][B:JobApplicationsEndpointBehaviorTests]. URL hydration, selection does not open row, list return/focus; browser dirty/full workspace",
"historicGap": "Saved-view CRUD browser journey, page-size changes with dirty nested state",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-J06",
"capability": "**PRES-J06** — Bulk status/delete, soft delete/trash/restore and job edit",
"entry": "`/jobs; /trash; EditJobDialog`",
"owners": "JobTable, EditJobDialog; job lifecycle/controller",
"existingEvidence": "[F:application-workspace-overlay][F:application-workspace-overlay.test.tsx], [F:confirm-flow][F:confirm-flow.test.tsx]; [B:JobApplicationsController][B:JobApplicationsControllerTests], [B:JobApplicationsAuthorization][B:JobApplicationsAuthorizationTests], [B:JobLifecycleEvent][B:JobLifecycleEventTests]. Selection and destructive confirmation primitive; server CRUD/ownership/lifecycle behavior",
"historicGap": "Bulk partial failure and trash→restore UI journey; shared confirm tests alone do not prove bulk flow",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-J07",
"capability": "**PRES-J07** — Kanban grouped statuses, pointer/keyboard move and precise menu",
"entry": "`/kanban`",
"owners": "KanbanBoard, pipeline; status endpoint",
"existingEvidence": "[F:kanban-grouped-board][F:kanban-grouped-board.test.tsx], [F:pipeline][F:pipeline.test.ts]; [B:JobPipeline][B:JobPipelineTests]. Keyboard pickup/drop, failed move keeps card, custom group and precise stages; dark browser test",
"historicGap": "Touch drag, keyboard cancel/focus after responsive view switching",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-J08",
"capability": "**PRES-J08** — Company/contact edits, pipeline dates and linked-job history",
"entry": "`/companies; ?edit=id`",
"owners": "CompaniesTable; company relationship APIs",
"existingEvidence": "[F:companies-relationship][F:companies-relationship.test.tsx], [F:quick-command-preservation][F:quick-command-preservation.test.tsx]; [B:CompanyRelationship][B:CompanyRelationshipTests]. Job history/context and NEW command company destination",
"historicGap": "All contact/date edits persisted through browser; source URL safety",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-J09",
"capability": "**PRES-J09** — Recorded offers/compensation/deadlines/notes and source links",
"entry": "`/offers`",
"owners": "OfferComparisonPage; job API",
"existingEvidence": "[F:offer-comparison][F:offer-comparison.test.tsx]; [B:AnalyticsSalary][B:AnalyticsSalaryTests], [B:JobApplicationsEndpointBehavior][B:JobApplicationsEndpointBehaviorTests]. Recorded values/empty states and salary normalization",
"historicGap": "Mobile many-offer comparison; localized currency/date visual review",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-J10",
"capability": "**PRES-J10** — CSV/JSON export, JSON import and CSV-to-JSON conversion",
"entry": "`/settings; ImportExportJobs`",
"owners": "ImportExportJobs; CSV/job controller",
"existingEvidence": "[F:csv-export][F:csv-export.test.tsx]; [B:CsvExport][B:CsvExportTests], [B:JobApplicationsController][B:JobApplicationsControllerTests]. B05 formula/quotes/UTF-8/typed dates and numeric behavior; CSV browser byte download",
"historicGap": "Full browser JSON import/count/roundtrip; Excel/LibreOffice compatibility remains separately bounded",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-W01",
"capability": "**PRES-W01** — Full workspace, sections, legacy links and optional reusable overlay",
"entry": "`/jobs/:id; /applications/:id; section/followMode`",
"owners": "ApplicationWorkspacePage, jobWorkspaceRoute; workspace API",
"existingEvidence": "[F:application-workspace-overlay][F:application-workspace-overlay.test.tsx], [F:applicationWorkspace][F:applicationWorkspace.test.ts], [F:application-route-contracts][F:application-route-contracts.test.ts]; [B:ApplicationWorkspace][B:ApplicationWorkspaceTests]. Deep links, dirty cancel/discard, missing job and back/filter/focus; NEW actual App command/legacy entry",
"historicGap": "No active production caller of override/onClose overlay props found; full overlay parity needs a host fixture before adoption",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-W02",
"capability": "**PRES-W02** — Detail/status/progression, recruiter/dates/description/timeline",
"entry": "`/jobs/:id overview`",
"owners": "WorkspaceHeader, JobDetailsSection, ApplicationProgress/Timeline; workflow APIs",
"existingEvidence": "[F:application-intelligence][F:application-intelligence.test.tsx], [F:workflow-trust-signals][F:workflow-trust-signals.test.tsx], [F:daily-control-loop][F:daily-control-loop.test.tsx]; [B:JobApplicationsWorkflowSignals][B:JobApplicationsWorkflowSignalsTests], [B:JobApplicationsAppliedDateHistory][B:JobApplicationsAppliedDateHistoryTests]. Timeline source labels, next-action routing and applied-date history",
"historicGap": "Edit/status→timeline real-browser sequence across locale/timezone",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-W03",
"capability": "**PRES-W03** — Analysis, match/gaps, strategy and reviewed status/workflow suggestions",
"entry": "`/jobs/:id?section=analysis`",
"owners": "ApplicationAnalysis/Match/StrategySnapshot/StatusSuggestion; intelligence/AI services",
"existingEvidence": "[F:application-intelligence][F:application-intelligence.test.tsx], [F:application-workflow-assist][F:application-workflow-assist.test.tsx]; [B:ApplicationIntelligence][B:ApplicationIntelligenceTests], [B:StrategySnapshotOperation][B:StrategySnapshotOperationTests], [B:JobApplicationsEndpointBehavior][B:JobApplicationsEndpointBehaviorTests]. Loading/error/empty states, match and explicit suggested action behavior",
"historicGap": "Actual model truthfulness/evaluation; source freshness and cancelled generation browser states",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-W04",
"capability": "**PRES-W04** — Checklist create/edit/complete/delete/order and next action",
"entry": "`Job overview/checklist entry`",
"owners": "ApplicationChecklist; checklist service/controller",
"existingEvidence": "[F:application-checklist][F:application-checklist.test.tsx]; [B:ApplicationChecklist][B:ApplicationChecklistTests]. Persisted item actions and keyboard reorder; localized readiness",
"historicGap": "Real-API mobile edit/delete and interruption recovery",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-W05",
"capability": "**PRES-W05** — Attach/select/create/tailor CV and source context",
"entry": "`Job CV section; builder deep link`",
"owners": "ApplicationCvSection/TailoringSection; ApplicationAssetsService",
"existingEvidence": "[F:application-assets][F:application-assets.test.tsx], [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:ApplicationAssets][B:ApplicationAssetsTests], [B:CvBuilder][B:CvBuilderTests]. Attach re-points only, detach keeps variant, foreign owner denied, tailoring never writes source; B02 API browser",
"historicGap": "P2-D01 SQLite tailoring ordering blocks successful real-browser guidance; actual attach→render relationship beyond existing service coverage",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-W06",
"capability": "**PRES-W06** — Cover-letter manual/AI review, versions/restore and dirty protection",
"entry": "`Job cover-letter section`",
"owners": "ApplicationCoverLetterSection, CoverLetterAiAssistant; assets/history",
"existingEvidence": "[F:application-assets][F:application-assets.test.tsx], [F:application-workspace-overlay][F:application-workspace-overlay.test.tsx]; [B:ApplicationAssets][B:ApplicationAssetsTests]. Manual save/discard/restore, linked-CV AI explicit apply then save, version history owner scope",
"historicGap": "Whole-browser AI reject/provider success and cover-letter history persistence; no actual model called here",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-W07",
"capability": "**PRES-W07** — Application drafts and immutable submitted package/archived binaries",
"entry": "`Job cover-letter drafts; CV section package history`",
"owners": "ApplicationPackageDraftsSection, SubmittedPackagesSection; package service/storage",
"existingEvidence": "[F:application-assets][F:application-assets.test.tsx], [F:application-drafts][F:application-drafts.test.ts]; [B:SubmittedApplicationPackage][B:SubmittedApplicationPackageTests], [B:JobApplicationsApplicationPackage][B:JobApplicationsApplicationPackageTests], [B:JobApplicationsEndpointBehavior][B:JobApplicationsEndpointBehaviorTests]. Drafts keep ordinary notes; service frozen document/hash/copy-failure/tenant assertions; NEW native browser capture oracle",
"historicGap": "P2-D01 expected failure: SQLite capture 500. NEW post-capture mutation/archive assertions are NOT reached. Require real storage/provider success before package restructuring",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-W08",
"capability": "**PRES-W08** — Attachments upload/category/name/AI consent/preview/download/delete",
"entry": "`Job overview Documents accordion; package archive`",
"owners": "Attachments; AttachmentsController, AttachmentStorage",
"existingEvidence": "[F:attachments][F:attachments.test.tsx]; [B:AttachmentsController][B:AttachmentsControllerTests], [B:AttachmentConsistency][B:AttachmentConsistencyTests], [B:AttachmentFlagsRecompute][B:AttachmentFlagsRecomputeTests]. Empty/flag controls, storage consistency and owned download; NEW browser fixture uploads real UTF-8 binary",
"historicGap": "Archived bytes after live delete blocked by W07; drag/drop, rename and download browser journey",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-W09",
"capability": "**PRES-W09** — Interview questions/answers/ready/manual removal/AI review",
"entry": "`Job interview section`",
"owners": "InterviewPrep; interview persistence/AI endpoints",
"existingEvidence": "[F:interview-prep][F:interview-prep.test.tsx]; [B:InterviewPrepPersistence][B:InterviewPrepPersistenceTests], [B:InterviewAiContext][B:InterviewAiContextTests], [B:InterviewPrep][B:InterviewPrepTests]. Explicit AI add, manual/answer readiness, relevant prompt context without invented defaults",
"historicGap": "Populated mobile keyboard editing and real reload; actual model quality separate",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-W10",
"capability": "**PRES-W10** — Debrief/follow-up draft/date/readiness",
"entry": "`Job interview section; follow-up entry`",
"owners": "InterviewPrep; follow-up draft services",
"existingEvidence": "[F:interview-prep][F:interview-prep.test.tsx]; [B:JobApplicationsFollowUpDraft][B:JobApplicationsFollowUpDraftTests], [B:InterviewPrep][B:InterviewPrepTests]. Neutral debrief template and follow-up content handling",
"historicGap": "Timezone/reload browser chain; calendar defects remain outside Phase 2",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-W11",
"capability": "**PRES-W11** — Reminder rules/actions/notifications, ICS and Google/Outlook events",
"entry": "`/reminders; job calendar actions; /settings`",
"owners": "RemindersView, RulesSettingsCard, ApplicationCalendarActions; calendar/rules APIs",
"existingEvidence": "[F:daily-control-loop][F:daily-control-loop.test.tsx], [F:application-calendar][F:application-calendar.test.tsx], [F:settings-view][F:settings-view.test.tsx]; [B:ApplicationCalendarController][B:ApplicationCalendarControllerTests], [B:RulesEngineProspect][B:RulesEngineProspectTests], [B:NotificationSettingsController][B:NotificationSettingsControllerTests]. Provider write confirmation, ICS and permission; NEW per-scenario rule payload and real saved preference checks",
"historicGap": "DST/date-only correctness and real provider timezone must be resolved separately; initial rules 500 not reproduced",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-W12",
"capability": "**PRES-W12** — Async progress/failure/retry/cancel/notifications",
"entry": "`/operations; profile processing`",
"owners": "OperationsPage, CareerProfilePage; operation store/worker",
"existingEvidence": "[F:operations-page][F:operations-page.test.tsx], [F:profile-page][F:profile-page.test.tsx]; [B:OperationsController][B:OperationsControllerTests], [B:UserOperationStore][B:UserOperationStoreTests], [B:CvProcessingOperation][B:CvProcessingOperationTests]. Failure retry/cancel, durable operation IDs; extraction polling keeps dirty fields",
"historicGap": "Long-lived disconnect/reconnect and worker fault/recovery operational gaps",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-C01",
"capability": "**PRES-C01** — Canonical structured career data and long-tail/custom sections",
"entry": "`/career?section=profile`",
"owners": "CareerProfilePage, career views; CareerProfileService/controller",
"existingEvidence": "[F:profile-page][F:profile-page.test.tsx]; [B:CareerProfileController][B:CareerProfileControllerTests], [B:CareerProfileService][B:CareerProfileServiceTests]. Structured field changes propagate to saved singleton, stable child IDs and relational roundtrip; NEW CV edit leaves master unchanged",
"historicGap": "Every long-tail section/mobile keyboard save; concurrent canonical saves outside scope",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-C02",
"capability": "**PRES-C02** — Profile overview/completeness/import guidance/raw copy/history/restore",
"entry": "`/career`",
"owners": "CareerWorkspacePage, CareerProfilePage; version service",
"existingEvidence": "[F:career-workspace-page][F:career-workspace-page.test.tsx], [F:profile-page][F:profile-page.test.tsx]; [B:CareerProfileService][B:CareerProfileServiceTests]. First/returning state, completeness/errors and non-destructive history restore",
"historicGap": "Clipboard/avatar and full browser historical restore; real extraction quality separate",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-C03",
"capability": "**PRES-C03** — Upload/extract/rebuild/reprocess/diff/select/accept/discard/retry/cancel",
"entry": "`Career import/review`",
"owners": "CareerProfilePage; profile-CV/processing/diff services",
"existingEvidence": "[F:profile-page][F:profile-page.test.tsx]; [B:ProfileCvController][B:ProfileCvControllerTests], [B:CvProfileDiffService][B:CvProfileDiffServiceTests], [B:CvProcessingOperation][B:CvProcessingOperationTests], [B:CvExtractionCoverage][B:CvExtractionCoverageTests]. Queue/upload, operation retry, pending explicit apply and polling retains edits; extraction/diff service checks",
"historicGap": "Manual low-confidence deselection/discard UI; OCR/scanned/unusual real-document quality",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-C04",
"capability": "**PRES-C04** — Evidence bank source/category/tags/add/list/delete",
"entry": "`Career overview/evidence`",
"owners": "CareerEvidenceBank; CareerEvidenceController",
"existingEvidence": "[F:career-evidence][F:career-evidence.test.tsx]; [B:CareerEvidenceController][B:CareerEvidenceControllerTests]. Sourced evidence creation, tags and owner boundaries",
"historicGap": "Delete and many-item search/keyboard browser flow",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-C05",
"capability": "**PRES-C05** — CV library create/copy/delete/templates/share/publication/PDF",
"entry": "`/career/builder`",
"owners": "CvBuilderPage, thumbnails; CvVariantService/PublicCvController",
"existingEvidence": "[F:cv-builder-page][F:cv-builder-page.test.tsx], [F:cv-template-thumbnail][F:cv-template-thumbnail.test.tsx]; [B:CvBuilder][B:CvBuilderTests], [B:PublicCvController][B:PublicCvControllerTests]. General/job-specific creation, delete cancel, duplication fresh slug, public revoke/republish; existing public browser PDF",
"historicGap": "Complete library→publish/unpublish/revoke old link browser chain",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-C06",
"capability": "**PRES-C06** — Studio tabs, preview debounce/pages/fit/save state/mobile panes",
"entry": "`/career/builder/:id`",
"owners": "CvBuilderEditor, CvPreviewPane; preview API",
"existingEvidence": "[F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:CvBuilder][B:CvBuilderTests]. Five tabs, deep-link/error/save state and preview retry; NEW real mobile Edit/Preview, reload and desktop split",
"historicGap": "Keyboard preview scroll/focus (known F15), all theme/page interactions",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-C07",
"capability": "**PRES-C07** — Visibility/order/custom sections and item/document overrides",
"entry": "`Builder Content`",
"owners": "CvBuilderEditor, CV controls/useDragReorder; resolver/settings",
"existingEvidence": "[F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx], [F:cvBuilder][F:cvBuilder.test.ts]; [B:CvBuilder][B:CvBuilderTests]. Add/edit/delete/order/hide, override renders without master change; NEW persisted headline and sibling isolation",
"historicGap": "Native drag/touch and override reset-to-source browser flow; item-level real saved overrides beyond headline",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-C08",
"capability": "**PRES-C08** — Capability-aware templates/typography/color/header/skills/sidebar/photo",
"entry": "`Builder Template/Customize`",
"owners": "CvCustomizeTab, registry; ThemedCvRenderer",
"existingEvidence": "[F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx], [F:cvBuilder][F:cvBuilder.test.ts], [F:cv-template-thumbnail][F:cv-template-thumbnail.test.tsx]; [B:CvBuilder][B:CvBuilderTests]. Template change clears incompatible defaults; normalized overrides reach shared renderer, safe color/markdown",
"historicGap": "Complete template×advanced control visual/render parity; inaccessible color controls baseline",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-C09",
"capability": "**PRES-C09** — A4/Letter/density/margins/dates/document locale/section presentation",
"entry": "`Builder Customize/Content`",
"owners": "cvBuilder, CvCustomizeTab; settings normalization/render model",
"existingEvidence": "[F:cvBuilder][F:cvBuilder.test.ts], [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:CvBuilder][B:CvBuilderTests]. Page sizes, NB controls/default labels/dates, section grid/columns; existing long searchable PDF browser",
"historicGap": "All advanced combinations, print margins and long localized text manual review",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-C10",
"capability": "**PRES-C10** — Undo/redo, save queue, dirty guard, history restore/preview lifecycle",
"entry": "`Builder editor/history`",
"owners": "CvBuilderEditor; CvVariantService version history",
"existingEvidence": "[F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:CvBuilder][B:CvBuilderTests]. Undo/redo, failed save retry, guard cancel, restore-as-new-version; NEW saved override reload",
"historicGap": "Multi-browser stale-CV revision remains separate defect; history-tab browser restore and offline navigation",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-C11",
"capability": "**PRES-C11** — Section and whole-document AI improve/translate/instruction/grammar review",
"entry": "`Builder AI Tools/content assistant`",
"owners": "AiSectionAssistant, DocumentAiTab; CV AI assist",
"existingEvidence": "[F:ai-section-assistant][F:ai-section-assistant.test.tsx], [F:cv-builder-deep-link][F:cv-builder-deep-link.test.tsx]; [B:AiWorkspace][B:AiWorkspaceTests], [B:AiPrivacyPolicy][B:AiPrivacyPolicyTests], [B:ProEntitlementAuthorization][B:ProEntitlementAuthorizationTests]. NEW reject/close, edited acceptance, failure retry, whole-document apply/reject and malformed/missing/duplicate IDs rejected; no implicit PUT",
"historicGap": "Real model factual validation and section→whole review interactions; Free-disabled controls proven in new browser",
"entryStatus": "DEFERRED",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-C12",
"capability": "**PRES-C12** — Private PDF and published anonymous CV/PDF, long searchable pages",
"entry": "`Builder export; /cv/:slug`",
"owners": "PublicCvPage, cvBuilder; HtmlPdfGenerator/shared admission",
"existingEvidence": "[F:public-cv-page][F:public-cv-page.test.tsx]; [B:PublicCvController][B:PublicCvControllerTests], [B:PdfRenderAdmission][B:PdfRenderAdmissionTests], [B:CvBuilder][B:CvBuilderTests]. Anonymous public rendering versus private refusal; B03 shared capacity/failure; real multipage/public PDF browser",
"historicGap": "All templates/print engines; deployed Chromium/font behavior and PDF manual inspection",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-M01",
"capability": "**PRES-M01** — Job-scoped manual correspondence/search/delete/paste import",
"entry": "`Workspace communication accordion`",
"owners": "Correspondence; CorrespondenceController",
"existingEvidence": "[F:end-to-end-trust-loop][F:end-to-end-trust-loop.test.tsx], [F:correspondence-search-context][F:correspondence-search-context.test.ts]; [B:CorrespondenceController][B:CorrespondenceControllerTests]. Canonical communication entry does not send mail, job context and CRUD ownership",
"historicGap": "Manual note edit/delete/paste-import real browser; preserve send/log distinction",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-M02",
"capability": "**PRES-M02** — Gmail candidate/thread import/refresh/sync/unlink/relink/move",
"entry": "`Job communication Gmail tools`",
"owners": "Correspondence; GmailController/provider",
"existingEvidence": "[F:correspondence-gmail-import][F:correspondence-gmail-import.test.tsx]; [B:GmailController][B:GmailControllerTests], [B:EmailOwnershipIntegration][B:EmailOwnershipIntegrationTests]. Candidates, selected thread import/move/refresh and diagnostics; owner-bound relationships",
"historicGap": "Real provider/sandbox threads, multi-account reconnect and sync failure",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-M03",
"capability": "**PRES-M03** — Global inbox filters/page/provider/link/direction/detail/source links",
"entry": "`/correspondence`",
"owners": "CorrespondenceInboxPage; EmailController",
"existingEvidence": "[F:correspondence-inbox-page][F:correspondence-inbox-page.test.tsx]; [B:EmailController][B:EmailControllerTests], [B:EmailOwnershipIntegration][B:EmailOwnershipIntegrationTests]. Filter/pagination/detail/provider read failure distinct from empty",
"historicGap": "Real large mailbox and attachment binary browser flows",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-M04",
"capability": "**PRES-M04** — Compose/reply/provider/recipient/job; draft conflicts; confirm send/uncertainty",
"entry": "`/correspondence drafts/compose`",
"owners": "CorrespondenceInboxPage; EmailDrafts/Send/attempt store",
"existingEvidence": "[F:correspondence-inbox-page][F:correspondence-inbox-page.test.tsx]; [B:EmailDraftsController][B:EmailDraftsControllerTests], [B:EmailDraftPersistence][B:EmailDraftPersistenceTests], [B:EmailSendController][B:EmailSendControllerTests], [B:EmailSendAttemptStore][B:EmailSendAttemptStoreTests], [B:EmailProviderDelivery][B:EmailProviderDeliveryTests]. Revision conflicts, explicit send confirm, uncertain state has no automatic retry, deliberate new attempt",
"historicGap": "Actual sandbox mail delivery and browser reconnect; do not loosen idempotency/conflict guards",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-M05",
"capability": "**PRES-M05** — Review proposed jobs/link/reject/keep/notes/sync/create",
"entry": "`/correspondence?view=review; /correspondence/review`",
"owners": "GmailReviewPage, CorrespondenceInboxPage; Gmail review",
"existingEvidence": "[F:gmail-review-page][F:gmail-review-page.test.tsx], [F:correspondence-inbox-page][F:correspondence-inbox-page.test.tsx]; [B:GmailController][B:GmailControllerTests]. Review decisions/localization and inbox review entry",
"historicGap": "Real App legacy alias and suggested-job create browser workflow",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-M06",
"capability": "**PRES-M06** — Gmail/Graph/IMAP connect/status/disconnect separate from sign-in",
"entry": "`/settings/connected-accounts`",
"owners": "EmailProviderConnections; Google/Graph/IMAP controllers",
"existingEvidence": "[F:email-provider-connections][F:email-provider-connections.test.tsx]; [B:MicrosoftGraphController][B:MicrosoftGraphControllerTests], [B:ImapController][B:ImapControllerTests], [B:ImapServiceSsrfGuard][B:ImapServiceSsrfGuardTests], [B:GmailController][B:GmailControllerTests]. Connection state/NB/IMAP form and provider ownership; outbound IMAP safety",
"historicGap": "Actual provider authorization/revocation/token expiry; no credentials contacted in new tests",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-S01",
"capability": "**PRES-S01** — Personal metrics/activity/funnel/company/skills/stage/salary/next actions",
"entry": "`/dashboard`",
"owners": "DashboardView; analytics/controllers",
"existingEvidence": "[F:daily-control-loop][F:daily-control-loop.test.tsx], [F:workflow-trust-signals][F:workflow-trust-signals.test.tsx]; [B:StageAnalytics][B:StageAnalyticsTests], [B:AnalyticsSalary][B:AnalyticsSalaryTests]. Empty dashboard prioritizes onboarding, attention deep links; server analytics facts",
"historicGap": "Chart transformation fidelity and full populated/timezone browser dashboard",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-S02",
"capability": "**PRES-S02** — Owner-local five visibility preferences/onboarding dismiss/notifications",
"entry": "`/dashboard; notification bell`",
"owners": "DashboardView, OnboardingChecklist, NotificationsPopover; notification APIs",
"existingEvidence": "[F:onboarding-checklist][F:onboarding-checklist.test.tsx], [F:notifications-popover][F:notifications-popover.test.tsx], [F:app-shell-notifications][F:app-shell-notifications.test.tsx], [F:account-scoped-state][F:account-scoped-state.test.tsx]; [B:JobLifecycleEvent][B:JobLifecycleEventTests]. Onboarding actions; unread/read/dismiss UI and owner-scoped storage primitive",
"historicGap": "Five dashboard toggles/reload per account not fully tested at mounted dashboard; ordering/resizing is new work",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-S03",
"capability": "**PRES-S03** — Rules/reminder/table/theme/language preferences and account links",
"entry": "`/settings tabs/mobile selector`",
"owners": "SettingsView, RulesSettingsCard, theme/i18n; rules/notification/auth",
"existingEvidence": "[F:settings-view][F:settings-view.test.tsx], [F:theme-state][F:theme-state.test.tsx], [F:i18n-provider][F:i18n-provider.test.tsx]; [B:NotificationSettingsController][B:NotificationSettingsControllerTests], [B:RulesEngineProspect][B:RulesEngineProspectTests]. NEW failed notification retry, rule scenario preservation; NEW mobile→desktop edit + native notification/rule persistence",
"historicGap": "Initial single rules 500 unconfirmed; unsaved rule drafts are not persisted across tab unmount; table preference/router identity change gap",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-S04",
"capability": "**PRES-S04** — AI privacy/usage/limits/Free-Pro/server entitlement/conditional billing",
"entry": "`/settings; locked AI controls; plans`",
"owners": "AiPrivacySettingsCard, AiUsageCard, AccountPlanProvider; billing/entitlement",
"existingEvidence": "[F:settings-view][F:settings-view.test.tsx], [F:ai-usage-card][F:ai-usage-card.test.tsx], [F:pro-feature-notice][F:pro-feature-notice.test.tsx], [F:planCatalog][F:planCatalog.test.ts]; [B:AiPrivacyPolicy][B:AiPrivacyPolicyTests], [B:AiUsageMeter][B:AiUsageMeterTests], [B:ProEntitlementAuthorization][B:ProEntitlementAuthorizationTests], [B:BillingController][B:BillingControllerTests]. Local-only AI setting, limits/locks, billing readiness; NEW real Free CV AI denied UI and API",
"historicGap": "Real checkout/webhooks/portal; billing/account deletion issues retain independent queue",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-S05",
"capability": "**PRES-S05** — Account ZIP/encrypted backup/lifecycle/deletion confirmations",
"entry": "`Settings Backup tab`",
"owners": "BackupCard; export/backup/deletion services",
"existingEvidence": "[F:account-data-export][F:account-data-export.test.tsx]; [B:AccountDataExport][B:AccountDataExportTests], [B:BackupController][B:BackupControllerTests], [B:AccountDeletion][B:AccountDeletionTests], [B:DatabaseBackupRunner][B:DatabaseBackupRunnerTests]. ZIP protected download, recent auth, server enable flag and exact deletion phrase; service deletion/backup",
"historicGap": "Real restored account/database and paid deletion/provider cancellation operational proof; not safe to run against production",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-A01",
"capability": "**PRES-A01** — Admin user/create/roles/reset/delete/last-admin/self guards",
"entry": "`/admin/users`",
"owners": "AdminUsersPage; UsersController",
"existingEvidence": "[F:admin-users-page][F:admin-users-page.test.tsx]; [B:UsersController][B:UsersControllerTests], [B:ApiAuthorizationPosture][B:ApiAuthorizationPostureTests]. Demotion/delete confirm, last-admin server checks; NEW non-admin crafted create/read denied",
"historicGap": "Role revocation during mounted admin view and actual reset delivery; route can render empty shell without granting privilege",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-A02",
"capability": "**PRES-A02** — Audit list/detail/supported undo/job restore",
"entry": "`/admin/audit`",
"owners": "AdminAuditPage; AdminAuditController",
"existingEvidence": "[F:admin-audit-page][F:admin-audit-page.test.tsx]; [B:AuthAndSystemController][B:AuthAndSystemControllerTests], [B:ApiAuthorizationPosture][B:ApiAuthorizationPostureTests]. Unavailable-versus-empty retry and NB stored event text; server admin-only posture",
"historicGap": "Successful undo and job-restore UI against persisted API; role posture test is not undo behavior proof",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
},
{
"id": "PRES-A03",
"capability": "**PRES-A03** — System/build/DB/AI/mail/SMTP/test/probe/benchmark/maintenance",
"entry": "`/admin/system`",
"owners": "AdminSystemPage; AdminSystemController/maintenance/benchmark",
"existingEvidence": "[F:admin-system-page][F:admin-system-page.test.tsx]; [B:AuthAndSystemController][B:AuthAndSystemControllerTests], [B:MaintenanceJobDispatcher][B:MaintenanceJobDispatcherTests], [B:CvCorpusHarness][B:CvCorpusHarnessTests]. Health/error/NB, SMTP submit and benchmark controls; dispatcher authorization and modes",
"historicGap": "Production SMTP/model/corpus/maintenance and sensitive-data presentation; no live jobs launched",
"entryStatus": "PARTIAL",
"phase9Status": "NOT TESTED"
}
],
"apiOwners": [
{
"file": "JobTrackerApi/Controllers/AccountLifecycleController.cs",
"baseRoutes": [
"api/account-lifecycle"
],
"actions": [
{
"method": "GET",
"suffix": "status"
},
{
"method": "POST",
"suffix": "delete"
},
{
"method": "GET",
"suffix": "admin/requests/{id:guid}"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(Roles = \"Admin\")]"
]
},
{
"file": "JobTrackerApi/Controllers/AdminAuditController.cs",
"baseRoutes": [
"api/admin/audit"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "POST",
"suffix": "{id:int}/undo"
}
],
"authorizationAttributes": [
"[Authorize(Roles = \"Admin\")]"
]
},
{
"file": "JobTrackerApi/Controllers/AdminSystemController.cs",
"baseRoutes": [
"api/admin/system"
],
"actions": [
{
"method": "POST",
"suffix": "ai/probe"
},
{
"method": "POST",
"suffix": "summarizer/probe"
},
{
"method": "GET",
"suffix": "email-settings"
},
{
"method": "PUT",
"suffix": "email-settings"
},
{
"method": "GET",
"suffix": "cv-benchmark"
},
{
"method": "GET",
"suffix": "maintenance-jobs"
},
{
"method": "POST",
"suffix": "maintenance-jobs/{jobId}/runs"
},
{
"method": "GET",
"suffix": ""
}
],
"authorizationAttributes": [
"[Authorize(Roles = \"Admin\")]"
]
},
{
"file": "JobTrackerApi/Controllers/AiSettingsController.cs",
"baseRoutes": [
"api/ai/settings"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "PUT",
"suffix": ""
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/AiUsageController.cs",
"baseRoutes": [
"api/ai/usage"
],
"actions": [
{
"method": "GET",
"suffix": ""
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/AiWorkspaceController.cs",
"baseRoutes": [
"api/jobapplications/{jobId:int}/ai"
],
"actions": [
{
"method": "GET",
"suffix": "modules"
},
{
"method": "POST",
"suffix": "generate"
},
{
"method": "GET",
"suffix": "history"
},
{
"method": "DELETE",
"suffix": "history/{id:int}"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(Policy = ProEntitlement.Policy)]"
]
},
{
"file": "JobTrackerApi/Controllers/ApplicationAssetsController.cs",
"baseRoutes": [
"api/jobapplications/{jobId:int}"
],
"actions": [
{
"method": "GET",
"suffix": "cv"
},
{
"method": "PUT",
"suffix": "cv"
},
{
"method": "GET",
"suffix": "tailoring"
},
{
"method": "GET",
"suffix": "cover-letter"
},
{
"method": "PUT",
"suffix": "cover-letter"
},
{
"method": "POST",
"suffix": "cover-letter/versions/{version:int}/restore"
},
{
"method": "GET",
"suffix": "submitted-packages"
},
{
"method": "POST",
"suffix": "submitted-packages"
},
{
"method": "GET",
"suffix": "submitted-packages/{packageId:int}"
},
{
"method": "GET",
"suffix": "submitted-packages/{packageId:int}/attachments/{attachmentId:int}"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/ApplicationCalendarController.cs",
"baseRoutes": [
"api/calendar"
],
"actions": [
{
"method": "GET",
"suffix": "status"
},
{
"method": "POST",
"suffix": "jobs/{jobId:int}/events"
},
{
"method": "GET",
"suffix": "jobs/{jobId:int}/events.ics"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/ApplicationChecklistController.cs",
"baseRoutes": [
"api/jobapplications/{jobId:int}/checklist"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "POST",
"suffix": ""
},
{
"method": "PATCH",
"suffix": "{itemId:int}"
},
{
"method": "DELETE",
"suffix": "{itemId:int}"
},
{
"method": "PUT",
"suffix": "order"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/ApplicationIntelligenceController.cs",
"baseRoutes": [
"api/jobapplications/{jobId:int}"
],
"actions": [
{
"method": "GET",
"suffix": "timeline"
},
{
"method": "GET",
"suffix": "analysis"
},
{
"method": "GET",
"suffix": "match"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/ApplicationWorkspaceController.cs",
"baseRoutes": [
"api/jobapplications/{jobId:int}/workspace"
],
"actions": [
{
"method": "GET",
"suffix": ""
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/AttachmentsController.cs",
"baseRoutes": [
"api/attachments"
],
"actions": [
{
"method": "GET",
"suffix": "{jobId:int}"
},
{
"method": "GET",
"suffix": "download/{id:int}"
},
{
"method": "PATCH",
"suffix": "{id:int}"
},
{
"method": "DELETE",
"suffix": "{id:int}"
},
{
"method": "POST",
"suffix": ""
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/AuthController.cs",
"baseRoutes": [
"api/auth"
],
"actions": [
{
"method": "GET",
"suffix": "config"
},
{
"method": "POST",
"suffix": "login"
},
{
"method": "POST",
"suffix": "register"
},
{
"method": "POST",
"suffix": "google/exchange"
},
{
"method": "POST",
"suffix": "microsoft/exchange"
},
{
"method": "POST",
"suffix": "microsoft/legacy-relink/confirm"
},
{
"method": "POST",
"suffix": "logout"
},
{
"method": "GET",
"suffix": "csrf"
},
{
"method": "GET",
"suffix": "me"
},
{
"method": "PUT",
"suffix": "profile"
},
{
"method": "GET",
"suffix": "preferences/dashboard"
},
{
"method": "PUT",
"suffix": "preferences/dashboard"
},
{
"method": "PUT",
"suffix": "preferences/language"
},
{
"method": "GET",
"suffix": "email-change"
},
{
"method": "POST",
"suffix": "email-change/request"
},
{
"method": "POST",
"suffix": "email-change/confirm"
},
{
"method": "POST",
"suffix": "email-change/cancel"
},
{
"method": "POST",
"suffix": "google/link"
},
{
"method": "DELETE",
"suffix": "google/link"
},
{
"method": "POST",
"suffix": "microsoft/link"
},
{
"method": "DELETE",
"suffix": "microsoft/link"
},
{
"method": "POST",
"suffix": "avatar"
},
{
"method": "DELETE",
"suffix": "avatar"
},
{
"method": "POST",
"suffix": "change-password"
},
{
"method": "POST",
"suffix": "request-password-reset"
},
{
"method": "POST",
"suffix": "reset-password"
},
{
"method": "POST",
"suffix": "verify-email"
},
{
"method": "POST",
"suffix": "resend-verification-email"
}
],
"authorizationAttributes": [
"[Authorize]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/BackupController.cs",
"baseRoutes": [
"api/backup"
],
"actions": [
{
"method": "POST",
"suffix": "encrypted"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/BillingController.cs",
"baseRoutes": [
"api/billing"
],
"actions": [
{
"method": "GET",
"suffix": "status"
},
{
"method": "POST",
"suffix": "checkout"
},
{
"method": "POST",
"suffix": "portal"
},
{
"method": "POST",
"suffix": "webhook"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/CareerEvidenceController.cs",
"baseRoutes": [
"api/career/evidence"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "POST",
"suffix": ""
},
{
"method": "PUT",
"suffix": "{id:int}"
},
{
"method": "DELETE",
"suffix": "{id:int}"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/CareerProfileController.cs",
"baseRoutes": [
"api/career/profile"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "PUT",
"suffix": ""
},
{
"method": "GET",
"suffix": "completeness"
},
{
"method": "GET",
"suffix": "versions"
},
{
"method": "POST",
"suffix": "versions/{version:int}/restore"
}
],
"authorizationAttributes": [
"[Authorize]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/ClientErrorsController.cs",
"baseRoutes": [
"api/client-errors"
],
"actions": [
{
"method": "POST",
"suffix": ""
}
],
"authorizationAttributes": []
},
{
"file": "JobTrackerApi/Controllers/CompaniesController.cs",
"baseRoutes": [
"api/companies"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "GET",
"suffix": "{id:int}"
},
{
"method": "GET",
"suffix": "{id:int}/relationship"
},
{
"method": "POST",
"suffix": ""
},
{
"method": "PUT",
"suffix": "{id:int}"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/CorrespondenceController.cs",
"baseRoutes": [
"api/correspondence"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "GET",
"suffix": "page"
},
{
"method": "GET",
"suffix": "{jobId:int}"
},
{
"method": "GET",
"suffix": "message/{id:int}"
},
{
"method": "POST",
"suffix": ""
},
{
"method": "DELETE",
"suffix": "{id:int}"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/CvVariantController.cs",
"baseRoutes": [
"api/cv"
],
"actions": [
{
"method": "GET",
"suffix": "themes"
},
{
"method": "GET",
"suffix": "themes/{themeId}/preview"
},
{
"method": "GET",
"suffix": "outline"
},
{
"method": "GET",
"suffix": "variants"
},
{
"method": "POST",
"suffix": "variants"
},
{
"method": "GET",
"suffix": "variants/{id:int}"
},
{
"method": "PUT",
"suffix": "variants/{id:int}"
},
{
"method": "DELETE",
"suffix": "variants/{id:int}"
},
{
"method": "POST",
"suffix": "variants/{id:int}/duplicate"
},
{
"method": "PUT",
"suffix": "variants/{id:int}/public"
},
{
"method": "GET",
"suffix": "variants/{id:int}/versions"
},
{
"method": "POST",
"suffix": "variants/{id:int}/versions/{version:int}/restore"
},
{
"method": "GET",
"suffix": "variants/{id:int}/preview"
},
{
"method": "POST",
"suffix": "preview"
},
{
"method": "POST",
"suffix": "variants/{id:int}/export-pdf"
},
{
"method": "POST",
"suffix": "ai/assist"
},
{
"method": "POST",
"suffix": "variants/{id:int}/ai/apply"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]"
]
},
{
"file": "JobTrackerApi/Controllers/DocumentsController.cs",
"baseRoutes": [
"api/documents"
],
"actions": [
{
"method": "GET",
"suffix": ""
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/EmailController.cs",
"baseRoutes": [
"api/email"
],
"actions": [
{
"method": "GET",
"suffix": "providers"
},
{
"method": "GET",
"suffix": "messages"
},
{
"method": "GET",
"suffix": "thread"
},
{
"method": "GET",
"suffix": "message"
},
{
"method": "POST",
"suffix": "send"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/EmailDraftsController.cs",
"baseRoutes": [
"api/email/drafts"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "GET",
"suffix": "{id:guid}"
},
{
"method": "POST",
"suffix": ""
},
{
"method": "PUT",
"suffix": "{id:guid}"
},
{
"method": "DELETE",
"suffix": "{id:guid}"
},
{
"method": "POST",
"suffix": "{id:guid}/new-attempt"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/ExportController.cs",
"baseRoutes": [
"api/export"
],
"actions": [
{
"method": "POST",
"suffix": "account"
},
{
"method": "GET",
"suffix": "jobs"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/GmailController.cs",
"baseRoutes": [
"api/gmail"
],
"actions": [
{
"method": "GET",
"suffix": "status"
},
{
"method": "GET",
"suffix": "connect-url"
},
{
"method": "GET",
"suffix": "job-candidates"
},
{
"method": "GET",
"suffix": "review-candidates"
},
{
"method": "POST",
"suffix": "review-decision"
},
{
"method": "POST",
"suffix": "manual-sync"
},
{
"method": "GET",
"suffix": "suggested-jobs"
},
{
"method": "POST",
"suffix": "create-suggested-job"
},
{
"method": "POST",
"suffix": "relink-thread"
},
{
"method": "POST",
"suffix": "unlink-thread"
},
{
"method": "GET",
"suffix": "oauth/callback"
},
{
"method": "DELETE",
"suffix": "connection"
},
{
"method": "GET",
"suffix": "messages"
},
{
"method": "POST",
"suffix": "import"
},
{
"method": "POST",
"suffix": "import-thread"
},
{
"method": "POST",
"suffix": "refresh-linked-threads"
}
],
"authorizationAttributes": [
"[Authorize]"
]
},
{
"file": "JobTrackerApi/Controllers/ImapController.cs",
"baseRoutes": [
"api/imap"
],
"actions": [
{
"method": "GET",
"suffix": "status"
},
{
"method": "POST",
"suffix": "connect"
},
{
"method": "DELETE",
"suffix": "connection"
}
],
"authorizationAttributes": [
"[Authorize]"
]
},
{
"file": "JobTrackerApi/Controllers/InterviewPrepController.cs",
"baseRoutes": [
"api/jobapplications/{jobId:int}"
],
"actions": [
{
"method": "GET",
"suffix": "interview-prep"
},
{
"method": "POST",
"suffix": "interview-prep"
},
{
"method": "PATCH",
"suffix": "interview-prep/{itemId:int}"
},
{
"method": "DELETE",
"suffix": "interview-prep/{itemId:int}"
},
{
"method": "GET",
"suffix": "follow-up"
},
{
"method": "PUT",
"suffix": "follow-up"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/JobApplicationAnalyticsController.cs",
"baseRoutes": [
"api/jobapplications"
],
"actions": [
{
"method": "GET",
"suffix": "stats"
},
{
"method": "GET",
"suffix": "analytics"
},
{
"method": "GET",
"suffix": "tags"
},
{
"method": "GET",
"suffix": "analytics-overview"
},
{
"method": "GET",
"suffix": "tag-trends"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/JobApplicationLifecycleController.cs",
"baseRoutes": [
"api/jobapplications"
],
"actions": [
{
"method": "GET",
"suffix": "pipeline"
},
{
"method": "PATCH",
"suffix": "{id:int}/status"
},
{
"method": "GET",
"suffix": "{id:int}/status-suggestion"
},
{
"method": "DELETE",
"suffix": "{id:int}"
},
{
"method": "POST",
"suffix": "{id:int}/restore"
},
{
"method": "PATCH",
"suffix": "{id:int}/followup"
},
{
"method": "GET",
"suffix": "{id:int}/history"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/JobApplicationsController.cs",
"baseRoutes": [
"api/jobapplications"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "GET",
"suffix": "{id:int}"
},
{
"method": "GET",
"suffix": "board"
},
{
"method": "GET",
"suffix": "reminders"
},
{
"method": "POST",
"suffix": ""
},
{
"method": "PUT",
"suffix": "{id:int}"
},
{
"method": "POST",
"suffix": "{id:int}/refresh-ai"
},
{
"method": "GET",
"suffix": "{id:int}/match-score"
},
{
"method": "GET",
"suffix": "{id:int}/candidate-fit"
},
{
"method": "GET",
"suffix": "{id:int}/interview-prep/brief"
},
{
"method": "GET",
"suffix": "{id:int}/readiness"
},
{
"method": "GET",
"suffix": "{id:int}/tailored-cv-draft"
},
{
"method": "POST",
"suffix": "{id:int}/tailored-cv-preview"
},
{
"method": "POST",
"suffix": "{id:int}/export-tailored-cv-pdf"
},
{
"method": "POST",
"suffix": "{id:int}/generate-tailored-cv-draft"
},
{
"method": "PUT",
"suffix": "{id:int}/tailored-cv-draft"
},
{
"method": "PUT",
"suffix": "{id:int}/tailored-cv"
},
{
"method": "PUT",
"suffix": "{id:int}/application-drafts"
},
{
"method": "POST",
"suffix": "{id:int}/generate-application-package"
},
{
"method": "GET",
"suffix": "duplicate-check"
},
{
"method": "GET",
"suffix": "{id:int}/followup-draft"
},
{
"method": "POST",
"suffix": "{id:int}/send-followup"
},
{
"method": "GET",
"suffix": "choices"
},
{
"method": "GET",
"suffix": "ai-metrics"
},
{
"method": "GET",
"suffix": "summarizer-metrics"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]"
]
},
{
"file": "JobTrackerApi/Controllers/JobDiscoveryController.cs",
"baseRoutes": [
"api/job-discovery"
],
"actions": [
{
"method": "GET",
"suffix": "search"
},
{
"method": "GET",
"suffix": "saved-searches"
},
{
"method": "POST",
"suffix": "saved-searches"
},
{
"method": "DELETE",
"suffix": "saved-searches/{id:int}"
},
{
"method": "PATCH",
"suffix": "saved-searches/{id:int}"
},
{
"method": "POST",
"suffix": "saved-searches/{id:int}/run"
},
{
"method": "PATCH",
"suffix": "saved-searches/{id:int}/results/{externalJobId}/dismiss"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/JobImportController.cs",
"baseRoutes": [
"api/jobimport"
],
"actions": [
{
"method": "POST",
"suffix": "preview"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/MicrosoftGraphController.cs",
"baseRoutes": [
"api/microsoft-graph"
],
"actions": [
{
"method": "GET",
"suffix": "status"
},
{
"method": "GET",
"suffix": "connect-url"
},
{
"method": "GET",
"suffix": "oauth/callback"
},
{
"method": "DELETE",
"suffix": "connection"
}
],
"authorizationAttributes": [
"[Authorize]"
]
},
{
"file": "JobTrackerApi/Controllers/NotificationSettingsController.cs",
"baseRoutes": [
"api/notification-settings"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "PUT",
"suffix": ""
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/OperationsController.cs",
"baseRoutes": [
"api/operations",
"api/notifications"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "GET",
"suffix": "{id:guid}"
},
{
"method": "POST",
"suffix": "{id:guid}/cancel"
},
{
"method": "POST",
"suffix": "{id:guid}/retry"
},
{
"method": "GET",
"suffix": ""
},
{
"method": "GET",
"suffix": "unread-count"
},
{
"method": "POST",
"suffix": "{id:guid}/read"
},
{
"method": "DELETE",
"suffix": "{id:guid}"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/ProfileCvController.cs",
"baseRoutes": [
"api/profile-cv"
],
"actions": [
{
"method": "POST",
"suffix": "upload"
},
{
"method": "GET",
"suffix": "runs"
},
{
"method": "GET",
"suffix": "runs/{id:int}/diff"
},
{
"method": "POST",
"suffix": "runs/{id:int}/accept"
},
{
"method": "POST",
"suffix": "runs/{id:int}/discard"
},
{
"method": "POST",
"suffix": "reprocess"
},
{
"method": "POST",
"suffix": "rebuild"
},
{
"method": "POST",
"suffix": "rewrite-section"
},
{
"method": "GET",
"suffix": "templates"
},
{
"method": "POST",
"suffix": "rewrite-preview"
},
{
"method": "POST",
"suffix": "export-pdf"
},
{
"method": "POST",
"suffix": "parse"
},
{
"method": "POST",
"suffix": "improve"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]",
"[Authorize(Policy = ProEntitlement.Policy)]"
]
},
{
"file": "JobTrackerApi/Controllers/PublicCvController.cs",
"baseRoutes": [
"api/public-cv"
],
"actions": [
{
"method": "GET",
"suffix": "{slug}"
},
{
"method": "GET",
"suffix": "{slug}/pdf"
}
],
"authorizationAttributes": []
},
{
"file": "JobTrackerApi/Controllers/RulesController.cs",
"baseRoutes": [
"api/rules"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "PUT",
"suffix": ""
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/SessionsController.cs",
"baseRoutes": [
"api/auth/sessions"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "DELETE",
"suffix": "{id}"
},
{
"method": "POST",
"suffix": "revoke-others"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/StrategySnapshotController.cs",
"baseRoutes": [
"api/jobapplications/{jobId:int}/focus-plan"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "POST",
"suffix": "operations"
},
{
"method": "GET",
"suffix": "operation"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\", Policy = ProEntitlement.Policy)]"
]
},
{
"file": "JobTrackerApi/Controllers/TwoFactorController.cs",
"baseRoutes": [
"api/auth/2fa"
],
"actions": [
{
"method": "POST",
"suffix": "setup"
},
{
"method": "POST",
"suffix": "verify-setup"
},
{
"method": "POST",
"suffix": "disable"
},
{
"method": "GET",
"suffix": "status"
},
{
"method": "POST",
"suffix": "recovery-codes/regenerate"
},
{
"method": "POST",
"suffix": "challenge"
},
{
"method": "GET",
"suffix": "trusted-devices"
},
{
"method": "DELETE",
"suffix": "trusted-devices/{id:int}"
},
{
"method": "POST",
"suffix": "trusted-devices/revoke-all"
}
],
"authorizationAttributes": [
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]",
"[Authorize(AuthenticationSchemes = \"local\")]"
]
},
{
"file": "JobTrackerApi/Controllers/UsersController.cs",
"baseRoutes": [
"api/users"
],
"actions": [
{
"method": "GET",
"suffix": ""
},
{
"method": "POST",
"suffix": ""
},
{
"method": "PUT",
"suffix": "{id}/roles"
},
{
"method": "DELETE",
"suffix": "{id}"
},
{
"method": "POST",
"suffix": "{id}/send-password-reset"
},
{
"method": "POST",
"suffix": "send-test-email"
}
],
"authorizationAttributes": [
"[Authorize(Roles = \"Admin\")]"
]
}
],
"rolesFromUsersController": [
"Admin"
],
"entitlementRoles": [
"Admin",
"Premium"
],
"rolesCaveat": "Admin controls user administration; Admin/Premium grant pro entitlements; ordinary accounts may have no role. UsersController supports custom role strings, which do not imply new grants. Public/anonymous is distinct.",
"frontendPages": [
"job-tracker-ui/src/views/AdminAuditPage.tsx",
"job-tracker-ui/src/views/AdminSystemPage.tsx",
"job-tracker-ui/src/views/AdminUsersPage.tsx",
"job-tracker-ui/src/views/AnalyticsPage.tsx",
"job-tracker-ui/src/views/ApplicationWorkspacePage.tsx",
"job-tracker-ui/src/views/CareerProfilePage.tsx",
"job-tracker-ui/src/views/CareerWorkspacePage.tsx",
"job-tracker-ui/src/views/ConnectedAccountsPage.tsx",
"job-tracker-ui/src/views/CorrespondenceInboxPage.tsx",
"job-tracker-ui/src/views/CvBuilderEditor.tsx",
"job-tracker-ui/src/views/CvBuilderPage.tsx",
"job-tracker-ui/src/views/DocumentsPage.tsx",
"job-tracker-ui/src/views/ForgotPasswordPage.tsx",
"job-tracker-ui/src/views/GmailReviewPage.tsx",
"job-tracker-ui/src/views/JobDiscoveryPage.tsx",
"job-tracker-ui/src/views/LandingPage.tsx",
"job-tracker-ui/src/views/LoginPage.tsx",
"job-tracker-ui/src/views/MicrosoftLegacyRelinkPage.tsx",
"job-tracker-ui/src/views/NotFoundPage.tsx",
"job-tracker-ui/src/views/OfferComparisonPage.tsx",
"job-tracker-ui/src/views/OperationsPage.tsx",
"job-tracker-ui/src/views/ProfilePage.tsx",
"job-tracker-ui/src/views/PublicCvPage.tsx",
"job-tracker-ui/src/views/ResetPasswordPage.tsx",
"job-tracker-ui/src/views/RouteErrorPage.tsx",
"job-tracker-ui/src/views/VerifyEmailPage.tsx"
],
"sharedComponents": [
"job-tracker-ui/src/components/AddJobModal.tsx",
"job-tracker-ui/src/components/AiPrivacySettingsCard.tsx",
"job-tracker-ui/src/components/AiUsageCard.tsx",
"job-tracker-ui/src/components/ApplicationAssets.tsx",
"job-tracker-ui/src/components/ApplicationCalendarActions.tsx",
"job-tracker-ui/src/components/ApplicationChecklist.tsx",
"job-tracker-ui/src/components/ApplicationIntelligence.tsx",
"job-tracker-ui/src/components/ApplicationWorkflowAssist.tsx",
"job-tracker-ui/src/components/Attachment.tsx",
"job-tracker-ui/src/components/Attachments.tsx",
"job-tracker-ui/src/components/AuthStatusCard.tsx",
"job-tracker-ui/src/components/BackupCard.tsx",
"job-tracker-ui/src/components/CompaniesTable.tsx",
"job-tracker-ui/src/components/Correspondence.tsx",
"job-tracker-ui/src/components/CropImageDialog.tsx",
"job-tracker-ui/src/components/cv/AiSectionAssistant.tsx",
"job-tracker-ui/src/components/cv/CvCustomizeTab.tsx",
"job-tracker-ui/src/components/CvTemplateGallery.tsx",
"job-tracker-ui/src/components/CvTemplateThumbnail.tsx",
"job-tracker-ui/src/components/DashboardLayoutEditor.tsx",
"job-tracker-ui/src/components/DashboardView.tsx",
"job-tracker-ui/src/components/EditJobDialog.tsx",
"job-tracker-ui/src/components/EmailProviderConnections.tsx",
"job-tracker-ui/src/components/ErrorBoundary.tsx",
"job-tracker-ui/src/components/GoogleAuthCard.tsx",
"job-tracker-ui/src/components/GradientButton.tsx",
"job-tracker-ui/src/components/ImportExportJobs.tsx",
"job-tracker-ui/src/components/InterviewPrep.tsx",
"job-tracker-ui/src/components/JobDetailsPanels.tsx",
"job-tracker-ui/src/components/JobFlowBar.tsx",
"job-tracker-ui/src/components/JobTable.tsx",
"job-tracker-ui/src/components/KanbanBoard.tsx",
"job-tracker-ui/src/components/Markdown.tsx",
"job-tracker-ui/src/components/MicrosoftAuthCard.tsx",
"job-tracker-ui/src/components/NotificationsPopover.tsx",
"job-tracker-ui/src/components/OnboardingChecklist.tsx",
"job-tracker-ui/src/components/ProFeatureNotice.tsx",
"job-tracker-ui/src/components/QuickCaptureCard.tsx",
"job-tracker-ui/src/components/QuickCommandDialog.tsx",
"job-tracker-ui/src/components/RemindersView.tsx",
"job-tracker-ui/src/components/RichTextField.tsx",
"job-tracker-ui/src/components/RulesSettingsCard.tsx",
"job-tracker-ui/src/components/SavedViewsMenu.tsx",
"job-tracker-ui/src/components/SessionsSettingsCard.tsx",
"job-tracker-ui/src/components/SettingsView.tsx",
"job-tracker-ui/src/components/TagsInput.tsx",
"job-tracker-ui/src/components/TurnstileWidget.tsx",
"job-tracker-ui/src/components/TwoFactorChallenge.tsx",
"job-tracker-ui/src/components/TwoFactorSettingsCard.tsx",
"job-tracker-ui/src/components/UserManagementCard.tsx",
"job-tracker-ui/src/components/ViewStateNotice.tsx"
],
"tests": {
"backend": [
"JobTrackerApi.Tests/AccountDataExportTests.cs",
"JobTrackerApi.Tests/AccountDeletionTests.cs",
"JobTrackerApi.Tests/AccountPlansTests.cs",
"JobTrackerApi.Tests/AiEvaluationFixtureTests.cs",
"JobTrackerApi.Tests/AiOperationQueueTests.cs",
"JobTrackerApi.Tests/AiPrivacyPolicyTests.cs",
"JobTrackerApi.Tests/AiUsageMeterTests.cs",
"JobTrackerApi.Tests/AiWorkspaceNotePersistenceTests.cs",
"JobTrackerApi.Tests/AiWorkspaceTests.cs",
"JobTrackerApi.Tests/AnalyticsSalaryTests.cs",
"JobTrackerApi.Tests/ApiAuthorizationPostureTests.cs",
"JobTrackerApi.Tests/ApplicationAssetsTests.cs",
"JobTrackerApi.Tests/ApplicationCalendarControllerTests.cs",
"JobTrackerApi.Tests/ApplicationChecklistTests.cs",
"JobTrackerApi.Tests/ApplicationIntelligenceTests.cs",
"JobTrackerApi.Tests/ApplicationWorkspaceTests.cs",
"JobTrackerApi.Tests/AttachmentConsistencyTests.cs",
"JobTrackerApi.Tests/AttachmentFlagsRecomputeTests.cs",
"JobTrackerApi.Tests/AttachmentsControllerTests.cs",
"JobTrackerApi.Tests/AuthAndSystemControllerTests.cs",
"JobTrackerApi.Tests/AuthSessionRevocationTests.cs",
"JobTrackerApi.Tests/AvatarStorageTests.cs",
"JobTrackerApi.Tests/BackgroundWorkerTenantTests.cs",
"JobTrackerApi.Tests/BackupControllerTests.cs",
"JobTrackerApi.Tests/BillingControllerTests.cs",
"JobTrackerApi.Tests/BuildMetadataTests.cs",
"JobTrackerApi.Tests/CareerEvidenceControllerTests.cs",
"JobTrackerApi.Tests/CareerProfileControllerTests.cs",
"JobTrackerApi.Tests/CareerProfileServiceTests.cs",
"JobTrackerApi.Tests/ClientErrorsControllerTests.cs",
"JobTrackerApi.Tests/CompanyCreateCompatibilityTests.cs",
"JobTrackerApi.Tests/CompanyRelationshipTests.cs",
"JobTrackerApi.Tests/ConcurrentInitializationTests.cs",
"JobTrackerApi.Tests/CorrespondenceControllerTests.cs",
"JobTrackerApi.Tests/CsvExportTests.cs",
"JobTrackerApi.Tests/CurrentUserIdLiveEvaluationTests.cs",
"JobTrackerApi.Tests/CvAiEvaluationTests.cs",
"JobTrackerApi.Tests/CvAiGroundingTests.cs",
"JobTrackerApi.Tests/CvAiReadinessTests.cs",
"JobTrackerApi.Tests/CvBuilderTests.cs",
"JobTrackerApi.Tests/CvCorpusHarnessTests.cs",
"JobTrackerApi.Tests/CvExportRetentionTests.cs",
"JobTrackerApi.Tests/CvExtractionCoverageTests.cs",
"JobTrackerApi.Tests/CvProcessingOperationTests.cs",
"JobTrackerApi.Tests/CvProfileDiffServiceTests.cs",
"JobTrackerApi.Tests/CvRevisionReadinessTests.cs",
"JobTrackerApi.Tests/DashboardPreferencesTests.cs",
"JobTrackerApi.Tests/DatabaseBackupRunnerTests.cs",
"JobTrackerApi.Tests/DocumentsControllerTests.cs",
"JobTrackerApi.Tests/EmailControllerTests.cs",
"JobTrackerApi.Tests/EmailDraftPersistenceTests.cs",
"JobTrackerApi.Tests/EmailDraftsControllerTests.cs",
"JobTrackerApi.Tests/EmailOwnershipIntegrationTests.cs",
"JobTrackerApi.Tests/EmailProviderDeliveryTests.cs",
"JobTrackerApi.Tests/EmailSendAttemptStoreTests.cs",
"JobTrackerApi.Tests/EmailSendControllerTests.cs",
"JobTrackerApi.Tests/EmailStatusClassifierTests.cs",
"JobTrackerApi.Tests/ExternalOriginTests.cs",
"JobTrackerApi.Tests/ForwardedIngressTests.cs",
"JobTrackerApi.Tests/GmailControllerTests.cs",
"JobTrackerApi.Tests/GoogleTokenValidatorTests.cs",
"JobTrackerApi.Tests/HumanLanguageCatalogTests.cs",
"JobTrackerApi.Tests/ImapControllerTests.cs",
"JobTrackerApi.Tests/ImapProviderTests.cs",
"JobTrackerApi.Tests/ImapServiceSsrfGuardTests.cs",
"JobTrackerApi.Tests/InterviewAiContextTests.cs",
"JobTrackerApi.Tests/InterviewPrepPersistenceTests.cs",
"JobTrackerApi.Tests/InterviewPrepTests.cs",
"JobTrackerApi.Tests/JobApplicationsApplicationPackageTests.cs",
"JobTrackerApi.Tests/JobApplicationsAppliedDateHistoryTests.cs",
"JobTrackerApi.Tests/JobApplicationsAuthorizationTests.cs",
"JobTrackerApi.Tests/JobApplicationsControllerTests.cs",
"JobTrackerApi.Tests/JobApplicationsEndpointBehaviorTests.cs",
"JobTrackerApi.Tests/JobApplicationsFollowUpDraftTests.cs",
"JobTrackerApi.Tests/JobApplicationsMariaDraftTests.cs",
"JobTrackerApi.Tests/JobApplicationsWorkflowSignalsTests.cs",
"JobTrackerApi.Tests/JobCvMatchServiceTests.cs",
"JobTrackerApi.Tests/JobDiscoveryControllerTests.cs",
"JobTrackerApi.Tests/JobImportHttpTransportTests.cs",
"JobTrackerApi.Tests/JobImportServiceTests.cs",
"JobTrackerApi.Tests/JobLifecycleEventTests.cs",
"JobTrackerApi.Tests/JobOpportunitySyncTests.cs",
"JobTrackerApi.Tests/JobPipelineTests.cs",
"JobTrackerApi.Tests/JobQueryParityTests.cs",
"JobTrackerApi.Tests/LocalAuthIdentityTests.cs",
"JobTrackerApi.Tests/MaintenanceJobDispatcherTests.cs",
"JobTrackerApi.Tests/MeteredSummarizerServiceTests.cs",
"JobTrackerApi.Tests/MicrosoftGraphControllerTests.cs",
"JobTrackerApi.Tests/MicrosoftGraphProviderTests.cs",
"JobTrackerApi.Tests/MicrosoftTokenValidatorTests.cs",
"JobTrackerApi.Tests/MigrationChainTests.cs",
"JobTrackerApi.Tests/NotificationSettingsControllerTests.cs",
"JobTrackerApi.Tests/OperationsControllerTests.cs",
"JobTrackerApi.Tests/OwnershipGuardTests.cs",
"JobTrackerApi.Tests/PdfRenderAdmissionTests.cs",
"JobTrackerApi.Tests/ProductionConfigTests.cs",
"JobTrackerApi.Tests/ProEntitlementAuthorizationTests.cs",
"JobTrackerApi.Tests/ProfileCvControllerTests.cs",
"JobTrackerApi.Tests/PublicCvControllerTests.cs",
"JobTrackerApi.Tests/RateLimitPartitionKeysTests.cs",
"JobTrackerApi.Tests/RouteUniquenessTests.cs",
"JobTrackerApi.Tests/RulesEngineProspectTests.cs",
"JobTrackerApi.Tests/SavedJobSearchAlertTests.cs",
"JobTrackerApi.Tests/SavedJobSearchSqliteTests.cs",
"JobTrackerApi.Tests/SessionContextMiddlewareTests.cs",
"JobTrackerApi.Tests/SessionsControllerTests.cs",
"JobTrackerApi.Tests/SqliteDateTimeOffsetCompatibilityTests.cs",
"JobTrackerApi.Tests/SqliteMigrationHelperTests.cs",
"JobTrackerApi.Tests/SqliteStartupConcurrencyTests.cs",
"JobTrackerApi.Tests/StageAnalyticsTests.cs",
"JobTrackerApi.Tests/StartupSchemaOwnershipTests.cs",
"JobTrackerApi.Tests/StrategySnapshotOperationTests.cs",
"JobTrackerApi.Tests/SubmittedApplicationPackageTests.cs",
"JobTrackerApi.Tests/SummarizerServiceTests.cs",
"JobTrackerApi.Tests/TwoFactorControllerTests.cs",
"JobTrackerApi.Tests/UserOperationStoreTests.cs",
"JobTrackerApi.Tests/UsersControllerTests.cs"
],
"frontend": [
"job-tracker-ui/src/account-data-export.test.tsx",
"job-tracker-ui/src/account-providers.test.tsx",
"job-tracker-ui/src/account-scoped-state.test.tsx",
"job-tracker-ui/src/account-security-flows.test.tsx",
"job-tracker-ui/src/account-security-presentation.test.tsx",
"job-tracker-ui/src/admin-audit-page.test.tsx",
"job-tracker-ui/src/admin-system-page.test.tsx",
"job-tracker-ui/src/admin-users-page.test.tsx",
"job-tracker-ui/src/ai-privacy-settings.test.tsx",
"job-tracker-ui/src/ai-section-assistant.test.tsx",
"job-tracker-ui/src/ai-usage-card.test.tsx",
"job-tracker-ui/src/analytics-presentation.test.tsx",
"job-tracker-ui/src/api-error-localisation.test.ts",
"job-tracker-ui/src/app-shell-navigation.test.tsx",
"job-tracker-ui/src/app-shell-notifications.test.tsx",
"job-tracker-ui/src/App.test.tsx",
"job-tracker-ui/src/application-assets.test.tsx",
"job-tracker-ui/src/application-calendar.test.tsx",
"job-tracker-ui/src/application-checklist.test.tsx",
"job-tracker-ui/src/application-drafts.test.ts",
"job-tracker-ui/src/application-intelligence.test.tsx",
"job-tracker-ui/src/application-route-contracts.test.ts",
"job-tracker-ui/src/application-workflow-assist.test.tsx",
"job-tracker-ui/src/application-workspace-overlay.test.tsx",
"job-tracker-ui/src/applicationWorkspace.test.ts",
"job-tracker-ui/src/attachments.test.tsx",
"job-tracker-ui/src/backup-lifetime.test.tsx",
"job-tracker-ui/src/captureUrl.test.ts",
"job-tracker-ui/src/career-editor.test.tsx",
"job-tracker-ui/src/career-evidence.test.tsx",
"job-tracker-ui/src/career-history-view.test.tsx",
"job-tracker-ui/src/career-import-review.test.tsx",
"job-tracker-ui/src/career-workspace-page.test.tsx",
"job-tracker-ui/src/companies-relationship.test.tsx",
"job-tracker-ui/src/confirm-flow.test.tsx",
"job-tracker-ui/src/confirm.test.tsx",
"job-tracker-ui/src/correspondence-gmail-import.test.tsx",
"job-tracker-ui/src/correspondence-inbox-page.test.tsx",
"job-tracker-ui/src/correspondence-search-context.test.ts",
"job-tracker-ui/src/csv-export.test.tsx",
"job-tracker-ui/src/cv-builder-deep-link.test.tsx",
"job-tracker-ui/src/cv-builder-page.test.tsx",
"job-tracker-ui/src/cv-document-controls.test.tsx",
"job-tracker-ui/src/cv-template-gallery.test.tsx",
"job-tracker-ui/src/cv-template-thumbnail.test.tsx",
"job-tracker-ui/src/cvBuilder.test.ts",
"job-tracker-ui/src/daily-control-loop.test.tsx",
"job-tracker-ui/src/dashboard-customisation.test.tsx",
"job-tracker-ui/src/dashboard-presentation.test.tsx",
"job-tracker-ui/src/dashboardLayout.test.ts",
"job-tracker-ui/src/dialog-flow.test.tsx",
"job-tracker-ui/src/documents-page.test.tsx",
"job-tracker-ui/src/email-provider-connections.test.tsx",
"job-tracker-ui/src/end-to-end-trust-loop.test.tsx",
"job-tracker-ui/src/file-picker-activation.test.tsx",
"job-tracker-ui/src/gmail-review-page.test.tsx",
"job-tracker-ui/src/hooks/useDashboardLayout.test.tsx",
"job-tracker-ui/src/i18n-provider.test.tsx",
"job-tracker-ui/src/interview-prep.test.tsx",
"job-tracker-ui/src/job-discovery.test.tsx",
"job-tracker-ui/src/job-import.test.tsx",
"job-tracker-ui/src/job-table-density.test.tsx",
"job-tracker-ui/src/jobs-view-integration.test.tsx",
"job-tracker-ui/src/kanban-grouped-board.test.tsx",
"job-tracker-ui/src/landing-page.test.tsx",
"job-tracker-ui/src/LandingPage.authRedirect.test.tsx",
"job-tracker-ui/src/loaded-theme-states.test.tsx",
"job-tracker-ui/src/locale-fetch-stability.test.tsx",
"job-tracker-ui/src/login-page.test.tsx",
"job-tracker-ui/src/microsoft-legacy-relink-page.test.tsx",
"job-tracker-ui/src/modal-state.test.tsx",
"job-tracker-ui/src/named-controls.test.tsx",
"job-tracker-ui/src/nginx-config.test.ts",
"job-tracker-ui/src/not-found-page.test.tsx",
"job-tracker-ui/src/notifications-popover.test.tsx",
"job-tracker-ui/src/offer-comparison.test.tsx",
"job-tracker-ui/src/onboarding-checklist.test.tsx",
"job-tracker-ui/src/operations-page.test.tsx",
"job-tracker-ui/src/page-layout.test.tsx",
"job-tracker-ui/src/pipeline.test.ts",
"job-tracker-ui/src/planCatalog.test.ts",
"job-tracker-ui/src/pro-feature-notice.test.tsx",
"job-tracker-ui/src/profile-page.test.tsx",
"job-tracker-ui/src/profileCv.test.ts",
"job-tracker-ui/src/prompt.test.tsx",
"job-tracker-ui/src/public-auth-presentation.test.tsx",
"job-tracker-ui/src/public-cv-page.test.tsx",
"job-tracker-ui/src/quick-capture.test.tsx",
"job-tracker-ui/src/quick-command-preservation.test.tsx",
"job-tracker-ui/src/reminders-presentation.test.tsx",
"job-tracker-ui/src/session-boundary.test.ts",
"job-tracker-ui/src/settings-import-lifetime.test.tsx",
"job-tracker-ui/src/settings-view.test.tsx",
"job-tracker-ui/src/shell-readiness.test.tsx",
"job-tracker-ui/src/sidebar-active-nav.test.ts",
"job-tracker-ui/src/theme-contrast.test.ts",
"job-tracker-ui/src/theme-state.test.tsx",
"job-tracker-ui/src/turnstile-widget.test.tsx",
"job-tracker-ui/src/two-factor-settings.test.tsx",
"job-tracker-ui/src/use-drag-reorder.test.tsx",
"job-tracker-ui/src/use-view-resource.test.tsx",
"job-tracker-ui/src/verify-email-page.test.tsx",
"job-tracker-ui/src/view-state-announcements.test.tsx",
"job-tracker-ui/src/workflow-trust-signals.test.tsx"
],
"browser": [
"job-tracker-ui/e2e/accessibility.spec.ts",
"job-tracker-ui/e2e/account-isolation.spec.ts",
"job-tracker-ui/e2e/analytics-auth-repair.spec.ts",
"job-tracker-ui/e2e/analytics-presentation.spec.ts",
"job-tracker-ui/e2e/board-presentation.spec.ts",
"job-tracker-ui/e2e/browser-zoom-audit.spec.ts",
"job-tracker-ui/e2e/builder-preview-keyboard.spec.ts",
"job-tracker-ui/e2e/csv-export.spec.ts",
"job-tracker-ui/e2e/cv-editor-frame.spec.ts",
"job-tracker-ui/e2e/cv-pagination.spec.ts",
"job-tracker-ui/e2e/cv-preview-presentation.spec.ts",
"job-tracker-ui/e2e/cv-readiness.spec.ts",
"job-tracker-ui/e2e/cv-responsive-workflow.spec.ts",
"job-tracker-ui/e2e/cv-section-scope.spec.ts",
"job-tracker-ui/e2e/cv-settings-presentation.spec.ts",
"job-tracker-ui/e2e/dashboard-presentation.spec.ts",
"job-tracker-ui/e2e/functional-acceptance.spec.ts",
"job-tracker-ui/e2e/job-discovery.spec.ts",
"job-tracker-ui/e2e/job-overview-presentation.spec.ts",
"job-tracker-ui/e2e/job-sections-presentation.spec.ts",
"job-tracker-ui/e2e/kanban-theme.spec.ts",
"job-tracker-ui/e2e/named-controls-modal-state.spec.ts",
"job-tracker-ui/e2e/phase7-account-security.spec.ts",
"job-tracker-ui/e2e/phase7-admin-audit.spec.ts",
"job-tracker-ui/e2e/phase7-admin-system.spec.ts",
"job-tracker-ui/e2e/phase7-admin-users.spec.ts",
"job-tracker-ui/e2e/phase7-application-forms.spec.ts",
"job-tracker-ui/e2e/phase7-authentication.spec.ts",
"job-tracker-ui/e2e/phase7-career-editor.spec.ts",
"job-tracker-ui/e2e/phase7-career-import-review.spec.ts",
"job-tracker-ui/e2e/phase7-career-overview.spec.ts",
"job-tracker-ui/e2e/phase7-career-source-ids.spec.ts",
"job-tracker-ui/e2e/phase7-companies.spec.ts",
"job-tracker-ui/e2e/phase7-correspondence-compose.spec.ts",
"job-tracker-ui/e2e/phase7-correspondence-read.spec.ts",
"job-tracker-ui/e2e/phase7-cv-library.spec.ts",
"job-tracker-ui/e2e/phase7-discovery.spec.ts",
"job-tracker-ui/e2e/phase7-documents-contract.spec.ts",
"job-tracker-ui/e2e/phase7-documents.spec.ts",
"job-tracker-ui/e2e/phase7-job-import.spec.ts",
"job-tracker-ui/e2e/phase7-notifications.spec.ts",
"job-tracker-ui/e2e/phase7-oauth-sender.spec.ts",
"job-tracker-ui/e2e/phase7-offers.spec.ts",
"job-tracker-ui/e2e/phase7-onboarding.spec.ts",
"job-tracker-ui/e2e/phase7-operations.spec.ts",
"job-tracker-ui/e2e/phase7-public-cv.spec.ts",
"job-tracker-ui/e2e/phase7-reminders.spec.ts",
"job-tracker-ui/e2e/phase7-settings-preferences.spec.ts",
"job-tracker-ui/e2e/phase8-dashboard-customisation.spec.ts",
"job-tracker-ui/e2e/redesign-preservation.spec.ts",
"job-tracker-ui/e2e/responsive-accessibility-audit.spec.ts",
"job-tracker-ui/e2e/rules-draft-repair.spec.ts",
"job-tracker-ui/e2e/saved-search-repair.spec.ts",
"job-tracker-ui/e2e/semantic-foundations.spec.ts",
"job-tracker-ui/e2e/settings-page-layout.spec.ts",
"job-tracker-ui/e2e/shell-readiness.spec.ts",
"job-tracker-ui/e2e/smoke.spec.ts",
"job-tracker-ui/e2e/table-density.spec.ts"
],
"sidecar": [
"tools/summarizer/tests/test_app.py",
"tools/summarizer/tests/test_cv_grounding.py"
]
},
"databaseWorkflows": [
"JobTrackerApi/Data/JobTrackerContext.cs"
],
"migrations": [
"JobTrackerApi/Migrations/20260310174114_AddCorrespondence.cs",
"JobTrackerApi/Migrations/20260310174114_AddCorrespondence.Designer.cs",
"JobTrackerApi/Migrations/20260310195000_AddJobFieldsAndSoftDelete.cs",
"JobTrackerApi/Migrations/20260310195000_AddJobFieldsAndSoftDelete.Designer.cs",
"JobTrackerApi/Migrations/20260311090000_AddAutomationRulesAndFields.cs",
"JobTrackerApi/Migrations/20260311090000_AddAutomationRulesAndFields.Designer.cs",
"JobTrackerApi/Migrations/20260311093000_AddAttachmentsAndJobEvents.cs",
"JobTrackerApi/Migrations/20260311093000_AddAttachmentsAndJobEvents.Designer.cs",
"JobTrackerApi/Migrations/20260311103000_AddCompanyCrmAndChecklistAndIndexes.cs",
"JobTrackerApi/Migrations/20260311103000_AddCompanyCrmAndChecklistAndIndexes.Designer.cs",
"JobTrackerApi/Migrations/20260311121000_AddCorrespondenceEmailFields.cs",
"JobTrackerApi/Migrations/20260311140000_AddJobImportFields.cs",
"JobTrackerApi/Migrations/20260311180000_AddShortSummary.cs",
"JobTrackerApi/Migrations/20260711181039_SyncModelSnapshot.cs",
"JobTrackerApi/Migrations/20260711181039_SyncModelSnapshot.Designer.cs",
"JobTrackerApi/Migrations/20260717071417_AddJobEntityAndProspectStages.cs",
"JobTrackerApi/Migrations/20260717071417_AddJobEntityAndProspectStages.Designer.cs",
"JobTrackerApi/Migrations/20260717222917_AddCareerProfileRelationalChildren.cs",
"JobTrackerApi/Migrations/20260717222917_AddCareerProfileRelationalChildren.Designer.cs",
"JobTrackerApi/Migrations/20260718074509_AddCvVariants.cs",
"JobTrackerApi/Migrations/20260718074509_AddCvVariants.Designer.cs",
"JobTrackerApi/Migrations/20260718131138_AddAiInteractions.cs",
"JobTrackerApi/Migrations/20260718131138_AddAiInteractions.Designer.cs",
"JobTrackerApi/Migrations/20260719085904_AddApplicationChecklistItems.cs",
"JobTrackerApi/Migrations/20260719085904_AddApplicationChecklistItems.Designer.cs",
"JobTrackerApi/Migrations/20260719094728_SyncCareerChildKeyLengths.cs",
"JobTrackerApi/Migrations/20260719094728_SyncCareerChildKeyLengths.Designer.cs",
"JobTrackerApi/Migrations/20260719120954_AddCoverLetterVersions.cs",
"JobTrackerApi/Migrations/20260719120954_AddCoverLetterVersions.Designer.cs",
"JobTrackerApi/Migrations/20260719145044_AddInterviewPrepItems.cs",
"JobTrackerApi/Migrations/20260719145044_AddInterviewPrepItems.Designer.cs",
"JobTrackerApi/Migrations/20260730203422_AddAiUsageMetering.cs",
"JobTrackerApi/Migrations/20260730203422_AddAiUsageMetering.Designer.cs",
"JobTrackerApi/Migrations/20260731115022_AddStripeBillingState.cs",
"JobTrackerApi/Migrations/20260731115022_AddStripeBillingState.Designer.cs",
"JobTrackerApi/Migrations/20260802205800_AddPendingEmailChange.cs",
"JobTrackerApi/Migrations/20260802205800_AddPendingEmailChange.Designer.cs",
"JobTrackerApi/Migrations/20260802212509_AddCanonicalMicrosoftIdentity.cs",
"JobTrackerApi/Migrations/20260802212509_AddCanonicalMicrosoftIdentity.Designer.cs",
"JobTrackerApi/Migrations/20260802224646_AddUserOperations.cs",
"JobTrackerApi/Migrations/20260802224646_AddUserOperations.Designer.cs",
"JobTrackerApi/Migrations/20260802225941_AddUserNotifications.cs",
"JobTrackerApi/Migrations/20260802225941_AddUserNotifications.Designer.cs",
"JobTrackerApi/Migrations/20260803001138_AddAiPrivacyPreferences.cs",
"JobTrackerApi/Migrations/20260803001138_AddAiPrivacyPreferences.Designer.cs",
"JobTrackerApi/Migrations/20260809195014_AddEmailSendAttempts.cs",
"JobTrackerApi/Migrations/20260809195014_AddEmailSendAttempts.Designer.cs",
"JobTrackerApi/Migrations/20260810075206_AddEmailDrafts.cs",
"JobTrackerApi/Migrations/20260810075206_AddEmailDrafts.Designer.cs",
"JobTrackerApi/Migrations/20260810080858_AddEmailDraftClientRequestId.cs",
"JobTrackerApi/Migrations/20260810080858_AddEmailDraftClientRequestId.Designer.cs",
"JobTrackerApi/Migrations/20260815164027_AddAccountDeletionLifecycle.cs",
"JobTrackerApi/Migrations/20260815164027_AddAccountDeletionLifecycle.Designer.cs",
"JobTrackerApi/Migrations/20260815175236_AddCrossFeatureAiUsage.cs",
"JobTrackerApi/Migrations/20260815175236_AddCrossFeatureAiUsage.Designer.cs",
"JobTrackerApi/Migrations/20260824090000_AddNotificationPreferences.cs",
"JobTrackerApi/Migrations/20260828090000_AddUiLanguagePreference.cs",
"JobTrackerApi/Migrations/20260830120000_AdoptSystemEmailSettingsSchema.cs",
"JobTrackerApi/Migrations/20260830121000_AdoptUserRuleSettingsSchema.cs",
"JobTrackerApi/Migrations/20260830122000_AdoptGmailReviewDecisionsSchema.cs",
"JobTrackerApi/Migrations/20260830123000_AdoptAuthenticationSupportSchema.cs",
"JobTrackerApi/Migrations/20260830124000_AdoptEmailConnectionSchema.cs",
"JobTrackerApi/Migrations/20260830125000_AdoptCvExtractionSchema.cs",
"JobTrackerApi/Migrations/20260830126000_AdoptTailoredCvDraftSchema.cs",
"JobTrackerApi/Migrations/20260830127000_AdoptJobWorkspaceNotesSchema.cs",
"JobTrackerApi/Migrations/20260830128000_AdoptCvVariantSchema.cs",
"JobTrackerApi/Migrations/20260830129000_AdoptAiInteractionSchema.cs",
"JobTrackerApi/Migrations/20260830130000_AdoptApplicationChecklistSchema.cs",
"JobTrackerApi/Migrations/20260830131000_AdoptCoverLetterVersionSchema.cs",
"JobTrackerApi/Migrations/20260830132000_AdoptInterviewPrepItemSchema.cs",
"JobTrackerApi/Migrations/20260830133000_AdoptCareerProfileSchema.cs",
"JobTrackerApi/Migrations/20260830134000_AdoptIdentitySchema.cs",
"JobTrackerApi/Migrations/20260830135000_AdoptSubmittedApplicationPackageSchema.cs",
"JobTrackerApi/Migrations/20260830136000_AdoptCareerEvidenceSchema.cs",
"JobTrackerApi/Migrations/20260830137000_AdoptSavedJobSearchSchema.cs",
"JobTrackerApi/Migrations/20261021090000_AddDashboardLayoutPreference.cs",
"JobTrackerApi/Migrations/JobTrackerContextModelSnapshot.cs"
],
"cvDocumentOwners": [
"JobTrackerApi/Controllers/CareerProfileController.cs",
"JobTrackerApi/Controllers/DocumentsController.cs",
"JobTrackerApi/Migrations/20260717222917_AddCareerProfileRelationalChildren.cs",
"JobTrackerApi/Migrations/20260717222917_AddCareerProfileRelationalChildren.Designer.cs",
"JobTrackerApi/Migrations/20260830133000_AdoptCareerProfileSchema.cs",
"JobTrackerApi/Models/CareerProfile.cs",
"JobTrackerApi/Services/CareerProfileMapper.cs",
"JobTrackerApi/Services/CareerProfileService.cs",
"JobTrackerApi/Services/CareerProfileValidator.cs",
"JobTrackerApi/Services/CvRenderModel.cs",
"JobTrackerApi/Services/DocumentsIndexService.cs",
"JobTrackerApi/Services/PdfRenderAdmission.cs",
"JobTrackerApi/Services/PdfRenderExceptionHandler.cs",
"JobTrackerApi/Services/PlaywrightCvPdfExporter.cs",
"JobTrackerApi/Services/ThemedCvRenderer.cs"
]
}