From 2d919b813162eb838edbd1c7a6f90274299e6e0b Mon Sep 17 00:00:00 2001 From: rzen Date: Sat, 8 Aug 2026 13:40:13 -0400 Subject: [PATCH] =?UTF-8?q?The=20prose=20catches=20up=20with=20the=20one-v?= =?UTF-8?q?ersion=20app=20=E2=80=94=20tier=20qualifiers=20retired,=20the?= =?UTF-8?q?=20entitlement=20comment=20carried=20over?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- Kanban/Changes/ChangeNarrator.swift | 5 +++-- Kanban/History/BoardUndoManager.swift | 4 ++-- Kanban/History/HistoryProviding.swift | 8 ++++---- Kanban/Kanban.entitlements | 16 ++++++++-------- Kanban/LiveStore/BoardAnnouncer.swift | 5 +++-- Kanban/LiveStore/BoardStore.swift | 2 +- Kanban/LiveStore/EchoLedger.swift | 16 +++++++++------- Kanban/Storage/CommentWriter.swift | 2 +- Kanban/Storage/GitignoreRules.swift | 6 +++--- Kanban/UI/Board/BoardToolbar.swift | 2 +- Kanban/UI/Card/CardBodyEditSession.swift | 3 ++- Kanban/UI/Card/CardCommentsCommands.swift | 2 +- Kanban/UI/Card/CommentEditSession.swift | 2 +- KanbanTests/BoardAnnouncerTests.swift | 10 +++++----- KanbanTests/BoardDiffTests.swift | 3 ++- KanbanTests/CardSessionUndoTests.swift | 7 ++++--- KanbanTests/CommentWriteTests.swift | 2 +- KanbanTests/DuplicateIdentityTests.swift | 2 +- KanbanTests/EchoLedgerTests.swift | 7 ++++--- KanbanTests/GitAgnosticStorageTests.swift | 2 +- KanbanUITests/EndToEndVerification.md | 2 +- 21 files changed, 58 insertions(+), 50 deletions(-) diff --git a/Kanban/Changes/ChangeNarrator.swift b/Kanban/Changes/ChangeNarrator.swift index 07dc313..c0c6ed7 100644 --- a/Kanban/Changes/ChangeNarrator.swift +++ b/Kanban/Changes/ChangeNarrator.swift @@ -277,8 +277,9 @@ enum ChangeNarrator { /// /// `BoardDiff.LaneEntry`'s twin rather than a shared type, deliberately: the announcer asks three /// questions of a lane and this asks a dozen, at a granularity (which *field* changed) the digest - /// is explicitly built not to keep — see `BoardDiff`'s own note, which says pro-m1's composer - /// "will phrase the very same counts differently without either of them knowing about the other". + /// is explicitly built not to keep — see `BoardDiff`'s own note, which says a future message + /// composer "will phrase the very same counts differently without either of them knowing about + /// the other". private struct LaneEntry { let container: ItemContainer let title: FieldValue diff --git a/Kanban/History/BoardUndoManager.swift b/Kanban/History/BoardUndoManager.swift index 0a52b9f..23e4387 100644 --- a/Kanban/History/BoardUndoManager.swift +++ b/Kanban/History/BoardUndoManager.swift @@ -154,8 +154,8 @@ public final class BoardUndoManager: UndoManager { // MARK: - BoardUndoRouting /// Which undo a hosted window answers with, given what holds the keyboard — 06-history-undo.md -/// ▸ Undo routing, which 12 records as **tier-independent**: "focus decides text-undo vs -/// board-undo; only the substrate behind board-undo differs". +/// ▸ Undo routing, which 12 records as a fact about *focus* and never about the substrate: "focus +/// decides text-undo vs board-undo; only the substrate behind board-undo differs". /// /// ### Most of the rule is AppKit's, and is not here /// diff --git a/Kanban/History/HistoryProviding.swift b/Kanban/History/HistoryProviding.swift index f336080..46b796e 100644 --- a/Kanban/History/HistoryProviding.swift +++ b/Kanban/History/HistoryProviding.swift @@ -258,13 +258,13 @@ public struct HistoryStep { /// "Two levels: one stack per board, one per open card window" (13-native-undo.md ▸ Rules, re-ruled /// 2026-07-31). The **board** stack is the session's, shared by board surfaces, and its /// implementation is what this protocol is a seam for. A **card window** owns a second stack for its -/// own gestures — always a `NativeHistoryProvider`, in either tier, because a window's fine-grained -/// inverses are values-based whatever the board's substrate is (`CardWindowUndo`); what reaches this +/// own gestures — always a `NativeHistoryProvider`, because a window's fine-grained inverses are +/// values-based whatever the board's substrate is (`CardWindowUndo`); what reaches this /// seam from a window is the one coarse step its close registers. /// /// `AppModel.BoardSession` is where the board half's ownership lives, and the composition root binds /// which implementation it gets — **always `NativeHistoryProvider`** now (two step stacks over the -/// inverses registered at the Writer boundary), on every board, in every tier +/// inverses registered at the Writer boundary), on every board there is /// (`AppModel.makeHistoryProvider`). A git-mode board once bound a git provider instead — undo as /// forward restore commits over HEAD's first-parent ancestry, 06-history-undo.md — between the /// 2026-08-07 pivot (12-editions.md ▸ PIVOT 2026-08-07, when the tier stopped deciding whether git @@ -286,7 +286,7 @@ public struct HistoryStep { /// `strategy/01-git-excision.md`). Both were honest implementations of these seven members; only /// native's promise is live to keep now. /// - **No routing.** Which surface ⌘Z reaches is focus's answer, not the substrate's -/// (13-native-undo.md ▸ Undo routing, tier-independent) — `BoardUndoRouting`. +/// (13-native-undo.md ▸ Undo routing) — `BoardUndoRouting`. /// /// ### One obligation every implementation shares: retire what you let go of /// diff --git a/Kanban/Kanban.entitlements b/Kanban/Kanban.entitlements index 982fd70..2eeb6ae 100644 --- a/Kanban/Kanban.entitlements +++ b/Kanban/Kanban.entitlements @@ -8,14 +8,14 @@ com.apple.security.files.bookmarks.app-scope - + com.apple.security.network.client