Newest first · All dates · Full entries · Raw · Download · CSV
SatelliteHR — QA issues found on 15 Oct 2026
98 issues (19 high · 51 medium · 27 low). 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-575 Medium 15 Oct 2026 | QA Manager's Home "Headcount by department" card fails: "Couldn't load this right now." | Home | Headcount by department | Open | The card loads (at least the manager's own department), or isn't shown to a role that can't read it. | The card shows only "Couldn't load this right now." (Headcount and Teams tabs present, no data). The same card renders a chart for QA Department Head. Seen in the recording of the General video; the failing request was not captured. It may be a permission refusal for the Reporting Manager role shown as a generic error. | No e2e test |
| ISS-574 Medium 15 Oct 2026 | (update to ISS-529) Home KPI trends are impossible: "Total employees 14 ↑1300% vs last quarter", "Attendance today 0% ↓363% vs 30-day avg" | Home | KPI tiles | Open | Trends that are arithmetically possible (or none when there is no baseline), and a headcount tile that says what it counts (my team / my department / company). | Still reproduces on 15 Oct (recording of the General video). QA Department Head: "Total employees 14 ↑1300% vs last quarter" and "Attendance today 0% ↓363% vs 30-day avg". QA Manager: "Total employees 3" and "Attendance today 0% ↓250% vs 30-day avg". A fall from any average to 0% can't exceed 100%. The headcount tile also differs per role (3, 14, and 34 for admin in ISS-529) with no label saying what it is scoped to. | No e2e test |
| ISS-573 Medium 15 Oct 2026 | (update to ISS-530) Home greeting and Inbox badge say items are waiting while the Pending approvals card says "Inbox zero" | Home | Open | The greeting, the Inbox badge and the Pending approvals card show the same items and count. | Still reproduces on 15 Oct (recording of the General video). QA Department Head: the header says "3 items are waiting in your inbox, and 0 people are out today", the sidebar Inbox badge shows 3, and the Pending approvals card says "Inbox zero — No approvals waiting on you. Requests will appear here the moment they arrive." QA Manager: the header says "4 items are waiting", the badge shows 4, and the card lists one item. Same as ISS-530 (and ISS-052 / ISS-114), now also for the Department Head. | No e2e test | |
| ISS-572 Medium 15 Oct 2026 | The Talent Acquisition offer SOP workflows never run | Workflows | "Offer process › TA SOP)", "Offer letter and acceptance › TA SOP)" | Open | One offer flow that runs, with the HR Head step. | lastRunAt: null on all copies, while offers are drafted, approved and accepted every day. The HR Head step the client expects ("HR Head told: ready for the numbers") exists only in this SOP, so it is never reached; offers go through "Offer Approval" instead (ISS-524). | No e2e test |
| ISS-571 Medium 15 Oct 2026 | The internal "offer released" mail says the candidate has accepted | Recruitment | Templates › TA SOP | Open | A release notice ("Offer released for | Subject "{candidate} has accepted the offer for {title}", body "{candidate} has signed the offer … HR Operations now runs the onboarding". Sent on release, it would tell HR an offer was accepted when it was only sent. (The flow hasn't run yet: ISS-572.) | No e2e test |
| ISS-570 Critical 15 Oct 2026 | Super admin's workflow outbox returns other companies' rows and raw SQL with parameters | Workflows | Ops outbox | Open | Only this company's rows; no SQL or parameters in API responses. | Rows with companyId: null and 01a09014-64ed-… (not Ops Maven's 82628593-…), with lastError holding full SQL text and its parameters. A company-level admin can read another tenant's outbox data and the platform's SQL. | No e2e test |
| ISS-569 Low 15 Oct 2026 | Three job posts are live on the careers site with an empty description | Recruitment | posting | Open | Existing live posts without a description are flagged or unpublished. | Live with no description. Publishing now requires one (SHR-055 fixed), but posts published before the rule were left as they are. | No e2e test |
| ISS-568 Low 15 Oct 2026 | Past interviews stay "scheduled · past — record the outcome" for days with no way to complete them | Recruitment | interviews | Open | A past interview can be closed as held (or is closed once scorecards are in), so pipelines don't show stale "scheduled" rows. | All still scheduled. The recruiter can only Reschedule / Cancel / No-show; completion depends on every panel scorecard. | No e2e test |
| ISS-567 Medium 15 Oct 2026 | Scorecard answers are stored under keys that don't match the interview's questions | Recruitment | scorecards | Open | Answers keyed to the interview's own questions; one default set. | Cards hold answers tech_gaps, tech_depth, tech_approach, beh_concerns, beh_ownership, beh_communication ("the default six" in Settings) while the same interviews list questions technical_skills, communication, body_language, job_change_reason (the dialog's default four). Answers can't be paired with their questions; Settings and the dialog disagree on the default set. | No e2e test |
| ISS-566 Medium 15 Oct 2026 | Candidates can't be edited or deleted, so a wrongly parsed name is permanent | Recruitment | candidates › Talent pool | Open | Recruiters can correct a candidate's details and remove a record created in error. | No screen to edit a candidate; the API has no /candidates/{id} route (404 for all three). Pool records only age out via retention (12 months inactive). Wrong names keep going out in emails (ISS-518, ISS-521). | No e2e test |
| ISS-565 High 15 Oct 2026 | Interview reminder says "tomorrow" but goes out at booking time for a same-day interview, sometimes after it started | Recruitment | Interview round › TA SOP | Open | No "tomorrow" reminder for a same-day interview; one reminder mechanism at a sensible lead time. | The SOP's "The day before the interview" timer is already past, so the reminder fires at once and says "is tomorrow": Lavanya Y sent 10:41 UTC for a 10:42 UTC interview; "Professional Summary" sent 01:56 UTC for an interview that started at 01:55; "Work Experience" sent 15:32:16 for 15:32. Two reminder mechanisms exist (built-in "Reminder: your interview tomorrow — X" and the SOP "Your interview for X is tomorrow"), so candidates can get both. | No e2e test |
| ISS-564 Low 15 Oct 2026 | Requisition justification refuses a colon or brackets; raise-options lists no locations although submit requires one | Recruitment | Requisition API | Open | Ordinary punctuation allowed; raise-options lists what the form needs. | 400 "Justification: Letters, spaces and sentence punctuation only — remove 2." (the colon and the bracket count as non-sentence punctuation). raise-options returns no locations. | No e2e test |
| ISS-563 Low 15 Oct 2026 | Inbox "Send back for changes" didn't answer for 2+ minutes although the requisition was already returned | Inbox | requisition | Open | The action confirms within a few seconds. | No response after 120 s; the requisition's status had changed within seconds on the server. Same pattern as ISS-448 / ISS-443 / ISS-438. | No e2e test |
| ISS-562 Low 15 Oct 2026 | View-only HR SPOC is offered Edit on a requisition, which then fails with 403 | Recruitment | Requisition panel | Open | No Edit for view-only roles. | The API gives canEdit: true; the Edit button is offered; PATCH → 403 "recruitment.requisition.manage". | No e2e test |
| ISS-561 Medium 15 Oct 2026 | Any manager can raise a requisition for any position in any department (CEO, CTO, HR Head…) | Recruitment | Raise requisition | Open | A manager raises requisitions for their own department's positions (HR can raise for any). | All 14 positions are offered, including CEO, CTO, HR Head and VP-HR, and can be raised; only the hiring-manager list follows the department. | No e2e test |
| ISS-560 High 15 Oct 2026 | Requisition submit isn't atomic: an interrupted submit leaves it "Pending approval" with no approval run, for good | Recruitment | Requisition | Open | Either pending with a run, or still a draft. | Status pending_approval, workflowInstanceId: null, /chain → {steps: []} for 13+ minutes; the panel says "Approval chain · Awaiting … No approval workflow is set up for this yet." Nobody can ever approve it (cancelled by QA). The submit itself takes 15–25 s, which makes interruption likely. | No e2e test |
| ISS-559 Medium 15 Oct 2026 | Leave Overview totals count WFH and cancellation records as Leave Without Pay | Leave | Overview › /api/company/leave/reports | Open | WFH and cancellations excluded from leave totals. | "Leave Without Pay 155 days" of 244 approved days. Most of it is WFH requests stored with type LWP (ISS-438) plus approved cancellation records, so company leave totals are inflated. | No e2e test |
| ISS-558 Medium 15 Oct 2026 | Leave is accepted for dates after the employee's last working day | Leave | Exit | Open | Refused: the date is after the last working day. | Accepted and sent to QA Manager (request a8bdf591…, run 2ef1d972…); withdrawn by QA. | No e2e test |
| ISS-557 Medium 15 Oct 2026 | "Who's off soon" and the team calendar list cancellation records and WFH as time off | Leave & time off | Who's off soon › GET /api/me/leave/team-calendar | Open | Only approved leave still in force. | "QA Employee One 26–30 Oct", "26 Oct", "28–29 Oct", "29 Oct – 3 Nov". These are approved cancellation records (e.g. 63dc5201…, kind cancellation; the original LWP afacfb92… is Cancelled) and WFH requests (4490e31a…). Colleagues are told someone is off when they aren't. | No e2e test |
| ISS-556 Medium 15 Oct 2026 | A leave cancellation run hung at "Cancellation confirmed" for 30+ minutes; the cancellation stayed Pending | Leave | Leave Cancellation workflow | Open | The run finishes; the cancellation shows Approved and the employee is told. | Events gate_scope → credit_ledger (done) → step_started notify_cancel_done, then nothing for 30+ minutes. The day was credited and the leave showed Cancelled, but the cancellation request stayed Pending (it would block later actions on those dates). A second identical cancellation 20 min later finished normally, so it is intermittent. Withdrawn by QA. | No e2e test |
| ISS-555 Medium 15 Oct 2026 | Every half day is stored as "first half"; the requested half is ignored | Leave API | Open | dayPart: "second_half" stored (the request detail and CSV already have "Day part"). | 201, units 0.5, stored dayPart: "first_half". | No e2e test | |
| ISS-554 High 15 Oct 2026 | "Just a half day" switch can't be turned on, so half-day leave can't be applied from the UI | Leave & time off | Apply | Open | The switch turns on, the summary reads 0.5 day, and the request is sent as a half day. | The switch stays aria-checked="false"; no day-count?halfDay=true call is made; the summary stays "1 day". Only the API (halfDay: true) creates a half day. | No e2e test |
| ISS-553 Low 15 Oct 2026 | Muster "Leave" total counts approved leave that hasn't happened yet; Absent is always 0 | Attendance | Calendar › Download muster | Open | Totals up to the report date; unpunched working days without leave counted as absent. | Ananya Iyer (Demo) has Leave = 18, which includes approved leave 16–31 Oct. Absent = 0 for everyone because unpunched working days are blank (GAPS row 3). | No e2e test |
| ISS-552 Low 15 Oct 2026 | Withdrawn corrections are stored as "rejected"; the list shows them as "upcoming" | Attendance | My corrections | Open | Status "withdrawn" (as shift swaps use) and one chip. | API regularizations[].status: "rejected". The list shows "Missed punch · 7 Oct / upcoming / Withdrawn by you / Withdrawn", although 7 Oct is past. Declined items show a lowercase "rejected" chip and a "Rejected" chip together. | No e2e test |
| ISS-551 High 15 Oct 2026 | (update to ISS-423) A full day stays "Half day" after an approved correction | Attendance | My attendance › muster | Open | Present. | Still reproduces on 15 Oct: workedHours: 10.5, 2 h overtime, dayStatus: "half_day"; the muster counts it as HD. Payroll would dock half a day from someone who worked 10.5 hours. | No e2e test |
| ISS-550 Low 15 Oct 2026 | (update to ISS-454) The attendance calendar still offers 21 days before the joining date for correction | Attendance | My attendance | Open | Days before joining aren't offered. | Still reproduces on 15 Oct: all 21 September working days read "no attendance recorded — request a correction"; the server refuses them later (NOT_EMPLOYED). | No e2e test |
| ISS-549 Low 15 Oct 2026 | Admin role (qa.admin) can't open any Attendance page | Attendance | permissions | Open | Clarify which roles download attendance reports and rosters, and grant them. | "This page is not yours to see" on all three. Super admin and HR Manager can open them. SHR-065/066 were raised by an admin, so either the role is meant to have these pages or the reporter's role needs clarifying. | No e2e test |
| ISS-548 Medium 15 Oct 2026 | Roster download and template put default-shift people on "General Shift" on Saturday and Sunday, and the template is pre-filled with every real employee | Attendance | Shifts & rosters | Open | Weekly offs exported as OFF; a template with headers and an example, not the live roster. | "EMP-9909, Abhishek Kumar, 2026-10-17, General Shift, Default shift" and the same for Sunday, for everyone on the default shift, while rostered people show "OFF, Day off" and attendance shows weekly_off. The template holds every employee's real current week (63 × 7 rows). Uploading it unchanged would roster default-shift people to work weekends. | No e2e test |
| ISS-547 Medium 15 Oct 2026 | (update to ISS-422) Clock and punch times still carry a "Z" but hold IST wall-clock time | Attendance API | Open | Real UTC, or an explicit +05:30 offset. | Still reproduces on 15 Oct: "now":"2026-10-15T00:37:35Z"; punches occurredAt "2026-10-15T00:35:23Z"; attendance rows firstIn "2026-10-15 00:35:23+00". Anything that reads these as UTC (exports, payroll, integrations) is 5½ hours off. See ISS-455/456. | No e2e test | |
| ISS-546 Medium 15 Oct 2026 | Clock card sometimes doesn't update after clocking in, inviting a double punch | Attendance | My attendance | Open | The card switches to "On the clock since …" with Clock out as soon as the punch is saved. | In 2 of 5 tries the card still read "You haven't clocked in yet / Clock in" (or "Clocked out at … / Clock in again") 4–6 s after POST /api/me/attendance/my/clock/punch returned 201. A reload showed the right state. An employee who clicks again punches twice. | No e2e test |
| ISS-545 Medium 15 Oct 2026 | Resignation notification links to the internal workers.dev host and the Inbox, not the exit | Notifications | ntf-resignation-submitted | Open | A link on the tenant's own host that opens the exit case. | "Open the exit: https://satellite-hr-frontend-final-restructure.polished-mud-fefe.workers.dev/company/…/me/inbox". The link uses the internal Cloudflare host instead of qa.satellitehr.com (the session isn't there, so the recipient lands on a sign-in) and goes to the Inbox, not the exit. | No e2e test |
| ISS-544 Low 15 Oct 2026 | Exit payroll lock date can fall before the exit is raised | Lifecycle | Offboarding | Open | The lock date isn't before the exit date, or HR is warned that payroll for the period may already be locked. | payrollLockDate: 2026-10-10 ("five days before the last day"), already in the past when the exit is created; nothing warns. | No e2e test |
| ISS-543 Medium 15 Oct 2026 | Exit approvals are routed to single non-HR or test accounts: "Stay conversation" override to Test HR Head, termination legal gate to Vikram Raghavan | Workflows | Exit › Termination | Open | Exit steps go to the employee's own HR owner / the HR Head group and the manager, not to one arbitrary account. | Every HR-raised resignation puts the "Stay conversation recorded" override on the HR Head role and it went to Test HR Head (01a11a4f…), not QA HR Head or Kavya. A termination's first gate "HR Legal validated" went to Vikram Raghavan via relationship:role:executive, and its legal-review notice fired at once. The reporting manager has no task at this stage, only notifications. | No e2e test |
| ISS-542 Low 15 Oct 2026 | Duplicate active workflow definitions on the same trigger (probation, offer, interview, joiner) | Settings | Workflows | Open | One active definition per trigger, or a clear rule for which copy runs. | Two active "Probation confirmation" (2c517c16…, 86c7dba4…), both on confirmation.due, and two active "Probation Confirmation Review" (67afdc2d…, 0a8b7df0…). Two active "Offer Approval", "Interview round (TA SOP)", "Offer process (TA SOP)", "Offer letter and acceptance (TA SOP)" and "Joiner" (platform + company copies; only the company copies are seen running). If both probation flows fire, one probation raises two questionnaires (not observed: nothing fell due today). Related: ISS-176. | No e2e test |
| ISS-541 Medium 15 Oct 2026 | Running confirmation reviews have an unresolved manager and send the HR step to "any one of 14", non-HR people included | Lifecycle | Confirmation | Open | The review goes to the employee's reporting manager, then the department head, then the HR Head (SHR-090). | MANAGER "—"; "Part of this chain has no approver — Manager's recommendation (Primary Manager: unresolved)". The HR step goes to any one of 14: Durgesh, Vikram Raghavan, HR Ops SPOC Testing, Test HR Head, QA HR SPOC, QA HR Manager, QA HR Head, Raju Rastogi, HR Manager Test(), Aarav Krishnamurthy., Harshit Bhalla, Anant, Kavya Raghunathan, Ops Maven. Related: ISS-087, ISS-088. | No e2e test |
| ISS-540 Low 15 Oct 2026 | Joiner panel's document drop accepts only .pdf and .png, so the checklist's own "HD photograph" (JPEG) can't be uploaded | Lifecycle | Onboarding panel | Open | The same file types in both places, at least JPEG. | ".pdf,.png · up to 2MB each". Recruitment → Pre-onboarding accepts .pdf, .docx, .txt, .jpg, .jpeg and .png. | No e2e test |
| ISS-539 Low 15 Oct 2026 | Withdrawn exits are counted as "early exits moved to Offboarding" | Lifecycle | New joinees | Open | Only exits that are still open or completed. | The banner went 5 → 7 → 8 as QA's three withdrawn FB Test exits were added. Most exits it counts are withdrawn (Ananya Sharma, Deepak Chauhan, Abhishek Kumar, Durgesh ×2…). | No e2e test |
| ISS-538 Medium 15 Oct 2026 | New joinees lists people far outside the 7-day window and some twice; the orientation attendee picker repeats them | Lifecycle | New joinees; Orientation › Schedule session | Open | Only people within their first 7 days, once each; duplicate onboarding records cleaned up. | Joiners on day 8, 9 and 12 are listed, and Meghana Iyengar at day 527 (hire date 2025-05-05). Vinay Yenduri, Phase Flowtest and Abhishek Kumar have duplicate onboarding records and appear twice in New joinees and in both attendee pickers. | No e2e test |
| ISS-537 Medium 15 Oct 2026 | Dates and relative times are worked out in UTC, so they're a day off after midnight IST | Lifecycle | New joinees; Leave › My leave; Recruitment › requisition SLA › also ISS-519, ISS-547 | Open | Dates, day counts and SLAs computed in the tenant's time zone (Asia/Kolkata). | (a) "Starts in 1d" on the joining day (API daysIn:-1); UX-011 still open. (b) "Waiting for approval · sent yesterday" (submittedAt 2026-10-14 19:20 UTC). (c) "Two business days" from Thu 15 Oct 01:15 IST → dueAt 2026-10-18T19:45Z, a Sunday in UTC (shown as Mon 19 Oct 01:15 IST). Same root as the interview reminder in UTC (ISS-519) and punch times (ISS-547). | No e2e test |
| ISS-536 High 15 Oct 2026 | HR Manager, HR SPOC and Admin can't apply an onboarding checklist: 403 templates.view | Lifecycle | Onboarding | Open | HR Ops roles that run onboarding can pick and apply checklists. | GET /api/company/templates?kind=checklist&status=active → 403 requiredPermission templates.view. The Checklist picker shows "None (unavailable)"; "Use checklist" reads "pre-boarding-stakeholder-checklist (unavailable)"; Edit template shows "(unavailable)". Only the HR Head and the super admin can apply checklists, which is why HR Ops SPOC (the SHR-033 reporter) sees 0/0. | No e2e test |
| ISS-535 Medium 15 Oct 2026 | 10 of 14 positions have no employee class (hiring into them is blocked), the CEO is "Operations", and converted hires carry class "standard" with no manager | Organization | Positions; Recruitment › Pre-onboarding › Convert | Open | Every position has a class (CEO = Management); conversion applies the same class and manager rules as the form; old records repaired. | HR Manager, CTO, Compliance Officer, Recruiter and 6 more show "Class not set"; the New employee form says "This position has no employee class yet" and blocks hires into them. The CEO position is classed Operations, so a CEO would need a manager. Employees converted from recruitment 25 Sep – 8 Oct (Debarghya Das, Vinay Kumar, Abhishek Kumar, Phase/Checklist/Preboarding/Onboarding Flowtest, Probe Candidate) have class "standard" (not one of the five), no manager and, for several, an empty work email. | No e2e test |
| ISS-534 Medium 15 Oct 2026 | Import and roster-upload previews mark rows "Ready" that the form or server refuses | Employees | Import CSV › Excel; Attendance › Shifts & rosters › Upload roster | Open | The preview applies the same rules as the form and server, so bad rows are flagged before import. | (a) All 6 rows "Ready" ("Import 6 employees"); the preview checks only references and formats and makes no API call. Whether the server refuses them on Import was not tested (it would create employees). (b) "Ready"; after Upload: "0 saved · 1 refused by the server — Unknown employee number". | No e2e test |
| ISS-533 Medium 15 Oct 2026 | Employees list says "Can sign in" for 12 people who never accepted their invitation and 2 with no account | Organization | Employees › Sign-in column) vs Settings › Users | Open | One state: "Invited — waiting for first sign-in" until the person signs in; "No login" when there's no account. | Employees list: "Can sign in" (loginStatus: active). Settings → Users: Invited, "Waiting on a first sign-in". Same for Aditya Ranganathan, Anant, Meera Kulkarni, Neera bv.aj, Onboarding Management, Pramod Singh, Probe Leaver (Demo), Rhea Menon (Demo), Ritika Chourasia. Abhishek Kumar and Kabir Anand show "Can sign in" with no account in this company. The re-send invitation API answers status: "active" for an invited account. This is how "credentials not generated" (SHR-006/031) looks to HR. | No e2e test |
| ISS-532 Medium 15 Oct 2026 | An employee created by mistake can't be deleted or voided; removing a started onboarding strands them in Pre-boarding, where they can't be exited | Organization | Employees › Lifecycle | Open | A way to void a record created in error before any payroll or attendance exists; removing onboarding restores the previous status. | Actions offers only Edit profile, Change manager, Offboard…. No DELETE route (404). PATCH status exited / anonymised / pre_boarding → 409 "This status change must use the employee lifecycle module" (or INVALID_LIFECYCLE_TRANSITION). A record created with "Generate login" off still gets a (disabled) user account. Start onboarding flips the employee to Pre-boarding; removing the onboarding leaves them in Pre-boarding, and a Pre-boarding employee can't be exited (400 INVALID_REFERENCE "Employee is unavailable for exit"). The only way out is a full exit workflow with approvals on real accounts. | No e2e test |
| ISS-531 Medium 15 Oct 2026 | Notifications: only the newest 50 can ever be read; paging parameters are ignored | Notifications | bell, GET /api/company/notifications | Open | All notifications, paged. | Always the newest 50. The bell has no "load more". Admin has 689 unread and can see 50. | No e2e test |
| ISS-530 Medium 15 Oct 2026 | (update to ISS-052 / ISS-114) Home greeting, sidebar badge and Pending approvals card still disagree | Home | Open — see ISS-573 | The same number everywhere. | Still reproduces on 15 Oct: the greeting said "3 items are waiting in your inbox" while the card showed "Inbox zero"; later the greeting and the sidebar said 4 while the card listed one item. | No e2e test | |
| ISS-529 Medium 15 Oct 2026 | Admin and manager Home stats are wrong: "Total employees 34" with 63 active, and "250% vs 30-day avg" | Home | admin, manager | Open — see ISS-574 | One consistent headcount; comparisons that are arithmetically possible, or none. | Admin: "Total employees 34 · 209.1% vs last quarter"; the Headcount growth chart's October value is 42; Reports → Employees by status shows 63 active (88 in all); the employees API returns 88 rows. Attendance today: "0% ↘ 250% vs 30-day avg" (manager), "0% / 229%" (admin), which is impossible. | No e2e test |
| ISS-528 High 15 Oct 2026 | People pickers silently stop at 20 or 50 people: Reports to, orientation Presenter, Start exit | Organization | New employee; Lifecycle › Orientation; Lifecycle › Offboarding | Open | Every eligible person can be picked, with server-side search. | (1) Loads manager-options?limit=20 and stops at "QA HR Manager"; QA Manager, Vikram Raghavan and others can't be chosen as manager. (2) Uses employees?limit=50 (34 offered); typing filters only what was loaded, so "FB Test Joiner" and every QA persona can't present. (3) Same limit=50: 36 of 70 active employees offered; QA Employee One/Two, QA Manager, Vikram Raghavan and every recent hire are missing (the API accepts them). No hint that the list is incomplete. | No e2e test |
| ISS-527 High 15 Oct 2026 | Employee profile shows "No position / No location / No manager" for everyone past the first 50 names | Organization | Employees › profile › every route in: list, global search, links from Lifecycle | Open | The profile shows the record's own position, location, jurisdiction and manager for every employee. | Header "No position · Operations / No location"; Employment POSITION —, DEPARTMENT —, LOCATION —, JURISDICTION —; Reporting lines "No manager — this person is at the top of the tree. Their leave has nowhere to route." GET /api/company/people/employees/ | No e2e test |
| ISS-526 High 15 Oct 2026 | Tracker SHR-120 · Four offers are waiting for approval and none is in the HR Head's Inbox; some have waited on a non-HR approver for over a week | Recruitment | Offer approval › Inbox | Open | Tracker SHR-120: a submitted offer appears in the HR Head's Inbox for approval. | QA HR Head has 0 pending offer items. OFR-2026-0079, 0072, 0066 and 0049 wait on the requisition's hiring manager (Test Hiring Manager, Aarav Krishnamurthy) or the HR-admin fallback (ISS-524). OFR-2026-0066 has waited on Aarav since 7 Oct, 0072 since 12 Oct, 0049 since 28 Sep; nothing escalates to HR. | No e2e test |
| ISS-525 Medium 15 Oct 2026 | Tracker SHR-060 · Offer approval item shows role and joining date only: no department, entity or CTC | Inbox | offer approval | Open | Tracker SHR-060: the approver sees role, department, entity, CTC and date of joining. | "Viveka Massey · OFR-2026-0079 · Delivery Manager · joining Monday 26 October". No department, no entity (OpsMaven Services Pvt. Ltd.), no CTC. The Inbox side panel has a detail block only for requisitions (talent_requisition), none for offers. Related: ISS-078. | No e2e test |
| ISS-524 High 15 Oct 2026 | Tracker SHR-059 · Offer approval goes Hiring manager → HR review → Finance; it never goes to the HR Head | Recruitment | Offer Approval workflow | Open | Tracker SHR-059: every offer approval goes to the HR Head, whatever the department. | Steps: relationship:requisition_hiring_manager → HR review → Finance signs the compensation; no step goes to the HR Head role. OFR-2026-0079 waits on Test Hiring Manager, 0072 and 0066 on Aarav Krishnamurthy, 0049 (super-admin offer) on the HR-admin fallback. The TA SOP flow that has an HR Head step never runs (ISS-572). | No e2e test |
| ISS-523 Medium 15 Oct 2026 | Tracker SHR-126 · The recruiter sees only "Submitted · Hold · 4/5"; panel answers and comments are shown nowhere | Recruitment | candidate profile › Interviews | Open | Tracker SHR-126: the recruiter and permitted users see the full feedback: ratings, written answers, comments. | Each panelist shows only "Submitted · Hold · 4/5". The API gives the recruiter the full card (scores, answers, recommendation, comments, blind:false), but the UI never reads /interviews/{id}/scorecards. | No e2e test |
| ISS-522 Low 15 Oct 2026 | Tracker SHR-113 · Interviewers get a same-day in-app "feedback due" note, not an email after 24 hours | Recruitment | Interview round › TA SOP | Open | Tracker SHR-113: an email reminder to the interviewer when feedback isn't in within 24 hours. | The workflow waits for "Interviewer's feedback recorded by the end of the day" and sends in-app notifications "Your feedback on X is due today" / "… is overdue". It's a notification template, not an email, and QA Manager's email channel for "Scorecard pending" is off. Timing is same day, not 24 h. | No e2e test |
| ISS-521 Medium 15 Oct 2026 | Tracker SHR-102 · Résumés that start with a section heading are saved under that heading ("Professional Summary"), and candidates are emailed "Dear Professional Summary" | Recruitment | résumé parsing | Open | Tracker SHR-102: the parser takes the person's name, not a heading. | Saved as "PROFESSIONAL SUMMARY" and "Professional Summary" (a "CURRICULUM VITAE" heading is skipped correctly). Live data: candidates named "Professional Summary" (×2) and "Work Experience"; emails went out as "Dear Professional Summary," and "Dear Work Experience,". The names can't be corrected (ISS-566). | No e2e test |
| ISS-520 Medium 15 Oct 2026 | Tracker SHR-081 · Interviewer notifications link to /inbox?interview= | Notifications | Inbox | Open | Tracker SHR-081: the notification opens the interview and its feedback form. | The Inbox ignores the parameter and shows the plain "Approvals inbox"; there is no Hiring item and no way to reach the interview or the scorecard from it. | No e2e test |
| ISS-519 High 15 Oct 2026 | Tracker SHR-078 · Candidate interview reminders print the time in UTC (10:42 am for a 4:12 pm IST interview) | Recruitment | Interview round › TA SOP) emails | Open | Tracker SHR-078: times in candidate and panel emails in the role's time zone (IST here), with the zone named. | The 14 Oct email reads "tomorrow at 14 Oct 2026, 10:42 am" for an interview at 10:42 UTC = 4:12 pm IST. The 9–13 Oct emails print the raw value "2026-10-13 10:50:00+00". The run context has _timezone: Asia/Kolkata, ignored. The Schedule dialog claims "Times are sent in the role's local time zone". A candidate who trusts the email turns up 5½ hours early or misses the interview. Slot-proposal and booking emails aren't in the sent log, so their format wasn't seen. | No e2e test |
| ISS-518 Medium 15 Oct 2026 | Tracker SHR-022 · A résumé line "Name: Kabir" is saved as the candidate name "Name: Kabir", so every email greets "Hi Name: …" | Recruitment | résumé parsing › candidate emails | Open | Tracker SHR-022: the parser drops labels like "Name:"; the greeting uses the real name. | The candidate is saved as "Name: Kabir Fbtest". The "Application received" template itself is right (Hi {candidate.full_name},). Live: the 12 Oct offer reminder reads "Hi Name: Mahesh Lebaku," (candidate "Name: Mahesh Lebaku", who has offer OFR-2026-0062). Names can't be corrected afterwards (ISS-566). | No e2e test |
| ISS-517 Low 15 Oct 2026 | Tracker SHR-111 · An uploaded Word JD's H1 title arrives as literal "…" text | Recruitment | Raise requisition › Upload JD | Open | Tracker SHR-111: the uploaded JD keeps its layout, title included. | H2, bullets, numbers and bold come through. The H1 is HTML-escaped: the editor shows Delivery Manageras text (/posts/description-text response html starts with <h1>). | No e2e test |
| ISS-516 Low 15 Oct 2026 | Tracker SHR-074 · After approval the hiring manager can still post the job, start sourcing and edit the pre-onboarding checklist | Recruitment | Requisition panel | Open | Tracker SHR-074: the hiring manager sees the approved requisition read-only; posting and sourcing are the recruiters'. | The notice and the approval details (steps, approvers, times) are there. But the panel offers "Post this role", "Start sourcing" and "Pre-onboarding checklist · Tweak items" (from draft to approved), because QA Manager has recruitment.job.manage and the panel treats him as the recruiting team. | No e2e test |
| ISS-515 Medium 15 Oct 2026 | Tracker SHR-073 · Recruiters are never told about approvals; the "department head approved" notice names the wrong next step; "Recruitment Head" resolves to nobody | Recruitment | Requisition notifications › workflow | Open | Tracker SHR-073: after department-head approval, the HR Head, hiring manager and all recruiters are told, with the real next step. | On department-head approval the hiring manager and HR Head get "Department head approved: REQ-… — now with HR for the final decision"; the next step is actually Management. QA HR Manager (recruiter) got nothing at any point. After final approval the HR Head gets no notice, and the notice to the "Recruitment Head" relationship resolved to nobody (event warning some recipients resolved to nobody (6b92f0fb…)). The sub-process "Recruitment Head names the recruiter" falls back to hr_admin Vikram Raghavan ("nobody here holds this role") on every approved requisition. | No e2e test |
| ISS-514 Medium 15 Oct 2026 | Tracker SHR-072 · Returned requisition shows "Changes requested" now, but its progress says "Approved", and the manager gets two notices blaming the wrong person | Recruitment | Requisition panel › notifications | Open | Tracker SHR-072: the returned requisition shows the step that returned it, one notice naming the approver, and their comment. | Fixed: status "Changes requested" with "Sent back by the approver — " | No e2e test |
| ISS-513 Low 15 Oct 2026 | Tracker SHR-054 · Hiring manager's "approved" notice claims a salary band was recorded; email delivery can't be seen | Recruitment | Requisition notifications | Open | Tracker SHR-054: the hiring manager gets an accurate approval notice by email and in-app. | In-app: "FB Test Req … is approved … with the salary band, the panel and the job description recorded". Requisition v3 records no salary band. Whether the email is sent can't be observed on QA (no outbox / channel API). | No e2e test |
| ISS-512 Low 15 Oct 2026 | Tracker SHR-049 · The hiring-manager list is now limited to the department, but the server accepts a hiring manager from any department | Recruitment | Requisition API | Open | Tracker SHR-049: the server refuses a hiring manager outside the position's department (400). | 201, REQ-2026-0156 created (cancelled by QA). The form is fixed: after "Delivery Manager" it offers 13 Delivery people. | No e2e test |
| ISS-511 Low 15 Oct 2026 | Tracker SHR-122 · Special leave types with nothing credited are offered on the form with "0 left" | Leave & time off | Apply › balance cards | Open | Tracker SHR-122: special types appear only once HR has credited them. | Bereavement, Examination, Paternity and Wedding Leave are offered, each "0 left", plus balance cards. A credited special leave does show correctly (qa.employee2: Bereavement "3 left"). | No e2e test |
| ISS-510 Medium 15 Oct 2026 | Tracker SHR-093 · Half-day leave has no First half / Second half choice | Leave & time off | Apply | Open | Tracker SHR-093: the employee picks First half or Second half, and it is stored. | The form has only a "Just a half day" switch, with no half selector. The switch itself can't be turned on (ISS-554), and the API stores every half day as first_half whatever is sent (ISS-555). The data model and request detail already show "(first half)/(second half)". | No e2e test |
| ISS-509 Medium 15 Oct 2026 | Tracker SHR-092 · Comp-off for an ordinary working day is accepted, and the chain has a single manager step | Overtime & comp-off | Comp-Off Request workflow | Open | Tracker SHR-092: comp-off only for work on a weekly off or holiday; approval Reporting manager → Department head → HR SPOC → HR Head. | POST 201; the run is then rejected only for having no comp-off balance (ISS-505), not because it was a working day. Future dates are refused ("Comp-off is for a day you have already worked"). The workflow has one step, mgr_compoff (manager_or_hr_partner). | No e2e test |
| ISS-508 High 15 Oct 2026 | Tracker SHR-069 · (update to ISS-440 / ISS-446) 156 automatically credited special-leave balances are still in place; new joiners were credited after 8 days | Leave | accrual | Open | Tracker SHR-069: Floating Holidays and PTO only after their waiting periods; special leave only when HR assigns it; existing automatic credits reversed. | Since 14 Oct the special-leave policies have accrual.frequency: none, but the automatic credits were not reversed: 156 balances across the company still hold accrued Bereavement 10 / Examination 5 / Maternity 182 / Paternity 5 (e.g. Aarav, Aditya Ranganathan, Kavya). 1 Oct joiners got Floating Holidays +2 and PTO +1.25 on 9 Oct. Balances that payroll and approvals read are wrong for most of the company. | No e2e test |
| ISS-507 Medium 15 Oct 2026 | Tracker SHR-068 · Cancelling approved leave of 3 days or fewer is credited back at once; the manager is never asked | Leave | Leave Cancellation workflow | Open | Tracker SHR-068: every cancellation of approved leave goes to the reporting manager. | gate_scope sends request.days > 3 to mgr_cancel_review and everything else to credit_ledger. The ½ day was cancelled and credited back within seconds, with no Inbox task for anyone. (In one run the cancellation then hung: ISS-556.) | No e2e test |
| ISS-506 Medium 15 Oct 2026 | Tracker SHR-087 · Leave Without Pay of 3+ days goes from the manager straight to 14 HR users, with no department head | Leave | Leave Without Pay workflow | Open | Tracker SHR-087: any leave of more than 3 days, LWP included, goes to the department head after the manager. | PTO (Annual Leave Approval) goes to dept_head_approval (Test Department Head) after the manager: fixed. LWP (platform workflow) goes Manager → hr_approval with 14 HR tasks and no department head step, which is exactly "triggered to HR without dept head approval". | No e2e test |
| ISS-505 High 15 Oct 2026 | Tracker SHR-086 · (update to ISS-441) "Request comp-off" exists but every request is auto-rejected for having no comp-off balance | Overtime & comp-off | Comp-Off Request workflow | Open | Tracker SHR-086: a request for a day worked reaches the approvers; the balance check belongs to spending comp-off, not earning it. | Still reproduces on 15 Oct: runs 14aa7dc9…, 4e88c316…, 192916cb… ended rejected at gate_balance ("No comp-off to spend"). The form is there, but the request is never seen by anyone, so in practice there's still no way to request comp-off. | No e2e test |
| ISS-504 Medium 15 Oct 2026 | Tracker SHR-085 · (update to ISS-446 / ISS-450) Wedding Leave is now HR-only, but Floating Holidays and October PTO still went to 1 Oct joiners on 9 Oct | Leave | accrual | Open | Tracker SHR-085: Floating Holidays credited 30 days after joining; PTO from the 1st of the month after joining; Wedding Leave only by HR. | Fixed: Wedding Leave accrual is none and every automatic grant was reversed on 14 Oct. Still reproducing on 15 Oct: Floating Holidays +2 on 9 Oct (8 days after joining, not 30) and PTO +1.25 policy_entitlement:2026-10 on 9 Oct (should start 1 Nov). The same holds for QA Employee Three. | No e2e test |
| ISS-503 High 15 Oct 2026 | Tracker SHR-047 · Maternity requests skip the manager and department head and fan out as 14 tasks to every HR user | Leave | Maternity Leave Approval workflow | Open | Tracker SHR-047: maternity goes Reporting manager → Department head (→ HR), with notifications; one decision closes it. | The platform workflow "Maternity Leave Approval" has one step, hr_approval (hr_partner), which created 14 tasks, one per HR user. There is no Reporting Manager step and no Department Head step, so the manager is never asked. When QA HR Manager rejected, the request ended rejected and the other 13 tasks were closed skipped (ISS-239 is fixed for this flow). | No e2e test |
| ISS-502 Medium 15 Oct 2026 | Tracker SHR-046 · Maternity end date isn't filled 182 days after the start, and men still hold 182-day Maternity balances | Leave & time off | Apply › Leave › Balances | Open | Tracker SHR-046: the end date fills 182 calendar days after the start; no male employee holds Maternity. | Counting is right: day-count for 21 Dec 2026 – 20 Jun 2027 = units 182, countsCalendarDays true, and male QA Employee Three isn't offered Maternity. But To stays "Pick a date" after From is chosen. Aarav Krishnamurthy and Test Interviewer Two (male) hold 182 days of Maternity (ISS-440 still open). | No e2e test |
| ISS-501 Low 15 Oct 2026 | Tracker SHR-020 · The leave form lets 11 days of Bereavement be sent; only the server refuses it | Leave & time off | Apply | Open | Tracker SHR-020: the form itself says Bereavement is capped at 10 days and disables Send; the summary shows both approval levels. | The form shows "11 days bereavement leave, 12–26 Jan. Goes to your manager." with Send enabled and no cap message. The server refuses after Send (4xx naming 10). The summary says "Goes to your manager" although 3+ days go Manager → Department head (gate_long → dept_head_approval, which works). The reported "No working days" error no longer appears. | No e2e test |
| ISS-500 Medium 15 Oct 2026 | Tracker SHR-019 · Bereavement and Wedding balances were repaired, but neither policy expires or blocks carry-forward, and Wedding allows 10 days per request | Leave | Policies | Open | Tracker SHR-019: at most 10 bereavement / 7 wedding days, not carried forward, lapsing at year end; Wedding requests capped at 7. | Kavya's 20 bereavement / 14 wedding days were corrected on 14 Oct (repair:duplicate_credit:2026, policy_change:wedding_granted_by_hr); nobody now holds more than 10 / 7 (fixed). But both policies have carryForwardRule: {} (no lapse, no expiry), and Wedding Leave has maxConsecutiveDays: 10 per request against a yearly cap of 7. | No e2e test |
| ISS-499 Medium 15 Oct 2026 | Tracker SHR-018 · Women no longer see Paternity Leave on the form, but female employees still hold Paternity balances | Leave | Balances | Open | Tracker SHR-018: gender-restricted types are neither offered nor credited to ineligible people; the wrong credits are reversed. | The form is fixed: female QA Employee Two isn't offered Paternity, male QA Employee Three isn't offered Maternity. But Kavya Raghunathan holds 5 days of Paternity Leave and Test Interviewer One 5 days (policy_entitlement:2026, never reversed). Same root as ISS-440. | No e2e test |
| ISS-498 Low 15 Oct 2026 | Tracker SHR-016 · "Request sent" names no approver and shows a route the request won't take | Leave & time off | Apply | Open | Tracker SHR-016: after sending, the screen names who has the request now and links to where it is tracked; the route shown is this request's route (UX-026). | "Request sent 🎉 1 day of floating holidays, 18 Jan. Watch "My leave" for the decision. It goes through Manager approval (Manager, or HR Partner) → Department head approval (Department Head, or HR)." It doesn't say QA Manager has it and has no link; the department-head step is never reached for 1 day. My leave → Approvers (collapsed by default; skeleton for more than 5 s) does show "Manager approval · Awaiting · due 19 Oct, 3:00 pm · QA Manager". | No e2e test |
| ISS-497 Low 15 Oct 2026 | Tracker SHR-094 · A regularised day looks like any other day: no colour, no legend entry, plain "HD" in the muster | Attendance | My attendance › muster | Open | Tracker SHR-094: corrected days have their own colour and label, in the calendar and the muster. | 9 Oct has the same bg-amber-soft colour as other half days; its label "Friday 9 October · Half day · 9:00 am–8:00 pm · 10.5h worked · 2h overtime — correct this day" says nothing about the correction. The legend has no "corrected" entry. The HR muster shows a plain "HD". | No e2e test |
| ISS-496 Medium 15 Oct 2026 | Tracker SHR-109 · The exit workflow posts people's last days as announcements, with an email address and ISO dates | Announcements | Exit workflow | Open | Tracker SHR-109: exits are not posted in Announcements (or only when HR chooses to, with a proper name and date). | Two posts titled "A change in the team": "Single Test One's last day with the team is 2026-10-16…" and "Bulk Test One's last day with the team is 2026-11-11…" (12 Oct). The exit workflow published them (workflowInstanceId set, author Kavya Raghunathan) to the Administration department. The second names the successor as a raw email "kavya.raghunathan@opsmaven.test". Dates are ISO, not the company format. | No e2e test |
| ISS-495 High 15 Oct 2026 | Tracker SHR-096 · HR can't start an exit for half the company; the form still asks for "Last working day" with no resignation date or reason for a changed date | Lifecycle | Offboarding › Start exit | Open | Tracker SHR-096: any employee can be exited; the form takes the resignation date and works out the relieving date; changing it needs a reason; "Relieving date" wording. | The Employee picker offers 36 of 70 active employees (it loads employees?limit=50 and search filters only that page; ISS-528). QA Employee One/Two, QA Manager, Vikram Raghavan and every recent hire are missing; the API POST /people/lifecycle/exits accepts them. HR's form asks Employee, Last working day (no default), Initiation; there's no resignation date and no calculated relieving date. On the employee form an earlier date shows "That is before your notice period ends — it is a request for an early release…" but no separate mandatory reason. Both forms say "Last working day", never "Relieving date". | No e2e test |
| ISS-494 High 15 Oct 2026 | Tracker SHR-061 · Resignation: one flat 30-day notice for everyone, only the manager and HR Manager are told, and a same-day leaver still gets "stay conversation within two working days" | Lifecycle | Exit › Exit workflow | Open | Tracker SHR-061: notice period by jurisdiction (India 60, other countries 14); every exit stakeholder notified at once; the wording fits the requested last day. | Self-service resignation now exists (fixed). (a) The form says "Your 30-day notice ends 14 Nov 2026": the notice period is one company-wide noticePeriodDays: 30 (Configure clearance / GET /people/offboarding-template), not 60 days for India. (b) The Exit run notified the reporting manager (2 notices) and QA HR Manager (1). QA HR Head, HR SPOC, IT, Accounts and Admin got nothing. The manager is told "Please hold the stay conversation within two working days … within 48 hours" although the last day is today. The run then waits at "Stay conversation recorded" on an override task for "Test HR Head" (ISS-543). The notice's link goes to the raw workers.dev host (ISS-545). | No e2e test |
| ISS-493 Medium 15 Oct 2026 | Tracker SHR-090 · Probation questionnaire lacks six of the seven criteria, has no self rating or comment column, and never reaches the HR Head | Lifecycle | Confirmation | Open | Tracker SHR-090: the seven criteria, each with self rating, manager rating and comment, reviewed by Reporting Manager → Department Head → HR Head. | Both sets ask the same four questions: quality of work, collaboration, ownership (1–5) and a written summary. Communication (verbal/written), job knowledge, initiative in learning, application of skills, problem solving and interpersonal skills are missing. Answer types are only Rating 1–5, Written answer, Yes / no, so "Self rating / Rating / Comments" per criterion is impossible. The chain is Manager's recommendation → "Department Head, or HR" → "HR Partner · any one of 14"; there is no HR Head step, and the chain asks for a decision, not per-criterion input. 8 duplicate "Review questions" sets and an empty "Demo Question Set" are still listed (ISS-085). | No e2e test |
| ISS-492 Medium 15 Oct 2026 | Tracker SHR-013 · IT gets nothing for a same-day joiner until HR starts onboarding by hand | Lifecycle | Onboarding | Open | Tracker SHR-013: the IT checklist starts for today's joiners without HR having to start it. | Nothing reaches QA IT automatically. After the manual start, QA IT gets "IT asset preparation" and "DevOps and IT tools provisioning" under Home → "Your onboarding tasks" and a notification "…'s onboarding: 2 steps for you"; QA Admin gets 6. So the manual path works; the trigger doesn't exist (ISS-488). | No e2e test |
| ISS-491 High 15 Oct 2026 | Tracker SHR-033 · Recruitment hires still sit at Checklist 0/0; with the stakeholder checklist, the manager's and candidate's items go to whoever started it | Lifecycle | Onboarding | Open | Tracker SHR-033: a recruitment hire arrives with the stakeholder checklist; each group's items go to that stakeholder (manager items to the joiner's manager) with a notification. | (a) The cards read "Checklist 0/0" with "Choose … checklist"; for HR SPOC and HR Manager the picker reads "(unavailable)" (403, ISS-536). (b) The template has the client's five groups, but the Reporting manager items (buddy, KRAs, 30-day KT plan, stakeholders, tools, office access) and the candidate's document items are assigned to QA HR Head (the starter); QA Department Head gets 0. The manager and HR Head get no notification. IT and Admin items now do go to QA IT / QA Admin (they went to "Onboarding Management" / "Harshit Bhalla" earlier the same night; ISS-247 is partly fixed). The reported "5/5 completed on creation" did not reproduce. | No e2e test |
| ISS-490 High 15 Oct 2026 | Tracker SHR-007 · New joinees says onboarding "Complete" for every joiner who has no onboarding at all | Lifecycle | New joinees | Open | Tracker SHR-007: "Not started" (or no onboarding) when there is none; "Complete" only when every activity is done. | "Complete" for FB Test Org Joiner, Neera bv.aj, Probe Candidate and 15 others whose API rows are onboardingInstanceId:null, onboardingStatus:null, taskTotal:0. HR is told onboarding is done when it never started. Same pattern as ISS-314 (0/0 shown as complete). | No e2e test |
| ISS-489 High 15 Oct 2026 | Tracker SHR-005 · A joiner starting today gets no document-collection tasks; nothing reaches anyone's Home, Inbox or bell | Lifecycle | Onboarding › New joinees | Open | Tracker SHR-005: document collection starts for a same-day joiner, the owners see the tasks on Home and by email, and onboarding isn't shown as complete. | No document-collection tasks exist and no one is notified. New joinees shows the joiner with Onboarding "Complete" and "Starts in 1d" on the joining day (API daysIn:-1, onboardingStatus:null, taskTotal:0). | No e2e test |
| ISS-488 High 15 Oct 2026 | Tracker SHR-004 · Employees created from Organization get no onboarding at all, start Active, and only the HR Head can start it by hand | Organization | New employee › Lifecycle › Onboarding | Open | Tracker SHR-004 (client priority Critical): an employee created from Organization gets the same pre-boarding checklist as a recruitment hire, automatically. | No onboarding record and no workflow run; no active workflow listens to employee.hired or onboarding.started. The dialog sends status:"active", so a joiner is Active, not Pre-boarding. Recruitment hires do get a pre-boarding checklist (preOnboardingChecklistId). The only path is Lifecycle → Onboarding → Start onboarding, and only the HR Head can use it: HR Manager, HR SPOC and Admin get 403 templates.view and the checklist picker reads "None (unavailable)" (ISS-536). | No e2e test |
| ISS-487 Medium 15 Oct 2026 | Tracker SHR-108 · Location list isn't filtered by jurisdiction, and Tamil Nadu is offered with no location in it | Organization | New employee | Open | Tracker SHR-108: after a jurisdiction is chosen, Location lists only that jurisdiction's locations; jurisdictions with no location aren't offered (or say so). | California now has a location ("Los Angeles", whose address is in Bangalore: ISS-481), but after picking California the list still offers Ahmedabad - Remote, Demo – Bengaluru Office, Hyderabad HQ, Los Angeles and Remote - India. Tamil Nadu is offered as a jurisdiction but has no location at all. | No e2e test |
| ISS-486 Low 15 Oct 2026 | Tracker SHR-107 · A US employee phone with an Indian emergency number is accepted | Organization | New employee | Open | Tracker SHR-107: the emergency contact uses the same country code as the employee (the client's rule; if it isn't wanted, close the row). | Accepted by the form and the server (the FB Test Server Probe create went through with +1 / +91). | No e2e test |
| ISS-485 Low 15 Oct 2026 | Tracker SHR-105 · Phone country codes offer only IN +91 and US +1 | Organization | New employee | Open | Tracker SHR-105: a full country-code list. | Both pickers list only IN +91 and US +1. An employee or emergency contact with any other country's number can't be recorded. | No e2e test |
| ISS-484 Low 15 Oct 2026 | Tracker SHR-089 · Emergency contact name may equal the employee's name, and personal email may equal work email | Organization | New employee | Open | Tracker SHR-089: both refused with a message. | Both accepted by the form and the server (the FB Test Server Probe create had both). Live data: Aarav Testman, Nisha Sample and Rohan Demo have personal email = work email. | No e2e test |
| ISS-483 Medium 15 Oct 2026 | Tracker SHR-088 · An employee can be placed in California at a Telangana location; form and server accept it | Organization | New employee | Open | Tracker SHR-088: the location must belong to the chosen jurisdiction (form and server). | No check in the form or on the server. One real create proved it: "FB Test Server Probe" (d240f1d3-823a-4ad6-a0a1-5d3941fa192e) was created 201 with California + Hyderabad HQ. Live data already has the same mismatch: Rohan Demo (Tamil Nadu + Remote - India / Telangana), Preboarding Flowtest (California + Ahmedabad - Remote / Gujarat). Jurisdiction drives statutory rules, so these people get the wrong ones. | No e2e test |
| ISS-482 Medium 15 Oct 2026 | Tracker SHR-119 · Employees table: Joined column exists, but no joining-date filter, no entity column/filter and no download | Organization | Employees | Open | Tracker SHR-119 (client priority High): filter by hire date, show and filter by entity, download the table. | Options → Columns offers Joined and Jurisdiction (both hidden by default). Filters are only department, position, location and status. There is no Entity / Organisation column or filter and no Export / Download anywhere on the page (Options holds only Columns and Saved views; "Import CSV / Excel" is an upload). | No e2e test |
| ISS-481 Low 15 Oct 2026 | Tracker SHR-084 · "Los Angeles" (California) location still has a Bangalore address; nothing compares address and jurisdiction | Organization | Locations | Open | Tracker SHR-084: a location's address lies in its jurisdiction; at minimum the city/state is checked against the jurisdiction, and the existing record is corrected. | "Los Angeles" (code "BAN", California, USD, America/Los_Angeles, kind Other / "Client Site", 2 people, last edited 14 Oct) has the address "New Colony, Bangalore". The address has no state or country field. The API accepted the new California office with a Bangalore address (201; deleted at once). | No e2e test |
| ISS-480 Medium 15 Oct 2026 | Tracker SHR-009 · Search → profile no longer errors, but search is 403 for most roles and the profile it opens shows the wrong data | Header search | ⌘K › employee profile | Open | Tracker SHR-009: the searched employee's profile opens with correct details; a manager can at least find their own reports. | (a) The profile opens with no error (the reported error is fixed), but shows "No position · Operations / No location" and "No manager — this person is at the top of the tree" for an employee who is Delivery Manager at Hyderabad HQ reporting to QA Manager (see ISS-527). (b) GET /api/company/search/quick-search answers 403 requiredPermission: ["settings.saved_searches.view"], an unrelated permission; the palette shows "No results for "QA Employee One". Try a page or an action." The Department Head gets 200 with people: [] even for his own department. | No e2e test |
| ISS-479 Low 15 Oct 2026 | Tracker SHR-118 · HR, manager and admin Home "Celebrations" covers work anniversaries only; birthdays appear nowhere for them | Home | Celebrations › Moments | Open | Tracker SHR-118: birthdays and service anniversaries on every Home (the employee card already promises this), and the group email. | The admin/manager card reads "Quiet week — Work anniversaries show up here a week ahead". Birthdays are not part of it. The employee card "Moments" promises "Birthdays and work anniversaries in the next seven days" and GET /api/me/people/moments returns {"items":[]} for every persona. Nobody is due 15–21 Oct; Deepak Chauhan's birthday on 22 Oct (day 7) is listed nowhere, so whether names actually appear could not be confirmed. The email to the entity group can't be checked (no mailbox access). | No e2e test |
| ISS-478 Medium 15 Oct 2026 | Tracker SHR-010 · Home "Pending approvals" shows only the requester's name (twice) and approves with one click without saying what | Home | Pending approvals | Open | Tracker SHR-010: each pending approval says what is being approved (type and dates), as the Inbox does, and the quick buttons name the item. | The row reads "QO / QA Employee One / QA Employee One" followed by ✓ and ✗. It doesn't say what the request is. The ✓ approves at once; its accessible name is "Approve QA Employee One", the same for every request from that person, so a manager with two items from one employee can't tell which one they approve. The Inbox row for the same item says "Missed punch · 8 Oct · QA Employee One · at Manager approval · 5d left". | No e2e test |
Full entries
ISS-575 · QA Manager's Home "Headcount by department" card fails: "Couldn't load this right now."
- Module: Home → Headcount by department · Severity: Medium · Found: 15 Oct 2026
- Steps: Sign in as QA Manager (Reporting Manager, Delivery) and open Home; scroll to "Headcount by department — Top 8 departments by size".
- Actual: The card shows only "Couldn't load this right now." (Headcount and Teams tabs present, no data). The same card renders a chart for QA Department Head. Seen in the recording of the General video; the failing request was not captured. It may be a permission refusal for the Reporting Manager role shown as a generic error.
- Expected: The card loads (at least the manager's own department), or isn't shown to a role that can't read it.
- Evidence: scratch/FB/frames/gen-16.jpg (bottom of page) vs scratch/FB/frames/gen-80.jpg; output/final/fb-general.mp4
ISS-574 · (update to ISS-529) Home KPI trends are impossible: "Total employees 14 ↑1300% vs last quarter", "Attendance today 0% ↓363% vs 30-day avg"
- Module: Home (KPI tiles) · Severity: Medium · Found: 15 Oct 2026
- Steps: Open Home as QA Department Head and as QA Manager before anyone has clocked in.
- Actual: Still reproduces on 15 Oct (recording of the General video). QA Department Head: "Total employees 14 ↑1300% vs last quarter" and "Attendance today 0% ↓363% vs 30-day avg". QA Manager: "Total employees 3" and "Attendance today 0% ↓250% vs 30-day avg". A fall from any average to 0% can't exceed 100%. The headcount tile also differs per role (3, 14, and 34 for admin in ISS-529) with no label saying what it is scoped to.
- Expected: Trends that are arithmetically possible (or none when there is no baseline), and a headcount tile that says what it counts (my team / my department / company).
- Evidence: scratch/FB/frames/gen-80.jpg, scratch/FB/frames/gen-16.jpg; output/final/fb-general.mp4
ISS-573 · (update to ISS-530) Home greeting and Inbox badge say items are waiting while the Pending approvals card says "Inbox zero"
- Module: Home · Severity: Medium · Found: 15 Oct 2026
- Steps: Sign in as QA Department Head and open Home; then as QA Manager.
- Actual: Still reproduces on 15 Oct (recording of the General video). QA Department Head: the header says "3 items are waiting in your inbox, and 0 people are out today", the sidebar Inbox badge shows 3, and the Pending approvals card says "Inbox zero — No approvals waiting on you. Requests will appear here the moment they arrive." QA Manager: the header says "4 items are waiting", the badge shows 4, and the card lists one item. Same as ISS-530 (and ISS-052 / ISS-114), now also for the Department Head.
- Expected: The greeting, the Inbox badge and the Pending approvals card show the same items and count.
- Evidence: scratch/FB/frames/gen-80.jpg (QA Department Head), scratch/FB/frames/gen-16.jpg (QA Manager); output/final/fb-general.mp4
ISS-572 · The Talent Acquisition offer SOP workflows never run
- Module: Workflows → "Offer process (TA SOP)", "Offer letter and acceptance (TA SOP)" · Severity: Medium · Found: 15 Oct 2026
- Steps:
GET /api/company/workflows→ both definitions (platform and company copies). - Actual:
lastRunAt: nullon all copies, while offers are drafted, approved and accepted every day. The HR Head step the client expects ("HR Head told: ready for the numbers") exists only in this SOP, so it is never reached; offers go through "Offer Approval" instead (ISS-524). - Expected: One offer flow that runs, with the HR Head step.
- Evidence: feedback/findings/evidence/recruitment-pipeline/workflows-offer-interview.json
ISS-571 · The internal "offer released" mail says the candidate has accepted
- Module: Recruitment → Templates (TA SOP) · Severity: Medium · Found: 15 Oct 2026
- Steps: As QA HR Head, Templates → Emails →
ta_offer_released(step "HR Operations, hiring manager, HR Head and Recruitment Head told by mail: offer released"). - Actual: Subject "{candidate} has accepted the offer for {title}", body "{candidate} has signed the offer … HR Operations now runs the onboarding". Sent on release, it would tell HR an offer was accepted when it was only sent. (The flow hasn't run yet: ISS-572.)
- Expected: A release notice ("Offer released for
for at ", as SHR-025 asks); acceptance has its own message. - Evidence: Library templates
offer_released,ta_offer_released; e2etests/feedback/recruitment-offer/offer-pr.spec.ts› "SHR-025 · the "offer released" mail reads "Offer released forfor at "" (fails)
ISS-570 · Super admin's workflow outbox returns other companies' rows and raw SQL with parameters
- Module: Workflows → Ops outbox · Severity: Critical · Found: 15 Oct 2026
- Steps: As Ops Maven's super admin,
GET /api/company/workflows/ops/outbox?limit=20. - Actual: Rows with
companyId: nulland01a09014-64ed-…(not Ops Maven's82628593-…), withlastErrorholding full SQL text and its parameters. A company-level admin can read another tenant's outbox data and the platform's SQL. - Expected: Only this company's rows; no SQL or parameters in API responses.
- Evidence: API response (15 Oct, recruitment-pipeline probe)
ISS-569 · Three job posts are live on the careers site with an empty description
- Module: Recruitment → posting · Severity: Low · Found: 15 Oct 2026
- Steps: Recruitment → Jobs → posts Delivery Manager (
delivery-manager), Sr. Associate, Intern Recruiter (posted 6–8 Oct). - Actual: Live with no description. Publishing now requires one (SHR-055 fixed), but posts published before the rule were left as they are.
- Expected: Existing live posts without a description are flagged or unpublished.
- Evidence: posts API (15 Oct)
ISS-568 · Past interviews stay "scheduled · past — record the outcome" for days with no way to complete them
- Module: Recruitment → interviews · Severity: Low · Found: 15 Oct 2026
- Steps: Open Kanakam Nagendrababu (7 Oct), Professional Summary (13 Oct), Probe Candidate (30 Sep), Abhishek Kumar (hired, 9 Oct).
- Actual: All still
scheduled. The recruiter can only Reschedule / Cancel / No-show; completion depends on every panel scorecard. - Expected: A past interview can be closed as held (or is closed once scorecards are in), so pipelines don't show stale "scheduled" rows.
- Evidence: feedback/findings/evidence/recruitment-pipeline/hrm-interview-actions.png
ISS-567 · Scorecard answers are stored under keys that don't match the interview's questions
- Module: Recruitment → scorecards · Severity: Medium · Found: 15 Oct 2026
- Steps:
GET /interviews?applicationId=…andGET /interviews/{id}/scorecardsfor M Srija L1, Vinay Yenduri, Viveka Massey. - Actual: Cards hold answers
tech_gaps, tech_depth, tech_approach, beh_concerns, beh_ownership, beh_communication("the default six" in Settings) while the same interviews list questionstechnical_skills, communication, body_language, job_change_reason(the dialog's default four). Answers can't be paired with their questions; Settings and the dialog disagree on the default set. - Expected: Answers keyed to the interview's own questions; one default set.
- Evidence: API responses (15 Oct)
ISS-566 · Candidates can't be edited or deleted, so a wrongly parsed name is permanent
- Module: Recruitment → candidates / Talent pool · Severity: Medium · Found: 15 Oct 2026
- Steps: Try to correct "Professional Summary" or "Name: Mahesh Lebaku";
GET/PATCH/DELETE /candidates/{id}. - Actual: No screen to edit a candidate; the API has no
/candidates/{id}route (404 for all three). Pool records only age out via retention (12 months inactive). Wrong names keep going out in emails (ISS-518, ISS-521). - Expected: Recruiters can correct a candidate's details and remove a record created in error.
- Evidence: API probes (15 Oct); feedback/findings/evidence/recruitment-pipeline/hrm-talent-pool-fbtest-names.png
ISS-565 · Interview reminder says "tomorrow" but goes out at booking time for a same-day interview, sometimes after it started
- Module: Recruitment → Interview round (TA SOP) · Severity: High · Found: 15 Oct 2026
- Steps: Book an interview for today (or within 24 h); read the sent-email log.
- Actual: The SOP's "The day before the interview" timer is already past, so the reminder fires at once and says "is tomorrow": Lavanya Y sent 10:41 UTC for a 10:42 UTC interview; "Professional Summary" sent 01:56 UTC for an interview that started at 01:55; "Work Experience" sent 15:32:16 for 15:32. Two reminder mechanisms exist (built-in "Reminder: your interview tomorrow — X" and the SOP "Your interview for X is tomorrow"), so candidates can get both.
- Expected: No "tomorrow" reminder for a same-day interview; one reminder mechanism at a sensible lead time.
- Evidence: feedback/findings/evidence/recruitment-pipeline/sent-emails.json; run
a306956c…(wait_timer_reminderdue 13 Oct 03:30Z, acted 14 Oct 10:41Z)
ISS-564 · Requisition justification refuses a colon or brackets; raise-options lists no locations although submit requires one
- Module: Recruitment → Requisition API · Severity: Low · Found: 15 Oct 2026
- Steps:
POST /requisitionswith justification "FB Test: e2e feedback verification run (safe to ignore)";GET /requisitions/raise-options. - Actual:
400 "Justification: Letters, spaces and sentence punctuation only — remove 2."(the colon and the bracket count as non-sentence punctuation).raise-optionsreturns no locations. - Expected: Ordinary punctuation allowed; raise-options lists what the form needs.
- Evidence: pipeline test run log (scratch/FB/recruitment-pipeline)
ISS-563 · Inbox "Send back for changes" didn't answer for 2+ minutes although the requisition was already returned
- Module: Inbox → requisition · Severity: Low · Found: 15 Oct 2026
- Steps: As QA HR Head, Inbox → FB Test requisition → Send back for changes with a comment.
- Actual: No response after 120 s; the requisition's status had changed within seconds on the server. Same pattern as ISS-448 / ISS-443 / ISS-438.
- Expected: The action confirms within a few seconds.
- Evidence: approval journey run (15 Oct), feedback/findings/evidence/recruitment-requisition/inbox-hrh-changes-comment.png
ISS-562 · View-only HR SPOC is offered Edit on a requisition, which then fails with 403
- Module: Recruitment → Requisition panel · Severity: Low · Found: 15 Oct 2026
- Steps: As QA HR SPOC (only
recruitment.*.view), open REQ-2026-0152 → Edit. - Actual: The API gives
canEdit: true; the Edit button is offered;PATCH→ 403 "recruitment.requisition.manage". - Expected: No Edit for view-only roles.
- Evidence: REQ-2026-0152 detail response as spoc
ISS-561 · Any manager can raise a requisition for any position in any department (CEO, CTO, HR Head…)
- Module: Recruitment → Raise requisition · Severity: Medium · Found: 15 Oct 2026
- Steps: As QA Manager (Delivery, Reporting Manager), Raise requisition → Position.
- Actual: All 14 positions are offered, including CEO, CTO, HR Head and VP-HR, and can be raised; only the hiring-manager list follows the department.
- Expected: A manager raises requisitions for their own department's positions (HR can raise for any).
- Evidence: feedback/findings/evidence/recruitment-requisition/req-form-mgr.png
ISS-560 · Requisition submit isn't atomic: an interrupted submit leaves it "Pending approval" with no approval run, for good
- Module: Recruitment → Requisition · Severity: High · Found: 15 Oct 2026
- Steps: As QA Manager, Jobs → draft REQ-2026-0152 → Submit for approval; the browser closed while the button still showed "Submitting…" (~5 s).
- Actual: Status
pending_approval,workflowInstanceId: null,/chain→{steps: []}for 13+ minutes; the panel says "Approval chain · Awaiting … No approval workflow is set up for this yet." Nobody can ever approve it (cancelled by QA). The submit itself takes 15–25 s, which makes interruption likely. - Expected: Either pending with a run, or still a draft.
- Evidence: feedback/findings/evidence/recruitment-requisition/req-detail-mgr-stuck.png
ISS-559 · Leave Overview totals count WFH and cancellation records as Leave Without Pay
- Module: Leave → Overview (
/api/company/leave/reports) · Severity: Medium · Found: 15 Oct 2026 - Steps: As QA HR Manager, Leave → Overview.
- Actual: "Leave Without Pay 155 days" of 244 approved days. Most of it is WFH requests stored with type LWP (ISS-438) plus approved cancellation records, so company leave totals are inflated.
- Expected: WFH and cancellations excluded from leave totals.
- Evidence: reports API response (15 Oct)
ISS-558 · Leave is accepted for dates after the employee's last working day
- Module: Leave / Exit · Severity: Medium · Found: 15 Oct 2026
- Steps: qa.employee3 is on notice (exit
dc016d01…, termination, in clearance, last working day 9 Oct 2026). Apply 1 day of Floating Holidays for 8 Dec 2026. - Actual: Accepted and sent to QA Manager (request
a8bdf591…, run2ef1d972…); withdrawn by QA. - Expected: Refused: the date is after the last working day.
- Evidence:
GET /api/me/leave/a8bdf591…/instance→context.related.exit
ISS-557 · "Who's off soon" and the team calendar list cancellation records and WFH as time off
- Module: Leave & time off → Who's off soon (
GET /api/me/leave/team-calendar) · Severity: Medium · Found: 15 Oct 2026 - Steps: As qa.employee3, open Leave & time off.
- Actual: "QA Employee One 26–30 Oct", "26 Oct", "28–29 Oct", "29 Oct – 3 Nov". These are approved cancellation records (e.g.
63dc5201…, kindcancellation; the original LWPafacfb92…is Cancelled) and WFH requests (4490e31a…). Colleagues are told someone is off when they aren't. - Expected: Only approved leave still in force.
- Evidence: team-calendar response (15 Oct) vs
/api/me/leave/myof qa.employee1
ISS-556 · A leave cancellation run hung at "Cancellation confirmed" for 30+ minutes; the cancellation stayed Pending
- Module: Leave / Leave Cancellation workflow · Severity: Medium · Found: 15 Oct 2026
- Steps: At 01:30 IST, qa.employee2 cancels an approved ½-day PTO on 23 Dec 2026 (My leave → Cancel this leave → reason → Request cancellation).
- Actual: Events
gate_scope → credit_ledger (done) → step_started notify_cancel_done, then nothing for 30+ minutes. The day was credited and the leave showed Cancelled, but the cancellation request stayed Pending (it would block later actions on those dates). A second identical cancellation 20 min later finished normally, so it is intermittent. Withdrawn by QA. - Expected: The run finishes; the cancellation shows Approved and the employee is told.
- Evidence: request
c2b2a921-0de9-4f7a-9e52-a60cb1651105, runb48b7ab1-7ca6-4cd0-9e45-84a72f642c6a
ISS-555 · Every half day is stored as "first half"; the requested half is ignored
- Module: Leave API · Severity: Medium · Found: 15 Oct 2026
- Steps: As qa.employee2,
POST /api/me/leave {kind: application, PTO, startDate=endDate, halfDay: true, dayPart: "second_half"}. - Actual: 201, units 0.5, stored
dayPart: "first_half". - Expected:
dayPart: "second_half"stored (the request detail and CSV already have "Day part"). - Evidence: e2e
tests/feedback/leave/leave-journeys.spec.ts› "SHR-093 · a second-half leave is recorded as the second half" (fails: received "first_half")
ISS-554 · "Just a half day" switch can't be turned on, so half-day leave can't be applied from the UI
- Module: Leave & time off → Apply · Severity: High · Found: 15 Oct 2026
- Steps: As qa.employee2 or qa.employee3, Paid Time Off (PTO), From = To = 5 Jan 2027 → click "Just a half day" (mouse and keyboard Space).
- Actual: The switch stays
aria-checked="false"; noday-count?halfDay=truecall is made; the summary stays "1 day". Only the API (halfDay: true) creates a half day. - Expected: The switch turns on, the summary reads 0.5 day, and the request is sent as a half day.
- Evidence: scratch/FB/leave/evidence/SHR-093-half-day-switch-stays-off.png; e2e
tests/feedback/leave/leave-rules.spec.ts› "SHR-093 · the "Just a half day" switch turns on…" (fails)
ISS-553 · Muster "Leave" total counts approved leave that hasn't happened yet; Absent is always 0
- Module: Attendance → Calendar → Download muster · Severity: Low · Found: 15 Oct 2026
- Steps: On 15 Oct, download the October muster.
- Actual: Ananya Iyer (Demo) has Leave = 18, which includes approved leave 16–31 Oct. Absent = 0 for everyone because unpunched working days are blank (GAPS row 3).
- Expected: Totals up to the report date; unpunched working days without leave counted as absent.
- Evidence: scratch/FB/attendance/dl/hrm_attendance-muster-2026-10.csv
ISS-552 · Withdrawn corrections are stored as "rejected"; the list shows them as "upcoming"
- Module: Attendance → My corrections · Severity: Low · Found: 15 Oct 2026
- Steps: Withdraw a pending correction (7 Oct), reload My attendance → My corrections.
- Actual: API
regularizations[].status: "rejected". The list shows "Missed punch · 7 Oct / upcoming / Withdrawn by you / Withdrawn", although 7 Oct is past. Declined items show a lowercase "rejected" chip and a "Rejected" chip together. - Expected: Status "withdrawn" (as shift swaps use) and one chip.
- Evidence: scratch/FB/shots/att_withdrawn_reads_rejected.png
ISS-551 · (update to ISS-423) A full day stays "Half day" after an approved correction
- Module: Attendance → My attendance / muster · Severity: High · Found: 15 Oct 2026
- Steps: Look at qa.employee1's 9 Oct (missed-punch correction approved, 09:00–20:00).
- Actual: Still reproduces on 15 Oct:
workedHours: 10.5, 2 h overtime,dayStatus: "half_day"; the muster counts it as HD. Payroll would dock half a day from someone who worked 10.5 hours. - Expected: Present.
- Evidence:
GET /api/me/attendance/my?month=2026-10; e2etests/feedback/attendance/attendance-pr.spec.ts› "SHR-008 · a day with a full day of hours is not marked Half day" (fails)
ISS-550 · (update to ISS-454) The attendance calendar still offers 21 days before the joining date for correction
- Module: Attendance → My attendance · Severity: Low · Found: 15 Oct 2026
- Steps: As qa.employee1 (joined 1 Oct), My attendance → Previous month.
- Actual: Still reproduces on 15 Oct: all 21 September working days read "no attendance recorded — request a correction"; the server refuses them later (NOT_EMPLOYED).
- Expected: Days before joining aren't offered.
- Evidence: scratch/FB/shots/att_014_september.png; e2e
tests/feedback/attendance/attendance-pr.spec.ts› "SHR-014 · days before the employee joined are not offered for correction" (fails)
ISS-549 · Admin role (qa.admin) can't open any Attendance page
- Module: Attendance (permissions) · Severity: Low · Found: 15 Oct 2026
- Steps: As QA Admin, open /attendance/overview, /attendance/calendar, /attendance/shifts.
- Actual: "This page is not yours to see" on all three. Super admin and HR Manager can open them. SHR-065/066 were raised by an admin, so either the role is meant to have these pages or the reporter's role needs clarifying.
- Expected: Clarify which roles download attendance reports and rosters, and grant them.
- Evidence: probe output for qadmin (15 Oct)
ISS-548 · Roster download and template put default-shift people on "General Shift" on Saturday and Sunday, and the template is pre-filled with every real employee
- Module: Attendance → Shifts & rosters · Severity: Medium · Found: 15 Oct 2026
- Steps: As QA HR Manager, Download → CSV; Upload roster → CSV template.
- Actual: "EMP-9909, Abhishek Kumar, 2026-10-17, General Shift, Default shift" and the same for Sunday, for everyone on the default shift, while rostered people show "OFF, Day off" and attendance shows weekly_off. The template holds every employee's real current week (63 × 7 rows). Uploading it unchanged would roster default-shift people to work weekends.
- Expected: Weekly offs exported as OFF; a template with headers and an example, not the live roster.
- Evidence: scratch/FB/attendance/dl/hrm_roster-2026-10-12-to-2026-10-18.csv, hrm_tmpl_roster-template.csv
ISS-547 · (update to ISS-422) Clock and punch times still carry a "Z" but hold IST wall-clock time
- Module: Attendance API · Severity: Medium · Found: 15 Oct 2026
- Steps: At 00:36 IST (19:06 UTC on 14 Oct),
GET /api/me/attendance/my/clock. - Actual: Still reproduces on 15 Oct:
"now":"2026-10-15T00:37:35Z"; punchesoccurredAt "2026-10-15T00:35:23Z"; attendance rowsfirstIn "2026-10-15 00:35:23+00". Anything that reads these as UTC (exports, payroll, integrations) is 5½ hours off. See ISS-455/456. - Expected: Real UTC, or an explicit +05:30 offset.
- Evidence: API excerpt above (machine
date -u: Wed Oct 14 19:06:26 UTC 2026)
ISS-546 · Clock card sometimes doesn't update after clocking in, inviting a double punch
- Module: Attendance → My attendance · Severity: Medium · Found: 15 Oct 2026
- Steps: As qa.employee1, My attendance → Clock in (from the prompt or "Clock in again") → In the office. Watch the card.
- Actual: In 2 of 5 tries the card still read "You haven't clocked in yet / Clock in" (or "Clocked out at … / Clock in again") 4–6 s after
POST /api/me/attendance/my/clock/punchreturned 201. A reload showed the right state. An employee who clicks again punches twice. - Expected: The card switches to "On the clock since …" with Clock out as soon as the punch is saved.
- Evidence: scratch/FB/shots/att_064_after_in.png
ISS-545 · Resignation notification links to the internal workers.dev host and the Inbox, not the exit
- Module: Notifications (
ntf-resignation-submitted) · Severity: Medium · Found: 15 Oct 2026 - Steps: As QA Department Head, open the "FB Test Org Leaver … has resigned" notification.
- Actual: "Open the exit:
https://satellite-hr-frontend-final-restructure.polished-mud-fefe.workers.dev/company/…/me/inbox". The link uses the internal Cloudflare host instead of qa.satellitehr.com (the session isn't there, so the recipient lands on a sign-in) and goes to the Inbox, not the exit. - Expected: A link on the tenant's own host that opens the exit case.
- Evidence: QA Department Head's notifications for exit
9f217dd1…
ISS-544 · Exit payroll lock date can fall before the exit is raised
- Module: Lifecycle → Offboarding · Severity: Low · Found: 15 Oct 2026
- Steps: Raise an exit on 15 Oct with last day 15 Oct.
- Actual:
payrollLockDate: 2026-10-10("five days before the last day"), already in the past when the exit is created; nothing warns. - Expected: The lock date isn't before the exit date, or HR is warned that payroll for the period may already be locked.
- Evidence: exit
7ee7c4d0…(withdrawn)
ISS-543 · Exit approvals are routed to single non-HR or test accounts: "Stay conversation" override to Test HR Head, termination legal gate to Vikram Raghavan
- Module: Workflows → Exit / Termination · Severity: Medium · Found: 15 Oct 2026
- Steps: As QA HR Head, raise a resignation and a termination for FB Test Joiner A (both withdrawn); read the runs.
- Actual: Every HR-raised resignation puts the "Stay conversation recorded" override on the HR Head role and it went to Test HR Head (
01a11a4f…), not QA HR Head or Kavya. A termination's first gate "HR Legal validated" went to Vikram Raghavan viarelationship:role:executive, and its legal-review notice fired at once. The reporting manager has no task at this stage, only notifications. - Expected: Exit steps go to the employee's own HR owner / the HR Head group and the manager, not to one arbitrary account.
- Evidence: runs
5c6135f8…,24eed545…(both cancelled)
ISS-542 · Duplicate active workflow definitions on the same trigger (probation, offer, interview, joiner)
- Module: Settings → Workflows · Severity: Low · Found: 15 Oct 2026
- Steps:
GET /api/company/workflows. - Actual: Two active "Probation confirmation" (
2c517c16…,86c7dba4…), both onconfirmation.due, and two active "Probation Confirmation Review" (67afdc2d…,0a8b7df0…). Two active "Offer Approval", "Interview round (TA SOP)", "Offer process (TA SOP)", "Offer letter and acceptance (TA SOP)" and "Joiner" (platform + company copies; only the company copies are seen running). If both probation flows fire, one probation raises two questionnaires (not observed: nothing fell due today). Related: ISS-176. - Expected: One active definition per trigger, or a clear rule for which copy runs.
- Evidence: workflows API (15 Oct)
ISS-541 · Running confirmation reviews have an unresolved manager and send the HR step to "any one of 14", non-HR people included
- Module: Lifecycle → Confirmation · Severity: Medium · Found: 15 Oct 2026
- Steps: As QA HR Head, Lifecycle → Confirmation → Checklist Flowtest (In review) → Approval chain.
- Actual: MANAGER "—"; "Part of this chain has no approver — Manager's recommendation (Primary Manager: unresolved)". The HR step goes to any one of 14: Durgesh, Vikram Raghavan, HR Ops SPOC Testing, Test HR Head, QA HR SPOC, QA HR Manager, QA HR Head, Raju Rastogi, HR Manager Test(), Aarav Krishnamurthy., Harshit Bhalla, Anant, Kavya Raghunathan, Ops Maven. Related: ISS-087, ISS-088.
- Expected: The review goes to the employee's reporting manager, then the department head, then the HR Head (SHR-090).
- Evidence: scratch/FB/onboarding/shots/confirmation-review-panel.png
ISS-540 · Joiner panel's document drop accepts only .pdf and .png, so the checklist's own "HD photograph" (JPEG) can't be uploaded
- Module: Lifecycle → Onboarding panel · Severity: Low · Found: 15 Oct 2026
- Steps: Open a joiner's panel → "Drop signed documents here".
- Actual: ".pdf,.png · up to 2MB each". Recruitment → Pre-onboarding accepts .pdf, .docx, .txt, .jpg, .jpeg and .png.
- Expected: The same file types in both places, at least JPEG.
- Evidence: scratch/FB/onboarding/shots/pob-srija.png
ISS-539 · Withdrawn exits are counted as "early exits moved to Offboarding"
- Module: Lifecycle → New joinees · Severity: Low · Found: 15 Oct 2026
- Steps: Start an exit for a joiner inside the window, withdraw it, reload New joinees.
- Actual: The banner went 5 → 7 → 8 as QA's three withdrawn FB Test exits were added. Most exits it counts are
withdrawn(Ananya Sharma, Deepak Chauhan, Abhishek Kumar, Durgesh ×2…). - Expected: Only exits that are still open or completed.
- Evidence: scratch/FB/onboarding/shots/runs/ (new-joiner, banner 7);
exitCasesstatuses
ISS-538 · New joinees lists people far outside the 7-day window and some twice; the orientation attendee picker repeats them
- Module: Lifecycle → New joinees; Orientation → Schedule session · Severity: Medium · Found: 15 Oct 2026
- Steps: Lifecycle → New joinees ("Everyone inside their first 7 days"); Orientation → Schedule session → Mandatory attendees.
- Actual: Joiners on day 8, 9 and 12 are listed, and Meghana Iyengar at day 527 (hire date 2025-05-05). Vinay Yenduri, Phase Flowtest and Abhishek Kumar have duplicate onboarding records and appear twice in New joinees and in both attendee pickers.
- Expected: Only people within their first 7 days, once each; duplicate onboarding records cleaned up.
- Evidence:
GET /api/company/people/new-joinees(items withdaysIn8, 9, 12, 527); scratch/FB/onboarding/shots/orientation-attendee-picker.png
ISS-537 · Dates and relative times are worked out in UTC, so they're a day off after midnight IST
- Module: Lifecycle → New joinees; Leave → My leave; Recruitment → requisition SLA (also ISS-519, ISS-547) · Severity: Medium · Found: 15 Oct 2026
- Steps: Between 00:00 and 05:30 IST: (a) Lifecycle → New joinees for a joiner with DOJ 15 Oct; (b) send leave at 00:50 IST and open My leave; (c) submit a requisition at 01:15 IST Thu and read the step's due date.
- Actual: (a) "Starts in 1d" on the joining day (API
daysIn:-1); UX-011 still open. (b) "Waiting for approval · sent yesterday" (submittedAt 2026-10-14 19:20 UTC). (c) "Two business days" from Thu 15 Oct 01:15 IST →dueAt 2026-10-18T19:45Z, a Sunday in UTC (shown as Mon 19 Oct 01:15 IST). Same root as the interview reminder in UTC (ISS-519) and punch times (ISS-547). - Expected: Dates, day counts and SLAs computed in the tenant's time zone (Asia/Kolkata).
- Evidence:
GET /api/company/people/new-joinees; scratch/FB/shots/leave-myleave-e3.png; requisition run chain (REQ-2026-0157)
ISS-536 · HR Manager, HR SPOC and Admin can't apply an onboarding checklist: 403 templates.view
- Module: Lifecycle → Onboarding · Severity: High · Found: 15 Oct 2026
- Steps: As QA HR Manager (or HR SPOC, or Admin), Lifecycle → Onboarding → Start onboarding; or open a card at "Checklist 0/0".
- Actual:
GET /api/company/templates?kind=checklist&status=active→ 403requiredPermission templates.view. The Checklist picker shows "None (unavailable)"; "Use checklist" reads "pre-boarding-stakeholder-checklist (unavailable)"; Edit template shows "(unavailable)". Only the HR Head and the super admin can apply checklists, which is why HR Ops SPOC (the SHR-033 reporter) sees 0/0. - Expected: HR Ops roles that run onboarding can pick and apply checklists.
- Evidence: scratch/FB/onboarding/shots/start-onboarding-dialog.png, edit-template.png
ISS-535 · 10 of 14 positions have no employee class (hiring into them is blocked), the CEO is "Operations", and converted hires carry class "standard" with no manager
- Module: Organization → Positions; Recruitment → Pre-onboarding → Convert · Severity: Medium · Found: 15 Oct 2026
- Steps: Organization → Positions;
GET /api/company/people/employees?limit=500. - Actual: HR Manager, CTO, Compliance Officer, Recruiter and 6 more show "Class not set"; the New employee form says "This position has no employee class yet" and blocks hires into them. The CEO position is classed Operations, so a CEO would need a manager. Employees converted from recruitment 25 Sep – 8 Oct (Debarghya Das, Vinay Kumar, Abhishek Kumar, Phase/Checklist/Preboarding/Onboarding Flowtest, Probe Candidate) have class "standard" (not one of the five), no manager and, for several, an empty work email.
- Expected: Every position has a class (CEO = Management); conversion applies the same class and manager rules as the form; old records repaired.
- Evidence: Positions page; employees API (15 Oct)
ISS-534 · Import and roster-upload previews mark rows "Ready" that the form or server refuses
- Module: Employees → Import CSV / Excel; Attendance → Shifts & rosters → Upload roster · Severity: Medium · Found: 15 Oct 2026
- Steps: (a) Employees → Import → upload rows with: a name with brackets; personal email = work email; emergency name and number = the employee's own; hire date 2025-08-01; no manager for an Operations position; class Intern for HR Head (preview only, Cancel). (b) Upload roster → CSV with Employee No QAT-999.
- Actual: (a) All 6 rows "Ready" ("Import 6 employees"); the preview checks only references and formats and makes no API call. Whether the server refuses them on Import was not tested (it would create employees). (b) "Ready"; after Upload: "0 saved · 1 refused by the server — Unknown employee number".
- Expected: The preview applies the same rules as the form and server, so bad rows are flagged before import.
- Evidence: scratch/FB/shots/import-preview.png, att_065_upload_bad_preview.png; scratch/FB/employee-creation/fb-import2.csv
ISS-533 · Employees list says "Can sign in" for 12 people who never accepted their invitation and 2 with no account
- Module: Organization → Employees (Sign-in column) vs Settings → Users · Severity: Medium · Found: 15 Oct 2026
- Steps: Employees → search "Role Test"; then Settings → Users → search "Role Test".
- Actual: Employees list: "Can sign in" (
loginStatus: active). Settings → Users: Invited, "Waiting on a first sign-in". Same for Aditya Ranganathan, Anant, Meera Kulkarni, Neera bv.aj, Onboarding Management, Pramod Singh, Probe Leaver (Demo), Rhea Menon (Demo), Ritika Chourasia. Abhishek Kumar and Kabir Anand show "Can sign in" with no account in this company. The re-send invitation API answersstatus: "active"for an invited account. This is how "credentials not generated" (SHR-006/031) looks to HR. - Expected: One state: "Invited — waiting for first sign-in" until the person signs in; "No login" when there's no account.
- Evidence: scratch/FB/shots/ec-SHR006-role-test-can-sign-in.png, ec-SHR006-role-test-invited.png; e2e
tests/feedback/employee-creation/positions-import-access.spec.ts› "SHR-006 · the Employees list says "Can sign in" only for people whose sign-in actually works" (fails)
ISS-532 · An employee created by mistake can't be deleted or voided; removing a started onboarding strands them in Pre-boarding, where they can't be exited
- Module: Organization → Employees / Lifecycle · Severity: Medium · Found: 15 Oct 2026
- Steps: Create an employee (today's hire date), open ⋯ Actions; try
DELETE,PATCH status. Start onboarding for them, then remove it; try Start exit. - Actual: Actions offers only Edit profile, Change manager, Offboard…. No DELETE route (404).
PATCHstatusexited/anonymised/pre_boarding→ 409 "This status change must use the employee lifecycle module" (orINVALID_LIFECYCLE_TRANSITION). A record created with "Generate login" off still gets a (disabled) user account. Start onboarding flips the employee to Pre-boarding; removing the onboarding leaves them in Pre-boarding, and a Pre-boarding employee can't be exited (400 INVALID_REFERENCE "Employee is unavailable for exit"). The only way out is a full exit workflow with approvals on real accounts. - Expected: A way to void a record created in error before any payroll or attendance exists; removing onboarding restores the previous status.
- Evidence: scratch/FB/onboarding/shots/empA-actions.png; FB Test Joiner A (
0539873b-4158-44df-ac63-405e17cb5d47) and FB Test Server Probe (d240f1d3-823a-4ad6-a0a1-5d3941fa192e) remain on the tenant for this reason
ISS-531 · Notifications: only the newest 50 can ever be read; paging parameters are ignored
- Module: Notifications (bell,
GET /api/company/notifications) · Severity: Medium · Found: 15 Oct 2026 - Steps: Call
GET /api/company/notifications?limit=200(or withoffset,before,cursor,page,topic), or scroll the bell. - Actual: Always the newest 50. The bell has no "load more". Admin has 689 unread and can see 50.
- Expected: All notifications, paged.
- Evidence: scratch/FB/general/n_*.json
ISS-530 · (update to ISS-052 / ISS-114) Home greeting, sidebar badge and Pending approvals card still disagree
- Module: Home · Severity: Medium · Found: 15 Oct 2026
- Steps: Open Home as QA Manager.
- Actual: Still reproduces on 15 Oct: the greeting said "3 items are waiting in your inbox" while the card showed "Inbox zero"; later the greeting and the sidebar said 4 while the card listed one item.
- Expected: The same number everywhere.
- Evidence: scratch/FB/shots/gen_010_mgr_home_pending.png
ISS-529 · Admin and manager Home stats are wrong: "Total employees 34" with 63 active, and "250% vs 30-day avg"
- Module: Home (admin, manager) · Severity: Medium · Found: 15 Oct 2026
- Steps: Open Home as admin and as QA Manager, before anyone has clocked in.
- Actual: Admin: "Total employees 34 · 209.1% vs last quarter"; the Headcount growth chart's October value is 42; Reports → Employees by status shows 63 active (88 in all); the employees API returns 88 rows. Attendance today: "0% ↘ 250% vs 30-day avg" (manager), "0% / 229%" (admin), which is impossible.
- Expected: One consistent headcount; comparisons that are arithmetically possible, or none.
- Evidence: scratch/FB/shots/gen_010_mgr_home_pending.png (top of page); Reports builder "Count by Status: active 63"
ISS-528 · People pickers silently stop at 20 or 50 people: Reports to, orientation Presenter, Start exit
- Module: Organization → New employee; Lifecycle → Orientation; Lifecycle → Offboarding · Severity: High · Found: 15 Oct 2026
- Steps: (1) New employee → Reports to. (2) Orientation → Schedule session → Presenter, type "FB Test Joiner". (3) Offboarding → Start exit → Employee.
- Actual: (1) Loads
manager-options?limit=20and stops at "QA HR Manager"; QA Manager, Vikram Raghavan and others can't be chosen as manager. (2) Usesemployees?limit=50(34 offered); typing filters only what was loaded, so "FB Test Joiner" and every QA persona can't present. (3) Samelimit=50: 36 of 70 active employees offered; QA Employee One/Two, QA Manager, Vikram Raghavan and every recent hire are missing (the API accepts them). No hint that the list is incomplete. - Expected: Every eligible person can be picked, with server-side search.
- Evidence: scratch/FB/onboarding/orient-opts.log, scratch/FB/onboarding/shots/presenter-typed.png, hr-start-exit-form.png; e2e
tests/feedback/exit/exit-forms.spec.ts› "SHR-096 · HR can start an exit for any employee" (fails: 36 offered of 70 active)
ISS-527 · Employee profile shows "No position / No location / No manager" for everyone past the first 50 names
- Module: Organization → Employees → profile (every route in: list, global search, links from Lifecycle) · Severity: High · Found: 15 Oct 2026
- Steps: As QA HR Manager, open
/employees/f4b4f6cb-fd04-40ae-9b59-57824a23e8f9/overview(QA Employee Two) or QA Employee One's profile; compare with Aarav Testman's. - Actual: Header "No position · Operations / No location"; Employment POSITION —, DEPARTMENT —, LOCATION —, JURISDICTION —; Reporting lines "No manager — this person is at the top of the tree. Their leave has nowhere to route."
GET /api/company/people/employees/<id>returnspositionTitle: "Delivery Manager",locationName: "Hyderabad HQ",managerName: "QA Manager". The page resolves these fromGET /employees?limit=50&offset=0, so anyone further down the alphabet is "not found". Aarav Testman (top of the list) shows correctly. HR sees wrong data and a false "leave has nowhere to route" warning for most of the roster (88 employees). - Expected: The profile shows the record's own position, location, jurisdiction and manager for every employee.
- Evidence: scratch/FB/shots/org-SHR009-profile-no-position.png, hrm_employees_15f63196_a104_47e5_aa98_7f0a0b70bcba_overview.png vs hrm_employees_463b32b1_a74c_47d7_9dfe_5b28fec5ffad_overview.png; e2e
tests/feedback/organization/organization.spec.ts› "SHR-009 · the profile opened from search shows the employee's position, location and manager" (fails)
ISS-526 · Tracker SHR-120 · Four offers are waiting for approval and none is in the HR Head's Inbox; some have waited on a non-HR approver for over a week
- Module: Recruitment → Offer approval / Inbox · Severity: High · Found: 15 Oct 2026
- Steps: As QA HR Head,
GET /api/company/inbox; compare with the offers pending approval. - Actual: QA HR Head has 0 pending offer items. OFR-2026-0079, 0072, 0066 and 0049 wait on the requisition's hiring manager (Test Hiring Manager, Aarav Krishnamurthy) or the HR-admin fallback (ISS-524). OFR-2026-0066 has waited on Aarav since 7 Oct, 0072 since 12 Oct, 0049 since 28 Sep; nothing escalates to HR.
- Expected: Tracker SHR-120: a submitted offer appears in the HR Head's Inbox for approval.
- Evidence: inbox API as hrh; runs as ISS-524; e2e
tests/feedback/recruitment-offer/offer-pr.spec.ts› "SHR-120 · offers waiting for approval are in the HR Head's inbox" (fails)
ISS-525 · Tracker SHR-060 · Offer approval item shows role and joining date only: no department, entity or CTC
- Module: Inbox → offer approval · Severity: Medium · Found: 15 Oct 2026
- Steps: Read the approval item of run
68811a48…(OFR-2026-0079). - Actual: "Viveka Massey · OFR-2026-0079 · Delivery Manager · joining Monday 26 October". No department, no entity (OpsMaven Services Pvt. Ltd.), no CTC. The Inbox side panel has a detail block only for requisitions (
talent_requisition), none for offers. Related: ISS-078. - Expected: Tracker SHR-060: the approver sees role, department, entity, CTC and date of joining.
- Evidence: run
68811a48…subject/subtitle; e2etests/feedback/recruitment-offer/offer-pr.spec.ts› "SHR-060 · the offer approval shows role, department, entity, CTC and date of joining" (fails)
ISS-524 · Tracker SHR-059 · Offer approval goes Hiring manager → HR review → Finance; it never goes to the HR Head
- Module: Recruitment → Offer Approval workflow · Severity: High · Found: 15 Oct 2026
- Steps: As super admin (read only), Settings → Workflows → Offer Approval (company copy, version
a7581f5a); Runs for OFR-2026-0079, 0072, 0066, 0049. - Actual: Steps:
relationship:requisition_hiring_manager→ HR review → Finance signs the compensation; no step goes to the HR Head role. OFR-2026-0079 waits on Test Hiring Manager, 0072 and 0066 on Aarav Krishnamurthy, 0049 (super-admin offer) on the HR-admin fallback. The TA SOP flow that has an HR Head step never runs (ISS-572). - Expected: Tracker SHR-059: every offer approval goes to the HR Head, whatever the department.
- Evidence: runs
68811a48…,e6c0815a…,43e37663…,28bf2363…; feedback/findings/evidence/recruitment-pipeline/workflows-offer-interview.json; e2etests/feedback/recruitment-offer/offer-pr.spec.ts› "SHR-059 · the offer approval goes to the HR Head, whatever the department" (fails)
ISS-523 · Tracker SHR-126 · The recruiter sees only "Submitted · Hold · 4/5"; panel answers and comments are shown nowhere
- Module: Recruitment → candidate profile → Interviews · Severity: Medium · Found: 15 Oct 2026
- Steps: As QA HR Manager, Pipeline → M Srija → View profile → Interviews.
- Actual: Each panelist shows only "Submitted · Hold · 4/5". The API gives the recruiter the full card (
scores,answers,recommendation,comments,blind:false), but the UI never reads/interviews/{id}/scorecards. - Expected: Tracker SHR-126: the recruiter and permitted users see the full feedback: ratings, written answers, comments.
- Evidence: feedback/findings/evidence/recruitment-pipeline/hrm-msrija-profile-no-comments.png; e2e
tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts› "SHR-126 · the recruiter sees the full feedback…" (fails)
ISS-522 · Tracker SHR-113 · Interviewers get a same-day in-app "feedback due" note, not an email after 24 hours
- Module: Recruitment → Interview round (TA SOP) · Severity: Low · Found: 15 Oct 2026
- Steps: Read workflow
om_ta_interviews, templatesta_feedback_due/ta_feedback_overdue, and QA Manager'sGET /notification-preferences?channel=email. - Actual: The workflow waits for "Interviewer's feedback recorded by the end of the day" and sends in-app notifications "Your feedback on X is due today" / "… is overdue". It's a notification template, not an email, and QA Manager's email channel for "Scorecard pending" is off. Timing is same day, not 24 h.
- Expected: Tracker SHR-113: an email reminder to the interviewer when feedback isn't in within 24 hours.
- Evidence: workflow and template definitions; e2e
tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts› "SHR-113 · the feedback reminder reaches the interviewer by email…" (fails); "SHR-113 · the interviewer is reminded…" (passes)
ISS-521 · Tracker SHR-102 · Résumés that start with a section heading are saved under that heading ("Professional Summary"), and candidates are emailed "Dear Professional Summary"
- Module: Recruitment → résumé parsing · Severity: Medium · Found: 15 Oct 2026
- Steps: As QA HR Manager, import résumés whose first line is "PROFESSIONAL SUMMARY" / "Professional Summary" (name below).
- Actual: Saved as "PROFESSIONAL SUMMARY" and "Professional Summary" (a "CURRICULUM VITAE" heading is skipped correctly). Live data: candidates named "Professional Summary" (×2) and "Work Experience"; emails went out as "Dear Professional Summary," and "Dear Work Experience,". The names can't be corrected (ISS-566).
- Expected: Tracker SHR-102: the parser takes the person's name, not a heading.
- Evidence: feedback/findings/evidence/recruitment-pipeline/hrm-talent-pool-fbtest-names.png, sent-emails.json (
01a132f9…,01a130be…); e2etests/feedback/recruitment-pipeline/pool-import.spec.ts› "SHR-102 · the parser takes the candidate's name, not a section heading" (fails, 2 of 3)
ISS-520 · Tracker SHR-081 · Interviewer notifications link to /inbox?interview=, which opens the plain Approvals inbox
- Module: Notifications / Inbox · Severity: Medium · Found: 15 Oct 2026
- Steps: Open a panel notification (invite, reminder or scorecard nudge), i.e.
/inbox?interview=<id>. - Actual: The Inbox ignores the parameter and shows the plain "Approvals inbox"; there is no Hiring item and no way to reach the interview or the scorecard from it.
- Expected: Tracker SHR-081: the notification opens the interview and its feedback form.
- Evidence: feedback/findings/evidence/recruitment-pipeline/hrm-inbox-interview-link.png; e2e
tests/feedback/recruitment-pipeline/pipeline-pr.spec.ts› "SHR-081 · the interviewer's notification opens the interview and its feedback form" (fails)
ISS-519 · Tracker SHR-078 · Candidate interview reminders print the time in UTC (10:42 am for a 4:12 pm IST interview)
- Module: Recruitment → Interview round (TA SOP) emails · Severity: High · Found: 15 Oct 2026
- Steps: As QA HR Head, Templates → Emails → sent log → "Your interview for … is tomorrow".
- Actual: The 14 Oct email reads "tomorrow at 14 Oct 2026, 10:42 am" for an interview at 10:42 UTC = 4:12 pm IST. The 9–13 Oct emails print the raw value "2026-10-13 10:50:00+00". The run context has
_timezone: Asia/Kolkata, ignored. The Schedule dialog claims "Times are sent in the role's local time zone". A candidate who trusts the email turns up 5½ hours early or misses the interview. Slot-proposal and booking emails aren't in the sent log, so their format wasn't seen. - Expected: Tracker SHR-078: times in candidate and panel emails in the role's time zone (IST here), with the zone named.
- Evidence: feedback/findings/evidence/recruitment-pipeline/sent-emails.json (ids
01a13a00…,01a134e0…,01a132f9…,01a130be…); e2etests/feedback/recruitment-pipeline/pipeline-pr.spec.ts› "SHR-078 · the latest interview reminder email gives the interview time in IST, not UTC" (fails)
ISS-518 · Tracker SHR-022 · A résumé line "Name: Kabir" is saved as the candidate name "Name: Kabir", so every email greets "Hi Name: …"
- Module: Recruitment → résumé parsing / candidate emails · Severity: Medium · Found: 15 Oct 2026
- Steps: As QA HR Manager, Jobs → Import résumés → Talent pool, a résumé whose first line is "Name: Kabir Fbtest".
- Actual: The candidate is saved as "Name: Kabir Fbtest". The "Application received" template itself is right (
Hi {candidate.full_name},). Live: the 12 Oct offer reminder reads "Hi Name: Mahesh Lebaku," (candidate "Name: Mahesh Lebaku", who has offer OFR-2026-0062). Names can't be corrected afterwards (ISS-566). - Expected: Tracker SHR-022: the parser drops labels like "Name:"; the greeting uses the real name.
- Evidence: feedback/findings/evidence/recruitment-pipeline/sent-emails.json (id
01a12e9d…), hrm-talent-pool-fbtest-names.png; e2etests/feedback/recruitment-pipeline/pool-import.spec.ts› "SHR-022 · a résumé line "Name: Kabir" gives the name "Kabir"…" (fails)
ISS-517 · Tracker SHR-111 · An uploaded Word JD's H1 title arrives as literal "…
" text
- Module: Recruitment → Raise requisition → Upload JD · Severity: Low · Found: 15 Oct 2026
- Steps: As QA Manager, Raise requisition → Upload JD →
jd-structured.docx(H1, H2, bullets, numbers, bold). - Actual: H2, bullets, numbers and bold come through. The H1 is HTML-escaped: the editor shows
<h1>Delivery Manager</h1>as text (/posts/description-textresponsehtmlstarts with<h1>). - Expected: Tracker SHR-111: the uploaded JD keeps its layout, title included.
- Evidence: feedback/findings/evidence/recruitment-requisition/req-jd-mgr.png; e2e
tests/feedback/recruitment-requisition/form.spec.ts› "SHR-111 · an uploaded JD keeps its layout…" (fails)
ISS-516 · Tracker SHR-074 · After approval the hiring manager can still post the job, start sourcing and edit the pre-onboarding checklist
- Module: Recruitment → Requisition panel · Severity: Low · Found: 15 Oct 2026
- Steps: As QA Manager (hiring manager), open the approved REQ-2026-0157.
- Actual: The notice and the approval details (steps, approvers, times) are there. But the panel offers "Post this role", "Start sourcing" and "Pre-onboarding checklist · Tweak items" (from draft to approved), because QA Manager has
recruitment.job.manageand the panel treats him as the recruiting team. - Expected: Tracker SHR-074: the hiring manager sees the approved requisition read-only; posting and sourcing are the recruiters'.
- Evidence: feedback/findings/evidence/recruitment-requisition/journey-mgr-approved.png, req-detail-mgr-approved2.png; e2e
tests/feedback/recruitment-requisition/approval.spec.ts› "SHR-074 · the hiring manager cannot post the job or run sourcing…" (fails)
ISS-515 · Tracker SHR-073 · Recruiters are never told about approvals; the "department head approved" notice names the wrong next step; "Recruitment Head" resolves to nobody
- Module: Recruitment → Requisition notifications / workflow · Severity: Medium · Found: 15 Oct 2026
- Steps: Take REQ-2026-0157 / 0160 through Department Head → Management → HR Head; read the bells of the hiring manager, QA HR Head and QA HR Manager (recruiter) and the run events.
- Actual: On department-head approval the hiring manager and HR Head get "Department head approved: REQ-… — now with HR for the final decision"; the next step is actually Management. QA HR Manager (recruiter) got nothing at any point. After final approval the HR Head gets no notice, and the notice to the "Recruitment Head" relationship resolved to nobody (event warning
some recipients resolved to nobody (6b92f0fb…)). The sub-process "Recruitment Head names the recruiter" falls back to hr_admin Vikram Raghavan ("nobody here holds this role") on every approved requisition. - Expected: Tracker SHR-073: after department-head approval, the HR Head, hiring manager and all recruiters are told, with the real next step.
- Evidence: feedback/findings/evidence/recruitment-requisition/journey-observations.json › dhNotified, approvedNotified, approvalWarnings; runs
970cb7fd…,3f0c1687…; e2etests/feedback/recruitment-requisition/approval.spec.ts› "SHR-073 · the recruiters are told…", "SHR-073 · once approved, the HR Head, hiring manager and recruiters are all told" (both fail)
ISS-514 · Tracker SHR-072 · Returned requisition shows "Changes requested" now, but its progress says "Approved", and the manager gets two notices blaming the wrong person
- Module: Recruitment → Requisition panel / notifications · Severity: Medium · Found: 15 Oct 2026
- Steps: QA HR Head sends REQ-2026-0157 back with a comment. As QA Manager, open it and read the bell.
- Actual: Fixed: status "Changes requested" with "Sent back by the approver — "
" — Edit the requisition, then submit it again". Still wrong: (1) Approval progress reads "Raised · Approved · Approval chain · Approved · Open for sourcing · Queued · No approval workflow is set up for this yet"; (2) two notices per return, one saying "The department head sent the requisition back" although the HR Head did; (3) the panel doesn't name who sent it back. - Expected: Tracker SHR-072: the returned requisition shows the step that returned it, one notice naming the approver, and their comment.
- Evidence: feedback/findings/evidence/recruitment-requisition/journey-mgr-returned.png, req-detail-mgr-changes.png, journey-observations.json › returned.notes; e2e
tests/feedback/recruitment-requisition/approval.spec.ts› "…approval progress … does not claim it was approved", "…the hiring manager is told who sent it back" (both fail)
ISS-513 · Tracker SHR-054 · Hiring manager's "approved" notice claims a salary band was recorded; email delivery can't be seen
- Module: Recruitment → Requisition notifications · Severity: Low · Found: 15 Oct 2026
- Steps: Take REQ-2026-0157 through approval; read QA Manager's bell.
- Actual: In-app: "FB Test Req … is approved … with the salary band, the panel and the job description recorded". Requisition v3 records no salary band. Whether the email is sent can't be observed on QA (no outbox / channel API).
- Expected: Tracker SHR-054: the hiring manager gets an accurate approval notice by email and in-app.
- Evidence: feedback/findings/evidence/recruitment-requisition/journey-observations.json › approvedNotified.mgr; e2e
tests/feedback/recruitment-requisition/approval.spec.ts› "SHR-054 · the hiring manager is notified when the requisition is approved (in-app; email is not observable on QA)" (passes for in-app)
ISS-512 · Tracker SHR-049 · The hiring-manager list is now limited to the department, but the server accepts a hiring manager from any department
- Module: Recruitment → Requisition API · Severity: Low · Found: 15 Oct 2026
- Steps:
POST /api/company/talent/recruitment/requisitionsfor Delivery Manager / Delivery withhiringManagerEmployeeId= Aarav Krishnamurthy (Executive Office). - Actual: 201, REQ-2026-0156 created (cancelled by QA). The form is fixed: after "Delivery Manager" it offers 13 Delivery people.
- Expected: Tracker SHR-049: the server refuses a hiring manager outside the position's department (400).
- Evidence: feedback/findings/evidence/recruitment-requisition/req-mgr-hm-options.png; e2e
tests/feedback/recruitment-requisition/form.spec.ts› "SHR-049 · the server refuses a hiring manager from another department" (fails)
ISS-511 · Tracker SHR-122 · Special leave types with nothing credited are offered on the form with "0 left"
- Module: Leave & time off → Apply / balance cards · Severity: Low · Found: 15 Oct 2026
- Steps: As qa.employee3 (no special leave credited), Apply → leave type list; balance cards.
- Actual: Bereavement, Examination, Paternity and Wedding Leave are offered, each "0 left", plus balance cards. A credited special leave does show correctly (qa.employee2: Bereavement "3 left").
- Expected: Tracker SHR-122: special types appear only once HR has credited them.
- Evidence: scratch/FB/leave/evidence/SHR-122-special-types-shown-zero.png; e2e
tests/feedback/leave/leave-rules.spec.ts› "SHR-122 · special leave types with no credited balance are hidden…" (fails)
ISS-510 · Tracker SHR-093 · Half-day leave has no First half / Second half choice
- Module: Leave & time off → Apply · Severity: Medium · Found: 15 Oct 2026
- Steps: As qa.employee2, Apply → PTO → one day.
- Actual: The form has only a "Just a half day" switch, with no half selector. The switch itself can't be turned on (ISS-554), and the API stores every half day as
first_halfwhatever is sent (ISS-555). The data model and request detail already show "(first half)/(second half)". - Expected: Tracker SHR-093: the employee picks First half or Second half, and it is stored.
- Evidence: scratch/FB/leave/evidence/SHR-093-no-first-second-half.png; e2e
tests/feedback/leave/leave-rules.spec.ts› "SHR-093 · a half-day request lets the employee choose First half or Second half" (fails)
ISS-509 · Tracker SHR-092 · Comp-off for an ordinary working day is accepted, and the chain has a single manager step
- Module: Overtime & comp-off / Comp-Off Request workflow · Severity: Medium · Found: 15 Oct 2026
- Steps: As qa.employee2, Request comp-off for Tue 13 Oct 2026 (a regular working day).
- Actual:
POST201; the run is then rejected only for having no comp-off balance (ISS-505), not because it was a working day. Future dates are refused ("Comp-off is for a day you have already worked"). The workflow has one step,mgr_compoff (manager_or_hr_partner). - Expected: Tracker SHR-092: comp-off only for work on a weekly off or holiday; approval Reporting manager → Department head → HR SPOC → HR Head.
- Evidence: runs
14aa7dc9-7df9-4c0a-ab89-4aeca2714c5f,192916cb-f82f-410b-a40e-b9cd8a71aa41; e2etests/feedback/leave/leave-journeys.spec.ts› "SHR-092 · comp-off for a regular working day is refused" (fails);leave-rules.spec.ts› "SHR-092 · comp-off requests go Reporting manager → Department head → HR SPOC → HR head" (fails)
ISS-508 · Tracker SHR-069 · (update to ISS-440 / ISS-446) 156 automatically credited special-leave balances are still in place; new joiners were credited after 8 days
- Module: Leave / accrual · Severity: High · Found: 15 Oct 2026
- Steps: As QA HR Manager,
GET /api/company/leave/balances?limit=500and the ledgers of QA Employee Two / Three. - Actual: Since 14 Oct the special-leave policies have
accrual.frequency: none, but the automatic credits were not reversed: 156 balances across the company still hold accrued Bereavement 10 / Examination 5 / Maternity 182 / Paternity 5 (e.g. Aarav, Aditya Ranganathan, Kavya). 1 Oct joiners got Floating Holidays +2 and PTO +1.25 on 9 Oct. Balances that payroll and approvals read are wrong for most of the company. - Expected: Tracker SHR-069: Floating Holidays and PTO only after their waiting periods; special leave only when HR assigns it; existing automatic credits reversed.
- Evidence: ledger and balances API (15 Oct); e2e
tests/feedback/leave/leave-rules.spec.ts› "SHR-069 · FLOATING-HOLIDAYS is not credited before…", "…PAID-TIME-OFF-PTO…", "SHR-069 · special leaves … are never credited automatically" (all fail)
ISS-507 · Tracker SHR-068 · Cancelling approved leave of 3 days or fewer is credited back at once; the manager is never asked
- Module: Leave / Leave Cancellation workflow · Severity: Medium · Found: 15 Oct 2026
- Steps: As qa.employee2, cancel an approved ½-day PTO (23 Dec 2026): My leave → Cancel this leave → reason → Request cancellation.
- Actual:
gate_scopesendsrequest.days > 3tomgr_cancel_reviewand everything else tocredit_ledger. The ½ day was cancelled and credited back within seconds, with no Inbox task for anyone. (In one run the cancellation then hung: ISS-556.) - Expected: Tracker SHR-068: every cancellation of approved leave goes to the reporting manager.
- Evidence: scratch/FB/leave/evidence/SHR-068-cancel.png; run
b50a16ce-413a-444c-8023-600bd9ea91d3; e2etests/feedback/leave/leave-journeys.spec.ts› "SHR-068 · cancelling approved leave goes to the reporting manager instead of being approved automatically" (fails)
ISS-506 · Tracker SHR-087 · Leave Without Pay of 3+ days goes from the manager straight to 14 HR users, with no department head
- Module: Leave / Leave Without Pay workflow · Severity: Medium · Found: 15 Oct 2026
- Steps: As qa.employee2, apply for 4 days of PTO and, separately, 4 days of LWP; QA Manager approves each.
- Actual: PTO (Annual Leave Approval) goes to
dept_head_approval(Test Department Head) after the manager: fixed. LWP (platform workflow) goes Manager →hr_approvalwith 14 HR tasks and no department head step, which is exactly "triggered to HR without dept head approval". - Expected: Tracker SHR-087: any leave of more than 3 days, LWP included, goes to the department head after the manager.
- Evidence: runs "FB Test SHR-087 PTO/LWP"; e2e
tests/feedback/leave/leave-journeys.spec.ts› "SHR-087 · leave without pay of more than 3 days goes to the department head…" (fails);leave-rules.spec.ts› "SHR-087 · leave without pay … also needs the department head" (fails); the PTO tests pass
ISS-505 · Tracker SHR-086 · (update to ISS-441) "Request comp-off" exists but every request is auto-rejected for having no comp-off balance
- Module: Overtime & comp-off / Comp-Off Request workflow · Severity: High · Found: 15 Oct 2026
- Steps: As qa.employee2, Leave & attendance → Overtime & comp-off → Comp-off wallet → Request comp-off → day worked 12 or 13 Oct, full day, reason → send.
- Actual: Still reproduces on 15 Oct: runs
14aa7dc9…,4e88c316…,192916cb…endedrejectedatgate_balance("No comp-off to spend"). The form is there, but the request is never seen by anyone, so in practice there's still no way to request comp-off. - Expected: Tracker SHR-086: a request for a day worked reaches the approvers; the balance check belongs to spending comp-off, not earning it.
- Evidence: runs above; scratch/FB/leave/q.ts output; e2e
tests/feedback/leave/leave-rules.spec.ts› "SHR-086 · an employee can request comp-off for a day worked" (passes for the option; routing covered by the SHR-092 tests, which fail)
ISS-504 · Tracker SHR-085 · (update to ISS-446 / ISS-450) Wedding Leave is now HR-only, but Floating Holidays and October PTO still went to 1 Oct joiners on 9 Oct
- Module: Leave / accrual · Severity: Medium · Found: 15 Oct 2026
- Steps: Leave → Balances → QA Employee Two (joined 1 Oct) → Balances and ledger.
- Actual: Fixed: Wedding Leave accrual is
noneand every automatic grant was reversed on 14 Oct. Still reproducing on 15 Oct: Floating Holidays +2 on 9 Oct (8 days after joining, not 30) and PTO +1.25policy_entitlement:2026-10on 9 Oct (should start 1 Nov). The same holds for QA Employee Three. - Expected: Tracker SHR-085: Floating Holidays credited 30 days after joining; PTO from the 1st of the month after joining; Wedding Leave only by HR.
- Evidence: e2 ledger (
/api/company/leave/ledger?employeeId=…); e2etests/feedback/leave/leave-rules.spec.ts› "SHR-085 · Floating Holidays are credited only 30 days after…", "SHR-085 · PTO is first credited on the 1st of the month after joining" (both fail); "SHR-085 · Wedding Leave is assigned by HR only…" (passes)
ISS-503 · Tracker SHR-047 · Maternity requests skip the manager and department head and fan out as 14 tasks to every HR user
- Module: Leave / Maternity Leave Approval workflow · Severity: High · Found: 15 Oct 2026
- Steps: As qa.employee2 (Maternity credited by the test, reversed afterwards), apply for 5 days of Maternity (Jan–Feb 2027); read the run. Then QA HR Manager rejects on the run's own task.
- Actual: The platform workflow "Maternity Leave Approval" has one step,
hr_approval (hr_partner), which created 14 tasks, one per HR user. There is no Reporting Manager step and no Department Head step, so the manager is never asked. When QA HR Manager rejected, the request endedrejectedand the other 13 tasks were closedskipped(ISS-239 is fixed for this flow). - Expected: Tracker SHR-047: maternity goes Reporting manager → Department head (→ HR), with notifications; one decision closes it.
- Evidence: runs "FB Test SHR-047 routing/HR rejection" (tasks
hr_approval× 14); e2etests/feedback/leave/leave-rules.spec.ts› "SHR-047 · maternity leave goes to the reporting manager, then the department head" (fails);leave-journeys.spec.ts› "SHR-047 · a maternity request reaches the reporting manager first…" (fails), "SHR-047 · when HR rejects a maternity request it ends rejected…" (passes)
ISS-502 · Tracker SHR-046 · Maternity end date isn't filled 182 days after the start, and men still hold 182-day Maternity balances
- Module: Leave & time off → Apply / Leave → Balances · Severity: Medium · Found: 15 Oct 2026
- Steps: As qa.employee2, Apply → Maternity Leave → From 21 Dec 2026. As QA HR Manager, Balances → Maternity Leave.
- Actual: Counting is right: day-count for 21 Dec 2026 – 20 Jun 2027 =
units 182, countsCalendarDays true, and male QA Employee Three isn't offered Maternity. But To stays "Pick a date" after From is chosen. Aarav Krishnamurthy and Test Interviewer Two (male) hold 182 days of Maternity (ISS-440 still open). - Expected: Tracker SHR-046: the end date fills 182 calendar days after the start; no male employee holds Maternity.
- Evidence: scratch/FB/leave/evidence/SHR-046-maternity-no-auto-end-date.png; e2e
tests/feedback/leave/leave-rules.spec.ts› "SHR-046 · … fills the end date 182 days later", "SHR-046 · no male employee holds a Maternity Leave balance" (both fail)
ISS-501 · Tracker SHR-020 · The leave form lets 11 days of Bereavement be sent; only the server refuses it
- Module: Leave & time off → Apply · Severity: Low · Found: 15 Oct 2026
- Steps: HR credits 12 Bereavement days to qa.employee2 (reversed afterwards). Apply → Bereavement Leave → 12–26 Jan 2027 (11 working days).
- Actual: The form shows "11 days bereavement leave, 12–26 Jan. Goes to your manager." with Send enabled and no cap message. The server refuses after Send (4xx naming 10). The summary says "Goes to your manager" although 3+ days go Manager → Department head (
gate_long→dept_head_approval, which works). The reported "No working days" error no longer appears. - Expected: Tracker SHR-020: the form itself says Bereavement is capped at 10 days and disables Send; the summary shows both approval levels.
- Evidence: scratch/FB/leave/evidence/SHR-020-bereavement-11-days-form.png; e2e
tests/feedback/leave/leave-journeys.spec.ts› "SHR-020 · the form refuses Bereavement Leave of more than 10 days" (fails); "SHR-020 · the server refuses…" and "SHR-020 · a request of 3 days or more needs the manager and then the department head" (pass)
ISS-500 · Tracker SHR-019 · Bereavement and Wedding balances were repaired, but neither policy expires or blocks carry-forward, and Wedding allows 10 days per request
- Module: Leave → Policies · Severity: Medium · Found: 15 Oct 2026
- Steps:
GET /api/company/leave/policiesfor BLE and WEDDING-LEAVE; Leave → Balances. - Actual: Kavya's 20 bereavement / 14 wedding days were corrected on 14 Oct (
repair:duplicate_credit:2026,policy_change:wedding_granted_by_hr); nobody now holds more than 10 / 7 (fixed). But both policies havecarryForwardRule: {}(no lapse, no expiry), and Wedding Leave hasmaxConsecutiveDays: 10per request against a yearly cap of 7. - Expected: Tracker SHR-019: at most 10 bereavement / 7 wedding days, not carried forward, lapsing at year end; Wedding requests capped at 7.
- Evidence: policies API; e2e
tests/feedback/leave/leave-rules.spec.ts› "SHR-019 · … not carried forward and expire", "SHR-019 · Wedding Leave is capped at 7 days" (both fail)
ISS-499 · Tracker SHR-018 · Women no longer see Paternity Leave on the form, but female employees still hold Paternity balances
- Module: Leave → Balances · Severity: Medium · Found: 15 Oct 2026
- Steps: As qa.employee2 (female), Apply → leave types. As QA HR Manager,
GET /api/company/leave/balances?limit=500, Paternity Leave. - Actual: The form is fixed: female QA Employee Two isn't offered Paternity, male QA Employee Three isn't offered Maternity. But Kavya Raghunathan holds 5 days of Paternity Leave and Test Interviewer One 5 days (
policy_entitlement:2026, never reversed). Same root as ISS-440. - Expected: Tracker SHR-018: gender-restricted types are neither offered nor credited to ineligible people; the wrong credits are reversed.
- Evidence: balances API (15 Oct); e2e
tests/feedback/leave/leave-rules.spec.ts› "SHR-018 · a female employee is not offered Paternity Leave" (passes), "SHR-018 · no female employee holds a Paternity Leave balance" (fails)
ISS-498 · Tracker SHR-016 · "Request sent" names no approver and shows a route the request won't take
- Module: Leave & time off → Apply · Severity: Low · Found: 15 Oct 2026
- Steps: As qa.employee2, send 1 day of Floating Holidays (18 Jan); read the confirmation; open My leave → card → Approvers.
- Actual: "Request sent 🎉 1 day of floating holidays, 18 Jan. Watch "My leave" for the decision. It goes through Manager approval (Manager, or HR Partner) → Department head approval (Department Head, or HR)." It doesn't say QA Manager has it and has no link; the department-head step is never reached for 1 day. My leave → Approvers (collapsed by default; skeleton for more than 5 s) does show "Manager approval · Awaiting · due 19 Oct, 3:00 pm · QA Manager".
- Expected: Tracker SHR-016: after sending, the screen names who has the request now and links to where it is tracked; the route shown is this request's route (UX-026).
- Evidence: scratch/FB/leave/evidence/SHR-016-request-sent.png, SHR-016-myleave-approvers-loading.png; e2e
tests/feedback/leave/leave-journeys.spec.ts› "SHR-016 · after sending, the screen names the current approver and links to where the request is tracked" (fails)
ISS-497 · Tracker SHR-094 · A regularised day looks like any other day: no colour, no legend entry, plain "HD" in the muster
- Module: Attendance → My attendance / muster · Severity: Low · Found: 15 Oct 2026
- Steps: As qa.employee1, My attendance → 9 Oct (missed-punch correction approved). As HR, download the muster.
- Actual: 9 Oct has the same
bg-amber-softcolour as other half days; its label "Friday 9 October · Half day · 9:00 am–8:00 pm · 10.5h worked · 2h overtime — correct this day" says nothing about the correction. The legend has no "corrected" entry. The HR muster shows a plain "HD". - Expected: Tracker SHR-094: corrected days have their own colour and label, in the calendar and the muster.
- Evidence: scratch/FB/shots/att_094_e1_calendar_9oct.png, att_094_hr_muster.png; e2e
tests/feedback/attendance/attendance-pr.spec.ts› "SHR-094 · a corrected (regularised) day is colour-coded and labelled as corrected" (fails)
ISS-496 · Tracker SHR-109 · The exit workflow posts people's last days as announcements, with an email address and ISO dates
- Module: Announcements (Exit workflow) · Severity: Medium · Found: 15 Oct 2026
- Steps: As QA Admin, To read → Announcements (
/me/to-read/announcements). - Actual: Two posts titled "A change in the team": "Single Test One's last day with the team is 2026-10-16…" and "Bulk Test One's last day with the team is 2026-11-11…" (12 Oct). The exit workflow published them (
workflowInstanceIdset, author Kavya Raghunathan) to the Administration department. The second names the successor as a raw email "kavya.raghunathan@opsmaven.test". Dates are ISO, not the company format. - Expected: Tracker SHR-109: exits are not posted in Announcements (or only when HR chooses to, with a proper name and date).
- Evidence:
GET /api/me/organization/announcementsas qadmin (idse82f6507…,be5bbe32…); scratch/FB/onboarding/shots/qadmin_me_to_read_announcements.png; e2etests/feedback/exit/exit-forms.spec.ts› "SHR-109 · a resignation or exit is not posted in Announcements" (fails)
ISS-495 · Tracker SHR-096 · HR can't start an exit for half the company; the form still asks for "Last working day" with no resignation date or reason for a changed date
- Module: Lifecycle → Offboarding → Start exit · Severity: High · Found: 15 Oct 2026
- Steps: As QA HR Head, Offboarding → Start exit → open Employee and scroll; read the fields. As qa.employee1, Resign → pick a date two weeks earlier (cancelled).
- Actual: The Employee picker offers 36 of 70 active employees (it loads
employees?limit=50and search filters only that page; ISS-528). QA Employee One/Two, QA Manager, Vikram Raghavan and every recent hire are missing; the APIPOST /people/lifecycle/exitsaccepts them. HR's form asks Employee, Last working day (no default), Initiation; there's no resignation date and no calculated relieving date. On the employee form an earlier date shows "That is before your notice period ends — it is a request for an early release…" but no separate mandatory reason. Both forms say "Last working day", never "Relieving date". - Expected: Tracker SHR-096: any employee can be exited; the form takes the resignation date and works out the relieving date; changing it needs a reason; "Relieving date" wording.
- Evidence: scratch/FB/onboarding/shots/hr-start-exit-form.png, e1-resign-date-changed.png; e2e
tests/feedback/exit/exit-forms.spec.ts› "SHR-096 · HR can start an exit for any employee" (fails: 36 offered of 70 active), "SHR-096 · the exit form takes the resignation date and works out the relieving date", "SHR-096 · the forms say "Relieving date", not "Last working day"", "SHR-096 · changing the calculated relieving date asks for a reason for the change" (all fail)
ISS-494 · Tracker SHR-061 · Resignation: one flat 30-day notice for everyone, only the manager and HR Manager are told, and a same-day leaver still gets "stay conversation within two working days"
- Module: Lifecycle → Exit / Exit workflow · Severity: High · Found: 15 Oct 2026
- Steps: (a) As qa.employee1 (Telangana, India), My journey → Resign (cancelled, never submitted). (b) As QA HR Head, raise a resignation for "FB Test Org Leaver" with last day today; check every stakeholder's bell (withdrawn afterwards).
- Actual: Self-service resignation now exists (fixed). (a) The form says "Your 30-day notice ends 14 Nov 2026": the notice period is one company-wide
noticePeriodDays: 30(Configure clearance /GET /people/offboarding-template), not 60 days for India. (b) The Exit run notified the reporting manager (2 notices) and QA HR Manager (1). QA HR Head, HR SPOC, IT, Accounts and Admin got nothing. The manager is told "Please hold the stay conversation within two working days … within 48 hours" although the last day is today. The run then waits at "Stay conversation recorded" on an override task for "Test HR Head" (ISS-543). The notice's link goes to the raw workers.dev host (ISS-545). - Expected: Tracker SHR-061: notice period by jurisdiction (India 60, other countries 14); every exit stakeholder notified at once; the wording fits the requested last day.
- Evidence: scratch/FB/onboarding/shots/e1-resign-form.png; run
5c6135f8…(ntf-resignation-submittedrecipients: 2); e2etests/feedback/exit/exit-forms.spec.ts› "SHR-061 · the notice period comes from the employee's location: 60 days in India", "SHR-061 · notice periods are set per jurisdiction (India 60 days, other countries 14)" (fail);resignation-journey.spec.ts› "SHR-061 · approvals and notifications reach every exit stakeholder as soon as someone resigns", "SHR-061 · the notification fits the requested last working day" (fail)
ISS-493 · Tracker SHR-090 · Probation questionnaire lacks six of the seven criteria, has no self rating or comment column, and never reaches the HR Head
- Module: Lifecycle → Confirmation · Severity: Medium · Found: 15 Oct 2026
- Steps: As QA HR Head, Lifecycle → Confirmation → Question sets → open "confirmation-review" and "Probation confirmation — standard"; New set → Answer type; open Checklist Flowtest's review → Approval chain.
- Actual: Both sets ask the same four questions: quality of work, collaboration, ownership (1–5) and a written summary. Communication (verbal/written), job knowledge, initiative in learning, application of skills, problem solving and interpersonal skills are missing. Answer types are only Rating 1–5, Written answer, Yes / no, so "Self rating / Rating / Comments" per criterion is impossible. The chain is Manager's recommendation → "Department Head, or HR" → "HR Partner · any one of 14"; there is no HR Head step, and the chain asks for a decision, not per-criterion input. 8 duplicate "Review questions" sets and an empty "Demo Question Set" are still listed (ISS-085).
- Expected: Tracker SHR-090: the seven criteria, each with self rating, manager rating and comment, reviewed by Reporting Manager → Department Head → HR Head.
- Evidence: scratch/FB/onboarding/shots/confirmation-list.png, confirmation-review-panel.png, question-set-new.png; e2e
tests/feedback/confirmation/probation-form.spec.ts› "SHR-090 · the probation confirmation form lists the seven evaluation criteria", "SHR-090 · each criterion takes a self rating, a rating and a comment", "SHR-090 · the Reporting Manager, the Department Head and the HR Head each review the form" (all fail)
ISS-492 · Tracker SHR-013 · IT gets nothing for a same-day joiner until HR starts onboarding by hand
- Module: Lifecycle → Onboarding · Severity: Medium · Found: 15 Oct 2026
- Steps: Create a DOJ-today joiner from Organization; check QA IT's Home, Inbox and bell. Then, as QA HR Head, Start onboarding with the stakeholder checklist.
- Actual: Nothing reaches QA IT automatically. After the manual start, QA IT gets "IT asset preparation" and "DevOps and IT tools provisioning" under Home → "Your onboarding tasks" and a notification "…'s onboarding: 2 steps for you"; QA Admin gets 6. So the manual path works; the trigger doesn't exist (ISS-488).
- Expected: Tracker SHR-013: the IT checklist starts for today's joiners without HR having to start it.
- Evidence: scratch/FB/onboarding/shots/it.png;
GET /api/me/people/onboarding/tasks/mineas it; e2etests/feedback/onboarding/new-joiner.spec.ts› "SHR-013 · the IT team gets the IT checklist for a joiner starting today" (fails), "SHR-013 · once onboarding starts, IT is notified and has the IT items on Home" (passes)
ISS-491 · Tracker SHR-033 · Recruitment hires still sit at Checklist 0/0; with the stakeholder checklist, the manager's and candidate's items go to whoever started it
- Module: Lifecycle → Onboarding · Severity: High · Found: 15 Oct 2026
- Steps: (a) As HR SPOC, Lifecycle → Onboarding → cards of Hire Probe ×2 and Vinay Yenduri. (b) As QA HR Head, Start onboarding for FB Test Org Joiner (reports to QA Department Head) with "Pre-boarding stakeholder checklist".
- Actual: (a) The cards read "Checklist 0/0" with "Choose … checklist"; for HR SPOC and HR Manager the picker reads "(unavailable)" (403, ISS-536). (b) The template has the client's five groups, but the Reporting manager items (buddy, KRAs, 30-day KT plan, stakeholders, tools, office access) and the candidate's document items are assigned to QA HR Head (the starter); QA Department Head gets 0. The manager and HR Head get no notification. IT and Admin items now do go to QA IT / QA Admin (they went to "Onboarding Management" / "Harshit Bhalla" earlier the same night; ISS-247 is partly fixed). The reported "5/5 completed on creation" did not reproduce.
- Expected: Tracker SHR-033: a recruitment hire arrives with the stakeholder checklist; each group's items go to that stakeholder (manager items to the joiner's manager) with a notification.
- Evidence: scratch/FB/onboarding/shots/card-Hire_Probe.png, card-Vinay_Yenduri.png, panel-FB_Test_Joiner_A-0.png; e2e
tests/feedback/onboarding/onboarding-board.spec.ts› "SHR-033 · no recruitment hire sits in onboarding with an empty 0/0 checklist" (fails);new-joiner.spec.ts› "SHR-033 · started with the stakeholder checklist, each stakeholder gets their own items" (fails: owners{"Reporting manager":"QA HR Head"})
ISS-490 · Tracker SHR-007 · New joinees says onboarding "Complete" for every joiner who has no onboarding at all
- Module: Lifecycle → New joinees · Severity: High · Found: 15 Oct 2026
- Steps: As QA HR Manager, Lifecycle → New joinees; read the Onboarding column.
- Actual: "Complete" for FB Test Org Joiner, Neera bv.aj, Probe Candidate and 15 others whose API rows are
onboardingInstanceId:null, onboardingStatus:null, taskTotal:0. HR is told onboarding is done when it never started. Same pattern as ISS-314 (0/0 shown as complete). - Expected: Tracker SHR-007: "Not started" (or no onboarding) when there is none; "Complete" only when every activity is done.
- Evidence: scratch/FB/shots/hrm_lifecycle_new_joinees.png; e2e
tests/feedback/onboarding/new-joiner.spec.ts› "SHR-007 · New joinees does not show onboarding "Complete" while nothing has been done" (fails)
ISS-489 · Tracker SHR-005 · A joiner starting today gets no document-collection tasks; nothing reaches anyone's Home, Inbox or bell
- Module: Lifecycle → Onboarding / New joinees · Severity: High · Found: 15 Oct 2026
- Steps: Create an employee from Organization with DOJ today (FB Test Org Joiner). Check Home, Inbox and notifications of hrm, hrh, spoc, dh, it and qadmin; open Lifecycle → New joinees.
- Actual: No document-collection tasks exist and no one is notified. New joinees shows the joiner with Onboarding "Complete" and "Starts in 1d" on the joining day (API
daysIn:-1, onboardingStatus:null, taskTotal:0). - Expected: Tracker SHR-005: document collection starts for a same-day joiner, the owners see the tasks on Home and by email, and onboarding isn't shown as complete.
- Evidence: scratch/FB/shots/hrm_lifecycle_new_joinees.png; scratch/FB/onboarding/shots/runs/ (new-joiner "while nothing has been done"); e2e
tests/feedback/onboarding/new-joiner.spec.ts› "SHR-005 · a joiner starting today gets document-collection tasks", "SHR-005 · the joiner's pending onboarding tasks show on the owners' Home" (both fail)
ISS-488 · Tracker SHR-004 · Employees created from Organization get no onboarding at all, start Active, and only the HR Head can start it by hand
- Module: Organization → New employee / Lifecycle → Onboarding · Severity: High · Found: 15 Oct 2026
- Steps: As QA HR Manager, create "FB Test Joiner A" from Organization → Employees → New employee with today (15 Oct) as joining date. Check Lifecycle → Onboarding and
GET /people/lifecycle. - Actual: No onboarding record and no workflow run; no active workflow listens to
employee.hiredoronboarding.started. The dialog sendsstatus:"active", so a joiner is Active, not Pre-boarding. Recruitment hires do get a pre-boarding checklist (preOnboardingChecklistId). The only path is Lifecycle → Onboarding → Start onboarding, and only the HR Head can use it: HR Manager, HR SPOC and Admin get 403templates.viewand the checklist picker reads "None (unavailable)" (ISS-536). - Expected: Tracker SHR-004 (client priority Critical): an employee created from Organization gets the same pre-boarding checklist as a recruitment hire, automatically.
- Evidence: scratch/FB/onboarding/shots/create-A-after.png, start-onboarding-dialog.png, start-onboarding-hrh.png; e2e
tests/feedback/onboarding/new-joiner.spec.ts› "SHR-004 · an employee created from Organization gets the same pre-boarding checklist as a recruitment hire" (fails)
ISS-487 · Tracker SHR-108 · Location list isn't filtered by jurisdiction, and Tamil Nadu is offered with no location in it
- Module: Organization → New employee · Severity: Medium · Found: 15 Oct 2026
- Steps: New employee → Jurisdiction California → open Location. Then Jurisdiction Tamil Nadu → open Location.
- Actual: California now has a location ("Los Angeles", whose address is in Bangalore: ISS-481), but after picking California the list still offers Ahmedabad - Remote, Demo – Bengaluru Office, Hyderabad HQ, Los Angeles and Remote - India. Tamil Nadu is offered as a jurisdiction but has no location at all.
- Expected: Tracker SHR-108: after a jurisdiction is chosen, Location lists only that jurisdiction's locations; jurisdictions with no location aren't offered (or say so).
- Evidence: scratch/FB/shots/ec-SHR108-california-location-options.png; e2e
tests/feedback/employee-creation/new-employee-form.spec.ts› "SHR-108 · after picking a jurisdiction, Location offers only locations in that jurisdiction", "SHR-108 · every jurisdiction offered for employees has at least one location in it" (both fail)
ISS-486 · Tracker SHR-107 · A US employee phone with an Indian emergency number is accepted
- Module: Organization → New employee · Severity: Low · Found: 15 Oct 2026
- Steps: New employee → Phone US +1 4155550101, Emergency phone IN +91 9876509999 → Create.
- Actual: Accepted by the form and the server (the FB Test Server Probe create went through with +1 / +91).
- Expected: Tracker SHR-107: the emergency contact uses the same country code as the employee (the client's rule; if it isn't wanted, close the row).
- Evidence: scratch/FB/shots/ec-combo-usPhoneInEc.png; e2e
tests/feedback/employee-creation/new-employee-form.spec.ts› "SHR-107 · with a US phone number the emergency contact must use the same country code" (fails)
ISS-485 · Tracker SHR-105 · Phone country codes offer only IN +91 and US +1
- Module: Organization → New employee · Severity: Low · Found: 15 Oct 2026
- Steps: New employee → open the Phone country code, then the emergency contact's.
- Actual: Both pickers list only IN +91 and US +1. An employee or emergency contact with any other country's number can't be recorded.
- Expected: Tracker SHR-105: a full country-code list.
- Evidence: scratch/FB/shots/ec-SHR105-country-codes.png; e2e
tests/feedback/employee-creation/new-employee-form.spec.ts› "SHR-105 · the phone country code list covers more than India and the US" (fails)
ISS-484 · Tracker SHR-089 · Emergency contact name may equal the employee's name, and personal email may equal work email
- Module: Organization → New employee · Severity: Low · Found: 15 Oct 2026
- Steps: New employee → Emergency contact name = the Legal name; Personal email = Work email → Create employee.
- Actual: Both accepted by the form and the server (the FB Test Server Probe create had both). Live data: Aarav Testman, Nisha Sample and Rohan Demo have personal email = work email.
- Expected: Tracker SHR-089: both refused with a message.
- Evidence: scratch/FB/shots/ec-combo-ecSameName.png, ec-combo-sameEmail.png; e2e
tests/feedback/employee-creation/new-employee-form.spec.ts› "SHR-089 · the emergency contact cannot have the employee's own name", "SHR-089 · the personal email cannot be the same as the official (work) email" (both fail)
ISS-483 · Tracker SHR-088 · An employee can be placed in California at a Telangana location; form and server accept it
- Module: Organization → New employee · Severity: Medium · Found: 15 Oct 2026
- Steps: As QA HR Manager, New employee → Jurisdiction California → Location Hyderabad HQ (Telangana) → Create employee.
- Actual: No check in the form or on the server. One real create proved it: "FB Test Server Probe" (
d240f1d3-823a-4ad6-a0a1-5d3941fa192e) was created 201 with California + Hyderabad HQ. Live data already has the same mismatch: Rohan Demo (Tamil Nadu + Remote - India / Telangana), Preboarding Flowtest (California + Ahmedabad - Remote / Gujarat). Jurisdiction drives statutory rules, so these people get the wrong ones. - Expected: Tracker SHR-088: the location must belong to the chosen jurisdiction (form and server).
- Evidence: scratch/FB/shots/ec-combo-caHyd.png; scratch/FB/employee-creation/created-server-probe.txt; e2e
tests/feedback/employee-creation/new-employee-form.spec.ts› "SHR-088 · an employee in California cannot be placed at a location in Telangana" (fails)
ISS-482 · Tracker SHR-119 · Employees table: Joined column exists, but no joining-date filter, no entity column/filter and no download
- Module: Organization → Employees · Severity: Medium · Found: 15 Oct 2026
- Steps: As admin, Organization → Employees → filters; Options (sliders icon) → Columns.
- Actual: Options → Columns offers Joined and Jurisdiction (both hidden by default). Filters are only department, position, location and status. There is no Entity / Organisation column or filter and no Export / Download anywhere on the page (Options holds only Columns and Saved views; "Import CSV / Excel" is an upload).
- Expected: Tracker SHR-119 (client priority High): filter by hire date, show and filter by entity, download the table.
- Evidence: scratch/FB/shots/org-employees-options.png, org-employees-table.png; e2e
tests/feedback/organization/organization.spec.ts› "SHR-119 · … can be filtered by joining date", "… shows and filters by entity (organisation) name", "… can be downloaded" (all fail)
ISS-481 · Tracker SHR-084 · "Los Angeles" (California) location still has a Bangalore address; nothing compares address and jurisdiction
- Module: Organization → Locations · Severity: Low · Found: 15 Oct 2026
- Steps: As admin, Organization → Locations → "Los Angeles" → ⋯ → Edit. Then
POST /location/locationswith jurisdiction California and address "80 Residency Road, Bangalore 560025". - Actual: "Los Angeles" (code "BAN", California, USD, America/Los_Angeles, kind Other / "Client Site", 2 people, last edited 14 Oct) has the address "New Colony, Bangalore". The address has no state or country field. The API accepted the new California office with a Bangalore address (201; deleted at once).
- Expected: Tracker SHR-084: a location's address lies in its jurisdiction; at minimum the city/state is checked against the jurisdiction, and the existing record is corrected.
- Evidence: scratch/FB/shots/org-SHR084-los-angeles-location.png, org-SHR084-los-angeles-edit.png; e2e
tests/feedback/organization/organization.spec.ts› "SHR-084 · no location sits in one geography with an address in another", "SHR-084 · the platform refuses a California location whose address is in Bangalore" (both fail)
ISS-480 · Tracker SHR-009 · Search → profile no longer errors, but search is 403 for most roles and the profile it opens shows the wrong data
- Module: Header search (⌘K) → employee profile · Severity: Medium · Found: 15 Oct 2026
- Steps: (a) As QA HR Manager, search "QA Employee Two" in the header and click the result. (b) As QA Manager (also Admin, IT, Accounts, Employee), search "QA Employee One".
- Actual: (a) The profile opens with no error (the reported error is fixed), but shows "No position · Operations / No location" and "No manager — this person is at the top of the tree" for an employee who is Delivery Manager at Hyderabad HQ reporting to QA Manager (see ISS-527). (b)
GET /api/company/search/quick-searchanswers 403requiredPermission: ["settings.saved_searches.view"], an unrelated permission; the palette shows "No results for "QA Employee One". Try a page or an action." The Department Head gets 200 withpeople: []even for his own department. - Expected: Tracker SHR-009: the searched employee's profile opens with correct details; a manager can at least find their own reports.
- Evidence: scratch/FB/shots/search-click-hrm.png, org-SHR009-profile-no-position.png, search-results-e1.png; e2e
tests/feedback/organization/organization.spec.ts› "SHR-009 · the profile opened from search shows the employee's position, location and manager" (fails), "SHR-009 · a reporting manager can find their own team member in global search" (fails)
ISS-479 · Tracker SHR-118 · HR, manager and admin Home "Celebrations" covers work anniversaries only; birthdays appear nowhere for them
- Module: Home → Celebrations / Moments · Severity: Low · Found: 15 Oct 2026
- Steps: As admin (or QA Manager) open Home → Celebrations. As qa.employee1 open
/me→ Moments. - Actual: The admin/manager card reads "Quiet week — Work anniversaries show up here a week ahead". Birthdays are not part of it. The employee card "Moments" promises "Birthdays and work anniversaries in the next seven days" and
GET /api/me/people/momentsreturns{"items":[]}for every persona. Nobody is due 15–21 Oct; Deepak Chauhan's birthday on 22 Oct (day 7) is listed nowhere, so whether names actually appear could not be confirmed. The email to the entity group can't be checked (no mailbox access). - Expected: Tracker SHR-118: birthdays and service anniversaries on every Home (the employee card already promises this), and the group email.
- Evidence: scratch/FB/shots/gen_118_e1_moments.png, gen_118_admin_celebrations.png; e2e
tests/feedback/general/general.spec.ts› "SHR-118 · the Home Celebrations card of HR and managers includes birthdays, not only work anniversaries" (fails); "SHR-118 · a colleague's birthday or service anniversary in the coming week is shown" (skipped, no data)
ISS-478 · Tracker SHR-010 · Home "Pending approvals" shows only the requester's name (twice) and approves with one click without saying what
- Module: Home → Pending approvals · Severity: Medium · Found: 15 Oct 2026
- Steps: As qa.employee1, send a missed-punch correction for 8 Oct. As QA Manager, open Home and look at the Pending approvals card.
- Actual: The row reads "QO / QA Employee One / QA Employee One" followed by ✓ and ✗. It doesn't say what the request is. The ✓ approves at once; its accessible name is "Approve QA Employee One", the same for every request from that person, so a manager with two items from one employee can't tell which one they approve. The Inbox row for the same item says "Missed punch · 8 Oct · QA Employee One · at Manager approval · 5d left".
- Expected: Tracker SHR-010: each pending approval says what is being approved (type and dates), as the Inbox does, and the quick buttons name the item.
- Evidence: scratch/FB/shots/gen_010_mgr_home_pending.png; e2e
tests/feedback/general/general.spec.ts› "SHR-010 · Home "Pending approvals" says what is being approved, not just who asked" (fails)