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:
2026-07-14 21:53:05 +02:00
parent 95f3180ab4
commit 2668ac4da3
7 changed files with 734 additions and 104 deletions
+9
View File
@@ -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.