# SatelliteHR — QA issues found on 19 Oct 2026 6 issues (2 high · 1 medium · 3 low). Environment: https://qa.satellitehr.com. Source of truth: the append-only ISSUES.md. ### ISS-586 · Leave policies lost their expiry rules: comp-off no longer expires after 3 months, Service Leave no longer after 12 months - **Module:** Leave → Policies (carry-forward) · **Severity:** High · **Found:** 19 Oct 2026 - **Steps:** Read the active leave policies (GET /api/company/leave/policies, as QA HR Manager) and compare with the reviewed baseline of 15 Oct (e2e tests/contract/__baseline__/leave-policies.json). - **Actual:** Between 15 and 19 Oct the carry-forward rules were rewritten. Comp-off — handbook 16.4: carryForward {maxDays: 0, expiresAfterMonths: 3} became {}. Service Leave: {expiresAfterMonths: 12, …} became {maxDays: 10}. Floating Holidays and Leave Without Pay: {maxDays: 0} became {}. Nobody in the QA walkthroughs or the e2e suite changed them (both only read policies), and the API shows no updatedAt/updatedBy or audit trail (GET /api/company/audit → 404), so there is no record of who changed them. Saving the Service Leave form drops rule fields it can't show (ISS-447), which would explain a change like this. - **Expected:** Comp-off expires 3 months after it is earned (sheet row 63); Service Leave expires after 12 months (rows 53–54, 61); floating holidays don't carry forward (row 56). Policy changes are recorded (who, when, before/after). - **Evidence:** e2e run 19 Oct (output/e2e-full-2026-10-19.log), tests `comp-off expires 3 months after it is earned (row 63)`, `service leave: … expires after 12 months`, `floating holidays: … no carry-forward`, `policy set matches the reviewed baseline` ### ISS-587 · Bereavement Leave lost its 10-consecutive-day cap, and every leave type gained new validation defaults - **Module:** Leave → Policies (request validation) · **Severity:** Medium · **Found:** 19 Oct 2026 - **Steps:** Same as the entry above (policy baseline diff). - **Actual:** BLE requestValidationRule: maxConsecutiveDays 10 is gone (now {allowHalfDay: true, minNoticeDays: 0, countCalendarDays: false}). Comp-off, Examination, Floating Holidays, Leave Without Pay, PTO and others gained maxAdvanceDays: 90, countCalendarDays: false and allowHalfDay: true. These look like platform defaults written into stored policies, but they change behaviour: leave can't be requested more than 90 days ahead, and bereavement leave has no upper limit. - **Expected:** Bereavement leave stays capped at 10 consecutive days (sheet row 33). New defaults are visible in the policy form and introduced as a reviewed change, not silently written into existing policies. - **Evidence:** e2e run 19 Oct (output/e2e-full-2026-10-19.log), tests `special leave eligibility (row 33)`, `policy set matches the reviewed baseline` ### ISS-588 · Leave cancellation no longer credits short cancellations back automatically: every cancellation now waits for the manager - **Module:** Workflows → Leave cancellation · **Severity:** High · **Found:** 19 Oct 2026 - **Steps:** Read the leave_cancellation workflow (published definition) and compare with the reviewed baseline of 15 Oct. - **Actual:** The gate_scope step ("How much is being cancelled?") and its transitions were removed: START now goes straight to mgr_cancel_review. Before, gate_scope → credit_ledger when request.days ≤ 3, and → mgr_cancel_review only when request.days > 3. So a 1-day cancellation now needs manager sign-off before the day is credited back. - **Expected:** Cancelling up to 3 days of approved leave credits the balance back immediately; more than 3 days needs the manager (sheet row 17). - **Evidence:** e2e run 19 Oct (output/e2e-full-2026-10-19.log), tests `leave_cancellation matches the reviewed baseline`, `leave cancellation: up to 3 days credited back, more needs the manager (row 17)` ### ISS-589 · Attendance settings gained cycleStartDay: 1 - **Module:** Attendance → Settings · **Severity:** Low · **Found:** 19 Oct 2026 - **Steps:** Read the attendance settings and compare with the reviewed baseline of 15 Oct. - **Actual:** A new field cycleStartDay: 1 appears in the attendance settings (between breakThresholdMins and overtime). No other setting changed. It sets the attendance cycle to start on the 1st; it isn't shown on the settings page that the walkthroughs covered. - **Expected:** Logged so the change is reviewed: if the payroll/attendance cycle should start on another day, set it; otherwise accept it into the baseline. - **Evidence:** e2e run 19 Oct (output/e2e-full-2026-10-19.log), test `capture channels and rules match the reviewed baseline (rows 1–3, 35)` ### ISS-590 · (update to ISS-445) "Your shift" now shows the rostered shift on a working day - **Module:** Attendance → My attendance · **Severity:** Low · **Found:** 19 Oct 2026 - **Steps:** Sign in as QA Employee One on a working day (Mon 19 Oct) and open Leave & attendance → Attendance. - **Actual:** The Your shift panel shows "Operations Shift shift · 9:30 am – 6:45 pm", not "Off today — enjoy the day". ISS-445 no longer reproduces for the shift panel (the holiday part of ISS-445 was not re-checked). - **Expected:** — - **Evidence:** e2e run 19 Oct (output/e2e-full-2026-10-19.log), test `ISS-445 · "Your shift" shows the shift on a working day` passed; screenshot output/evidence/ISS-590-your-shift-2026-10-19.png (right column) ### ISS-591 · (update to ISS-453) A pending Leave Without Pay request can now be withdrawn - **Module:** Leave → My leave · **Severity:** Low · **Found:** 19 Oct 2026 - **Steps:** As QA Employee One, request one day of Leave Without Pay (28 Dec), wait for it to reach QA Manager's inbox, then open My leave and press "Cancel this request" on that card. - **Actual:** No "Protected run" error; the request becomes "cancelled" and its run ends with a "cancelled" event, without any manager decision (run events: created, step_started, step_done, step_started, cancelled). On 14 Oct the same steps were refused with 403 PROTECTED_RUN, and the five probes of that day had to be declined by the manager. ISS-453 no longer reproduces. - **Expected:** — - **Evidence:** e2e run 19 Oct (output/e2e-full-2026-10-19.log), test `ISS-453 · a pending Leave Without Pay request can be withdrawn (row 18)` passed; request reason "e2e: LWP to withdraw mvfj24ae"