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
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user