Skip to content

v3.10.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 03:54
b007a6a

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 find Docs/Found-Issues.md and similar, but several sites still matched only the literal docs/found-issues.md. The pre-commit format check now validates a staged differently-cased ledger. The Write/Edit format enforcer (including its fast gate and apply_patch hunks) 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 in fix 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 new fi_docs_ledger_at_ref resolves 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 as hooks/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 (a gh PR call, git history and tombstone checks) and then walked back. It now skips the closure probes: no git history or tombstone closure check, and a gh call 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. The Held: 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 (one git 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 configured testCommand unblocks 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's last_assistant_message; the FAQ still listed it as a Claude-only gap.