doctor --fix no longer breaks git fetch (#63) - #68
Merged
Merged
Conversation
The remote notes ref now exists, while the mirror still contains zero notes. The handoff now states both facts instead of implying records exist. Ruled-out: leaving the notes ref unpushed | the handoff already claimed a remote ref existed, and publishing the empty transport ref makes that state observable without inventing records Limit: the published mirror contains zero notes Blast: local Undo: easy Certainty: firm Record-Id: r-fix063m Evidence: HANDOFF.md CommitLore-Version: 2.0.0
Use a wildcard notes refspec that stays valid before the first mirror is published. Doctor now dry-runs fetch before reporting the refspec healthy, repairs the old exact refspec, and compares the local notes object with the remote before reporting push state as healthy. Ruled-out: add the explicit refspec only after confirming the remote ref exists | setup would depend on today’s remote state and require another doctor run after the first notes push Limit: doctor performs remote probes; an unreachable remote reports could not verify instead of ok Warn: the wildcard fetches every ref under refs/notes, including notes owned by other tools Blast: system Undo: easy Certainty: firm Record-Id: r-fix063 Follows: r-7c05e2 Evidence: test/doctor.test.ts Evidence: test/notes-availability.test.ts Verified: 1178 tests passed and 1 skipped across 33 files; typecheck, build, and spec verification exit 0 CommitLore-Version: 2.0.0
The installation check can no longer report a valid stub and config as healthy when the paired hook execution fails. Ruled-out: leave hook runtime as a separate contradictory check | a fix-bearing installation check must not report ok or warn when the installed hook demonstrably fails Blast: module Undo: easy Certainty: firm Record-Id: r-fix063h Follows: r-fix063 Evidence: test/doctor.test.ts Verified: 1178 tests passed and 1 skipped across 33 files; typecheck and build exit 0 CommitLore-Version: 2.0.0
CommitLore — record lintTrailers: clean — 3 commits in Active constraints for the paths this PR touchesLimits (11)
Ruled out (50)
Warnings (28)
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 #63. The published install sequence left every reader's clone with a broken
git fetch.The incident
README.md§"Install from the clone" step 3 isdoctor --fix. It wrote+refs/notes/commitlore:refs/notes/commitloreintoremote.origin.fetch. An explicit refspec naming a ref the remote lacks is fatal to the entire fetch.doctorthen read back its own config line and reportedok.Verified in both directions, against the incident
Run by me in three clean clones, not taken from the delegation report.
The wildcard
+refs/notes/*:refs/notes/*is not fatal when it matches nothing; the explicit form is.Ruled-out:records the option not taken.The check now proves the outcome
f0bb995applies the same correction to hook health, binding it to its runtime probe rather than to the presence of a hook file.Why it was invisible here
git ls-remote origin 'refs/notes/*'was empty for this repository — CommitLore had never pushed its own notes mirror, while gitseed's origin carries one. The bug could not appear in the repository where it was being dogfooded and appeared in every new adopter's.38aaff6publishes the transport ref and records the uncomfortable half inLimit:— the mirror contains zero notes.HANDOFF.mdclaimed "refspec configured and ref exists"; it now states both facts.CTO gate
dev, fixed on the branch, README sequence re-run cleandev's 1174 (+4)Ruled-out:carries the refspec option not taken;Limit:carries the empty mirror