=================================
LLVM CoC Incident Reporting Guide
=================================

First of all, please do not feel like you may be a burden to us by reporting
incidents. We consider reports an opportunity for us to act: by knowing about
an incident, we can act on it if appropriate, and reduce continuation of
problematic behavior.  If we don't know, we can't learn or take any appropriate
actions.

If you are not sure the situation being reported was a :doc:`Code of
Conduct<CodeOfConduct>` violation, we encourage you to still report it. We
would much rather have reports where we decide to take no action, rather than
miss a report of an actual violation. There is no harm in reporting an incident
which is later determined not to be a violation, and knowing about incidents
that are not violations can also help us to improve the Code of Conduct or the
processes surrounding it.

Reporting and Contact Information
=================================

* For any incident involving an online platform (e.g., mailing lists, forums, 
  irc/discord/slack, etc) we ask that you make any reports by emailing 
  conduct@llvm.org. This is received by all members of the CoC Committee.

* For LLVM Developers' Meetings, please file a report with the on-site Code 
  of Conduct team. Their names and contact details are listed on the event 
  webpage. You can also approach any other staff member, who can be 
  identified by special badges and often found at the registration desk, 
  to help you locate a member of the Code of Conduct team. All incidents 
  reported in-person at a LLVM Developers' Meeting will be emailed to the 
  Code of Conduct Committee. 

* For meetups, please report the incident to the local meetup organizers first
  and then email conduct@llvm.org with your report. Each meetup will have a 
  contact listed on the associated meetup page. If you feel the incident was 
  not well handled by the local organizers, please include this information in
  your email to conduct@llvm.org. All meetup organizers who receive an 
  in-person report are also asked to email conduct@llvm.org with the
  incident information.


If you believe anyone is in physical danger, please notify appropriate law
enforcement first. If you are unsure what law enforcement agency is
appropriate, please include this in your report and we will attempt to notify
them.

Guidelines for Reporting Incidents
==================================

Please email conduct@llvm.org with the following details (if possible):

* Your contact info (so we can get in touch with you). Include email and
  optionally a phone number.
* Names or descriptions of anyone who was involved or who witnessed the
  incident.
* When and where the incident occurred. Please be as specific as possible.
* Your account of what occurred. If there is a written record (e.g. emails,
  forum links, tweets, Slack, or Discord messages) please include screenshots,
  as well as any available link.
* Any extra context you believe existed for the incident.
* If you believe this incident is ongoing.
* If you have concerns about retaliation or your personal safety, please note
  those concerns in your report.
* Any other information you believe we should have.

If you are unable to provide all of this information, please still make the
report and include as much information as you have.

When handling a report, we follow our :doc:`Response Guide <ResponseGuide>`.

Confidentiality
===============

All reports will be kept confidential with details shared only with the Code of
Conduct committee members. In the case that a CoC committee member is involved
in a report, the member will be asked to recuse themselves from ongoing
conversations, and they will not have access to any reports at any time.
Resolution action may also include removal of that member from the CoC
committee.

Some incidents happen in one-on-one interactions, and though details are
anonymized, the reported person may be able to guess who made the report. If
you have concerns about retaliation or your personal safety, please note those
concerns in your report. You are still encouraged to report the incident so
that we can support you while keeping our community members safe. In some
cases, we can compile several anonymized reports into a pattern of behavior,
and take action on that pattern. 

Transparency reports will be published but will retain confidentiality. See the
:doc:`Response Guide <ResponseGuide>`. for details on this.

Following Up With Reporter(s)
=============================

Once a report is filed, the Code of Conduct committee will handle the review
and follow up according to the procedures in the :doc:`Response Guide
<ResponseGuide>`. 


Thanks!
=======
This guide was created and inspired by the following: the `Django Project`_,
`Carpentries Response Guide`_, and the `Write The Docs Response Guide`_.

.. _Django Project: https://www.djangoproject.com/conduct/
.. _Carpentries Response Guide: https://docs.carpentries.org/topic_folders/policies/enforcement-guidelines.html
.. _Write The Docs Response Guide: https://www.writethedocs.org/code-of-conduct/#guidelines-for-reporting-incidents

