{
  "feature_id": "F-150",
  "agent": "security",
  "stage": "security_gate",
  "verdict": "APPROVED",
  "summary": "CSV export requires REPORTING_EXPORT permission (admin/editor only). No new auth paths; uses same auth as other reporting endpoints. No user input in CSV content (data from DB only). Streaming prevents memory overload.",
  "checks": [
    {"item": "RBAC enforced", "ok": true, "evidence": "requireReportingPermission('REPORTING_EXPORT') on export route; admin+editor only"},
    {"item": "No new auth", "ok": true, "evidence": "Same authenticate() as other reporting endpoints"},
    {"item": "No user input in output", "ok": true, "evidence": "All CSV data from DB columns; filters are validated via reportingFiltersSchema (Zod)"},
    {"item": "Streaming prevents memory", "ok": true, "evidence": "500 rows/page; max 10k rows; reply.raw.write per batch"}
  ],
  "issues": []
}
