Newest first · All dates · Full entries · Raw · Download · CSV
SatelliteHR — QA issues found on 14 Oct 2026
46 issues (10 high · 10 medium · 2 low · 23 auto). Environment: https://qa.satellitehr.com. Source of truth: the append-only ISSUES.md.
| Issue | Description | Module | Submodule | Status | Expected result | Actual result | Total test coverage |
|---|---|---|---|---|---|---|---|
| ISS-576 Auto 14 Oct 2026 | [auto] Server error 500 on GET /api/me/attendance/my/clock | fb-organization | Auto-logged | GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/attendance/my/clock | No e2e test | ||
| ISS-456 High 14 Oct 2026 | (correction to ISS-455) The time-in format is consistent; the bug is that worked hours ignore the corrected time-in | Attendance | regularization | Open | After an approved late-arrival correction, worked hours and day status are recalculated from the corrected time-in to the clock-out (as ISS-423 asked for missed-punch corrections). | ISS-455's claim that 09:45 "should be 04:15Z" was wrong. On this tenant, punches are stored as IST wall time with a Z suffix (ISS-422), so firstIn 09:45:00+00 matches the convention. What the record does show: firstIn 09:45, lastOut 10:49:04, a span of 1.07 h, but workedHours 0.57 and half_day. Worked hours are not recalculated from the corrected time-in; they appear to come from the original punch session. | 1 test (not run yet)tests
|
| ISS-455 High 14 Oct 2026 | A late-arrival correction's time is saved as UTC, so the corrected day shows 0.57 h worked | Attendance | regularization | Corrected by ISS-456 | Times typed in corrections are the employee's local time (IST, the tenant's timezone) and are stored as real UTC (04:15Z). Worked hours run from the corrected time-in to the actual clock-out. Related: ISS-422 (punch times stored as IST wall time with a Z suffix). | The request stores requestedChange.firstIn: "09:45", and the day becomes firstIn 2026-10-13 09:45:00+00, lastOut 2026-10-13 10:49:04+00, workedHours 0.57, half_day. The calendar shows "13 · 0.6h". 09:45 typed in IST is saved as 09:45 UTC (15:15 IST), and the clock-out is compared on a different basis. So the correction meant to fix the day records about half an hour of work. | 1 test (not run yet)tests
|
| ISS-454 Low 14 Oct 2026 | (correction to ISS-451) The refusal is shown, as a toast; only the date picker part stands | Attendance | regularization | Open — see ISS-550 | Days before the joining date are disabled in the picker. | A toast appears within a second and stays several seconds: "Could not send the correction. You hadn't joined yet on 30 Sept 2026 — you joined on 1 Oct 2026." ISS-451's "no message" was wrong: its screenshot was taken 20 s after submitting, after the toast had gone. What remains: the date picker offers days before the joining date, and the drawer itself shows no error once the toast closes. | 1 test (not run yet)tests
|
| ISS-453 High 14 Oct 2026 | A pending Leave Without Pay request can't be withdrawn: "Protected run… forced by the platform tier" | Leave | my leave | Open — reproduces e2e run 14 Oct 2026 | Sheet row 18: an employee can withdraw any pending request at once. A platform-enforced workflow may stop the company from editing or rerouting the run, but not stop the requester from withdrawing it. If withdrawal really isn't allowed, don't offer "Cancel this request", and explain it in plain words. | POST /api/me/workflows/instances/{id}/cancel answers 403 {"code":"PROTECTED_RUN","message":"This run was forced by the platform tier; a company cannot cancel or reroute it."}. Two toasts appear: "Protected run" and "Could not cancel that", in internal wording. The request stays pending with the manager, so the employee's only option is to ask the manager to decline it. Withdrawing pending Floating Holidays works. | 1 test: 1 failtests
|
| ISS-452 Low 14 Oct 2026 | (update to ISS-436) Long leave now reaches the department head, but its 3-day threshold is still not a parameter | Workflows | leave approval | Open — reproduces e2e run 14 Oct 2026 | lv.long_leave_days is listed with its value (3) and source, like the other lv.* parameters, so changing it is a recorded settings change. | Since 14 Oct, gate_long takes the dept_head_approval branch for 3 days and post_ledger for 1 day, which is correct. On the earlier run (8–10 Dec dates) it went straight to post_ledger. The workflow (last edited 11 Sep) still reads request.consecutiveDays >= param:lv.long_leave_days, and lv.long_leave_days is still missing from the 100+ parameters. So the threshold comes from a hidden default that admins can't see or change in Settings. | 1 test: 1 failtests
|
| ISS-451 Medium 14 Oct 2026 | "Correct a day" says nothing when the server refuses the request (e.g. a day before joining); the picker offers those days | Attendance | regularization | Fixed — regression check passes e2e run 14 Oct 2026 | The server's message is shown in the drawer. Days before the joining date are disabled in the picker. | POST /api/me/attendance/regularizations answers 422 {"code":"NOT_EMPLOYED","message":"You hadn't joined yet on 30 Sept 2026 — you joined on 1 Oct 2026."}. The drawer stays open with no message, no error state, and the button returns to normal, so the employee can't tell whether it was sent. The date picker lets them choose days before their joining date. | 1 test: 1 passtests
|
| ISS-450 Medium 14 Oct 2026 | PTO policy changed on the tenant: the 30-day waiting period was replaced by "start next month", and the October credit stays | Leave | policies | Open — reproduces e2e run 14 Oct 2026 | Changes to the policy rules are intended and reviewed, and the 30-day wait (handbook / sheet rows 48–51) is kept or replaced on purpose. Credits that conflict with the current rule are reversed. | "Paid Time Off — handbook 16.1" accrual changed from {rate 1.25, monthly, proration, waitingDays: 30} to {rate 1.25, monthly, proration, startNextMonth: true}. The policy now has no waiting period. The change was not made by the QA walkthroughs or the e2e suite (both only read policies). QA Employee One (hired 1 Oct) still has the October PTO credit of 1.25 posted on 9 Oct. Under the new rule the first credit should be in November, so ISS-446 still reproduces. | 1 test: 1 failtests
|
| ISS-449 14 Oct 2026 | (update to ISS-421) The employee Home page renders again | Self service | Home | Fix confirmed | — | The page renders ("Good morning, QA", Apply for leave, Correct attendance, Days you have, This week). ISS-421 no longer reproduces. The e2e suite now checks it on every PR (e2e/tests/smoke/pages.spec.ts). | No e2e test |
| ISS-448 Medium 14 Oct 2026 | "Ask to swap" spins for about two minutes and the dialog stays open, although the swap request is created | Attendance | shift swap | Open | The swap is sent within a few seconds, the dialog closes and confirms. | Both times the button spun for about 110 s and then returned to "Ask to swap" with the dialog still open and no message. Each request had been created and went to QA Manager's Inbox. Same pattern as the overtime claim (ISS-443) and the WFH form timeout (ISS-438). | No e2e test |
| ISS-447 Medium 14 Oct 2026 | Service Leave's policy form can't show its anniversary rule: blank accrual, "Entitlement can't be negative", list says "—d / year" | Leave | policies | Open — reproduces e2e run 14 Oct 2026 | The form supports the rule it stores: anniversary accrual, days per year of service, a yearly maximum, expiry months, and shows "2 days per year of service, up to 10" in the list. | The list's Entitlement column reads "—d / year". The Edit policy drawer opens with Accrual blank and Entitlement (days / year) empty, flagged "Entitlement can't be negative". The stored rule is {frequency: "anniversary", perYearOfService: 2, maxDays: 10} with carry-forward 10 days expiring after 12 months, but the form has no anniversary option and no per-year-of-service field. Saving the form would overwrite or reject the real rule. | 1 test: 1 failtests
|
| ISS-446 Medium 14 Oct 2026 | PTO credited in the joining month despite the policy's 30-day wait (and shown rounded as 1.3d) | Leave | accrual | Open — reproduces e2e run 14 Oct 2026 | No PTO credit before the waiting period ends (first credit 1 Nov for a 1 Oct joiner); ledger amounts shown to two decimals. | The ledger has "+1.3d PAID-TIME-OFF-PTO · Accrued · 9 Oct 2026 · policy_entitlement:2026-10", i.e. the October credit 8 days after joining. The PTO policy (handbook 16.1) has waitingDays: 30 ("a joiner is credited nothing until they complete 30 days"). The sheet's rule for India is a first credit on the 1st of the month after joining (1 Nov). The ledger also shows 1.25 as "1.3d" while the balance card says 1.25. | 1 test: 1 failtests
|
| ISS-477 Auto 14 Oct 2026 | [auto] Uncaught page error: undefined | al11-shift-swap | Auto-logged | No e2e test | |||
| ISS-476 Auto 14 Oct 2026 | [auto] Server error 500 on GET /api/me/policies/my | al11-shift-swap | Auto-logged | GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/policies/my | No e2e test | ||
| ISS-475 Auto 14 Oct 2026 | [auto] Uncaught page error: undefined | al11-shift-swap | Auto-logged | No e2e test | |||
| ISS-445 Medium 14 Oct 2026 | My attendance says "Off today — enjoy the day" on a working day, and a holiday gets a rostered shift | Attendance | My attendance | Open — reproduces e2e run 14 Oct 2026 | "Your shift" shows today's rostered shift on a working day; bulk assign skips holidays (or warns), and the schedule shows the holiday. | The day card says "Wednesday 14 October · You haven't clocked in yet · General Shift 10:00 AM – 7:00 PM", but the "Your shift" panel next to it says "Off today — enjoy the day". (The same appeared for QA Employee Two on 13–14 Oct.) Also, HR Manager's bulk assign of Operations Shift for weekdays 19–23 Oct put a shift on Tue 20 Oct (Dussehra, a holiday); "Your schedule" shows "Ope…" for the 20th. | 1 test: 1 failtests
|
| ISS-474 Auto 14 Oct 2026 | [auto] Server error 500 on GET /api/me/attendance/my/clock | al10-shift-roster | Auto-logged | GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/attendance/my/clock | No e2e test | ||
| ISS-444 High 14 Oct 2026 | Managers, department heads and HR SPOC are offered Bulk assign and roster edits, but every save is refused (403) with no message | Attendance | Shifts & rosters | Open — reproduces e2e run 14 Oct 2026 | Either give these roles roster rights (the sheet has reporting managers build and assign the roster, and HR SPOC configure shifts), or hide Bulk assign / Upload roster / chip editing for them. In any case, show the refusal in the dialog. | POST /api/company/attendance/roster/assignments returns 403: for the manager and department head "This action needs edit access to attendance" (module: attendance, required: edit); for HR SPOC "You do not have permission to do this" (attendance.shift.manage). The dialog stays open with the button enabled and no error. Nothing is saved. Only qa.hrmanager and qa.hrhead get 200 ({"applied":1}). | 3 tests: 3 failtests
|
| ISS-473 Auto 14 Oct 2026 | [auto] Uncaught page error: undefined | al8-compoff | Auto-logged | No e2e test | |||
| ISS-443 Medium 14 Oct 2026 | Claiming overtime spins for about two minutes and the dialog never closes, although the claim is saved | Overtime & comp-off | Claim comp-off | Open | The claim saves in a few seconds, the dialog closes and confirms; on a timeout, the form says the claim may already be saved. | "Claim it" showed a spinner for about 110 s, then turned back into an enabled "Claim it" with the dialog still open and no message. The claim had been created (e14c7066-1d42-43a3-8204-8c5118b6c3b3, pending, run 70427a48…) and went to QA Manager. A second click would have made a duplicate attempt. | No e2e test |
| ISS-472 Auto 14 Oct 2026 | [auto] Uncaught page error: undefined | al8-compoff | Auto-logged | No e2e test | |||
| ISS-442 Medium 14 Oct 2026 | "HR partner" approvals go to every HR user in the company (14 people), not the employee's HR partner | Workflows | relationship hr_partner | Open | The employee's own HR partner (for Delivery: QA HR SPOC) gets the task. If no HR partner is set, fall back to a defined role, not everyone, and say so in the designer. | Step "HR confirmation" (hr_ot_confirm, assigned via relationship:hr_partner) created 14 pending tasks, one each for every HR Manager, HR Head and HR SPOC in the company plus two Executives and the super admin (e.g. kavya.raghunathan, raju.rastogi, harshit@gomagentic.com, qa.hrspoc, qa.hrmanager, qa.hrhead, aarav.krishnamurthy, vikram.raghavan, admin@opsmaven.test). Any one of them can approve a Delivery employee's claim. | 4 tests (not run yet)tests
|
| ISS-441 High 14 Oct 2026 | "Request comp-off" (earning a day for weekend work) is rejected for having no comp-off balance | Overtime & comp-off | Comp-Off Request workflow | Open — reproduces e2e run 14 Oct 2026 | A request to earn comp-off goes to the reporting manager (and HR head, per the sheet), and on approval credits the day to the Comp-off balance with its 90-day expiry. | The run goes straight from gate_balance (condition employee.balance <= 0) to "No comp-off to spend" and ends rejected: "Your comp-off request cannot proceed — you have no credited comp-off days". It never reaches the manager. The workflow is built for spending comp-off: its approved path posts a leave_debit, so an approved request would lower the balance instead of raising it. | 2 tests: 2 failtests
|
| ISS-471 Auto 14 Oct 2026 | [auto] Uncaught page error: undefined | al6-wfh | Auto-logged | No e2e test | |||
| ISS-440 High 14 Oct 2026 | Balances show a male employee with 182 days of Maternity Leave, and annual leave types credited twice | Leave | balances & accrual | Open — reproduces e2e run 14 Oct 2026 | Gender-restricted types are credited only to eligible employees, and each annual entitlement is credited once per year (Wedding 7, Floating 2, Bereavement 10). | BALANCES · 2026 lists MATERNITY-LEAVE 182d accrued (the policy is "Female only"), alongside PATERNITY-LEAVE 5d. Annual types show about twice the policy: WEDDING-LEAVE 14d (policy 7d/year), FLOATING-HOLIDAYS 4d (policy 2d/year), BLE (Bereavement) 20d (policy 10 days), all as "Accrued" entries dated 5 Oct 2026. The other employees on the first page show Bereavement 0d or 20d, not 10. | 1 test: 1 failtests
|
| ISS-470 Auto 14 Oct 2026 | [auto] Uncaught page error: undefined | al6-wfh | Auto-logged | No e2e test | |||
| ISS-469 Auto 14 Oct 2026 | [auto] Uncaught page error: undefined | al5-leave-cancel-withdraw | Auto-logged | No e2e test | |||
| ISS-439 High 14 Oct 2026 | (follow-up to ISS-437) The manager-approved request with unpaid days ends as "Rejected" after the posting retries run out | Leave | ledger posting | Open — reproduces e2e run 14 Oct 2026 | The request is posted as 1.25 days PTO + 1.75 days loss of pay and ends Approved. A system failure after approval should never look like the manager's rejection. | post_ledger failed again and again ("Insufficient balance: 1.25 available, 3 requested"). At 07:07 IST the engine ran the compensation step reverse_post and completed the run as rejected. The request now reads Rejected although the manager approved it. Nobody rejected it, and the employee isn't told why. | 1 test: 1 failtests
|
| ISS-438 Medium 14 Oct 2026 | Work-from-home submit times out with "Something went wrong" although the request is created (and it is typed "Leave Without Pay") | Leave & time off | Work from home | Open | The submit answers in time (or the form waits for the server instead of a 20 s client timeout), and a WFH request isn't labelled as a leave type. | After 20 s the form shows a red toast "Something went wrong — Request timed out after 20s. The server may be slow or unreachable", and the form keeps its values, inviting a second Send. The request was created anyway: kind: wfh, status pending, run 58c3657b-dfd4-4634-ace9-ffe4534ac90e with a Manager approval task. In Leave → Requests data it carries leaveTypeName: "Leave Without Pay". | No e2e test |
| ISS-468 Auto 14 Oct 2026 | [auto] Uncaught page error: undefined | al5-leave-cancel-withdraw | Auto-logged | No e2e test | |||
| ISS-467 Auto 14 Oct 2026 | [auto] Uncaught page error: undefined | al5-leave-cancel-withdraw | Auto-logged | No e2e test | |||
| ISS-466 Auto 14 Oct 2026 | [auto] Uncaught page error: undefined | al4-leave-approval | Auto-logged | No e2e test | |||
| ISS-437 High 14 Oct 2026 | Approved leave with confirmed unpaid days fails to post: "Insufficient balance" | Leave | ledger posting | Open — reproduces e2e run 14 Oct 2026 | Posting debits 1.25 days of PTO and records 1.75 days as loss of pay, then notifies the employee "approved". | Step post_ledger fails twice with "Insufficient balance: 1.25 available, 3 requested" (it posts units: request with allowNegative: false). The run stays running with a pending failed task, and the request stays Pending for good. The employee is never told. | 1 test: 1 failtests
|
| ISS-436 High 14 Oct 2026 | Leave of three days or more skips the department head (parameter lv.long_leave_days is not defined) | Leave | Annual Leave Approval workflow | Fixed — regression check passes e2e run 14 Oct 2026 | With 3 consecutive days the request goes to Department head approval (sheet row 14: 2 levels for ≥ 3 days). The parameter should exist (default 3), or the designer should refuse to publish a condition that names a missing parameter. | gate_long ("Three days or more?", condition request.consecutiveDays >= param:lv.long_leave_days) chose post_ledger, although consecutiveDays is 3. GET /api/company/workflows/parameters has no lv.* parameter at all, so the department head step can never run. | 1 test: 1 passtests
|
| ISS-465 Auto 14 Oct 2026 | [auto] Uncaught page error: undefined | al4-leave-approval | Auto-logged | No e2e test | |||
| ISS-464 Auto 14 Oct 2026 | [auto] Server error 500 on GET /api/me/inbox | al4-leave-approval | Auto-logged | GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/inbox | No e2e test | ||
| ISS-463 Auto 14 Oct 2026 | [auto] Server error 500 on GET /api/me/attendance/my/clock | al4-leave-approval | Auto-logged | GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/attendance/my/clock | No e2e test | ||
| ISS-462 Auto 14 Oct 2026 | [auto] Uncaught page error: undefined | al4-leave-approval | Auto-logged | No e2e test | |||
| ISS-461 Auto 14 Oct 2026 | [auto] Server error 500 on GET /api/me/leave/my | al4-leave-approval | Auto-logged | GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/leave/my | No e2e test | ||
| ISS-460 Auto 14 Oct 2026 | [auto] Server error 500 on GET /api/me/company-context | al4-leave-approval | Auto-logged | GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/company-context | No e2e test | ||
| ISS-459 Auto 14 Oct 2026 | [auto] Server error 500 on GET /api/me/attendance/my/clock | al4-leave-approval | Auto-logged | GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/attendance/my/clock | No e2e test | ||
| ISS-458 Auto 14 Oct 2026 | [auto] Server error 500 on GET /api/me/policies/my | al4-leave-approval | Auto-logged | GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/policies/my | No e2e test | ||
| ISS-457 Auto 14 Oct 2026 | [auto] Server error 500 on GET /api/me/people/onboarding/tasks/mine | al4-leave-approval | Auto-logged | GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/people/onboarding/tasks/mine | No e2e test | ||
| ISS-456 Auto 14 Oct 2026 | [auto] Server error 500 on GET /api/me/policies/my | al4-leave-approval | Auto-logged | GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/policies/my | No e2e test | ||
| ISS-435 High 14 Oct 2026 | A leave request's workflow stops after the balance check; no manager task is created | Leave | Annual Leave Approval workflow | Open | The Manager approval task is created straight after the balance check, as it was for regularization runs the same night. | The run's events are created → step_started gate_balance (chose mgr_approval) → step_done gate_balance, then nothing. After 20+ minutes there are 0 tasks, openStepNames: [], status running, and nothing in QA Manager's Inbox. The request stays Pending with nobody to act on it. | No e2e test |
| ISS-434 Medium 14 Oct 2026 | Sending an attendance correction can take over two minutes to answer | Attendance | regularization | Open | The submit answers in a few seconds. Workflow start can happen after the response. | POST /api/me/attendance/regularizations gave no response within 120 s. The request was created (Pending, with QA Manager) and the workflow started, so the save had worked, but the form waited the whole time. | No e2e test |
Full entries
ISS-576 · [auto] Server error 500 on GET /api/me/attendance/my/clock
- Module: fb-organization
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/organization/locations
- Request: GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/attendance/my/clock
ISS-456 · (correction to ISS-455) The time-in format is consistent; the bug is that worked hours ignore the corrected time-in
- Module: Attendance / regularization · Severity: High · Found: 14 Oct 2026
- Steps: As ISS-455.
- Actual: ISS-455's claim that 09:45 "should be 04:15Z" was wrong. On this tenant, punches are stored as IST wall time with a Z suffix (ISS-422), so
firstIn 09:45:00+00matches the convention. What the record does show: firstIn 09:45, lastOut 10:49:04, a span of 1.07 h, butworkedHours 0.57andhalf_day. Worked hours are not recalculated from the corrected time-in; they appear to come from the original punch session. - Expected: After an approved late-arrival correction, worked hours and day status are recalculated from the corrected time-in to the clock-out (as ISS-423 asked for missed-punch corrections).
- Evidence: as ISS-455; e2e check in
tests/journeys/al01-al02-attendance.spec.ts(worked hours = lastOut − firstIn)
ISS-455 · A late-arrival correction's time is saved as UTC, so the corrected day shows 0.57 h worked
- Module: Attendance / regularization · Severity: High · Found: 14 Oct 2026
- Steps: As qa.employee2, correct 13 Oct 2026 (half day, clocked out) as "I arrived late for a reason", Actual time in 09:45. QA Manager approves. Read
GET /api/company/attendance/days?from=2026-10-13&to=2026-10-13. - Actual: The request stores
requestedChange.firstIn: "09:45", and the day becomesfirstIn 2026-10-13 09:45:00+00,lastOut 2026-10-13 10:49:04+00,workedHours 0.57,half_day. The calendar shows "13 · 0.6h". 09:45 typed in IST is saved as 09:45 UTC (15:15 IST), and the clock-out is compared on a different basis. So the correction meant to fix the day records about half an hour of work. - Expected: Times typed in corrections are the employee's local time (IST, the tenant's timezone) and are stored as real UTC (04:15Z). Worked hours run from the corrected time-in to the actual clock-out. Related: ISS-422 (punch times stored as IST wall time with a Z suffix).
- Evidence: API rows above; output/evidence/ISS-454-correction-toast.png shows "13 · 0.6h"; e2e
tests/journeys/al01-al02-attendance.spec.ts(missed punch / late arrival test, ISS-455 check)
ISS-454 · (correction to ISS-451) The refusal is shown, as a toast; only the date picker part stands
- Module: Attendance / regularization · Severity: Low · Found: 14 Oct 2026
- Steps: As ISS-451: qa.employee2 asks to correct 30 Sep 2026 (before their 1 Oct joining date).
- Actual: A toast appears within a second and stays several seconds: "Could not send the correction. You hadn't joined yet on 30 Sept 2026 — you joined on 1 Oct 2026." ISS-451's "no message" was wrong: its screenshot was taken 20 s after submitting, after the toast had gone. What remains: the date picker offers days before the joining date, and the drawer itself shows no error once the toast closes.
- Expected: Days before the joining date are disabled in the picker.
- Evidence: output/evidence/ISS-454-correction-toast.png (4 s after submitting)
ISS-453 · A pending Leave Without Pay request can't be withdrawn: "Protected run… forced by the platform tier"
- Module: Leave / my leave · Severity: High · Found: 14 Oct 2026
- Steps: As qa.employee1, apply for 1 day of Leave Without Pay (15 Dec 2026). While it's still pending, My leave → the card → Cancel this request → "Cancel the 15 Dec request? It's pulled back before anyone decides it." → Yes, cancel it.
- Actual:
POST /api/me/workflows/instances/{id}/cancelanswers 403{"code":"PROTECTED_RUN","message":"This run was forced by the platform tier; a company cannot cancel or reroute it."}. Two toasts appear: "Protected run" and "Could not cancel that", in internal wording. The request stays pending with the manager, so the employee's only option is to ask the manager to decline it. Withdrawing pending Floating Holidays works. - Expected: Sheet row 18: an employee can withdraw any pending request at once. A platform-enforced workflow may stop the company from editing or rerouting the run, but not stop the requester from withdrawing it. If withdrawal really isn't allowed, don't offer "Cancel this request", and explain it in plain words.
- Evidence: output/evidence/ISS-453-lwp-withdraw-protected.png; e2e
tests/journeys/al04-al05-leave.spec.ts(ISS-453 test)
ISS-452 · (update to ISS-436) Long leave now reaches the department head, but its 3-day threshold is still not a parameter
- Module: Workflows / leave approval · Severity: Low · Found: 14 Oct 2026
- Steps: e2e: QA Employee One applies for 3 days of PTO (1–3 Dec 2026), the manager approves; read the run's
gate_longstep. Compare withGET /api/company/workflows/parameters. - Actual: Since 14 Oct,
gate_longtakes thedept_head_approvalbranch for 3 days andpost_ledgerfor 1 day, which is correct. On the earlier run (8–10 Dec dates) it went straight topost_ledger. The workflow (last edited 11 Sep) still readsrequest.consecutiveDays >= param:lv.long_leave_days, andlv.long_leave_daysis still missing from the 100+ parameters. So the threshold comes from a hidden default that admins can't see or change in Settings. - Expected:
lv.long_leave_daysis listed with its value (3) and source, like the otherlv.*parameters, so changing it is a recorded settings change. - Evidence: e2e
tests/contract/workflows.spec.ts(ISS-452 test) andtests/journeys/al04-al05-leave.spec.ts("leave of 3 days or more…", now a regression test)
ISS-451 · "Correct a day" says nothing when the server refuses the request (e.g. a day before joining); the picker offers those days
- Module: Attendance / regularization · Severity: Medium · Found: 14 Oct 2026
- Steps: As qa.employee2 (joined 1 Oct 2026), My attendance → Request a correction → Which day 30 Sep 2026 → What happened "I worked from home" → reason → Send for approval.
- Actual:
POST /api/me/attendance/regularizationsanswers 422{"code":"NOT_EMPLOYED","message":"You hadn't joined yet on 30 Sept 2026 — you joined on 1 Oct 2026."}. The drawer stays open with no message, no error state, and the button returns to normal, so the employee can't tell whether it was sent. The date picker lets them choose days before their joining date. - Expected: The server's message is shown in the drawer. Days before the joining date are disabled in the picker.
- Evidence: output/evidence/ISS-451-correction-error-hidden.png; found by the e2e journey "worked from home: manager declines" (14 Oct full run)
ISS-450 · PTO policy changed on the tenant: the 30-day waiting period was replaced by "start next month", and the October credit stays
- Module: Leave / policies · Severity: Medium · Found: 14 Oct 2026
- Steps: e2e suite,
tests/contract/policies.spec.ts("policy set matches the reviewed baseline"), compared with the baseline recorded on 13–14 Oct. The API isGET /api/company/leave/policies. - Actual: "Paid Time Off — handbook 16.1" accrual changed from
{rate 1.25, monthly, proration, waitingDays: 30}to{rate 1.25, monthly, proration, startNextMonth: true}. The policy now has no waiting period. The change was not made by the QA walkthroughs or the e2e suite (both only read policies). QA Employee One (hired 1 Oct) still has the October PTO credit of 1.25 posted on 9 Oct. Under the new rule the first credit should be in November, so ISS-446 still reproduces. - Expected: Changes to the policy rules are intended and reviewed, and the 30-day wait (handbook / sheet rows 48–51) is kept or replaced on purpose. Credits that conflict with the current rule are reversed.
- Evidence: e2e/bug-report/BUGS.md (14 Oct, "New failures": baseline diff
- "waitingDays": 30/+ "startNextMonth": true)
ISS-449 · (update to ISS-421) The employee Home page renders again
- Module: Self service / Home · Severity: — · Found: 14 Oct 2026
- Steps: As qa.employee1 (saved session), open
/company/82628593…/me. - Actual: The page renders ("Good morning, QA", Apply for leave, Correct attendance, Days you have, This week). ISS-421 no longer reproduces. The e2e suite now checks it on every PR (
e2e/tests/smoke/pages.spec.ts). - Expected: —
- Evidence: e2e/test-results (14 Oct run)
ISS-448 · "Ask to swap" spins for about two minutes and the dialog stays open, although the swap request is created
- Module: Attendance / shift swap · Severity: Medium · Found: 14 Oct 2026
- Steps: As qa.employee1, My attendance → Swap a shift → QA Employee Two, 22 Oct 2026, reason → Ask to swap (and again for 21 Oct).
- Actual: Both times the button spun for about 110 s and then returned to "Ask to swap" with the dialog still open and no message. Each request had been created and went to QA Manager's Inbox. Same pattern as the overtime claim (ISS-443) and the WFH form timeout (ISS-438).
- Expected: The swap is sent within a few seconds, the dialog closes and confirms.
- Evidence: AL11 recording (raw part 1, before trimming: 0:25–2:17 and 3:14–5:10)
ISS-447 · Service Leave's policy form can't show its anniversary rule: blank accrual, "Entitlement can't be negative", list says "—d / year"
- Module: Leave / policies · Severity: Medium · Found: 14 Oct 2026
- Steps: As qa.hrmanager, Leave → Policies → "Service Leave — handbook 16.2".
- Actual: The list's Entitlement column reads "—d / year". The Edit policy drawer opens with Accrual blank and Entitlement (days / year) empty, flagged "Entitlement can't be negative". The stored rule is
{frequency: "anniversary", perYearOfService: 2, maxDays: 10}with carry-forward 10 days expiring after 12 months, but the form has no anniversary option and no per-year-of-service field. Saving the form would overwrite or reject the real rule. - Expected: The form supports the rule it stores: anniversary accrual, days per year of service, a yearly maximum, expiry months, and shows "2 days per year of service, up to 10" in the list.
- Evidence: output/evidence/ISS-447-service-leave-form.png
ISS-446 · PTO credited in the joining month despite the policy's 30-day wait (and shown rounded as 1.3d)
- Module: Leave / accrual · Severity: Medium · Found: 14 Oct 2026
- Steps: QA Employee One (QAT-006) was hired on 1 Oct 2026. Leave → Balances → Actions → Balances and ledger.
- Actual: The ledger has "+1.3d PAID-TIME-OFF-PTO · Accrued · 9 Oct 2026 · policy_entitlement:2026-10", i.e. the October credit 8 days after joining. The PTO policy (handbook 16.1) has
waitingDays: 30("a joiner is credited nothing until they complete 30 days"). The sheet's rule for India is a first credit on the 1st of the month after joining (1 Nov). The ledger also shows 1.25 as "1.3d" while the balance card says 1.25. - Expected: No PTO credit before the waiting period ends (first credit 1 Nov for a 1 Oct joiner); ledger amounts shown to two decimals.
- Evidence: output/evidence/ISS-446-pto-credit.png
ISS-477 · [auto] Uncaught page error: undefined
- Module: al11-shift-swap
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Stack: ``
ISS-476 · [auto] Server error 500 on GET /api/me/policies/my
- Module: al11-shift-swap
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/workflows/designer/wf-6b932b
- Request: GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/policies/my
ISS-475 · [auto] Uncaught page error: undefined
- Module: al11-shift-swap
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Stack: ``
ISS-445 · My attendance says "Off today — enjoy the day" on a working day, and a holiday gets a rostered shift
- Module: Attendance / My attendance · Severity: Medium · Found: 14 Oct 2026
- Steps: As qa.employee1 on Wed 14 Oct 2026 (a working day on the General Shift, no leave), open Leave & attendance → Attendance.
- Actual: The day card says "Wednesday 14 October · You haven't clocked in yet · General Shift 10:00 AM – 7:00 PM", but the "Your shift" panel next to it says "Off today — enjoy the day". (The same appeared for QA Employee Two on 13–14 Oct.) Also, HR Manager's bulk assign of Operations Shift for weekdays 19–23 Oct put a shift on Tue 20 Oct (Dussehra, a holiday); "Your schedule" shows "Ope…" for the 20th.
- Expected: "Your shift" shows today's rostered shift on a working day; bulk assign skips holidays (or warns), and the schedule shows the holiday.
- Evidence: output/evidence/ISS-445-off-today.png
ISS-474 · [auto] Server error 500 on GET /api/me/attendance/my/clock
- Module: al10-shift-roster
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc
- Request: GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/attendance/my/clock
ISS-444 · Managers, department heads and HR SPOC are offered Bulk assign and roster edits, but every save is refused (403) with no message
- Module: Attendance / Shifts & rosters · Severity: High · Found: 14 Oct 2026
- Steps: As qa.manager (or qa.depthead, or qa.hrspoc), Attendance → Shifts & rosters → Bulk assign → pick QA Employee One, 19 Oct 2026, Operations Shift → Assign shift.
- Actual:
POST /api/company/attendance/roster/assignmentsreturns 403: for the manager and department head "This action needs edit access to attendance" (module: attendance, required: edit); for HR SPOC "You do not have permission to do this" (attendance.shift.manage). The dialog stays open with the button enabled and no error. Nothing is saved. Only qa.hrmanager and qa.hrhead get 200 ({"applied":1}). - Expected: Either give these roles roster rights (the sheet has reporting managers build and assign the roster, and HR SPOC configure shifts), or hide Bulk assign / Upload roster / chip editing for them. In any case, show the refusal in the dialog.
- Evidence: request/response captured with scratch/CSV/bulk.ts (requestIds e6d9b2e0…, 8c3c586c…, cf339fa9…)
ISS-473 · [auto] Uncaught page error: undefined
- Module: al8-compoff
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Stack: ``
ISS-443 · Claiming overtime spins for about two minutes and the dialog never closes, although the claim is saved
- Module: Overtime & comp-off / Claim comp-off · Severity: Medium · Found: 14 Oct 2026
- Steps: As qa.employee1, Overtime & comp-off → Claim comp-off → 9 Oct 2026, 2 hours, Comp-off, note "Release testing ran late" → Claim it (08:06 IST).
- Actual: "Claim it" showed a spinner for about 110 s, then turned back into an enabled "Claim it" with the dialog still open and no message. The claim had been created (e14c7066-1d42-43a3-8204-8c5118b6c3b3, pending, run 70427a48…) and went to QA Manager. A second click would have made a duplicate attempt.
- Expected: The claim saves in a few seconds, the dialog closes and confirms; on a timeout, the form says the claim may already be saved.
- Evidence: AL8 recording (part 0, 1:02–2:50)
ISS-472 · [auto] Uncaught page error: undefined
- Module: al8-compoff
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Stack: ``
ISS-442 · "HR partner" approvals go to every HR user in the company (14 people), not the employee's HR partner
- Module: Workflows / relationship
hr_partner· Severity: Medium · Found: 14 Oct 2026 - Steps: qa.employee1 claimed 2 h overtime on 9 Oct as comp-off; QA Manager approved (run 70427a48-9815-4c8c-bfca-883d886af5a3).
- Actual: Step "HR confirmation" (
hr_ot_confirm, assigned viarelationship:hr_partner) created 14 pending tasks, one each for every HR Manager, HR Head and HR SPOC in the company plus two Executives and the super admin (e.g. kavya.raghunathan, raju.rastogi, harshit@gomagentic.com, qa.hrspoc, qa.hrmanager, qa.hrhead, aarav.krishnamurthy, vikram.raghavan, admin@opsmaven.test). Any one of them can approve a Delivery employee's claim. - Expected: The employee's own HR partner (for Delivery: QA HR SPOC) gets the task. If no HR partner is set, fall back to a defined role, not everyone, and say so in the designer.
- Evidence: run tasks list (14 × hr_ot_confirm)
ISS-441 · "Request comp-off" (earning a day for weekend work) is rejected for having no comp-off balance
- Module: Overtime & comp-off / Comp-Off Request workflow · Severity: High · Found: 14 Oct 2026
- Steps: As qa.employee2, Overtime & comp-off → Request comp-off ("Worked on a holiday or a day off? Ask for the day back. Once approved it's added to your comp-off balance.") → Day worked Sun 11 Oct 2026, A full day, "Worked Sunday on the release cut-over" → Send request. Request 80bfb86b-16e2-4071-b0f7-e17862252716, run 156f6ab3-0c20-4b3e-b9b2-0a4832e1382b.
- Actual: The run goes straight from
gate_balance(conditionemployee.balance <= 0) to "No comp-off to spend" and ends rejected: "Your comp-off request cannot proceed — you have no credited comp-off days". It never reaches the manager. The workflow is built for spending comp-off: its approved path posts aleave_debit, so an approved request would lower the balance instead of raising it. - Expected: A request to earn comp-off goes to the reporting manager (and HR head, per the sheet), and on approval credits the day to the Comp-off balance with its 90-day expiry.
- Evidence: run events (gate_balance → notify_no_balance → completed rejected)
ISS-471 · [auto] Uncaught page error: undefined
- Module: al6-wfh
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Stack: ``
ISS-440 · Balances show a male employee with 182 days of Maternity Leave, and annual leave types credited twice
- Module: Leave / balances & accrual · Severity: High · Found: 14 Oct 2026
- Steps: As qa.hrmanager, Leave → Balances → Actions for Aarav Krishnamurthy. (EMP-0014, gender male, hired 3 Apr 2023) → Balances and ledger.
- Actual: BALANCES · 2026 lists MATERNITY-LEAVE 182d accrued (the policy is "Female only"), alongside PATERNITY-LEAVE 5d. Annual types show about twice the policy: WEDDING-LEAVE 14d (policy 7d/year), FLOATING-HOLIDAYS 4d (policy 2d/year), BLE (Bereavement) 20d (policy 10 days), all as "Accrued" entries dated 5 Oct 2026. The other employees on the first page show Bereavement 0d or 20d, not 10.
- Expected: Gender-restricted types are credited only to eligible employees, and each annual entitlement is credited once per year (Wedding 7, Floating 2, Bereavement 10).
- Evidence: ledger view "How it moved" (policy_entitlement:2026 entries)
ISS-470 · [auto] Uncaught page error: undefined
- Module: al6-wfh
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Stack: ``
ISS-469 · [auto] Uncaught page error: undefined
- Module: al5-leave-cancel-withdraw
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Stack: ``
ISS-439 · (follow-up to ISS-437) The manager-approved request with unpaid days ends as "Rejected" after the posting retries run out
- Module: Leave / ledger posting · Severity: High · Found: 14 Oct 2026
- Steps: qa.employee1 PTO 17–19 Nov (1.25 paid + 1.75 unpaid confirmed), approved by QA Manager at ~07:00 IST (run 00830afa-6364-438a-8337-d4f49ffaf53b).
- Actual:
post_ledgerfailed again and again ("Insufficient balance: 1.25 available, 3 requested"). At 07:07 IST the engine ran the compensation stepreverse_postand completed the run as rejected. The request now reads Rejected although the manager approved it. Nobody rejected it, and the employee isn't told why. - Expected: The request is posted as 1.25 days PTO + 1.75 days loss of pay and ends Approved. A system failure after approval should never look like the manager's rejection.
- Evidence: run events (failed ×N → reverse_post → completed, status rejected)
ISS-438 · Work-from-home submit times out with "Something went wrong" although the request is created (and it is typed "Leave Without Pay")
- Module: Leave & time off / Work from home · Severity: Medium · Found: 14 Oct 2026
- Steps: As qa.employee2, Leave & time off → Apply → Work from home → 3–4 Nov 2026, reason "Plumber visit at home, will work remotely" → Send request (07:2x IST).
- Actual: After 20 s the form shows a red toast "Something went wrong — Request timed out after 20s. The server may be slow or unreachable", and the form keeps its values, inviting a second Send. The request was created anyway:
kind: wfh, status pending, run 58c3657b-dfd4-4634-ace9-ffe4534ac90e with a Manager approval task. In Leave → Requests data it carriesleaveTypeName: "Leave Without Pay". - Expected: The submit answers in time (or the form waits for the server instead of a 20 s client timeout), and a WFH request isn't labelled as a leave type.
- Evidence: output/evidence/ISS-438-wfh-timeout.png
ISS-468 · [auto] Uncaught page error: undefined
- Module: al5-leave-cancel-withdraw
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Stack: ``
ISS-467 · [auto] Uncaught page error: undefined
- Module: al5-leave-cancel-withdraw
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Stack: ``
ISS-466 · [auto] Uncaught page error: undefined
- Module: al4-leave-approval
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Stack: ``
ISS-437 · Approved leave with confirmed unpaid days fails to post: "Insufficient balance"
- Module: Leave / ledger posting · Severity: High · Found: 14 Oct 2026
- Steps: Same request as ISS-436: PTO 25–27 Nov, 1.25 days paid + 1.75 days unpaid (the employee ticked "I understand 1.75 days will be unpaid"; the request carries
lopDisposition: partial_lop,paidDays: 1.25,lopDays: 1.75). The manager approves. - Actual: Step
post_ledgerfails twice with "Insufficient balance: 1.25 available, 3 requested" (it postsunits: requestwithallowNegative: false). The run staysrunningwith a pending failed task, and the request stays Pending for good. The employee is never told. - Expected: Posting debits 1.25 days of PTO and records 1.75 days as loss of pay, then notifies the employee "approved".
- Evidence: run 97c38853-4ddf-473f-9b6d-5bd31aaf028e events (failed ×2 at post_ledger)
ISS-436 · Leave of three days or more skips the department head (parameter lv.long_leave_days is not defined)
- Module: Leave / Annual Leave Approval workflow · Severity: High · Found: 14 Oct 2026
- Steps: qa.employee2 applied for PTO 25–27 Nov 2026 (3 working days, request 4e2ac7e3-e6c8-43fd-891f-d189b326d225, run 97c38853-4ddf-473f-9b6d-5bd31aaf028e). QA Manager approved.
- Actual:
gate_long("Three days or more?", conditionrequest.consecutiveDays >= param:lv.long_leave_days) chosepost_ledger, althoughconsecutiveDaysis 3. GET /api/company/workflows/parameters has nolv.*parameter at all, so the department head step can never run. - Expected: With 3 consecutive days the request goes to Department head approval (sheet row 14: 2 levels for ≥ 3 days). The parameter should exist (default 3), or the designer should refuse to publish a condition that names a missing parameter.
- Evidence: run events in scratch/CSV (gate_long → post_ledger)
ISS-465 · [auto] Uncaught page error: undefined
- Module: al4-leave-approval
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Stack: ``
ISS-464 · [auto] Server error 500 on GET /api/me/inbox
- Module: al4-leave-approval
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me/leave
- Request: GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/inbox
ISS-463 · [auto] Server error 500 on GET /api/me/attendance/my/clock
- Module: al4-leave-approval
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me/leave
- Request: GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/attendance/my/clock
ISS-462 · [auto] Uncaught page error: undefined
- Module: al4-leave-approval
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Stack: ``
ISS-461 · [auto] Server error 500 on GET /api/me/leave/my
- Module: al4-leave-approval
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Request: GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/leave/my
ISS-460 · [auto] Server error 500 on GET /api/me/company-context
- Module: al4-leave-approval
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Request: GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/company-context
ISS-459 · [auto] Server error 500 on GET /api/me/attendance/my/clock
- Module: al4-leave-approval
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Request: GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/attendance/my/clock
ISS-458 · [auto] Server error 500 on GET /api/me/policies/my
- Module: al4-leave-approval
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Request: GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/policies/my
ISS-457 · [auto] Server error 500 on GET /api/me/people/onboarding/tasks/mine
- Module: al4-leave-approval
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Request: GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/people/onboarding/tasks/mine
ISS-456 · [auto] Server error 500 on GET /api/me/policies/my
- Module: al4-leave-approval
- Found: 2026-10-14
- Page: https://qa.satellitehr.com/company/82628593-49b6-4dad-ad2a-6b9472ab44fc/me
- Request: GET https://satellite-hr-backend-final-restructure.polished-mud-fefe.workers.dev/api/me/policies/my
ISS-435 · A leave request's workflow stops after the balance check; no manager task is created
- Module: Leave / Annual Leave Approval workflow · Severity: High · Found: 14 Oct 2026
- Steps: As qa.employee2@opsmaven.test, Leave & time off → Floating Holidays → 23 Nov 2026 (1 day), note "Family function" → Send request (05:03 IST). Request 47bb8cdc-56be-4d4b-9ab1-cdd72b59ea37, run 2866a544-051e-4106-8a16-ac2098a61a48 (WF-2026-000467).
- Actual: The run's events are
created→step_started gate_balance(chosemgr_approval) →step_done gate_balance, then nothing. After 20+ minutes there are 0 tasks,openStepNames: [], statusrunning, and nothing in QA Manager's Inbox. The request stays Pending with nobody to act on it. - Expected: The Manager approval task is created straight after the balance check, as it was for regularization runs the same night.
- Evidence: GET /api/company/workflows/instances/2866a544-051e-4106-8a16-ac2098a61a48 (saved in scratch/CSV/run.json)
ISS-434 · Sending an attendance correction can take over two minutes to answer
- Module: Attendance / regularization · Severity: Medium · Found: 14 Oct 2026
- Steps: As qa.employee2@opsmaven.test, My attendance → Request a correction → 6 Oct, "I worked from home", reason → Send for approval (AL2 rehearsal, 14 Oct ~00:55 IST).
- Actual:
POST /api/me/attendance/regularizationsgave no response within 120 s. The request was created (Pending, with QA Manager) and the workflow started, so the save had worked, but the form waited the whole time. - Expected: The submit answers in a few seconds. Workflow start can happen after the response.
- Evidence: output/al2-rehearsal.log (first run, "correction refused: no response")