backup classification: backup: blocks for the 13 bind-bearing apps

Adds the referential-coupling backup: block to every app that binds
${HDD_PATH}/${USERDATA_PATH} (immich, paperless-ngx, nextcloud, calibre-web,
audiobookshelf, komga, navidrome, radarr, sonarr, emby, jellyfin, plex, romm).
Each lists its userdata:/hdd: binds with class mandatory|optional|excluded
(operator-ruled + spike SQ2).

Requires controller v0.132.0 (deployed) which parses+validates these blocks.
INERT — no backup tier changes behavior yet (Task 3/4 consume it). All 13
verified against the shipped parser: parse-clean, every bind resolves explicit.
audiobookshelf media/audiobooks = optional (PENDING Viktor veto to excluded).

Ref: felhom.eu/documentation/audits/SPIKE-backup-classification-2026-07-14.md
This commit is contained in:
2026-07-14 18:51:36 +02:00
parent 365a017e81
commit 21e8df1e3a
14 changed files with 118 additions and 0 deletions
+10
View File
@@ -16,6 +16,16 @@ resources:
pi_compatible: true
needs_hdd: true
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
userdata:
- path: media/audiobooks
class: optional # PENDING-VETO: spike chose excluded; ruled optional for consistency
# with komga/romm (curated, often personally ripped — precious).
# If Viktor rules excluded, flip THIS LINE ONLY before committing.
- path: media/podcasts
class: excluded # re-downloadable by definition
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
+8
View File
@@ -16,6 +16,14 @@ resources:
pi_compatible: false
needs_hdd: true
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
userdata:
- path: media/books
class: mandatory # metadata.db lives INSIDE the tree — DB and books are one unit
- path: import/calibre
class: excluded # ingest inbox, transient
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
+6
View File
@@ -16,6 +16,12 @@ resources:
pi_compatible: false
needs_hdd: true
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
userdata:
- path: media
class: excluded # pure reader of the shared tree (:ro); state lives in volumes
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
+9
View File
@@ -21,6 +21,15 @@ resources:
pi_compatible: false
needs_hdd: true
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
hdd:
- path: appdata/immich
class: mandatory # managed upload library — DB-referenced (SQ3: restore-without = broken)
userdata:
- path: media/photos
class: optional # external library, :ro — precious but re-scanned (explicit overrides ro-default)
# --- Deploy fields ---
deploy_fields:
- env_var: DOMAIN
+6
View File
@@ -16,6 +16,12 @@ resources:
pi_compatible: false
needs_hdd: true
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
userdata:
- path: media
class: excluded # pure reader of the shared tree (:ro); state lives in volumes
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
+6
View File
@@ -16,6 +16,12 @@ resources:
pi_compatible: true
needs_hdd: true
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
userdata:
- path: media/comics
class: optional # ruled: precious-decoupled (re-scanned, hand-curated)
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
+6
View File
@@ -16,6 +16,12 @@ resources:
pi_compatible: true
needs_hdd: true
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
userdata:
- path: media/music
class: excluded # re-rippable bulk, :ro, shared tree
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
+6
View File
@@ -16,6 +16,12 @@ resources:
pi_compatible: false
needs_hdd: true
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
hdd:
- path: appdata/nextcloud
class: mandatory # THE user files — oc_filecache/shares reference them
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
+11
View File
@@ -32,6 +32,17 @@ resources:
pi_compatible: true # Runs on Raspberry Pi 3B+
needs_hdd: true # Needs external storage for user data
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
hdd:
- path: appdata/paperless/media
class: mandatory # document originals+archive — DB hashes/paths reference them
- path: appdata/paperless/export
class: excluded # transient export target
userdata:
- path: import/paperless
class: excluded # consume inbox — deleted after ingest by contract
# --- Deploy fields ---
# Shown to the user during first deployment.
# After deployment, values are saved to app.yaml in the stack directory.
+6
View File
@@ -16,6 +16,12 @@ resources:
pi_compatible: false
needs_hdd: true
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
userdata:
- path: media
class: excluded # pure reader of the shared tree (:ro); state lives in volumes
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
+8
View File
@@ -16,6 +16,14 @@ resources:
pi_compatible: true
needs_hdd: true
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
userdata:
- path: media/movies
class: excluded # re-downloadable by design
- path: downloads
class: excluded # ruled: transient queue (cross-app shared with sonarr)
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
+9
View File
@@ -16,6 +16,15 @@ resources:
pi_compatible: false
needs_hdd: true
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
userdata:
- path: roms
class: optional # ruled: curated ROM sets often not re-acquirable
hdd:
- path: appdata/romm/resources
class: excluded # scraper cache, re-derivable
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN
+8
View File
@@ -16,6 +16,14 @@ resources:
pi_compatible: true
needs_hdd: true
# --- Backup classification (referential coupling; see felhom.eu documentation/audits/SPIKE-backup-classification-2026-07-14.md) ---
backup:
userdata:
- path: media/tv
class: excluded
- path: downloads
class: excluded
# --- Deploy fields (first deployment only) ---
deploy_fields:
- env_var: DOMAIN