Reproduction
git clone --depth 1 <repo> shallow && cd shallow
git rev-list --count HEAD → 1
test -f .git/shallow → yes
commitlore context → answers. Zero mentions of shallow, depth, or truncation.
commitlore doctor → seven checks. Zero mentions of shallow or depth.
Why this is a CI defect and not an edge case
actions/checkout@v4 defaults to fetch-depth: 1. Every GitHub Actions job that has not explicitly set otherwise runs against exactly one commit.
So a CI step that runs commitlore context, limits, ruled-out or guard sees one commit of history, finds nearly nothing, and reports that as the answer. A guard step in CI is not merely weakened — it is structurally incapable of finding a rejection recorded in any earlier commit, and it exits 0 while being incapable.
The build stays green. The integration looks like it is working. It is checking one commit.
|
check |
answers about |
cannot see |
says so |
| #58 |
validate |
trailer shape |
whether the reference resolves |
no |
| #60 |
validate |
one record |
that two were folded into one |
no |
| #63 |
doctor |
config presence |
whether fetch works |
no |
| this |
every query |
the history it can reach |
that the history is truncated |
no |
Four instances of one defect: a check that answers without stating what it could not see. This is the strongest argument yet for the not-checked reporting line in the #58/#60 design work — a query that cannot see the full history must say so in its own output, exactly as context already does for an unfetched notes mirror.
That precedent is the right one and already exists in the codebase:
commitlore: the notes mirror has not been fetched here, so this answer may be
missing records that exist upstream
A shallow clone deserves the same sentence and does not get it. .git/shallow is a file; detecting this costs one existsSync.
Also needed
doctor should carry a shallow-history check, and the documented CI integration should tell users to set fetch-depth: 0 — otherwise the documentation is recommending a configuration in which the tool cannot work.
Reproduction
Why this is a CI defect and not an edge case
actions/checkout@v4defaults tofetch-depth: 1. Every GitHub Actions job that has not explicitly set otherwise runs against exactly one commit.So a CI step that runs
commitlore context,limits,ruled-outorguardsees one commit of history, finds nearly nothing, and reports that as the answer. A guard step in CI is not merely weakened — it is structurally incapable of finding a rejection recorded in any earlier commit, and it exits 0 while being incapable.The build stays green. The integration looks like it is working. It is checking one commit.
Same shape as #58, #60, #63
validatevalidatedoctorFour instances of one defect: a check that answers without stating what it could not see. This is the strongest argument yet for the not-checked reporting line in the #58/#60 design work — a query that cannot see the full history must say so in its own output, exactly as
contextalready does for an unfetched notes mirror.That precedent is the right one and already exists in the codebase:
A shallow clone deserves the same sentence and does not get it.
.git/shallowis a file; detecting this costs oneexistsSync.Also needed
doctorshould carry a shallow-history check, and the documented CI integration should tell users to setfetch-depth: 0— otherwise the documentation is recommending a configuration in which the tool cannot work.