The stack comes out — Kanban/Git/ deleted wholesale, ten thousand lines into history

Step 5 of strategy/01-git-excision.md: the seventeen dead engine files and the five remaining git test suites go (InertGitTests stays — the naming footgun is a Storage keeper). Two rescues ride ahead of the delete: HarvestedReceipt relocates to EchoLedger (the harvest surface outlives its git consumer; foundation for the deferred journal), and commentTimestamps joins the narrator it always served. The provider-swap purge test re-expresses over a git-free fake; the duplicate-id ladder keeps every pure historyRank pin and loses only the two ranker-driven ones. Resurrection point: tag pre-git-excision. 2,707 tests green.

Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
2026-08-08 11:38:16 -04:00
parent adbc5ddd89
commit edaf5be706
27 changed files with 99 additions and 10020 deletions
+31
View File
@@ -936,6 +936,37 @@ enum ChangeNarrator {
return components.prefix(depth).joined(separator: "/")
}
/// **When each of this window's comments was created**, keyed by `commentFolder(of:)`'s own
/// spelling the chronology a commit's comment bullets sort by (06 Rules Auto-commit, blessed
/// 2026-07-31: "by the comments' own `created`, folder name on ties").
///
/// Relocated 2026-08-08 from `GitAutoCommitter.swift` with the git excision: the flush that called
/// this is gone, but the read itself is git-free one `index.md` per touched comment folder, off
/// the working tree so it stays beside the vocabulary that consumes it
/// (`ChangeNarrationRequest.commentTimestamps`) rather than leaving with its old caller.
///
/// **Missing is normal, not a defect.** A comment whose folder left the tree in this very window
/// (the close purge), one whose `index.md` does not parse, one written by hand with no `created`
/// at all each is simply absent here and sorts after its dated siblings in folder-name order,
/// which is `CommentThread.sorted`'s own fallback for the same field. Nothing here is reported
/// a commit message is the wrong place to discover a defect.
static func commentTimestamps(for changed: [ChangedPath], boardRoot: URL) -> [String: Date] {
var timestamps: [String: Date] = [:]
var seen: Set<String> = []
for path in changed {
guard let folder = commentFolder(of: path.path), seen.insert(folder).inserted else { continue }
let index = boardRoot
.appendingPathComponent(folder)
.appendingPathComponent(IntegrityRules.indexFileName)
guard let data = try? Data(contentsOf: index),
let document = try? BoardLoader.parseDocument(data, path: folder),
let created = document.created.value
else { continue }
timestamps[folder] = created
}
return timestamps
}
/// **The comment verb family** (01-storage-format.md § Enhanced schema, the `kind: comment` block:
/// "foreign comment changes are described by **path shape** the 'Update agent guide (vN)'
/// mechanism: a changed path under `/comments/<uuid>/` composes 'Comment on card title' / 'Edit