The prose catches up with the one-version app — tier qualifiers retired, the entitlement comment carried over
The excision's follow-up sweep: present-tense prose that still implied an edition axis now reads
correctly under one version ("in every tier" clauses dropped or turned substrate-shaped, the
announcer's "every free-tier bracket today" is "every bracket today" — nothing passes a phrase),
and forward-looking promises pinned to the mooted pro-m1/pro-m2 milestones now name the thing
itself (the change narrator in Kanban/Changes/, the foreign-change journal successor) or fall to
past tense. Kanban.entitlements' network-client comment sheds its "dormant until Pro ships"
framing for the pivot's own reasoning: the key stays because the sync capability to come needs
it regardless. Untouched on purpose: the storage layer's coerce/tolerate/refuse tiers, the
chooser's bundled/user/keyless tiers, verbatim design-doc quotations, and genuine past-tense
record. One dangling reference repaired en route: EndToEndVerification.md cited the long-renamed
InertGitTests. Comment-only throughout; 2,686 unit tests green, unchanged.
Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
@@ -371,7 +371,7 @@ struct BoardAnnouncerSpeechTests {
|
||||
#expect(BoardAnnouncer.speech(for: facts) == "Pulled 3 commits")
|
||||
}
|
||||
|
||||
/// Every free-tier bracket today. The seam exists; pro-m1 supplies the phrases.
|
||||
/// Every bracket today. The seam exists; nothing in the app supplies a phrase yet.
|
||||
@Test("A bracket with no phrase to say stays silent rather than falling back to the digest")
|
||||
func bracketWithoutAPhrase() {
|
||||
var facts = BoardAnnouncer.ReloadFacts()
|
||||
@@ -733,9 +733,9 @@ struct BoardAnnouncerStoreTests {
|
||||
#expect(log.lines == ["Card 'Fix login' was deleted externally"])
|
||||
}
|
||||
|
||||
/// The seam pro-m1 fills. No free-tier operation passes a phrase today, so this is the one
|
||||
/// place the completion path is exercised end to end — including that the phrase is *consumed*
|
||||
/// rather than left armed for whatever reload comes next.
|
||||
/// The seam a future wholesale operation fills. Nothing in the app passes a phrase today, so
|
||||
/// this is the one place the completion path is exercised end to end — including that the phrase
|
||||
/// is *consumed* rather than left armed for whatever reload comes next.
|
||||
@Test("A bracketed operation announces at completion, once, and never again")
|
||||
func bracketSpeaksOnceAtCompletion() async throws {
|
||||
let fixture = try makeBoard()
|
||||
@@ -755,7 +755,7 @@ struct BoardAnnouncerStoreTests {
|
||||
#expect(log.lines == ["Board changed: 1 card edited"], "the phrase was consumed, not carried forward")
|
||||
}
|
||||
|
||||
@Test("A bracket with no phrase to say stays quiet — every free-tier bracket today")
|
||||
@Test("A bracket with no phrase to say stays quiet — every bracket today")
|
||||
func silentBracket() async throws {
|
||||
let fixture = try makeBoard()
|
||||
defer { fixture.tearDown() }
|
||||
|
||||
Reference in New Issue
Block a user