Files
jobtrackingapp/.gsd/milestones/M001/slices/S05/S05-UAT.md
T
cesnimda a0d1c1c05b feat(S05/T02): Added an end-to-end trust-loop regression, surfaced save…
- job-tracker-ui/src/end-to-end-trust-loop.test.tsx
- job-tracker-ui/src/components/JobDetailsDialog.tsx
- job-tracker-ui/src/components/Correspondence.tsx
- .gsd/milestones/M001/slices/S05/S05-UAT.md
2026-03-24 14:36:46 +01:00

91 lines
4.1 KiB
Markdown

# S05 Live-Safe UAT: Trust Loop Verification
## Goal
Verify the end-to-end trust loop on one real job without accidentally sending recruiter email.
## Safety Guardrails
1. **Do not press `Send and log email`** unless the environment is explicitly configured to a safe sink, stub mailbox, or other non-production outbound target.
2. If you are not certain the outbound email path is safe, stop after reviewing the generated follow-up draft.
3. Do not paste private recruiter or correspondence bodies into screenshots, tickets, or logs.
4. Prefer a job that already has:
- saved package material on the job,
- at least one linked Gmail thread,
- a follow-up reason/readiness signal.
## Preconditions
- The API and UI are running against the intended environment.
- Gmail integration is authenticated for the current user.
- The selected job has an identifiable company, job title, and recruiter mailbox/thread history.
- If you plan to verify the send step, outbound email must point at a safe sink/stub. Otherwise stop before sending.
## Shared Expected Trust Signals
The same job should present one coherent next action across all entry points:
- `/jobs`
- `/dashboard`
- `/reminders`
The workspace should make these states clear:
- saved package material can be reused,
- linked Gmail refresh checks already-linked threads instead of requiring full re-import,
- follow-up draft generation is grounded in saved package + correspondence context,
- email sending remains manual.
## Flow A — Start from `/jobs`
1. Open `/jobs`.
2. Find a job with a trust/workflow signal chip or next-action button.
3. Open the job via the primary next-action control.
4. Confirm the workspace opens on the expected tab for that action.
5. In **Tailored CV**:
- verify the saved tailored CV, cover letter, application answer, and recruiter message are present if the job previously had them,
- confirm the workspace explicitly says the saved package material feeds follow-up drafting.
6. In **Correspondence**:
- confirm the linked-thread continuity panel is visible,
- confirm Gmail connection state is shown,
- confirm linked thread count is shown when applicable,
- trigger **Refresh linked threads** if manual confirmation is needed,
- verify new linked correspondence appears without importing the full thread again.
7. In **Follow up**:
- confirm the draft context references saved package material and thread context,
- confirm the manual-send boundary copy is visible,
- review the generated draft but **stop before `Send and log email`** unless the environment is explicitly safe.
## Flow B — Start from `/dashboard`
1. Open `/dashboard`.
2. Find the same job in an attention/reminder card.
3. Open it from the dashboard action.
4. Confirm it lands in the same job workspace and the same trust state is visible:
- package material is still saved,
- correspondence continuity is preserved,
- follow-up context remains grounded.
## Flow C — Start from `/reminders`
1. Open `/reminders`.
2. Find the same job in the appropriate reminder grouping.
3. Open it from the reminder action.
4. Confirm it lands in the same workspace for the same job and preserves the same action semantics.
## Pass Criteria
- The same job can be opened from `/jobs`, `/dashboard`, and `/reminders`.
- The saved application package is visible and clearly reusable for follow-up drafting.
- Linked Gmail refresh shows continuity on already-linked threads without requiring a whole-thread re-import workflow.
- The follow-up draft is grounded in saved package and correspondence context.
- No recruiter email is sent unless the human explicitly chooses `Send and log email` in a safe environment.
## Failure Clues
- Entry points route to different tabs or imply different next actions for the same job.
- Saved package material is missing or no longer called out as reusable context.
- Linked-thread refresh state is invisible or requires re-importing a thread that is already linked.
- Follow-up drafting triggers outbound send behavior or makes send/regenerate coupling unclear.
- Workspace state differs depending on whether the job was opened from jobs, dashboard, or reminders.