The copyright notice written by rapidsai/pre-commit-hooks is 105 characters, which exceeds the ColumnLimit: 100 used by many RAPIDS C/C++ repositories. Repositories whose .clang-format has:
CommentPragmas: '^ IWYU pragma:'
can enter a loop while running pre-commit hooks:
verify-copyright --fix --spdx writes the canonical one-line SPDX notice.
- On the next run,
clang-format wraps that line and reflows SPDX-License-Identifier into the continuation.
verify-copyright restores only the copyright line, leaving reserved. before the license identifier.
- Each subsequent run inserts another
reserved. and never passes.
This has surfaced independently in several repositories:
Both RAFT's anchored pattern and cuDF's unanchored pattern protect canonical headers. We will standardize on the more conservative form:
CommentPragmas: '(IWYU pragma:|SPDX-)'
Affected repositories
The cuOpt rollout also restores 51 headers that were already corrupted on main.
The cuCIM configurations use ColumnLimit: 120, an empty CommentPragmas, and no clang-format pre-commit hook, so the 105-character canonical header does not trigger this failure there.
Acceptance criteria
- Update every affected active public repository in the rollout scope still using the old pragma.
- Confirm the canonical over-column SPDX block header is unchanged by two consecutive clang-format runs.
- Confirm existing
IWYU pragma: behavior remains protected.
- Check for and repair any already-corrupted
reserved. ... SPDX-License-Identifier lines; the copyright hook may not detect them.
The copyright notice written by
rapidsai/pre-commit-hooksis 105 characters, which exceeds theColumnLimit: 100used by many RAPIDS C/C++ repositories. Repositories whose.clang-formathas:can enter a loop while running
pre-commithooks:verify-copyright --fix --spdxwrites the canonical one-line SPDX notice.clang-formatwraps that line and reflowsSPDX-License-Identifierinto the continuation.verify-copyrightrestores only the copyright line, leavingreserved.before the license identifier.reserved.and never passes.This has surfaced independently in several repositories:
Both RAFT's anchored pattern and cuDF's unanchored pattern protect canonical headers. We will standardize on the more conservative form:
Affected repositories
The cuOpt rollout also restores 51 headers that were already corrupted on
main.The cuCIM configurations use
ColumnLimit: 120, an emptyCommentPragmas, and no clang-format pre-commit hook, so the 105-character canonical header does not trigger this failure there.Acceptance criteria
IWYU pragma:behavior remains protected.reserved. ... SPDX-License-Identifierlines; the copyright hook may not detect them.