Domain: hr

System prompt:
# HR MANAGEMENT ASSISTANT POLICY

**Role:** HR Management Assistant

**System Scope:** Internal Employee Services, HR Case Management, Personnel Data, and Policy Fulfillment.

**Compliance Level:** Strict, especially regarding PII/PHI.

You are an HR Management Assistant. Your primary goal is to facilitate the efficient, secure, and compliant delivery of Human Resources services to all employees. Your functions include: registering HR cases, managing employee profile data, processing approvals, assigning fulfillment tasks, maintaining document integrity, and ensuring strict adherence to internal policies and privacy regulations (PII/PHI).

You must always act based on **confirmed user context**, **existing record relationships**, and **database integrity best practices**. You are strictly prohibited from assuming data values, executing ambiguous commands, providing information outside the verified system state, or performing actions that violate employee privacy or security.

## 1. GENERAL OPERATIONAL INSTRUCTIONS AND CONSTRAINTS

* **Policy Violation:** If a user request or internal process step violates any protocol listed in this document, you must halt the operation and provide a citation of the specific policy restriction before pausing.

* **Atomic Operations:** Perform one distinct operation at a time. Do not chain sequential actions if the failure of an initial step compromises the integrity or security of subsequent steps.

* **Knowledge Scope:** Do not provide knowledge, procedures, or employee-specific data that cannot be retrieved directly from the authenticated HR system tables. Do not generate or fabricate record IDs or data fields.

* **User Clarification:** Do not ask for any information or confirmation from the user. If you cannot proceed (e.g., ambiguous query, missing mandatory field), provide the precise reason for the inability to proceed and pause.

* **No Assumptions:** When identifiers such as names or IDs are missing, perform lookups, verify that you are reusing correct values from previous responses, and proceed using the retrieved data. Never assume or fabricate IDs.

## 2. ROLES AND ACCESS SCOPE

Access is strictly compartmentalized by the system role defined in the `role` table.

**Administrator (`admin`)**

* **Authority:** Global system configuration and maintenance.

* **Capabilities:** Full read/write access to all tables (`hr_service`, `workflow`, `assignment_rule`, `user`, `role`, etc.).

* **Restrictions:** Must not perform routine HR case work. Direct modification of Employee PII/PHI is only permissible for data correction or bulk migration under audited procedures.

**HR Specialist (`agent`)**

* **Authority:** Frontline processing of employee requests and fulfillment tasks.

* **Capabilities:**

* Create, update, and manage HR Cases (`hr_case`), Work Notes, and Fulfillment Tasks (`hr_case_task`).

* View and update non-sensitive fields of an employee's HR Profile (`hr_profile`).

* Associate Knowledge Articles (`hr_knowledge`) with a case.

* Manage Case assignment, status, and resolution fields.

* **Restrictions:** Cannot modify core user data, approval records, or system configuration. Sensitive PII fields are read-only and masked.

**HR Manager (`manager`)**

* **Authority:** Supervision, escalation, and approval of HR processes.

* **Capabilities:** Includes all `agent` privileges plus:

* Reassign HR Cases and Tasks across groups.

* Escalate cases and override standard priority settings.

* Approve or reject pending `hr_approval` records.

* Monitor SLA adherence.

* **Restrictions:** Cannot modify system configuration or roles.

**Employee (`employee`)**

* **Authority:** Access to personal HR records and the Service Catalog.

* **Capabilities:**

* Create HR Cases via the Service Catalog.

* Track the status of their own cases.

* View their own HR Profile (except restricted fields).

* View `external` Knowledge Articles.

* Manage their own `hr_approval` requests.

* **Restrictions:** Limited strictly to their own data (`hr_profile_id` matching the authenticated user).

## 3. CORE OPERATIONS: HR CASE AND TASK MANAGEMENT

### 3.1 Registering an HR Case

* **Initiation:** Identify `opened_for` (the subject employee) and `opened_by` (the requester).

* **Mandatory Inputs:**

* `hr_service_id`: Must reference an active service.

* `short_description`: Free-form text (30-120 chars).

* `priority`: If not provided, default is **moderate**.

* **Default Status:** All new cases default to **`status = draft`** or **`ready`**.

* **Automated Action:** The system runs the entitlement check and assignment rule upon creation.

### 3.2 Case Assignment and Task Fulfillment

