Repository navigation
Stop coverage patterns and path anchors from reading as stale - #35
Merged
Merged
Conversation
ledger stale dropped every coverage pattern from a record's file references and checked its symbols and anchors against whatever exact files remained, so a symbol living under src/** looked like drift. Patterns now become :(glob) pathspecs searched with git grep for the candidates the exact files did not account for, and a pattern that cannot be searched reports nothing rather than guessing. In Kore this takes the stale report from 169 signals to 25, with stale symbols falling from 156 to 2. Receipt 0193. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A Changed Files heading that names a directory path now matches the record's files under it, so its anchors are checked against them, while a prose heading word without a separator stays prose. An anchor that names a path the tree still holds is a reference to that file rather than content to find inside another. Kore's stale report falls from 25 signals to 14 and this repository stays at 0. Receipt 0194. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Bumps the package to 0.9.4 and writes the release record over receipts 0192 through 0195, with Public Notes covering the stale fixes: coverage patterns are searched rather than dropped, a directory heading covers the files under it, and an anchor naming a path in the tree is a reference. The handoff records the prepared release, the cost of the new search on a large tree, and that Kore's own session owns moving its pin and clearing the signals that remain there. Receipt 0195. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Owner
Author
|
Release preparation added: version 0.9.4, the release record over receipts 0192 through 0195, and a handoff update. |
kylebegeman
pushed a commit
that referenced
this pull request
Sep 20, 2026
The handoff described 0.9.4 as prepared on a branch, which stopped being true when #35 merged. It now names the state, the tag command, and the README pin move that has to land with it. Receipt 0195. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Summary
ledger stalereported drift that records did not have, which surfaced while triaging Kore's stale report for its handoff. Kore showed 169 signals, 156 of them stale symbols. Every one of the sampled symbols exists in the tree, in the directories its receipt names.Two causes, one receipt each.
src/**alongside a couple of exact files had its symbols and anchors checked against only those exact files, so anything living under the pattern looked missing. Patterns now become:(glob)pathspecs searched withgit grepfor whatever the exact files did not account for. When the search cannot run, because Git is missing or a pathspec is unusable, the pattern reports nothing rather than guessing.docs/.Effect
Of Kore's remaining 14, six are capture artifacts in its own Anchor lines and eight are candidates for real drift.
Cost
The search runs once per record and block file list, and only for records that name patterns.
ledger staleandledger doctortake about 15 seconds on Kore's tree against 0.4 seconds here. A single pass over the union of every record's patterns would cut that further; memoizing and batching a record's blocks only saved about a tenth, because each record's pattern set is its own.Verification
npm run ciexit 0: 61 test files, 494 tests, Ledger CI passed.src/**reports nothing without Git and only the absent symbol and anchor with Git; a block headedinternal/composer, CHANGELOG.mdkeeps the directory's test name and a real doc path clean while a missing doc path still reports.🤖 Generated with Claude Code