Memoize the reload parse and short-circuit value-equal snapshots
The loader gains a ParseMemo — the previous walk's parsed documents keyed by root-relative path, trusted on the git-index heuristic (mtime + size, no hashing) and passed as an input so the loader stays stateless. A hit skips exactly one file read; schema, order, coercions, dedupe, and every directory listing run fresh, so memoized and cold walks are output- identical (golden-corpus equivalence suite). Entries record only past the schema gate, so a defect can never be answered from the memo. The store skips the snapshot assignment wholesale when the fresh model is value-equal — no @Observable churn, no render pass, no snapshotGeneration bump — and a new landedReloads counter carries walk-completion for the three consumers whose subject is the walk, not the snapshot: the card window's comment thread, the comment search index, and the auto-committer's covering gate (which now counts a completed walk as covering even when nothing changed). Warnings and defects move on their own equality; failed reloads bump neither counter. An injectable ParseCounter makes the single-file-echo claim a test. Claude-Session: https://claude.ai/code/session_01CqjXB7ASoWtbyoGod68k97
This commit is contained in:
@@ -1245,7 +1245,7 @@ struct AutoCommitMessageTests {
|
||||
var generation = 0
|
||||
var reads = 0
|
||||
committer.awaitReloadQuiescence = {}
|
||||
committer.snapshotGeneration = {
|
||||
committer.landedReloads = {
|
||||
reads += 1
|
||||
if reads == landsAfterReads {
|
||||
current = (try? fixture.snapshot()) ?? current
|
||||
|
||||
Reference in New Issue
Block a user