The tier axis comes out of the git stack — compose unconditional, postures mode-driven
HistoryStore.compose(boardRoot📒) returns non-optional and runs for every session — the nil the gate produced was the only nil it ever had. makeHistoryProvider is a one-axis decision: git-mode boards bind the git provider, everything else native, in every tier; Session.tier stays recorded, dormant. BoardGitSection shrinks to the four mode postures (.absent and .proPointer die, BoardGitNote and the .git probe with them); every board carries all three popover tabs (BoardInfoTab.available retired); the titlebar branch shows on any git-mode board; the settings sheet and card History section stop reading tier. InertGitTests is repurposed as UntouchedGitTests — the file layer still never opens .git, now load-bearing for mode-none boards. The accessibility audit reaches the settings sheet at last: the fixture board hosts it in every tier, so the free-fixture disabled-row test becomes an open-and-audit test. Claude-Session: https://claude.ai/code/session_01SR4XGjmBE16ZUYWpfFHXwY
This commit is contained in:
@@ -13,11 +13,12 @@ import Foundation
|
||||
///
|
||||
/// ### Two jobs, and the second is why this is a type rather than a stored provider
|
||||
///
|
||||
/// **The fine stack**: an ordinary `NativeHistoryProvider`, in *both* tiers. The steps a card window
|
||||
/// **The fine stack**: an ordinary `NativeHistoryProvider`, on *every* board. The steps a card window
|
||||
/// registers are values-based inverses at the Writer boundary — the same shape whatever substrate the
|
||||
/// board's own history has — so a Pro git board's card window still walks its own gestures with the
|
||||
/// native grammar, and only the *coarse* close unit is tier-split ("one native board step, or one
|
||||
/// commit" — 06-history-undo.md ▸ Undo routing).
|
||||
/// board's own history has — so a git board's card window still walks its own gestures with the
|
||||
/// native grammar, and only the *coarse* close unit splits by substrate ("one native board step, or
|
||||
/// one commit" — 06-history-undo.md ▸ Undo routing). The split was written as a tier split and is a
|
||||
/// board split since 12-editions.md ▸ PIVOT 2026-08-07; nothing in this type ever read either.
|
||||
///
|
||||
/// **The fold**: window close registers "one coarse step ... whose undo restores the card subtree to
|
||||
/// its session-start state ... and whose redo reapplies the net effect". That net effect is exactly
|
||||
|
||||
@@ -262,21 +262,25 @@ public struct HistoryStep {
|
||||
/// 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 — **following the board, not the tier alone** (re-ruled 2026-07-31):
|
||||
/// a board without app-managed git — repo-nested included (re-ruled 2026-07-31) — binds
|
||||
/// `NativeHistoryProvider` (two step stacks over the inverses registered at the Writer boundary) in
|
||||
/// every tier, a Pro git board binds the git provider (undo as forward restore commits over HEAD's
|
||||
/// first-parent ancestry — 06-history-undo.md), and Teams inherits Pro's.
|
||||
/// which implementation it gets — **following the board, and since the 2026-08-07 pivot the board
|
||||
/// alone** (re-ruled 2026-07-31; 12-editions.md ▸ PIVOT 2026-08-07): a board without app-managed git
|
||||
/// — repo-nested included (re-ruled 2026-07-31) — binds `NativeHistoryProvider` (two step stacks over
|
||||
/// the inverses registered at the Writer boundary), and a git-mode board binds the git provider (undo
|
||||
/// as forward restore commits over HEAD's first-parent ancestry — 06-history-undo.md). Both answers
|
||||
/// are the same in every tier; the tier used to decide whether git was on the table at all, and no
|
||||
/// longer does.
|
||||
///
|
||||
/// ### What this protocol deliberately does not say
|
||||
///
|
||||
/// - **No `NSUndoManager`, anywhere in the signature.** It is the native provider's implementation
|
||||
/// detail, and a seam that vended one would be a seam only one provider could ever satisfy — the
|
||||
/// opposite of the reason the seam exists at all ("the free tier's native undo is the first proof
|
||||
/// the seam is real", 12). AppKit still needs an `UndoManager` to hand the responder chain; that
|
||||
/// adapter is `BoardUndoManager`, which sits *over* this protocol rather than inside it.
|
||||
/// - **No persistence promise.** The native stack dies with the session (13); Pro's survives
|
||||
/// relaunch because git does (06). Both are honest implementations of these seven members.
|
||||
/// the seam is real", 12 — written when native undo was the free tier's; the proof it names is
|
||||
/// two working substrates, which the pivot leaves standing). AppKit still needs an `UndoManager`
|
||||
/// to hand the responder chain; that adapter is `BoardUndoManager`, which sits *over* this
|
||||
/// protocol rather than inside it.
|
||||
/// - **No persistence promise.** The native stack dies with the session (13); the git provider's
|
||||
/// survives relaunch because git does (06). Both are honest implementations of these seven members.
|
||||
/// - **No routing.** Which surface ⌘Z reaches is focus's answer, not the substrate's
|
||||
/// (06 ▸ Undo routing, tier-independent) — `BoardUndoRouting`.
|
||||
///
|
||||
|
||||
@@ -2,8 +2,10 @@ import Foundation
|
||||
|
||||
// MARK: - NativeHistoryProvider
|
||||
|
||||
/// The free tier's undo substrate: one stack per board session (13-native-undo.md) — **and the
|
||||
/// substrate of every open card window's stack, in either tier** (re-ruled 2026-07-31, the
|
||||
/// The undo substrate of every board without app-managed git: one stack per board session
|
||||
/// (13-native-undo.md, whose header lost its tier axis with the 2026-08-07 pivot — the substrate is
|
||||
/// the board's mode alone, and git is opt-in per board, so a board nobody opted in keeps this stack
|
||||
/// for good) — **and the substrate of every open card window's stack, on any board** (re-ruled 2026-07-31, the
|
||||
/// session-coarsening model): a window's fine-grained gestures are values-based inverses whatever the
|
||||
/// board's own substrate is, so `CardWindowUndo` holds one of these too. Nothing below knows which of
|
||||
/// the two it is; both need the same four-line grammar.
|
||||
|
||||
Reference in New Issue
Block a user