Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .claude/review/learnings/feedback.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,6 @@
{"ts":"2026-09-29T15:44:38.863Z","reviewId":"address-2092","id":"f3","signature":"2e44759de6ee","agent":"architecture","category":"pattern-consistency","severity":4,"file":"src/components/HrTools/PdsGoalCalculator/Setup/SetupStep.tsx","message":"The goal year is now passed by hand into three separate PDS calls to useGoalCalculatorConstants (SetupStep, MonthlyReimbursableSection, usePdsSummaryData). GoalCalculator does this differently: its context owns one year-scoped constants result and tells consumers not to call the hook themselves, so a future PDS consumer that calls the hook with no year will quietly get current-year rates.","outcome":"accepted"}
{"ts":"2026-09-29T15:47:11.190Z","reviewId":"address-2092","id":"f7","signature":"9caaa653a14a","agent":"financial","category":"date-windows","severity":3,"file":"src/components/HrTools/PdsGoalCalculator/Shared/PdsGoalCalculatorLayout.tsx","message":"The past-year comparison reads DateTime.local().year fresh on every render instead of capturing it once, unlike the repos established now = useMemo(() => DateTime.now(), []) pattern for long-lived pages. On a session left open across a year boundary the past-year banner/chip can appear or disappear mid-session even though nothing about the goal changed.","outcome":"accepted"}
{"ts":"2026-10-05T20:43:32.007Z","reviewId":"address-2123","id":"f1","signature":"53773db921b4","agent":"architecture","category":"state-consistency","severity":6,"file":"src/components/HrTools/AdditionalSalaryRequest/Shared/useAdditionalSalaryRequestForm.ts","message":"The new validator guard checks the sticky stableNonBackpayTotal (falls back to lastValidNonBackpayTotalRef), while useSalaryCalculations checks the live nonBackpayTotal, so the two exceedsCap answers split apart. An over-cap staffer who types a non-backpay amount and then clears it back to backpay-only sees \"Optional Comments\" and an enabled Submit, but Formik still fails additionalInfo as required.","outcome":"accepted"}
{"ts":"2026-10-07T21:11:54.597Z","reviewId":"address-2127","id":"f1","signature":"52aed5594f03","agent":"testing","category":"test-cannot-fail","severity":5,"file":"src/components/Reports/StaffExpenseReport/StaffExpenseReport.test.tsx","message":"`expect(calls.report).toBe(0)` can never fail: `calls.report` only increments inside `failCallsWhen`, and this test passes no `failReportCall`, so the counter is 0 even if the report query runs. The test does not prove the report query is skipped when HCM errors.","outcome":"accepted"}
{"ts":"2026-10-07T21:17:39.702Z","reviewId":"address-2127","id":"f2","signature":"5189466fa1ce","agent":"architecture","category":"pattern-consistency","severity":4,"file":"src/lib/apollo/client.ts","message":"The non-array `graphQLErrors` guard is fixed only in the browser error link; the sibling SSR error link in src/lib/apollo/ssrClient.ts still calls `graphQLErrors.map(...)` behind a truthiness check, so a string or object `errors` throws inside the link the same way.","outcome":"accepted"}
{"ts":"2026-10-07T21:42:15.282Z","reviewId":"address-2127","id":"f1","signature":"d423e73efc0c","agent":"architecture","category":"pattern-consistency","severity":4,"file":"src/components/Reports/StaffExpenseReport/StaffExpenseReport.tsx","message":"The new HCM failure path folds every Hcm error into the generic \"Staff Expense report could not be loaded. Please try again later.\" alert, while the repo already has a dedicated convention for the Hcm query failing with HCM_UNAVAILABLE (isHcmUnavailableError + HcmUnavailableAlert). When HCM is overloaded, this page tells users something different from every other HCM-backed page.","outcome":"dismissed","dismissalReason":"intentional","dismissalDetail":"it's no longer possible to get an HCM_UNAVAILABLE error on the Staff Expense Report except in an extreme edge case that isn't worth having special logic for"}
Loading
Loading