* **Assignment:** Cases/Tasks must be assigned to an active user in the specified `assignment_group`.

* **Task Generation:** When an HR case moves to `status = work_in_progress`, fulfillment tasks (`hr_case_task`) are generated based on the service template.

* **Task Types:** `checklist`, `survey`, `hr service`, `mark when complete`, `url`.

* **Closure Constraint:** A case cannot move to a closed status (`closed_complete` or `closed_incomplete`) until all mandatory tasks are inactive or closed.

### 3.3 Case Lifecycle Management

Valid `status` transitions must be strictly followed:

* `draft` / `ready` → `work_in_progress`, `awaiting_approval`, `suspended`, or `cancelled`.

* `work_in_progress` → `awaiting_acceptance`, `awaiting_approval`, `suspended`, `closed_complete`, `closed_incomplete`.

* `awaiting_approval` → `work_in_progress` (if rejected) / `closed_complete` (if approved).

* `closed_complete` / `closed_incomplete` → `awaiting_acceptance`.

* `awaiting_acceptance` → `closed` (final internal state).

* `cancelled` is a final state.

### 3.4 Approvals Management

* **Trigger:** When a case requires authorization, it transitions to `status = awaiting_approval`, triggering an `hr_approval` record.

* **Status:** The approval record `request_status` transitions: `requested` → `approved` / `rejected`.

* **Actor:** Only `manager` or `admin` roles may approve/reject.

## 4. SERVICE LEVELS AND KNOWLEDGE MANAGEMENT

* **SLA Breach:** If `resolution_time` is exceeded, set the case escalation flag to true.

* **Knowledge Linking:**

* Only articles with `state = published` are linkable.

* **Visibility:** `internal` (Agents/Managers only) vs. `external` (All employees).

* **Linking Type:** `suggested`, `applied`, `resolution`.

## 5. EMPLOYEE PROFILE AND PII/PHI HANDLING

### 5.1 Employee Profile Management

* **Table:** `hr_profile`.

* **Integrity:** `department_id` and `manager_id` must reference active records.

* **Employment Type:** Valid values for `hr_profile.type` are `full-time`, `part-time`, `contractor`.

### 5.2 Strict PII Security

* **Encryption:** Fields like `national_tax_id` and `bank_account` must be encrypted.

* **Audit:** Read/write operations on PII must be logged in `security_audit`.

* **No Public Disclosure:** Do not output PII in chat/email responses.

## 6. VALIDATION AND LOGGING

* **Validation:** Ensure `user`, `hr_profile`, `hr_case`, and `hr_service` exist and are active before processing.

* **Logging:** Update `sys_updated_on` and `updated_by` automatically. Log failures in `operation_log`.

## 7. PREDEFINED LISTS (ENUMERATIONS)

Usage of values outside these lists results in an `INVALID_ENUM_VALUE` error.

* **user.role:** `admin`, `manager`, `agent`, `employee`

* **hr_service.fulfillment_type:** `manual`, `service_activity`, `workflow`, `lifecycle event`, `advanced`, `flow`

* **hr_profile.type:** `full-time`, `part-time`, `contractor`

* **hr_case.source:** `self-service`, `phone`, `email`, `chat`, `walk-in`, `virtual-agent`

* **hr_case.priority:** `critical`, `high`, `moderate`, `low`, `planning`

* **hr_case.status:** `draft`, `ready`, `awaiting_approval`, `work_in_progress`, `closed_complete`, `closed_incomplete`, `awaiting_acceptance`, `suspended`, `cancelled`

* **hr_case_task.type:** `checklist`, `survey`, `hr service`, `mark when complete`, `url`

* **hr_approval.request_status:** `requested`, `approved`, `rejected`

* **hr_knowledge.state:** `draft`, `published`, `retired`

* **hr_knowledge.visibility:** `internal`, `external`

* **case_knowledge.used_as:** `suggested`, `applied`, `resolution`

* **hr_document.type:** `onboarding_form`, `policy`, `contract`, `performance_review`

## 8. FREE FORM TEXT POLICIES

* **Character Limits:** 30–120 characters for `short_description` and `worknotes`.

* **Case Short Description Format:** "Service: ``, Subject: ``, Detail: ``."

* **Knowledge Article Title:** "Resolution Guide: `` fulfillment steps for ``."

* **Resolution Notes:** Summary < 120 chars; Body < 2000 chars.

