Realign code with the 2026-07-30 findings-resolution rulings
Delete Immediately is removed entirely (rulingae1dd96, Redesign card d40bfac1): the delete vocabulary is purely staged — board → trash, trash → permanent (confirmed on no-git boards), Empty Trash for bulk. Gone: File ▸ Delete Immediately (⌥⌘⌫) and its validation, both ⌥-alternate context rows (card + the permanently-disabled lane row), the VO custom action, BoardStore.deleteImmediately, TrashModel.canDeleteImmediately, TrashConfirmations' .purge action (zero surviving callers — trash-side Delete always used .deleteTrashCards), and the pinning tests. purgePrompt drops its now-single-purpose container parameter (.trash is the only surviving caller). BoardWriter.purgeItem survives — create-undo rollback still needs it — with its comment rewritten. README's trash paragraph drops the ⌥⌘⌫ sentence. The other 2026-07-30 rulings (2ec2c95registry freshness stamp,c741b02unified-log-as-coerce-consumer) required no code changes — already conformant. Both schemes 1844 tests / 318 suites green. Claude-Session: https://claude.ai/code/session_01SR4XGjmBE16ZUYWpfFHXwY
This commit is contained in:
@@ -1248,12 +1248,12 @@ public enum BoardWriter: Sendable {
|
||||
EchoLedger.current?.recordDeletion(at: laneFolder)
|
||||
}
|
||||
|
||||
/// Permanently removes one card from the trash — the trash's **Delete / Delete Immediately**
|
||||
/// Permanently removes one card from the trash — the trash's own **Delete**
|
||||
/// (03-board-ui.md § Trash: "on a trash card, Delete (⌫/⌘⌫) is permanent").
|
||||
///
|
||||
/// `purgeItem` with the container checked: the folder must actually sit in this board's
|
||||
/// `.trash/`, so a mis-aimed permanent delete cannot reach a live card. Delete Immediately
|
||||
/// *from* the board — which skips the trash — is `purgeItem`, not this call.
|
||||
/// `.trash/`, so a mis-aimed permanent delete cannot reach a live card. `purgeItem`
|
||||
/// (unconstrained) is for the create-undo's own removal, not this call.
|
||||
///
|
||||
/// An already-gone folder is success, `purgeItem`'s rule.
|
||||
public static func purgeTrashCard(at cardFolder: URL, inBoard boardRoot: URL) throws(BoardWriteError) {
|
||||
@@ -1536,10 +1536,10 @@ public enum BoardWriter: Sendable {
|
||||
try? FileManager.default.setAttributes([.posixPermissions: permissions], ofItemAtPath: url.path)
|
||||
}
|
||||
|
||||
/// Physical removal — Delete Immediately / Empty Trash (03-board-ui.md): deletes the
|
||||
/// folder tree from disk. Irreversible, and distinct from the ordinary delete, which is a
|
||||
/// *move* into `.trash/` — this call does **not** require the item to be in the trash first,
|
||||
/// since Delete Immediately "skips the trash from anywhere" by design.
|
||||
/// Physical removal — the create-undo's own primitive (13-native-undo.md: "create → remove the
|
||||
/// created folder"): deletes the folder tree from disk. Irreversible, and distinct from the
|
||||
/// ordinary delete, which is a *move* into `.trash/` — this call does **not** require the item to
|
||||
/// be in the trash first, since an undone create's folder was never trashed to begin with.
|
||||
///
|
||||
/// **A folder that is already gone is success, not an error** — checked first, before the
|
||||
/// shape guard below. A Finder deletion converges on exactly the end state a purge would
|
||||
|
||||
Reference in New Issue
Block a user