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:
@@ -441,50 +441,6 @@ struct BoardAnnouncerSpeechTests {
|
||||
)
|
||||
}
|
||||
|
||||
/// **The corrupt-`.git` loud failure, spoken** (06-history-undo.md ▸ Rules, ruled 2026-07-31:
|
||||
/// "announced per 10-accessibility.md"). It ranks last of the raised conditions, matching the
|
||||
/// strip's own precedence: the two above it describe the board's files, this one the history
|
||||
/// over them.
|
||||
@Test("The unreadable repository announces on arrival, under the conditions about the files")
|
||||
func raisedRepositoryUnreadable() {
|
||||
var facts = BoardAnnouncer.ReloadFacts()
|
||||
facts.repositoryUnreadableAfter = true
|
||||
|
||||
#expect(
|
||||
BoardAnnouncer.speech(for: facts)
|
||||
== AccessibilityPhrases.bannerLabel(
|
||||
tone: .error,
|
||||
headline: BannerCenter.repositoryUnreadableMessage
|
||||
)
|
||||
)
|
||||
|
||||
// A breakage standing beside it leads: the board on screen not being the board on disk is
|
||||
// the more consequential of the two.
|
||||
facts.breakageAfter = breakage()
|
||||
#expect(
|
||||
BoardAnnouncer.speech(for: facts)
|
||||
== AccessibilityPhrases.bannerLabel(tone: .error, headline: BannerCenter.headline(for: breakage()))
|
||||
)
|
||||
}
|
||||
|
||||
@Test("A repository that heals is announced too, as the regained capability")
|
||||
func clearedRepositoryUnreadable() {
|
||||
var facts = BoardAnnouncer.ReloadFacts()
|
||||
facts.repositoryUnreadableBefore = true
|
||||
facts.repositoryUnreadableAfter = false
|
||||
|
||||
#expect(BoardAnnouncer.speech(for: facts) == "History is recording again")
|
||||
}
|
||||
|
||||
@Test("A standing unreadable repository is not repeated on every re-read")
|
||||
func standingRepositoryUnreadableIsNotRepeated() {
|
||||
var facts = BoardAnnouncer.ReloadFacts()
|
||||
facts.repositoryUnreadableBefore = true
|
||||
facts.repositoryUnreadableAfter = true
|
||||
|
||||
#expect(BoardAnnouncer.speech(for: facts) == nil, "the 15 s re-read confirms; it does not narrate")
|
||||
}
|
||||
|
||||
@Test("A cleared lock is announced — the banner speaks when it clears, not only when it appears")
|
||||
func clearedLock() {
|
||||
var facts = BoardAnnouncer.ReloadFacts()
|
||||
|
||||
Reference in New Issue
Block a user