# CustomerSupportEnv Usage Report Date: 2026-04-08 Environment: Live API at `http://localhost:7860` Method: Manual customer-style API testing with `curl` ## 1. Access and Base URL Checks - `GET http://0.0.0.0:7860/` -> `200 OK` (service reachable, root metadata returned) - `GET http://localhost:7860/` -> `200 OK` (recommended local URL) - `GET http://localhot:7860/` -> failed (`Could not resolve host`) Note: `localhot` is a typo. Use `localhost`. ## 2. Health Check - `GET /health` response: - `{"status":"ok","active_sessions":4}` - Result: API is healthy and serving requests. ## 3. End-to-End Scenario Results (All Tasks) ### Easy Scenario (`task=easy`) Ticket observed: `TKT-001` (billing, medium) Flow executed: 1. `respond` 2. `request_info` 3. `close` Observed outcome: - Episode completed: `done=true` - Terminal reward value: `0.5229` - Final score: `1.0` - Steps used: `3` - Behavior: Correctly gathered required info and closed with refund resolution. ### Medium Scenario (`task=medium`) Ticket observed: `TKT-015` (technical, medium) Flow executed: 1. `respond` (empathetic) 2. `request_info` 3. `respond` (workaround/solution) 4. `close` Observed outcome: - Episode completed: `done=true` - Terminal reward value: `0.7511` - Final score: `1.0` - Steps used: `4` - Behavior: Strong handling of multi-turn support with information gathering and practical fix. ### Hard Scenario (`task=hard`) Ticket observed: `TKT-022` (technical, critical) Flow executed: 1. `respond` (acknowledge urgency) 2. `escalate` (SLA/critical urgency in reason) Observed outcome: - Episode completed: `done=true` - Terminal reward value: `0.6282` - Final score: `0.955` - Steps used: `2` - Behavior: Correct critical-incident triage (early escalation with urgency language). ## 4. API Usage Summary Primary endpoints validated in real usage: - `POST /reset?task=easy|medium|hard` - `POST /step?session_id=...` - `GET /health` - `GET /` Request contract validated: - `step` accepts action payloads: - `{"action_type":"respond","message":"..."}` - `{"action_type":"request_info","message":"..."}` - `{"action_type":"close","message":"..."}` - `{"action_type":"escalate","reason":"..."}` Response contract observed: - `observation` object updates each step - `reward` object includes `value`, component scores, and breakdown - `done` flips to `true` on terminal actions - `final_score` appears on terminal responses ## 5. Operational Notes - The application is suitable for demo and integration testing of support-agent action policies. - Reward shaping is clearly exposed and useful for debugging policy behavior. - `active_sessions` increases during testing; completed sessions are cleaned up when done, and stale sessions are managed by TTL logic. ## 6. Recommended Next Test Pass (Optional) 1. Negative tests: - invalid `session_id` - malformed action payloads - `step` after terminal state 2. Load/concurrency tests: - multiple concurrent sessions across all tasks 3. Regression automation: - convert these `curl` flows into a repeatable shell script or pytest API tests ## 7. Single Scenario Report (Latest Live Run) Scenario ID: `medium-live-2026-04-08` Execution type: Manual `curl` flow against running server Start endpoint: `POST /reset?task=medium` Initial context: - Session ID: `1c715e2f-1af0-474c-bd81-d1362d48d690` - Ticket ID: `TKT-019` - Category: `account` - Priority: `medium` - Subject: `Email notifications stopped arriving` Action sequence executed: 1. `respond` -> "I understand this is frustrating and I am here to help." 2. `request_info` -> "Please share your account email and device details so I can investigate this properly." 3. `respond` -> "Please try signing out, clearing app cache, and updating to the latest version." 4. `close` -> "Issue appears resolved with the workaround and verification. Closing this ticket." Observed metrics by step: - Step 1: `done=false`, reward `0.1473` - Step 2: `done=false`, reward `0.2992` - Step 3: `done=false`, reward `0.2693` - Step 4: `done=true`, terminal reward `0.6678`, `final_score=1.0` Final state summary: - Episode completed successfully in `4` steps - Final customer sentiment: `0.203` - Unresolved issues: `[]` - Info/action log returned by API without errors (`"error": null`) Conclusion: - This medium-difficulty customer scenario passed end-to-end and validates expected behavior: - empathy -> info gathering -> actionable resolution -> closure.