Repository navigation
v3.10.1
A differently-cased ledger counts as the ledger everywhere, sync stops probing held entries, and a sweep skipped at a known-red base keeps the day's slot.
Fixed
- A differently-cased docs ledger is the ledger in every hook and auto-fix path (ledger
hooks/pre-commit.sh:27,hooks/format-enforcer.sh:66,lib/autofix-ship.sh:34; follow-up to #164). 3.10.0 taught the lookup to findDocs/Found-Issues.mdand similar, but several sites still matched only the literaldocs/found-issues.md. The pre-commit format check now validates a staged differently-cased ledger. The Write/Edit format enforcer (including its fast gate andapply_patchhunks) matches the ledger case-insensitively. Auto-fix uses the ledger's real spelling when it annotates a PR branch, reads the base branch's ledger, allows a ledger-only merge conflict, and annotates infix ship; the branch-delete guard does too, reading the same ledger file on the branch as on the default branch. A staged docs ledger in any case is validated ahead of a root.found-issues.md. A newfi_docs_ledger_at_refresolves the ledger's tracked spelling at a git ref. The first-touch hook and statusline root still assume lowercase on a case-sensitive filesystem (logged ashooks/first-touch.sh:51). - sync stops probing entries that are already on hold (ledger
lib/sync.sh:505). An entry carrying a(hold: ...)marker, set by a human or added by sync to a critical entry, was probed like any other on every sync (aghPR call, git history and tombstone checks) and then walked back. It now skips the closure probes: no git history or tombstone closure check, and aghcall only when it cites a PR, to demote one closed without merging. Renamed files are still followed. A critical ([!]) entry without a marker is unchanged from 3.10.0: it is probed, and only when a closure would have fired does it get the hold marker instead of closing. TheHeld:summary is unchanged. - A sweep stopped by the known-red memo keeps the day's sweep slot (ledger
lib/autofix-sweep.sh:313). When the base was already known red at its commit, the sweep ran no tests but still spent a daily slot, so a repo could burn every slot on skips and then could not sweep the same day after its base was fixed. A memo skip now records a red-at-base marker instead: no new sweep queues while the base is still red at that commit. The check asks the remote (onegit ls-remote, only while a block is in effect), so a fix merged on GitHub unblocks the next trigger even before anything fetches; offline, the local ref decides. Changing a configuredtestCommandunblocks too. A base whose tests actually ran red still spends the slot, and spot fixes are unaffected. - FAQ: the end-of-turn check runs on Codex (ledger
docs/faq.md:116). It has since 2.10.0, reading the marker from Codex'slast_assistant_message; the FAQ still listed it as a Claude-only gap.