docs(cv): record durable processing evidence
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
# AI-004 evidence index
|
||||
|
||||
Synthetic/local evidence only; no secrets, private CVs, provider payloads or screenshots are stored here.
|
||||
|
||||
- Implementation and limitations: `docs/verification/ai-004-cv-processing-queue.md`
|
||||
- Commands/results: `docs/audits/verification-log.md` V-104–V-107
|
||||
- Backend automated coverage: `JobTrackerApi.Tests/CvProcessingOperationTests.cs` and `JobTrackerApi.Tests/ProfileCvControllerTests.cs`
|
||||
- Frontend automated coverage: `job-tracker-ui/src/profile-page.test.tsx`
|
||||
- Implementation commit: `c3c5af8`
|
||||
@@ -133,6 +133,9 @@ Output was reduced to filenames and commit counts. The token artifact appears un
|
||||
| ID | Exact command | Directory | Purpose | Result | Relevant errors or warnings | Failure classification |
|
||||
|---|---|---|---|---|---|---|
|
||||
| V-104 | Bounded `rg`/`Get-Content` of `ProfileCvController` partials, `CvProcessingQueue`, extraction models/registration, Profile UI polling/tests and proxy timeout configuration | Repository root | Revalidate AI-004 upload/queue/restart/review path before design | PASS/PARTIAL — upload is synchronous through parser and multiple model-capable stages; reprocess/rebuild/improve persist runs and return 202, but an unbounded process channel supplies wakeups and no AI-001 operation/provenance/cancellation contract exists. Startup scans queued/running runs | No browser/private CV/parser payload/model/MariaDB/production execution; 504 origin not live-reproduced | Confirmed code-path gap plus environmental blockers |
|
||||
| V-105 | `dotnet restore --packages C:\Users\Cesnimda\.nuget\packages --ignore-failed-sources`; `dotnet build --no-restore -p:UseAppHost=false` | `JobTrackerApi` | Recover the sandbox-rewritten assets file from the existing local package cache and compile AI-004 without downloading/upgrading dependencies | PASS — local-cache-only restore and build; 0 warnings/errors | Initial default restore failed because sandbox NuGet path was empty/network blocked; no dependency version or declaration changed | Environmental command path corrected |
|
||||
| V-106 | `dotnet test --no-restore --filter "FullyQualifiedName~CvProcessingOperationTests|FullyQualifiedName~ProfileCvControllerTests|FullyQualifiedName~SqliteDateTimeOffsetCompatibilityTests|FullyQualifiedName~AiOperationQueueTests"`; `npm.cmd test -- --runInBand --forceExit src/profile-page.test.tsx`; `npm.cmd run build` | Backend tests / `job-tracker-ui` | Verify 202/dedup/owner/retry/provenance/review gate and durable Career Profile UI | PASS — backend 40/40; frontend 10/10; production build | Synthetic CV and fake provider only; Jest existing force-exit/open-handle notice | N/A |
|
||||
| V-107 | Full `dotnet test --no-restore`; full `npm.cmd test -- --runInBand --forceExit`; `git diff --check`; implementation commit/push | Repository root / `job-tracker-ui` | AI-004 full regression, patch hygiene and remote checkpoint | PASS — backend 594/594; frontend 47/47 suites and 161/161 tests; no whitespace errors; `c3c5af8` pushed | Browser/private CV/parser isolation/MariaDB/model/restart/production checks not run; line-ending notices only | Environmental/dependency gates remain |
|
||||
| V-101 | Bounded `rg`/`Get-Content` trace of Strategy button, Focus Plan tab/cache, controller/model calls, owner filters, proxy/queue/routing configuration and tests | Repository root | Revalidate AI-003 complete execution path before design | PASS — one UI action could start candidate fit plus four sequential synchronous focus-plan model calls; Pro and owner filters existed, durable state did not | Live timeout reproduction blocked; this is code-path evidence | Application-related |
|
||||
| V-102 | `dotnet test ... --filter "...StrategySnapshotOperationTests|...AiWorkspaceNotePersistenceTests|...AiOperationQueueTests|...ProEntitlementAuthorizationTests"`; `npm.cmd test -- job-details-generated-drafts.test.tsx --runInBand --forceExit` | Repository root / `job-tracker-ui` | Focused 202/handler/cache/tenant/provider-shape and queued/cancel/fail/retry UI checks | PASS — backend 34/34; frontend 6/6 | Fake model only; Jest reports the existing force-exit/open-handle notice | N/A |
|
||||
| V-103 | Full `dotnet test ... --no-restore`; full `npm.cmd test -- --runInBand --forceExit`; `npm.cmd run build`; `git diff --check` | Repository root / `job-tracker-ui` | AI-003 regression, TypeScript production build and patch hygiene | PASS — backend 592/592; frontend 47/47 suites, 160/160; build; no whitespace errors | Initial sandboxed build attempted blocked NuGet restore; previously approved build path restored from existing cache and passed. Line-ending notices only | Environmental command path corrected |
|
||||
|
||||
@@ -35,3 +35,7 @@ POL-002 now persists user AI/privacy preferences and requires independent backen
|
||||
AI-001 adds the reusable bounded database-backed admission/worker layer over OPS-001A/B/C. It defaults to one worker and remains switched off; no real handler, model or external provider was invoked. Production activation remains blocked until AI-002 provider controls, AI-003/004 typed handlers, browser verification, MariaDB execution, monitoring and rollback/canary evidence pass. See `docs/verification/ai-001-durable-ai-queue.md`.
|
||||
|
||||
AI-002 now enforces sequential local-first routing, explicit task/consent/config/prompt-cost gates, a bounded process-local circuit and actual provider/model/route provenance. Backend 588/588 and sidecar fake-transport 22/22 pass. This is repository evidence only: no model/provider call or production egress occurred, the worker remains off, and PROD-001/003 plus AI-003/004 remain mandatory before any rollout. See `docs/verification/ai-002-provider-routing.md`.
|
||||
|
||||
AI-003 moves Strategy Snapshot generation to typed durable work and keeps GET cache-only. Automated repository evidence passes, but no selected model, browser, MariaDB, restart canary or production worker was exercised. See `docs/verification/ai-003-strategy-snapshot-queue.md`.
|
||||
|
||||
AI-004 moves upload/reprocess/rebuild/improve to one typed `cv.process` operation and removes the separate in-memory channel. Synthetic SQLite and UI tests pass while preserving the review gate. Parser hardening SEC-006/007, browser/private-file/model/MariaDB/restart/production gates remain incomplete; the worker remains off. See `docs/verification/ai-004-cv-processing-queue.md`.
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
# AI-004 durable CV processing
|
||||
|
||||
Updated: 2026-08-09
|
||||
|
||||
Status: `IMPLEMENTED — NOT VERIFIED`. The repository queue migration and automated tests pass. Parser dependency/isolation work, browser checks, selected-model execution, MariaDB, restart canary and production rollout remain blocked or unverified.
|
||||
|
||||
## Revalidated execution path and root cause
|
||||
|
||||
CV upload previously saved an artifact and held the HTTP request while extraction, reconstruction, classification, normalization, structured parsing and model-capable work completed. Reprocess, rebuild and improve returned 202, but woke an unbounded process-local channel. A hosted service separately scanned queued/running extraction rows at startup. The persistent `CvExtractionRun` protected the review result, but the execution path had no shared admission, lease, deadline, retry, cancellation, provider provenance or persistent notification contract. A proxy/backend restart could therefore lose the wakeup or present a 504 even when later work completed. Live 504 reproduction remains blocked; this is confirmed source-path evidence, not a claimed browser reproduction.
|
||||
|
||||
## Implemented contract
|
||||
|
||||
- Upload now saves the owner-scoped artifact and queued extraction run, enqueues typed `cv.process` work, and returns 202 with the existing safe operation DTO/status URL. It does not parse inside the request.
|
||||
- Reprocess, rebuild and improve use the same producer. The old channel and `CvProcessingHostedService` are removed; AI-001 is the only scheduler/worker.
|
||||
- Operations store only subject type `cv_extraction_run` and the numeric run ID. Raw CV text, filenames, prompts and parser output are not copied into `UserOperations`.
|
||||
- The worker re-enters the operation owner scope, rechecks live Pro/AI policy, and only loads an extraction run owned by that scope. The handler reports provider/model/route metadata when available.
|
||||
- Sequential duplicate uploads with the same content and active rebuild/improve/reprocess requests reuse one active run/operation. The duplicate temporary upload copy is deleted before it is added to the database.
|
||||
- Retryable provider failures leave the extraction run queued while the operation owns retry timing. Final/non-retryable failures become failed. Running cancellation and timeout state are synchronized; generic operation state is embedded in extraction-history responses so refresh resumes queued/retry/cancel/failure UI.
|
||||
- Upload/reprocess reopen the stored owner artifact in the worker. Rebuild/improve pass the worker cancellation token to the metadata-capable generation call.
|
||||
- Successful processing stops at `pending_review`. It does not update profile text/structure/current-version pointers until the existing accept endpoint is called. Discard remains available.
|
||||
- The UI shows queued, local processing, retry wait, approved-fallback wait, failed, cancelled and cancellation-requested states with cancel/retry actions. The upload spinner now ends after admission and reports the queued run rather than false extraction success.
|
||||
|
||||
No dependency, schema, migration, proxy timeout or production switch changed. `Workers:AiOperationsEnabled` remains false by default.
|
||||
|
||||
## Automated evidence
|
||||
|
||||
- Focused CV/queue/SQLite tests: 40/40 after the final failure-path addition; synthetic files and fake providers only.
|
||||
- Full backend: 594/594.
|
||||
- Focused Career Profile UI: 10/10.
|
||||
- Full frontend: 47/47 suites and 161/161 tests.
|
||||
- Backend build, frontend production build and `git diff --check`: pass; line-ending notices only.
|
||||
- Integration coverage uses real SQLite operation/run/artifact/notification rows and proves 202, active duplicate reuse, no raw CV payload in operation state, owner-scoped execution, provider-failure retry state, one terminal notification and the unchanged human review gate.
|
||||
|
||||
## Remaining gates and known limits
|
||||
|
||||
- SEC-006/007 still own fixed parser versions, page/pixel/decompression/memory/process isolation and complete parser-child cancellation/cleanup. Legacy structured parsing calls are not all cancellation-aware. No malicious file was executed.
|
||||
- Cancellation of an operation before a worker claims it is authoritative in `UserOperation` and shown correctly after refresh; the underlying extraction row is reconciled when retried/processed, but immediate terminal synchronization of that dormant row remains follow-up cleanup work.
|
||||
- Browser localhost is denied by administrator policy. No real browser/mobile/theme/keyboard/refresh/back-forward workflow or screenshot is claimed.
|
||||
- The authorized private CV was not used. Synthetic input must pass the SEC-006/007 gates before that local-only check.
|
||||
- The generic lease tests cover restart recovery, but no CV parser/model process was interrupted and resumed in a runtime canary.
|
||||
- MariaDB, selected Ollama model, worker telemetry, production activation and rollback canary remain unverified. The worker stays default-off.
|
||||
|
||||
## Rollback
|
||||
|
||||
Keep `Workers:AiOperationsEnabled=false`, revert `c3c5af8`, and retain the additive operation/extraction tables. Cancel or drain queued `cv.process` operations before removing the handler. No database downgrade or artifact rewrite is required; existing extraction runs remain readable.
|
||||
@@ -41,5 +41,7 @@ This is the rolling action-level evidence index. `PASS (automated/runtime)` is n
|
||||
| Strategy Snapshot | Pro enqueue returns 202; active/double-click request is idempotent | PASS (real SQLite; fake model) | BLOCKED | NOT RUN; worker off | `ai-003-strategy-snapshot-queue.md` |
|
||||
| Strategy Snapshot | queued/running/retry/failure/cancel/completion UI and cached result refresh | PASS (component tests) | BLOCKED | NOT RUN | `ai-003-strategy-snapshot-queue.md` |
|
||||
| Strategy Snapshot | owner-scoped rehydration/result/operation and no partial malformed output | PASS (real SQLite; fake model) | BLOCKED | NOT RUN | `ai-003-strategy-snapshot-queue.md` |
|
||||
| CV processing | upload 202, active duplicate reuse, owner-scoped execution and review gate | PASS (real SQLite; synthetic CV/fake provider) | BLOCKED | NOT RUN; worker off | `ai-004-cv-processing-queue.md` |
|
||||
| CV processing | retry provenance, durable refresh state and cancel/retry controls | PASS (backend + component tests) | BLOCKED | NOT RUN | `ai-004-cv-processing-queue.md` |
|
||||
|
||||
Remaining product actions are `NOT STARTED` in the master plan and will be added as their work packages enter verification. Browser localhost is currently denied by administrator policy; production access is not documented/configured.
|
||||
|
||||
@@ -299,3 +299,13 @@
|
||||
- **Consequences:** existing cached `FocusPlanDto` remains readable, while generation now returns 202 and the UI resumes by operation ID/context. Retry can overwrite only the same unique result row. Worker activation and real-model tuning remain rollout gates; operation records provide deduplication/provenance, not full monthly billing accounting.
|
||||
- **User approval required:** No; both programmes explicitly require durable Strategy work and consolidation with AI-001/002.
|
||||
- **Reversible:** Yes. Keep the worker off and revert `a621226`; no schema/dependency changed. Cancel or drain queued `strategy.snapshot` rows before removing the handler.
|
||||
|
||||
## DEC-031 — CV extraction runs own review data; UserOperations own execution
|
||||
|
||||
- **Date:** 2026-08-09
|
||||
- **Decision:** Keep `CvExtractionRun` as the artifact/result/review record and make one typed `cv.process` operation reference its numeric ID. Replace the unbounded channel and separate hosted service with AI-001 admission/leases/retries/cancellation/notifications. Upload returns 202 after persistence; no raw CV payload is duplicated into operation state.
|
||||
- **Reason/evidence:** the complete trace showed useful persistent review state but two competing execution mechanisms: synchronous upload and a process-local channel. Reusing both existing models gives restart-safe orchestration without a new queue/schema and preserves the mandatory accept/discard gate.
|
||||
- **Alternatives considered:** raise proxy timeouts; keep synchronous upload; add a second CV queue/table; store raw CVs/prompts in operation payloads; replace extraction runs with generic operations. These retain the 504/lost-wakeup path, duplicate infrastructure/private data, or discard domain review/version history.
|
||||
- **Consequences:** all four long CV actions share one default-off worker and operation UI. Parser-version/process isolation remains SEC-006/007; browser/model/MariaDB/production gates remain before rollout. Existing clients must accept the upload endpoint's 202 operation response.
|
||||
- **User approval required:** No; both programmes explicitly require one durable operation foundation and preservation of human review.
|
||||
- **Reversible:** Yes. Keep the worker off, revert `c3c5af8`, and retain operation/extraction rows. Cancel or drain `cv.process` rows before removing the handler.
|
||||
|
||||
@@ -2,17 +2,17 @@
|
||||
|
||||
Updated: 2026-08-09
|
||||
|
||||
- **Overall programme status:** Active. Six packages are locally verified; thirteen packages through AI-003 are implemented with automated/runtime evidence but blocked from applicable browser/model/provider/production gates; AI-004 is in progress.
|
||||
- **Current work package:** `AI-004` — CV-processing 504 durable-operation migration (`IN PROGRESS`), reusing the shared operation/notification/routing foundation and preserving the review gate.
|
||||
- **Overall programme status:** Active. Six packages are locally verified; fourteen packages through AI-004 are implemented with automated/runtime evidence but blocked from applicable parser/browser/model/provider/production gates; UX-001 is in progress.
|
||||
- **Current work package:** `UX-001` — unified authentication page (`IN PROGRESS`); source requirement re-read and existing tab/provider-card structure traced.
|
||||
- **Completed work packages:** None are `DONE`; all repository security/AI packages still have applicable browser, provider and/or production gates.
|
||||
- **Locally verified work:** SEC-001, SEC-002, SEC-003, SEC-005A, CORE-001 and PROD-002 (`VERIFIED LOCALLY`).
|
||||
- **Implemented, verification incomplete:** SEC-004, SEC-005B, SEC-008, CORE-002, BG-001, OPS-001A/B/C, POL-001/002, AI-001/002/003 (`IMPLEMENTED — NOT VERIFIED`). AI-003 now has a real typed producer/handler and explicit durable UI states, but its worker remains default-off pending rollout gates.
|
||||
- **Implemented, verification incomplete:** SEC-004, SEC-005B, SEC-008, CORE-002, BG-001, OPS-001A/B/C, POL-001/002, AI-001/002/003/004 (`IMPLEMENTED — NOT VERIFIED`). AI-004 now returns 202 for upload and uses the shared typed worker/status/notification/UI contract; the worker remains default-off and parser hardening remains blocked.
|
||||
- **Production-verified work:** None.
|
||||
- **Blocked work:** SEC-006 requires explicit internet/package-index permission; PROD-001/003/004 and REL-001 require documented production access and unfinished dependencies. Browser access is denied by browser administrator policy; SMTP/MariaDB environments are unavailable.
|
||||
- **Deferred work:** None. Conditional multi-replica coordination, model deletion, realtime operation delivery and unrelated production changes remain outside current packages.
|
||||
- **Next five work packages:** AI-004 CV processing; UX-001 authentication/theme corrections; QA-001 job-analysis/keyword quality; UX-002 Career Workspace/CV Builder redesign; MAIL-001 consolidated email experience. SEC-006/007 resume after package-index permission.
|
||||
- **Status counts:** 6 `VERIFIED LOCALLY`; 13 `IMPLEMENTED — NOT VERIFIED`; 1 `IN PROGRESS`; 14 `NOT STARTED`; 5 `BLOCKED`; 0 `DONE`; 0 `DEFERRED`.
|
||||
- **Test status:** backend 592/592; AI-003 focused backend 34/34; frontend 47/47 suites and 160/160 tests, AI-003 focused 6/6, production build pass; prior sidecar 22/22. Patch check passes. Browser/model/MariaDB/production checks were not run.
|
||||
- **Next five work packages:** UX-001 unified authentication; QA-001 job-analysis/keyword quality; UX-002 deterministic theme state; CAREER-001 Career Workspace redesign; CAREER-002 CV Builder redesign. SEC-006/007 resume after package-index permission.
|
||||
- **Status counts:** 6 `VERIFIED LOCALLY`; 14 `IMPLEMENTED — NOT VERIFIED`; 1 `IN PROGRESS`; 13 `NOT STARTED`; 5 `BLOCKED`; 0 `DONE`; 0 `DEFERRED`.
|
||||
- **Test status:** backend 594/594; AI-004 focused backend 40/40; frontend 47/47 suites and 161/161 tests, AI-004 focused UI 10/10, production build pass; prior sidecar 22/22. Patch check passes. Browser/model/MariaDB/production checks were not run.
|
||||
- **Deployment status:** No deployment performed. No production migrations were run. AI operation worker remains disabled by default.
|
||||
- **Production status:** Unchanged and unverified. No provider/model call, model pull, external request or paid API occurred.
|
||||
- **Known regressions:** None found by automated suites. Jest still needs `--forceExit` and reports its existing open-handle notice. Direct clean EF-only SQLite migration still hits the pre-existing historical blank-chain defect before later migrations; normal startup owns reconciliation. Cross-feature monthly AI usage accounting remains a rollout gap.
|
||||
@@ -40,5 +40,6 @@ Updated: 2026-08-09
|
||||
- `docs/verification/ai-001-durable-ai-queue.md`
|
||||
- `docs/verification/ai-002-provider-routing.md`
|
||||
- `docs/verification/ai-003-strategy-snapshot-queue.md`
|
||||
- `docs/verification/ai-004-cv-processing-queue.md`
|
||||
- `docs/verification/prod-002-ai-evaluation.md`
|
||||
- `docs/work-programmes/master-work-plan.md`
|
||||
|
||||
@@ -16,7 +16,7 @@ Allowed statuses are `NOT STARTED`, `IN PROGRESS`, `IMPLEMENTED — NOT VERIFIED
|
||||
|
||||
`DONE` requires every applicable acceptance criterion, focused and regression tests, browser/accessibility/theme/mobile checks, tenant and entitlement checks, documentation, migration/rollback evidence, and production verification. Repository-only work that still requires production is at most `VERIFIED LOCALLY`.
|
||||
|
||||
Exactly one implementation item may be `IN PROGRESS`. As of this revision it is **AI-004**.
|
||||
Exactly one implementation item may be `IN PROGRESS`. As of this revision it is **UX-001**.
|
||||
|
||||
## Consolidated dependency order
|
||||
|
||||
@@ -541,11 +541,11 @@ Ordering differences from the suggested list:
|
||||
- **Required tests:** safe synthetic PDFs/DOCX/images, proxy/backend/parser/provider failure, duplicate/refresh/restart, E2E.
|
||||
- **Required browser verification:** synthetic CV first; authorized private file via temporary local copy only, never logged/committed/external.
|
||||
- **Required production verification:** synthetic/local-only canary, no external payload, restart recovery.
|
||||
- **Status:** `IN PROGRESS`.
|
||||
- **Status:** `IMPLEMENTED — NOT VERIFIED`.
|
||||
- **Blocker:** SEC-006 dependency upgrades need internet permission; browser/private-file/MariaDB/production reproduction remains unavailable. Synthetic repository work can continue.
|
||||
- **Evidence:** initial V-104 trace: upload still performs extraction/normalization/model work synchronously; reprocess/rebuild/improve return 202 into an unbounded in-memory channel backed by persistent `CvExtractionRun` rows and startup scanning, but do not use AI-001 operation admission/status/notification/provenance/cancellation.
|
||||
- **Commit:** none.
|
||||
- **Remaining work:** define one `cv.process` operation referencing the extraction-run ID; make upload artifact/run creation return 202; replace channel wakeups with the typed handler; preserve pending-review acceptance; align cancellation/failure/provenance/deduplication; add safe synthetic parser/provider/restart/UI tests. Do not duplicate raw CV data into `UserOperations` or inflate timeouts.
|
||||
- **Evidence:** `docs/verification/ai-004-cv-processing-queue.md`; V-104–V-107; real SQLite synthetic integration proves 202/active deduplication/owner-scoped handler/retry provenance/notification/review gate; backend 594/594; frontend 161/161 and build.
|
||||
- **Commit:** `c3c5af8` (`feat(cv)!: queue durable processing`).
|
||||
- **Remaining work:** SEC-006/007 parser dependency/isolation and complete parser cancellation; browser synthetic upload/refresh/retry/cancel/review at required widths/themes/keyboard; selected-model and worker-restart canary; MariaDB/production rollout. Reconcile dormant extraction-row status immediately when an operation is cancelled before claim. Do not use the private CV before safeguards.
|
||||
|
||||
### UX-001 — Unified authentication page
|
||||
|
||||
@@ -559,9 +559,9 @@ Ordering differences from the suggested list:
|
||||
- **Required tests:** invalid credentials/provider failure/cancel/return, focus/order/labels.
|
||||
- **Required browser verification:** 375/768/1440, light/dark, keyboard/focus, logged-out/provider mocks.
|
||||
- **Required production verification:** real provider smoke only with authorized accounts.
|
||||
- **Status:** `NOT STARTED`.
|
||||
- **Blocker:** security dependencies; provider production checks external.
|
||||
- **Evidence:** source requirement.
|
||||
- **Status:** `IN PROGRESS`.
|
||||
- **Blocker:** browser localhost policy and real-provider/production checks; component/source work can continue safely.
|
||||
- **Evidence:** source requirement re-read; initial trace confirms `LoginPage` still renders separate local/Google/Microsoft tabs and provider-card components.
|
||||
- **Commit:** none.
|
||||
- **Remaining work:** keep visual change separate from identity migration.
|
||||
|
||||
|
||||
@@ -2,17 +2,17 @@
|
||||
|
||||
Updated: 2026-08-09
|
||||
|
||||
- **Exact current task:** AI-004 — design the smallest `cv.process` bridge from persistent `CvExtractionRun` domain state into AI-001 operations, then migrate synchronous upload without weakening parser limits or the human review gate.
|
||||
- **Last completed step:** complete initial AI-004 execution trace (V-104). Upload saves an artifact/run and performs extraction, reconstruction, classification/normalization and structured parsing synchronously before returning. Reprocess/rebuild/improve already return 202 with persistent run IDs, but wake an unbounded process-local channel; startup scans queued/running runs. They lack centralized operation admission, cancellation/deadline/retry/provenance and generic persistent notifications.
|
||||
- **Files currently modified:** none after the AI-004 trace tracking commit. Preserve any new user edits discovered on resume.
|
||||
- **Commands already run:** AI-003 source tracing/build/focused/full tests/frontend build/diff/commits (V-101–V-103); AI-004 bounded controller/partial/queue/model/UI/proxy/registration trace (V-104).
|
||||
- **Test results:** backend 592/592; AI-003 focused backend 34/34; frontend 47/47 suites and 160/160 tests; AI-003 UI 6/6; production frontend build and diff check pass. Fake model/synthetic data only.
|
||||
- **Exact current task:** UX-001 — replace `LoginPage` local/Google/Microsoft tabs with one accessible sign-in card while preserving the hardened provider callbacks and separate registration behavior.
|
||||
- **Last completed step:** AI-004 implementation `c3c5af8` was committed and pushed. Upload/reprocess/rebuild/improve now use one durable `cv.process` operation; duplicate active work is reused; provider failure state, persistent notifications, review gate and operation UI are covered. UX-001 source requirements were re-read and the current separate-tab/provider-card path was located.
|
||||
- **Files currently modified:** tracking/evidence documents for AI-004 and the UX-001 status transition. No UX application code is modified yet.
|
||||
- **Commands already run:** initial clean-tree review and push through `39e9804`; AI-004 source trace; local-cache-only restore; backend builds/focused/full tests; focused/full frontend tests/build; diff review; implementation commit/push; UX-001 source/route trace. See V-104–V-107.
|
||||
- **Test results:** backend 594/594; AI-004 focused backend 40/40; frontend 47/47 suites and 161/161 tests; profile UI 10/10; production frontend build and diff check pass. Synthetic CV/fake model only.
|
||||
- **Services currently running:** none started by this session. Node/Jest/build processes exited. Pre-existing Docker services were not changed.
|
||||
- **Temporary files or processes:** none created for AI-004. No dependency declaration, database or artifact was changed.
|
||||
- **Production changes currently active:** none. No deployment, provider/model call, private CV access, model pull, paid service, production migration or external payload occurred.
|
||||
- **Rollback status:** AI-003 rollback is documented in `docs/verification/ai-003-strategy-snapshot-queue.md`; AI-004 has no code to roll back yet. Worker switches remain default-off.
|
||||
- **Uncommitted changes:** none expected after the AI-004 trace tracking commit. Confirm with `git status --short --branch`.
|
||||
- **Known failures:** browser localhost denied; MariaDB/SMTP/production unavailable; SEC-006 upgrades require explicit internet/package-index permission; historical clean EF-only SQLite chain needs startup reconciliation; Jest reports its existing force-exit/open-handle notice. AI-004 live 504 and restart behavior are not claimed.
|
||||
- **Exact next action:** specify the typed `cv.process` subject/idempotency contract and change `ProcessQueuedRunAsync` to return/throw a classified result suitable for `IAiOperationHandler`; then make upload persist a queued run and return 202. Keep `CvExtractionRun` as review/result domain state and `UserOperation` as orchestration state—no raw CV payload or second CV queue.
|
||||
- **Work that can continue independently:** repository-only AI-004 producer/handler work with synthetic files/fake parser/provider; frontend durable-state tests; existing parser-limit tests. SEC-006/007 await package-index permission; PROD-001/003/004 await production access.
|
||||
- **Rollback status:** AI-004 rollback is documented in `docs/verification/ai-004-cv-processing-queue.md`; worker switches remain default-off. Production is unchanged.
|
||||
- **Uncommitted changes:** AI-004 evidence/master tracking status updates only; commit and push them before UX code.
|
||||
- **Known failures:** browser localhost denied; MariaDB/SMTP/production unavailable; SEC-006 upgrades require explicit internet/package-index permission; complete parser cancellation/isolation remains SEC-007; historical clean EF-only SQLite chain needs startup reconciliation; Jest reports its existing force-exit/open-handle notice. Live CV 504/restart/private-file behavior is not claimed.
|
||||
- **Exact next action:** read `LoginPage.tsx`, `GoogleAuthCard.tsx`, `MicrosoftAuthCard.tsx` and `login-page.test.tsx` completely; isolate sign-in-only button rendering from profile linking controls; replace tabs with one form/separator/two alternative buttons and add invalid/provider cancel/return/accessibility component tests.
|
||||
- **Work that can continue independently:** UX-001 repository UI/tests; then UX-002/QA-001 source work. SEC-006/007 await package-index permission; PROD-001/003/004 await production access.
|
||||
- **Decisions still required from the user:** none for synthetic repository work. Internet/package upgrades, private CV access, external/paid providers and production actions retain their explicit approval/safety gates; SEC-009 retention/legal policy remains unresolved.
|
||||
|
||||
Reference in New Issue
Block a user