2689 lines
107 KiB
JSON
2689 lines
107 KiB
JSON
{
|
||
"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"
|
||
]
|
||
}
|