The loader collects every fail-fast defect and honors per-open skips
Phase 1 of the decision surface (01 ▸ Malformed input, settled
2026-07-31): BoardLoadFailure aggregates the walk's defects in walk
order — stop-at-first retires. Environmental failures (unreadable root,
not-a-directory) stay immediate single-defect throws: there is no walk
to collect from. A defective root index is recorded and the walk
continues into the children (nothing in the walk consults the parsed
root document — verified); a defective lane, card, or trash-entry index
records and skips its subtree, Re-check's whole-walk re-aggregation
being the designed loop for what hides beneath. load(skipping:) is the
per-open skip channel: a skipped path's item is omitted from the model
and surfaces as LoadWarning.userSkipped; root paths are unskippable by
construction. The reload-breakage banner carries the aggregate ("…and
N more"), single-defect sentences byte-identical to before. Two new
multi-defect fixture boards; suite 2591 green.
Claude-Session: https://claude.ai/code/session_01CqjXB7ASoWtbyoGod68k97
This commit is contained in:
@@ -315,7 +315,7 @@ private func previewError(
|
||||
rows: [
|
||||
.inProgress(InProgressOperation(label: "Importing 24 attachments…", cancel: {})),
|
||||
.readOnlyLock(.bracketedReloadFailed),
|
||||
.reloadBreakage(BoardLoadError(path: "todo/index.md", reason: .missingOrder)),
|
||||
.reloadBreakage(BoardLoadFailure(BoardLoadError(path: "todo/index.md", reason: .missingOrder))),
|
||||
.oneShot(OneShotBanner(error: previewError(.move(title: "Fix login")))),
|
||||
.oneShot(OneShotBanner(error: previewError(.style(title: "Design review")))),
|
||||
.oneShot(OneShotBanner(error: previewError(.renumberChildren))),
|
||||
|
||||
Reference in New Issue
Block a user