R-442 CLOSED (controller v0.236.0): "delete my data too" deletes it or refuses; R-465..467 opened
gates / gates (push) Failing after 18s

- OPEN-ITEMS: R-442 row removed; R-465 (six remaining Paths.HDDPath readers — audit),
  R-466 (recovery-unit residue after "delete backups"), R-467 (v0.236.0 owes a golden).
- CLOSED-ITEMS: R-442 compressed, reasoning kept, fleet shape now established.
- 00-capability-map: lifecycle row narrowed (Campaign 3 proved remove removes the APP,
  not the data) and re-proven from audits/R442-2026-09-13/.
- STATUS: item 13 in plain language; item 7 closed (ruled 2026-09-02, 09 §3).
- audits/R442-2026-09-13/: live evidence (A, C, D bodies, controls, log window, teardown).

Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-13 09:05:52 +02:00
parent d6837d98ee
commit 4b2e5608c2
10 changed files with 159 additions and 6 deletions
@@ -0,0 +1,37 @@
=== 2026-09-13T06:59:26Z SCENARIO A: nextcloud remove_hdd_data=true remove_backups=true ===
state=stopped deployed=True deploying=False err=None
--- GET hdd-data ---
{"ok":true,"data":{"stack":"nextcloud","hdd_paths":[{"path":"/mnt/felhom-drives/hdd_1/appdata/nextcloud","size_bytes":65241015,"size_human":"63M","exists":true}],"has_hdd_data":true}}
HTTP 200
--- GET backup-data ---
{"ok":true,"data":{"stack":"nextcloud","backup_paths":[{"path":"/mnt/felhom-drives/hdd_1/backups/primary/nextcloud/db-dumps","size_bytes":4117,"size_human":"8.0K","exists":true},{"path":"/mnt/felhom-drives/hdd_1/backups/secondary/nextcloud/rsync","size_bytes":0,"size_human":"","exists":false}],"has_backups":true}}
HTTP 200
--- BEFORE: find ---
69
/mnt/felhom-drives/hdd_1/backups/primary/nextcloud/db-dumps/r442-fixture.sql
/mnt/felhom-drives/hdd_1/backups/primary/nextcloud/compose/.felhom.yml
/mnt/felhom-drives/hdd_1/backups/primary/nextcloud/compose/docker-compose.yml
/mnt/felhom-drives/hdd_1/backups/primary/nextcloud/compose/app.yaml
/mnt/felhom-drives/hdd_1/backups/primary/nextcloud/manifest.json
--- POST remove ---
{"ok":true,"data":{"removed":"nextcloud","volumes_removed":null,"hdd_paths_removed":["/mnt/felhom-drives/hdd_1/appdata/nextcloud (63M)"],"hdd_paths_preserved":[],"backup_paths_removed":["/mnt/felhom-drives/hdd_1/backups/primary/nextcloud/db-dumps (8.0K)"]},"message":"Stack nextcloud removed"}
HTTP 200
--- AFTER: find ---
appdata files: 1
ls: cannot access '/mnt/felhom-drives/hdd_1/appdata/nextcloud': No such file or directory
ls: cannot access '/mnt/felhom-drives/hdd_1/backups/primary/nextcloud/db-dumps': No such file or directory
paperless
romm
state=not_deployed deployed=False deploying=False err=None
--- controller log ---
2026/09/13 06:59:17 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/09/13 06:59:17 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/09/13 06:59:17 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml
2026/09/13 06:59:27 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/13 06:59:27 delete.go:461: [INFO] Removing deployed stack: nextcloud (removeHDDData=true, hddDeclared=true, backupPaths=1)
2026/09/13 06:59:27 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/13 06:59:28 delete.go:523: [INFO] Removed HDD data: /mnt/felhom-drives/hdd_1/appdata/nextcloud (63M)
2026/09/13 06:59:28 delete.go:569: [INFO] Removed backup data: /mnt/felhom-drives/hdd_1/backups/primary/nextcloud/db-dumps (8.0K)
@@ -0,0 +1,26 @@
=== 2026-09-13T07:00:17Z SCENARIO C: nextcloud with HDD_PATH removed from app.yaml (TEST-ONLY EDIT), remove_hdd_data=true ===
state=running deployed=True deploying=False err=None
state=stopped deployed=True deploying=False err=None
HDD_PATH lines in app.yaml now: 1
data files before: 69
--- POST remove ---
{"ok":false,"error":"Az alkalmazás adatainak helye nem állapítható meg, ezért semmit nem töröltünk. Az alkalmazás nem lett eltávolítva."}
HTTP 409
--- after the refusal ---
state=stopped deployed=True deploying=False err=None
-rw------- 1 root root 1302 Sep 13 07:00 /opt/docker/stacks/nextcloud/app.yaml
containers still present:
data files after: 69
--- controller log ---
2026/09/13 07:00:20 delete.go:130: [ERROR] [stacks] RemoveStack nextcloud refused: data removal requested, the compose binds a drive path, but app.yaml records no HDD_PATH — nothing removed, app kept (R-442)
2026/09/13 07:00:20 router.go:830: [ERROR] [api] Remove failed for nextcloud: Az alkalmazás adatainak helye nem állapítható meg, ezért semmit nem töröltünk. Az alkalmazás nem lett eltávolítva.
--- restore app.yaml, then the SAME call (positive control) ---
HDD_PATH lines restored: 2
{"ok":true,"data":{"removed":"nextcloud","volumes_removed":null,"hdd_paths_removed":["/mnt/felhom-drives/hdd_1/appdata/nextcloud (63M)"],"hdd_paths_preserved":[]},"message":"Stack nextcloud removed"}
HTTP 200
ls: cannot access '/mnt/felhom-drives/hdd_1/appdata/nextcloud': No such file or directory
paperless
romm
state=not_deployed deployed=False deploying=False err=None
@@ -0,0 +1,16 @@
=== 2026-09-13T06:59:49Z SCENARIO D: gokapi (SSD, no HDD_PATH) remove_hdd_data=true ===
0
app.yaml has NO HDD_PATH line
0
compose binds NO drive path
state=stopped deployed=True deploying=False err=None
--- GET hdd-data ---
{"ok":true,"data":{"stack":"gokapi","hdd_paths":null,"has_hdd_data":false}}
HTTP 200
--- POST remove ---
{"ok":true,"data":{"removed":"gokapi","volumes_removed":null,"hdd_paths_removed":[],"hdd_paths_preserved":[],"hdd_note":"Az alkalmazás nem tárolt saját adatot külső meghajtón, így ott nem volt mit törölni."},"message":"Stack gokapi removed"}
HTTP 200
state=not_deployed deployed=False deploying=False err=None
--- controls on the D body: llap=0 removed_empty= hdd_note=1
@@ -0,0 +1,4 @@
=== ASCII-fragment controls (searched on DooPlex, saved bodies) ===
A-nextcloud-remove.txt: llap=0 'nem lett elt'=0 hdd_paths_removed=1 HTTP409=0 HTTP200=3
C-nextcloud-refused.txt: llap=2 'nem lett elt'=2 hdd_paths_removed=1 HTTP409=1 HTTP200=1
D-gokapi-remove.txt: llap=1 'nem lett elt'=0 hdd_paths_removed=1 HTTP409=0 HTTP200=2
@@ -0,0 +1,56 @@
=== controller log, R-442 window ===
2026/09/13 06:54:17 manager.go:527: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/13 06:54:17 manager.go:527: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/13 06:56:17 manager.go:527: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/13 06:56:17 manager.go:527: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/13 06:56:57 auth.go:134: [DEBUG] [web] auth: valid session for POST /api/stacks/nextcloud/deploy
2026/09/13 06:56:57 router.go:81: [DEBUG] [api] POST /api/stacks/nextcloud/deploy (path=/stacks/nextcloud/deploy)
2026/09/13 06:56:57 router.go:403: [INFO] [api] Deploy requested for stack: nextcloud
2026/09/13 06:56:57 router.go:81: [DEBUG] [api] deployStack: name=nextcloud contentLength=263
2026/09/13 06:56:58 deploy.go:288: [DEBUG] Deploy nextcloud: received 7 user values
2026/09/13 06:56:58 deploy.go:418: [INFO] [stacks] Deploying stack nextcloud with 7 env vars: [NEXTCLOUD_ADMIN_USER, NEXTCLOUD_ADMIN_PASSWORD, HDD_PATH, DOMAIN, SUBDOMAIN, DB_PASSWORD, MYSQL_ROOT_PASSWORD]
2026/09/13 06:56:58 manager.go:1515: [INFO] [stacks] Deploying stack nextcloud — checking 3 images...
2026/09/13 06:56:58 auth.go:134: [DEBUG] [web] auth: valid session for POST /api/stacks/gokapi/deploy
2026/09/13 06:56:58 router.go:81: [DEBUG] [api] POST /api/stacks/gokapi/deploy (path=/stacks/gokapi/deploy)
2026/09/13 06:56:58 router.go:403: [INFO] [api] Deploy requested for stack: gokapi
2026/09/13 06:56:58 router.go:81: [DEBUG] [api] deployStack: name=gokapi contentLength=103
2026/09/13 06:56:58 deploy.go:288: [DEBUG] Deploy gokapi: received 3 user values
2026/09/13 06:56:58 deploy.go:418: [INFO] [stacks] Deploying stack gokapi with 3 env vars: [DOMAIN, SUBDOMAIN, GOKAPI_PASSWORD]
2026/09/13 06:56:58 manager.go:1515: [INFO] [stacks] Deploying stack gokapi — checking 1 images...
2026/09/13 06:57:14 deploy.go:466: [INFO] [stacks] Stack gokapi deployed successfully (took 16.2s)
2026/09/13 06:57:56 deploy.go:466: [INFO] [stacks] Stack nextcloud deployed successfully (took 58.7s)
2026/09/13 06:58:17 manager.go:527: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/13 06:58:17 manager.go:527: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/13 06:59:10 manager.go:1173: [DEBUG] [stacks] StopStack nextcloud: current state=running deployed=true containers=3
2026/09/13 06:59:27 delete.go:432: [DEBUG] [stacks] RemoveStack nextcloud: state=stopped, deployed=true, orphaned=false, deploying=false
2026/09/13 06:59:27 delete.go:461: [INFO] Removing deployed stack: nextcloud (removeHDDData=true, hddDeclared=true, backupPaths=1)
2026/09/13 06:59:28 delete.go:523: [INFO] Removed HDD data: /mnt/felhom-drives/hdd_1/appdata/nextcloud (63M)
2026/09/13 06:59:28 delete.go:569: [INFO] Removed backup data: /mnt/felhom-drives/hdd_1/backups/primary/nextcloud/db-dumps (8.0K)
2026/09/13 06:59:28 delete.go:584: [INFO] Stack nextcloud removed successfully (took 1.0s)
2026/09/13 06:59:28 manager.go:527: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/13 06:59:28 manager.go:527: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/13 06:59:39 auth.go:134: [DEBUG] [web] auth: valid session for POST /api/stacks/nextcloud/deploy
2026/09/13 06:59:39 router.go:81: [DEBUG] [api] POST /api/stacks/nextcloud/deploy (path=/stacks/nextcloud/deploy)
2026/09/13 06:59:39 router.go:403: [INFO] [api] Deploy requested for stack: nextcloud
2026/09/13 06:59:39 router.go:81: [DEBUG] [api] deployStack: name=nextcloud contentLength=263
2026/09/13 06:59:39 deploy.go:288: [DEBUG] Deploy nextcloud: received 7 user values
2026/09/13 06:59:39 deploy.go:418: [INFO] [stacks] Deploying stack nextcloud with 7 env vars: [NEXTCLOUD_ADMIN_PASSWORD, HDD_PATH, DOMAIN, SUBDOMAIN, DB_PASSWORD, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_USER]
2026/09/13 06:59:39 manager.go:1515: [INFO] [stacks] Deploying stack nextcloud — checking 3 images...
2026/09/13 06:59:49 manager.go:1173: [DEBUG] [stacks] StopStack gokapi: current state=running deployed=true containers=1
2026/09/13 06:59:50 delete.go:432: [DEBUG] [stacks] RemoveStack gokapi: state=stopped, deployed=true, orphaned=false, deploying=false
2026/09/13 06:59:50 delete.go:461: [INFO] Removing deployed stack: gokapi (removeHDDData=true, hddDeclared=false, backupPaths=0)
=== standing apps (deployed) ===
bentopdf bookstack calibre-web docmost kimai opengist paperless-ngx privatebin romm
=== residue check ===
paperless
romm
calibre-web
nextcloud
paperless-ngx
romm
=== teardown: hand-removing the throwaway apps recovery-unit residue (compose/ + manifest.json ��� NOT customer data) ===
calibre-web
paperless-ngx
romm
0
0