# This is the local list of words which are still too commonly used in the
# codebase to be blocked outright. This list will continue to shrink as the
# codebase moves away from the use of these terms.
#
#
# Don't delete this file if you want to keep keyword_check enabled even if it's
# empty.
#
# See repohooks/README.md for more details.
#
# !!! READ FIRST !!!
# When updating this file, make sure to update go/tast-coil-status.
#
# Some of the terms may be unblocked even so some of them are still
# present in the code base because they are in files sourced from
# third party or from a file where the term can not be modified.
#
# When a blocked term is used because it can not be replaced:
#
#  1. Make sure to run all pre-submit tests
#     a. Explicitly list the failing blocked term failure(s) in the
#        commit message.
#     b. Explicitly state the reason that the blocked term is
#        necessary in the commit message.
#
#  2. Update go/tast-coild-status with an explanation of why
#     the term is included.
#
#  3. Add "see go/tast-coil-status for known use cases" below the
#     unblocked term.
#
#  4. When all pre-submit failures have been resolved, except the
#     blocked term one(s), upload using the --no-verify option.
#     Make sure that the commit message includes that --no-verify was
#     used during upload.
#
# All unblocked terms should have a bug associated with them.
# All blocked terms should be 'clean" if all terms have been removed.
#  OR have a bug associated with them and a reference to go/tast-coil-status
#



# black.?hat            - clean

black.?list
#    - see crbug/1123459

# build.?cop            - clean
# crazy                 - clean
# cripple               - clean
# dummy                 - clean
# first.?class.?citizen - clean
# grandfathered         - clean
# gr[ae]y.?hat          - clean
# gr[ae]y.?list         - clean
# insane                - clean

\bhe\b
#    - see crbug/1135040

# \bshe\b               - clean
# \bhim\b               - clean

# \bher\b               - see crbug/1135044
#                       - see go/tast-coil-status for known use cases

# \bhis\b               - clean
# \bhers\b              - clean
# man.?in.?the.?middle  - clean

# master                - see crbug/1122372
#                       - see go/tast-coil-status for known use cases

# \bmitm(\b|\d)         - clean

\bnative
#    - see crbug/1135046

# \bred.?line           - clean
# rtfm                  - clean
# \b(in)?sane(\b|\d)    - clean
# sanity                - clean

slave
#    - see crbug/1126921

# white.?glove          - clean
# white.?hat            - clean

# white.?label          - see crbug/1135050
#                       - see go/tast-coil-status for known use cases

white.?list
#    - see crbug/1101928
#    - see crbug/1125493
#    - see crbug/1113099

# \bwtf                 - clean
