The casing the flagship host writes was refused as an unknown key - #810
Merged
Conversation
`Co-Authored-By:` in a record's trailer block was rejected as `unknown-key`, so the commit was blocked. `Co-authored-by:` passed. They are the same trailer, and this repository already said so in writing. `types.ts` documents that `Co-authored-by`, `Co-Authored-By` and `Co-authored-By` all reach a commit message for the identical trailer, and matches them case-insensitively through `isConventionalTrailerKey`. `schema.ts` held its own copy of that idea as a case-sensitive `Set` of one spelling, and that is the copy `validateRecord` consults. The name was written in two places and only one of them decided. The casing that failed is the one Claude Code writes, so the host with the most complete integration here produced commits this repository's own hook refused. Both foreign keys are lowercased on the way in and the lookup lowercases its argument. `KNOWN_KEYS` is untouched: SPEC §3 matches protocol vocabulary case-sensitively and still does. These two are exempt precisely because they are not protocol vocabulary -- trailers CommitLore does not own and should not judge -- and a spelling is not what makes them foreign. Record-Id: r-coauthoredcasing Provenance: authored Certainty: firm Blast: local Undo: easy Ruled-out: adding `Co-Authored-By` to the set as a second entry | the next casing git or an editor emits is refused again, and the set would be a list of spellings someone has to keep guessing at Ruled-out: lowercasing every key before the whole check | `KNOWN_KEYS` is SPEC vocabulary and SPEC matches it case-sensitively; widening that is a protocol change, not a bug fix Limit: the exemption stays a fixed pair. A standardised trailer this repository has not met -- `Reviewed-by:`, say -- is still refused as `unknown-key`, which is deliberate but will read as the same bug to whoever hits it next Verified: all four spellings and the negative case were run through the built CLI before and after -- `Co-Authored-By`, `Co-authored-by` and `SIGNED-OFF-BY` accepted, `Constraint:` still refused as a shape failure. One negative control: restoring the case-sensitive lookup fails six of the seven new assertions. dist is rebuilt canonically and the manifest regenerated in the same commit, since dist is tracked and the manifest pins the source hash. Full suite 3413 passed CommitLore-Version: 2.0.0
CommitLore — record lintTrailers: clean — 1 commit in Active constraints for the paths this PR touchesLimits (251)
Ruled out (385)
Truncated: 375 lines omitted — the comment hit GitHub's 65000 character limit. Trailer violations fail this check. Active constraints are informational — they are what the repository already decided, not a verdict on this PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #809.
Co-Authored-By:was refused asunknown-keyand blocked the commit;Co-authored-by:passed. Same trailer.types.tsdocuments that all three casings reach a commit message and matches them case-insensitively.schema.ts:165held its own copy as a case-sensitive Set of one spelling — and that is the copyvalidateRecordconsults. The name was written in two places and only one decided.The failing casing is the one Claude Code writes, so the host with the most complete integration produced commits this repository's own hook refused.
Both foreign keys are lowercased in, and the lookup lowercases its argument.
KNOWN_KEYSis untouched — SPEC §3 matches protocol vocabulary case-sensitively and still does. These two are exempt because they are not protocol vocabulary, and a spelling is not what makes them foreign.Verified through the built CLI:
Co-Authored-By,Co-authored-by,SIGNED-OFF-BYaccepted;Constraint:still refused. Negative control: restoring the case-sensitive lookup fails six of seven new assertions. dist rebuilt canonically and manifest regenerated in the same commit.Limit, in the commit: the exemption stays a fixed pair, so a standardised trailer this repository has not met is still refused — deliberate, but it will read as the same bug to whoever hits it next.
Full suite 3413 passed.