Capture-set computation (INERT; Task 3-core, v0.133.0)
Pure appbackup.ComputeCaptureSet(binds, hasClassification, tier, hddPath) → CaptureSet
{HasClassification, Paths, Skipped}: legacy short-circuit → tier filter (§2) → structural
guards → equal-Abs collapse (mandatory>optional) → containment dedup → sort. Slash algebra,
no filepath/FS/log. Structural guards (traversal / bare HDD drive-root / reserved backups/)
are load-bearing (the compose parser does not reject ..). Pure CrossAppOverlaps advisory
(WARN wiring deferred to 3a/3b). INERT — no engine consumes it yet.
Tests: Groups A-F (appbackup) + F-S3 no-seam wiring (stacks); all 6 §10 red-proofs verified.
Docs: architecture §3 aligned (felhom.eu 8d85da7).
This commit is contained in:
@@ -263,6 +263,15 @@ Each app can define rich metadata in `.felhom.yml`:
|
||||
`Manager.ClassifiedBinds` / `StackDataProvider.GetStackClassifiedBinds` seam exist, but no backup
|
||||
tier consumes them yet (Task 3 = tier policy engine, Task 4 = manual `.fab` UI). See
|
||||
`felhom.eu/documentation/audits/SPIKE-backup-classification-2026-07-14.md`.
|
||||
- **Capture-set computation (v0.133.0, Task 3-core, INERT):** `appbackup.ComputeCaptureSet(binds,
|
||||
hasClassification, tier, hddPath)` (`internal/appbackup/captureset.go`) is the pure path-algebra
|
||||
that turns classified binds into a tier-filtered, structurally-guarded, containment-deduped
|
||||
absolute `CaptureSet{HasClassification, Paths, Skipped}` (slash algebra, no `filepath`/FS/log).
|
||||
`TierOffsite` = mandatory only; `TierSecondary` = mandatory + optional; excluded dropped;
|
||||
legacy short-circuits to unit-only. Structural guards (traversal / bare HDD drive-root / reserved
|
||||
`backups/` zone) move refused would-be captures into `Skipped` for the engines to log. Companion
|
||||
`CrossAppOverlaps` (pure; WARN wiring deferred to 3a/3b). No engine consumes it yet — 3a (offsite)
|
||||
/ 3b (tier-2) are the consumers. See `felhom.eu/documentation/architecture/07-backup-architecture.md` §3.
|
||||
|
||||
The `/apps/{slug}` page renders hero section, screenshots, setup guide, and optional config form.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user