Problem
/source-control:commit mandates a trailer template with a required context clause:
Co-Authored-By: Claude <model> (<context>) <noreply@anthropic.com>
Three authorities disagree, and the skill's resolution ladder names only two of them.
1. Observed practice does not follow the mandate
Census over this repo's history (exact distinct trailer lines, tallied):
| Window |
Trailers |
With a context clause |
Without |
| last 150 commits |
137 |
57 (41.6%) |
80 |
| last 40 commits |
33 |
4 (12.1%) |
29 |
Compliance is not merely low, it is collapsing — 41.6% → 12.1% as the window narrows. The
context-free form is actively winning.
(The originating audit reported "62 of 74". That exact pair does not reproduce on any window of this
branch — at the window where the total is 74, the non-compliant count is 49. The figures are wrong;
the direction is right and the trend is worse than claimed.)
2. The harness injects a third form the ladder never accounts for
The Claude Code harness injects its own commit guidance into sessions, specifying a context-free
trailer. It is neither a config layer nor a project convention, so the skill's ladder
(trailer_policy → project conventions → skill default) has no rung for it and no stated tiebreak.
A session receiving both simply follows whichever it saw last.
Worse — and this is the part that matters most: the injected guidance carries a hardcoded model
name. Observed first-hand this session: guidance naming Claude Fable 5 injected into a session
actually running Opus 5. Copying it verbatim writes a false provenance claim into durable git
history — exactly the harm the skill's own text says the template exists to prevent ("the trailer
becomes a git-history claim about which model / context authored the change").
3. Nothing overrides the default here
This repo's .claude/source-control.md declares no trailer_policy, so the skill's default is
nominally in force and silently ignored.
Fix
- Make the context clause optional in the default template, matching the harness-injected shape
and observed practice. A mandate nobody follows is worse than no mandate.
- Add the harness-injected guidance as an explicit rung 3 in the trailer ladder, with the rule:
adopt its shape, never its literal text — always fill <model> from actual session knowledge.
- State the false-provenance hazard explicitly, since it is the concrete reason for that rule.
Deferred, deliberately
A second, unreported drift axis surfaced in the census: 134 of 137 trailers use
Co-authored-by: (lowercase), against only 3 using the skill's Co-Authored-By:. Git preserves a
trailer key's case verbatim (git interpret-trailers does not normalize it, and no trailer.*
config here changes that), so both spellings persist as written.
Whether to standardize on the dominant lowercase spelling is not settled here: it would need a
verified claim about how the forge's co-author attribution parses the key, which this work did not
establish. Recorded as an open question rather than answered by assumption. The skill continues to
emit Co-Authored-By and does not rewrite an existing repository's spelling; a consumer wanting the
other form can express it as a trailer_policy template today.
Not a problem — verified
trailer_policy is already a fully documented key (reference/config-resolution.md), and
/source-control:setup already interviews for it and writes it. The audit's suggestion to "have
setup write an explicit trailer_policy" is already implemented; no change needed there.
Also confirmed as a deliberate prior decision not to disturb: guardrails'
block-noncanonical-commit.sh explicitly declines to gate on --trailer ("the trailer is POLICY,
not mechanic"). The remediation space is this skill's own ladder, not a new hook gate.
Problem
/source-control:commitmandates a trailer template with a required context clause:Three authorities disagree, and the skill's resolution ladder names only two of them.
1. Observed practice does not follow the mandate
Census over this repo's history (exact distinct trailer lines, tallied):
Compliance is not merely low, it is collapsing — 41.6% → 12.1% as the window narrows. The
context-free form is actively winning.
(The originating audit reported "62 of 74". That exact pair does not reproduce on any window of this
branch — at the window where the total is 74, the non-compliant count is 49. The figures are wrong;
the direction is right and the trend is worse than claimed.)
2. The harness injects a third form the ladder never accounts for
The Claude Code harness injects its own commit guidance into sessions, specifying a context-free
trailer. It is neither a config layer nor a project convention, so the skill's ladder
(
trailer_policy→ project conventions → skill default) has no rung for it and no stated tiebreak.A session receiving both simply follows whichever it saw last.
Worse — and this is the part that matters most: the injected guidance carries a hardcoded model
name. Observed first-hand this session: guidance naming
Claude Fable 5injected into a sessionactually running Opus 5. Copying it verbatim writes a false provenance claim into durable git
history — exactly the harm the skill's own text says the template exists to prevent ("the trailer
becomes a git-history claim about which model / context authored the change").
3. Nothing overrides the default here
This repo's
.claude/source-control.mddeclares notrailer_policy, so the skill's default isnominally in force and silently ignored.
Fix
and observed practice. A mandate nobody follows is worse than no mandate.
adopt its shape, never its literal text — always fill
<model>from actual session knowledge.Deferred, deliberately
A second, unreported drift axis surfaced in the census: 134 of 137 trailers use
Co-authored-by:(lowercase), against only 3 using the skill'sCo-Authored-By:. Git preserves atrailer key's case verbatim (
git interpret-trailersdoes not normalize it, and notrailer.*config here changes that), so both spellings persist as written.
Whether to standardize on the dominant lowercase spelling is not settled here: it would need a
verified claim about how the forge's co-author attribution parses the key, which this work did not
establish. Recorded as an open question rather than answered by assumption. The skill continues to
emit
Co-Authored-Byand does not rewrite an existing repository's spelling; a consumer wanting theother form can express it as a
trailer_policytemplate today.Not a problem — verified
trailer_policyis already a fully documented key (reference/config-resolution.md), and/source-control:setupalready interviews for it and writes it. The audit's suggestion to "havesetup write an explicit
trailer_policy" is already implemented; no change needed there.Also confirmed as a deliberate prior decision not to disturb:
guardrails'block-noncanonical-commit.shexplicitly declines to gate on--trailer("the trailer is POLICY,not mechanic"). The remediation space is this skill's own ladder, not a new hook gate.