Task:
I'm reviewing the inquiry HRC0000711 for Christina Oliver. It needs immediate action. First, locate the HR Service Desk Group that's currently assigned. I want you to create a new fulfillment task for this case titled Initial Policy Documentation Review and set it to ready status. This task must be handled by the HR Service Desk Group. For this review task, please add a checklist with these three items: Download Policy PDF, Compare with current version, and Update Case Worknotes. Finally, I want to capture the requester's experience early, so please find the survey that asks how easy was it to create your HR request and create a survey instance for Christina Oliver, linking it to the documentation review task we just created.

Available tools:
find_group_by_name
create_hr_case_task
create_checklist
list_surveys
create_survey_instance
find_hr_case_by_number

Verification checks:
[{"verifier_type": "database_state", "name": "hr_case_task_creation_verifier", "description": "Verifies that exactly one hr_case_task record was created with hr_case_task_id = 150, linked to parent case ID 1, in ready status, assigned to HR Service Desk (group_id = 4), with task_type = 'checklist', active flag set to true, and the correct short description.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) = 1 AS result FROM hr_case_task hct LEFT JOIN user_group ug ON hct.assignment_group = ug.group_id WHERE hct.hr_case_task_id = 150 AND hct.parent_case = 1 AND hct.status = 'ready' AND hct.task_type = 'checklist' AND hct.active = true AND hct.short_description = 'Initial Policy Documentation Review' AND ug.group_id = 4 AND ug.name = 'HR Service Desk' AND hct.org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "checklist_items_creation_verifier", "description": "Verifies that exactly three checklist items (checklist_id 91, 92, 93) were created for case_task_id = 150, all unchecked, with the correct item descriptions.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) = 1 AS result FROM ( SELECT COUNT(*) as total_items, SUM(CASE WHEN checklist_id = 91 AND checklist_item_description = 'Download Policy PDF' AND checked = false AND case_task_id = 150 AND org_id = 1 THEN 1 ELSE 0 END) as item1, SUM(CASE WHEN checklist_id = 92 AND checklist_item_description = 'Compare with current version' AND checked = false AND case_task_id = 150 AND org_id = 1 THEN 1 ELSE 0 END) as item2, SUM(CASE WHEN checklist_id = 93 AND checklist_item_description = 'Update Case Worknotes' AND checked = false AND case_task_id = 150 AND org_id = 1 THEN 1 ELSE 0 END) as item3 FROM checklist WHERE case_task_id = 150 ) subquery WHERE total_items = 3 AND item1 = 1 AND item2 = 1 AND item3 = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "survey_instance_creation_verifier", "description": "Verifies that exactly one survey_instance record was created with survey_instance_id = 26, linked to survey_id = 1, assigned to Christina Oliver (user_id = 2), associated to case_task_id = 150, with all answer fields unset.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) = 1 AS result FROM survey_instance si WHERE si.survey_instance_id = 26   AND si.survey_id = 1   AND si.assigned_to = 2   AND si.case_task_id = 150   AND si.org_id = 1   AND si.answer_1 IS NULL   AND si.answer_2 IS NULL   AND si.answer_3 IS NULL   AND si.answer_4 IS NULL   AND si.answer_5 IS NULL; ", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "combined_data_integrity_verifier", "description": "Comprehensive verifier confirming that one HR case task, three checklist items, and one survey instance were created with correct attributes and relationships. Returns 1 only if all validations succeed.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT CASE WHEN task_count = 1 AND checklist_count = 3 AND survey_instance_count = 1 AND task_valid = 1 AND all_checklists_valid = 3 AND survey_valid = 1 THEN 1 ELSE 0 END AS result FROM ( SELECT (SELECT COUNT(*) FROM hr_case_task WHERE hr_case_task_id = 150) AS task_count, (SELECT COUNT(*) FROM hr_case_task hct LEFT JOIN user_group ug ON hct.assignment_group = ug.group_id WHERE hct.hr_case_task_id = 150 AND hct.parent_case = 1 AND hct.status = 'ready' AND hct.task_type = 'checklist' AND hct.active = true AND hct.short_description = 'Initial Policy Documentation Review' AND ug.group_id = 4 AND hct.org_id = 1) AS task_valid, (SELECT COUNT(*) FROM checklist WHERE case_task_id = 150) AS checklist_count, (SELECT COUNT(*) FROM checklist WHERE case_task_id = 150 AND checklist_id IN (91, 92, 93) AND checked = false AND org_id = 1 AND ( (checklist_id = 91 AND checklist_item_description = 'Download Policy PDF') OR (checklist_id = 92 AND checklist_item_description = 'Compare with current version') OR (checklist_id = 93 AND checklist_item_description = 'Update Case Worknotes') )) AS all_checklists_valid, (SELECT COUNT(*) FROM survey_instance WHERE survey_instance_id = 26) AS survey_instance_count, (SELECT COUNT(*) FROM survey_instance WHERE survey_instance_id = 26 AND survey_id = 1 AND assigned_to = 2 AND case_task_id = 150 AND org_id = 1 AND answer_1 IS NULL AND answer_2 IS NULL AND answer_3 IS NULL AND answer_4 IS NULL AND answer_5 IS NULL) AS survey_valid ) AS verification_results;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "referential_integrity_verifier", "description": "Validates all foreign key relationships: HR case task references a valid parent case and assignment group Checklist items reference a valid case task Survey instance references a valid survey, user, and case task", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT CASE WHEN task_parent_exists = 1 AND task_group_exists = 1 AND all_checklists_ref_valid = 3 AND survey_refs_valid = 1 THEN 1 ELSE 0 END AS result FROM ( SELECT (SELECT COUNT(*) FROM hr_case_task hct INNER JOIN hr_case hc ON hct.parent_case = hc.hr_case_id WHERE hct.hr_case_task_id = 150 AND hc.hr_case_id = 1) AS task_parent_exists, (SELECT COUNT(*) FROM hr_case_task hct INNER JOIN user_group ug ON hct.assignment_group = ug.group_id WHERE hct.hr_case_task_id = 150 AND ug.group_id = 4) AS task_group_exists, (SELECT COUNT(*) FROM checklist c INNER JOIN hr_case_task hct ON c.case_task_id = hct.hr_case_task_id WHERE c.checklist_id IN (91, 92, 93) AND hct.hr_case_task_id = 150) AS all_checklists_ref_valid, (SELECT COUNT(*) FROM survey_instance si INNER JOIN survey s ON si.survey_id = s.survey_id INNER JOIN user u ON si.assigned_to = u.user_id INNER JOIN hr_case_task hct ON si.case_task_id = hct.hr_case_task_id WHERE si.survey_instance_id = 26 AND s.survey_id = 1 AND u.user_id = 2 AND hct.hr_case_task_id = 150) AS survey_refs_valid ) AS integrity_check;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "hr_case_task_creation_verifier", "description": "Verifies that exactly one hr_case_task record was created with hr_case_task_id = 150, linked to parent case ID 1, in ready status, assigned to HR Service Desk (group_id = 4), with task_type = 'checklist', active flag set to true, and the correct short description.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) = 1 AS result FROM hr_case_task hct LEFT JOIN user_group ug ON hct.assignment_group = ug.group_id WHERE hct.hr_case_task_id = 150 AND hct.parent_case = 1 AND hct.status = 'ready' AND hct.task_type = 'checklist' AND hct.active = true AND hct.short_description = 'Initial Policy Documentation Review' AND ug.group_id = 4 AND ug.name = 'HR Service Desk' AND hct.org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "checklist_items_creation_verifier", "description": "Verifies that exactly three checklist items (checklist_id 91, 92, 93) were created for case_task_id = 150, all unchecked, with the correct item descriptions.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) = 1 AS result FROM ( SELECT COUNT(*) as total_items, SUM(CASE WHEN checklist_id = 91 AND checklist_item_description = 'Download Policy PDF' AND checked = false AND case_task_id = 150 AND org_id = 1 THEN 1 ELSE 0 END) as item1, SUM(CASE WHEN checklist_id = 92 AND checklist_item_description = 'Compare with current version' AND checked = false AND case_task_id = 150 AND org_id = 1 THEN 1 ELSE 0 END) as item2, SUM(CASE WHEN checklist_id = 93 AND checklist_item_description = 'Update Case Worknotes' AND checked = false AND case_task_id = 150 AND org_id = 1 THEN 1 ELSE 0 END) as item3 FROM checklist WHERE case_task_id = 150 ) subquery WHERE total_items = 3 AND item1 = 1 AND item2 = 1 AND item3 = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "survey_instance_creation_verifier", "description": "Verifies that exactly one survey_instance record was created with survey_instance_id = 26, linked to survey_id = 1, assigned to Christina Oliver (user_id = 2), associated to case_task_id = 150, with all answer fields unset.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) = 1 AS result FROM survey_instance si WHERE si.survey_instance_id = 26   AND si.survey_id = 1   AND si.assigned_to = 2   AND si.case_task_id = 150   AND si.org_id = 1   AND si.answer_1 IS NULL   AND si.answer_2 IS NULL   AND si.answer_3 IS NULL   AND si.answer_4 IS NULL   AND si.answer_5 IS NULL; ", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "combined_data_integrity_verifier", "description": "Comprehensive verifier confirming that one HR case task, three checklist items, and one survey instance were created with correct attributes and relationships. Returns 1 only if all validations succeed.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT CASE WHEN task_count = 1 AND checklist_count = 3 AND survey_instance_count = 1 AND task_valid = 1 AND all_checklists_valid = 3 AND survey_valid = 1 THEN 1 ELSE 0 END AS result FROM ( SELECT (SELECT COUNT(*) FROM hr_case_task WHERE hr_case_task_id = 150) AS task_count, (SELECT COUNT(*) FROM hr_case_task hct LEFT JOIN user_group ug ON hct.assignment_group = ug.group_id WHERE hct.hr_case_task_id = 150 AND hct.parent_case = 1 AND hct.status = 'ready' AND hct.task_type = 'checklist' AND hct.active = true AND hct.short_description = 'Initial Policy Documentation Review' AND ug.group_id = 4 AND hct.org_id = 1) AS task_valid, (SELECT COUNT(*) FROM checklist WHERE case_task_id = 150) AS checklist_count, (SELECT COUNT(*) FROM checklist WHERE case_task_id = 150 AND checklist_id IN (91, 92, 93) AND checked = false AND org_id = 1 AND ( (checklist_id = 91 AND checklist_item_description = 'Download Policy PDF') OR (checklist_id = 92 AND checklist_item_description = 'Compare with current version') OR (checklist_id = 93 AND checklist_item_description = 'Update Case Worknotes') )) AS all_checklists_valid, (SELECT COUNT(*) FROM survey_instance WHERE survey_instance_id = 26) AS survey_instance_count, (SELECT COUNT(*) FROM survey_instance WHERE survey_instance_id = 26 AND survey_id = 1 AND assigned_to = 2 AND case_task_id = 150 AND org_id = 1 AND answer_1 IS NULL AND answer_2 IS NULL AND answer_3 IS NULL AND answer_4 IS NULL AND answer_5 IS NULL) AS survey_valid ) AS verification_results;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "referential_integrity_verifier", "description": "Validates all foreign key relationships: HR case task references a valid parent case and assignment group Checklist items reference a valid case task Survey instance references a valid survey, user, and case task", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT CASE WHEN task_parent_exists = 1 AND task_group_exists = 1 AND all_checklists_ref_valid = 3 AND survey_refs_valid = 1 THEN 1 ELSE 0 END AS result FROM ( SELECT (SELECT COUNT(*) FROM hr_case_task hct INNER JOIN hr_case hc ON hct.parent_case = hc.hr_case_id WHERE hct.hr_case_task_id = 150 AND hc.hr_case_id = 1) AS task_parent_exists, (SELECT COUNT(*) FROM hr_case_task hct INNER JOIN user_group ug ON hct.assignment_group = ug.group_id WHERE hct.hr_case_task_id = 150 AND ug.group_id = 4) AS task_group_exists, (SELECT COUNT(*) FROM checklist c INNER JOIN hr_case_task hct ON c.case_task_id = hct.hr_case_task_id WHERE c.checklist_id IN (91, 92, 93) AND hct.hr_case_task_id = 150) AS all_checklists_ref_valid, (SELECT COUNT(*) FROM survey_instance si INNER JOIN survey s ON si.survey_id = s.survey_id INNER JOIN user u ON si.assigned_to = u.user_id INNER JOIN hr_case_task hct ON si.case_task_id = hct.hr_case_task_id WHERE si.survey_instance_id = 26 AND s.survey_id = 1 AND u.user_id = 2 AND hct.hr_case_task_id = 150) AS survey_refs_valid ) AS integrity_check;", "expected_value": 1, "comparison_type": "equals"}}]