- job-tracker-ui/src/components/JobTable.tsx - job-tracker-ui/src/daily-control-loop.test.tsx - job-tracker-ui/src/i18n/translations.ts - .gsd/milestones/M001/slices/S04/S04-PLAN.md - .gsd/milestones/M001/slices/S04/tasks/T02-PLAN.md
5.9 KiB
id, parent, milestone, provides, key_files, key_decisions, patterns_established, observability_surfaces, duration, verification_result, completed_at, blocker_discovered
| id | parent | milestone | provides | key_files | key_decisions | patterns_established | observability_surfaces | duration | verification_result | completed_at | blocker_discovered | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| T02 | S04 | M001 |
|
|
|
|
|
~2h | passed | 2026-03-24T13:55:43+01:00 | false |
T02: Make the job table expose the right next action and prove the daily loop
Made the job table show actionable follow-up/package next steps and proved table, reminders, and dashboard all land in the same job workspace flow.
What Happened
I first fixed the flagged observability gaps in the slice and task plans so this unit explicitly described its failure-path coverage and inspection surfaces.
In job-tracker-ui/src/components/JobTable.tsx, I replaced the split decorative/action logic with a shared action-signal model. The table now derives both row chips and the primary “Next action” control from the same follow-up/package readiness signals, so the visible urgency affordance and the routed action cannot drift apart. Package work now reflects the same readiness inputs already used by the table filters: missing tailored CV, missing notes, or both.
I updated translations in job-tracker-ui/src/i18n/translations.ts so the new package-work affordances and details are user-facing copy instead of hardcoded strings.
In job-tracker-ui/src/daily-control-loop.test.tsx, I expanded the focused daily-loop proof so the table explicitly participates in the routed loop: the test now clicks a table urgency signal for follow-up work and the table’s next-action button for package work, while the earlier reminders/dashboard proofs remain in place.
For runtime verification, I also exercised the built app in a browser. Because dotnet is unavailable in this environment, I served the compiled UI locally and mocked the frontend’s own API contract in-browser, then verified that table, reminders, and dashboard each opened the expected job workspace state.
Verification
Verified the focused UI test passes, the frontend production build succeeds, and browser UAT confirms the routed daily loop across all three surfaces.
- Focused test:
CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/daily-control-loop.test.tsx - Build:
CI=true npm --prefix job-tracker-ui run build - Browser UAT on built app (
npx serve -s job-tracker-ui/build -l 4173) with mocked API contract:/jobs: clicked table next action for Backend Developer and confirmed Follow-up context + saved cover-letter reuse signal/reminders: clicked Missing tailored CV → Open and confirmed Tailored CV workspace for Platform Engineer/dashboard: clicked Follow up card action and confirmed routed follow-up workspace- Network errors were cleared after route mocking; the verified browser interactions completed without failed mocked requests
Verification Evidence
| # | Command | Exit Code | Verdict | Duration |
|---|---|---|---|---|
| 1 | CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/daily-control-loop.test.tsx |
0 | ✅ pass | 4.723s |
| 2 | CI=true npm --prefix job-tracker-ui run build |
0 | ✅ pass | 12.969s |
| 3 | Browser UAT on http://localhost:4173 with mocked http://localhost:5202/api/* routes: table → follow-up workspace, reminders → tailored CV workspace, dashboard → follow-up workspace |
0 | ✅ pass | ~4m |
Diagnostics
Inspect job-tracker-ui/src/components/JobTable.tsx to see the shared action-signal derivation that drives both urgency chips and primary next-action buttons.
Run CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/daily-control-loop.test.tsx to catch drift between table, reminders, dashboard, and the routed workspace state.
For browser-level inspection, serve the built UI and verify these surfaces route into /jobs with the expected workspace content:
- table signal / next-action controls
- reminders Open actions
- dashboard Needs Follow-up actions
Deviations
Used browser-level API route mocks for manual UAT because the local ASP.NET API could not be started in this environment (dotnet is not installed). The shipped UI code was still exercised in a real browser against its own HTTP contract.
Known Issues
The focused Jest run still emits existing React Router v7 future-flag warnings from the test harness. They do not fail the task’s verification gate and were not introduced by this change.
Files Created/Modified
job-tracker-ui/src/components/JobTable.tsx— unified actionable urgency chips and primary next-action routing for follow-up and package workjob-tracker-ui/src/daily-control-loop.test.tsx— extended the focused loop test to prove the table participates in the same routed workspace flowjob-tracker-ui/src/i18n/translations.ts— added user-facing copy for package-work affordances and details.gsd/milestones/M001/slices/S04/S04-PLAN.md— added explicit slice-level failure-path verification guidance.gsd/milestones/M001/slices/S04/tasks/T02-PLAN.md— added the missing Observability Impact section