{
  "feature_id": "F-187",
  "agent": "qa",
  "stage": "qa_gate",
  "verdict": "APPROVED",
  "acceptance": [
    { "id": 1, "criterion": "Admin TPV lists cashier lifecycle status", "ok": true, "evidence": "GET /pos/users real-DB assertion and admin status badges" },
    { "id": 2, "criterion": "Admin creates active cashier", "ok": true, "evidence": "Fixed-role create form and server default/response active" },
    { "id": 3, "criterion": "Deactivate and reactivate non-deleted cashier", "ok": true, "evidence": "PATCH lifecycle integration assertions" },
    { "id": 4, "criterion": "Deactivate revokes and blocks current/future auth", "ok": true, "evidence": "DB revoked_at, old-cookie 401 and login 401 assertions" },
    { "id": 5, "criterion": "Confirmed deletion is irreversible", "ok": true, "evidence": "Explicit UI warning, DELETE 204 and reactivation 409" },
    { "id": 6, "criterion": "Open cash session blocks removal", "ok": true, "evidence": "PATCH and DELETE both return POS_CASHIER_HAS_OPEN_SESSION" },
    { "id": 7, "criterion": "Historical attribution survives deletion", "ok": true, "evidence": "Post-delete join keeps cashier ID through pos_cash_sessions" },
    { "id": 8, "criterion": "Admin-only and cashier-role-only", "ok": true, "evidence": "Cashier list 403 and manager target 404" },
    { "id": 9, "criterion": "Migration reversible with active default", "ok": true, "evidence": "Fresh/no-op/down/re-up 4/4 and inserted accounts default active" },
    { "id": 10, "criterion": "Regression and builds green", "ok": true, "evidence": "354/354 real-DB tests, typechecks, backend/admin builds, verify.sh" }
  ],
  "regression": {
    "unit_without_db": "268 passed",
    "pos_unit": "12 passed",
    "f187_real_postgresql": "4 passed",
    "real_postgresql_sequential": "354 passed across 79 files",
    "migration_cycle": "4 passed",
    "backend_build": "passed",
    "admin_build": "passed",
    "verify": "passed"
  },
  "issues": [],
  "notes": [
    "Production admin UI was compile/type/lint validated; no browser automation harness exists for native confirm dialogs.",
    "Backend global lint baseline remains red outside changed files; targeted F-187 lint is green."
  ]
}
