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
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:
@@ -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
|
||||
Reference in New Issue
Block a user