The seams unbind — the provider is always native, and the git stack compiles dead
Step 4 of strategy/01-git-excision.md, the entangled one: AppModel's makeHistoryProvider collapses to the native provider (the seam stays injectable per the reversibility posture), the session's git state and its wiring go (wireGitUndo, wireBranchSwitching, the card-session staging threading), BoardStore sheds commitSeam and the identity-history ranker (the loader's nil-safe rung now tops out at birth date — today's no-git behavior), SessionSettleGate keeps the gate and inherits the path utility it borrowed, BoardRegistry drops the persisted operation stamp (decode-safe), and the git banner family leaves BannerCenter with its announcer and accessibility phrases. One missed harvest tie severed (the narrator's root subject is its own now). Nothing outside Kanban/Git/ references the stack — proven by sweep. 2,855 tests green. Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
@@ -803,32 +803,17 @@ struct BoardStoreReloadMemoTests {
|
||||
#expect(store.landedReloads == 2)
|
||||
}
|
||||
|
||||
@Test("A value-equal reload still lands for the auto-commit seam and the covering gate")
|
||||
@Test("A value-equal reload still lands for the covering gate")
|
||||
func aValueEqualReloadStillLands() async throws {
|
||||
let fixture = try makeBoard()
|
||||
defer { fixture.tearDown() }
|
||||
let store = try BoardStore(rootURL: fixture.root)
|
||||
|
||||
let landings = LandingCount()
|
||||
store.commitSeam = HistoryCommitSeam(
|
||||
willWrite: {},
|
||||
writeBracketDidClose: {},
|
||||
reloadDidLand: { _ in landings.value += 1 }
|
||||
)
|
||||
_ = await reload(store)
|
||||
|
||||
// The covering gate counts landings, not assignments (`GitAutoCommitter.landedReloads`), and
|
||||
// the commit seam is armed by every landing whether or not the snapshot moved — "a landing
|
||||
// that finds nothing to commit is the silent no-op, not a wasted trip".
|
||||
#expect(landings.value == 1)
|
||||
// The covering gate counts landings, not assignments: a walk covers what it walked whether or
|
||||
// not the tree turned out to differ.
|
||||
#expect(store.landedReloads == 1)
|
||||
#expect(store.snapshotGeneration == 0)
|
||||
}
|
||||
}
|
||||
|
||||
/// What the reload path told the history seam — a box, because `HistoryCommitSeam` is a struct of
|
||||
/// closures and a captured `var` cannot be read back after the reload has landed.
|
||||
@MainActor
|
||||
private final class LandingCount {
|
||||
var value = 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user