Skip to content

feat(core): allow nested backup sources when the parent excludes the child - #294

Merged
pmaxhogan merged 1 commit into
mainfrom
feat/nested-sources-excluded
Aug 15, 2026
Merged

feat(core): allow nested backup sources when the parent excludes the child#294
pmaxhogan merged 1 commit into
mainfrom
feat/nested-sources-excluded

Conversation

@pmaxhogan

@pmaxhogan pmaxhogan commented Aug 15, 2026

Copy link
Copy Markdown
Owner

Allow a backup source to contain another source's folder when the outer source's own exclude patterns provably cover the inner root (no ! re-include reachable beneath it). Identical roots are still rejected, and genuinely overlapping pairs still fail with an actionable error. update_source re-runs the same check so a later pattern edit cannot silently un-exclude a nested source's root.

Only the source's own stored patterns count toward the overlap check - gitignore tiers are deliberately ignored because they can change on disk at any time.

  • New own_rules_exclude_subtree predicate in driven-core (purely computational, works with roots offline)
  • reject_overlapping_root now allows exclude-covered nesting in both directions, with direction-specific error messages
  • DESIGN 5.2.2 and README updated

[dev-build]

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

…child

A source may now contain another source's root when its own exclude
patterns provably cover that root (no reachable re-include), in both
directions. update_source re-runs the check so a later pattern edit
cannot un-exclude a nested source's root. Identical roots and uncovered
overlaps stay rejected, with actionable errors naming the other folder.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A7q3CvJzL4zZmDA9CbXyQQ
@github-actions

Copy link
Copy Markdown
Contributor

Coverage

Area main this PR delta
Rust (lib crates) 84.54% 84.56% +0.02 (OK)
UI (vue/ts) 93.04% 93.04% +0.00 (OK)

Gate: passed - no coverage regression (epsilon 0.1 pp).

@pmaxhogan
pmaxhogan merged commit 0b62df9 into main Aug 15, 2026
19 checks passed
@pmaxhogan
pmaxhogan deleted the feat/nested-sources-excluded branch August 15, 2026 15:28
@github-project-automation github-project-automation Bot moved this from Todo to Done in Driven Aug 15, 2026
pmaxhogan added a commit that referenced this pull request Aug 18, 2026
🤖 I have created a release *beep* *boop*
---


##
[2.12.0](v2.11.1...v2.12.0)
(2026-08-18)


### Features

* **app:** opt-in debug logging mode and safer, richer diagnostic
bundles ([#314](#314))
([33c281c](33c281c))
* **core:** allow nested backup sources when the parent excludes the
child ([#294](#294))
([0b62df9](0b62df9))
* **core:** live exclusion pickup and a visible pending-work queue
([#313](#313))
([e6427c7](e6427c7))
* live bottleneck indicator on the Activity dashboard
([#311](#311))
([2d9d763](2d9d763))
* **ui:** folder picker sort/filter/create/rename and exclusions size
rollups ([#315](#315))
([7e87341](7e87341))


### Bug Fixes

* **app:** never freeze on tray quit during a backup; quitting tray
state; honest recovery status
([#312](#312))
([f951cde](f951cde))
* clear the attention banner after a passing run and make source removal
backend-aware ([#310](#310))
([6d8e1ab](6d8e1ab))
* **s3:** honest per-source versioning across backends and
multipart-upload leak sweep
([#316](#316))
([d462592](d462592))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant