diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/bench/MV-mealie.log b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/MV-mealie.log new file mode 100644 index 00000000..a78a6238 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/MV-mealie.log @@ -0,0 +1,109 @@ +[21:03:08] scratch drive folders cleared before FROM (R-656): none existed +[21:03:08] MV-mealie: deploying mealie at FROM {'mealie': 'ghcr.io/mealie-recipes/mealie:v3.27.0'} +[21:04:20] FROM settled=True in 30.9s :: {"mealie": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[21:04:20] fixture: the BOX walk's own (Mealie), through upgrade_boxport +[21:04:22] mealie: create recipe http=201 +[21:04:22] mealie: readback of the seeded recipe http=200 ok=True +[21:04:22] C1 (seed reads back BEFORE): True +[21:04:22] MV-mealie: swapping to TO {'mealie': 'ghcr.io/mealie-recipes/mealie:v3.28.0'} +[21:05:08] TO up -d rc=0 +[21:05:39] TO settled=True in 30.8s :: {"mealie": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[21:05:39] migration lines observed: 2 +[21:05:40] mealie: readback of the seeded recipe http=200 ok=True +[21:05:40] RESULT (seed reads back AFTER): True +[21:05:40] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:9000 +[21:05:55] + 15s mealie=233M/1000M peak=233M kills=0 rs=0 reqs=273 +[21:06:10] + 30s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=553 +[21:06:26] + 45s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=834 +[21:06:41] + 60s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=1106 +[21:06:56] + 76s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=1386 +[21:07:11] + 91s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=1666 +[21:07:26] + 106s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=1946 +[21:07:41] + 121s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=2226 +[21:07:56] + 136s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=2506 +[21:08:11] + 151s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=2786 +[21:08:26] + 166s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=3066 +[21:08:42] + 181s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=3346 +[21:08:57] + 197s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=3623 +[21:09:12] + 212s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=3902 +[21:09:27] + 227s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=4183 +[21:09:42] + 242s mealie=231M/1000M peak=242M kills=0 rs=0 reqs=4464 +[21:09:57] + 257s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=4745 +[21:10:12] + 272s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=5026 +[21:10:27] + 287s mealie=236M/1000M peak=242M kills=0 rs=0 reqs=5308 +[21:10:43] + 302s mealie=237M/1000M peak=246M kills=0 rs=0 reqs=5588 +[21:10:58] + 318s mealie=237M/1000M peak=246M kills=0 rs=0 reqs=5869 +[21:11:13] + 333s mealie=237M/1000M peak=246M kills=0 rs=0 reqs=6154 +[21:11:28] + 348s mealie=236M/1000M peak=246M kills=0 rs=0 reqs=6434 +[21:11:43] + 363s mealie=237M/1000M peak=246M kills=0 rs=0 reqs=6714 +[21:11:58] + 378s mealie=237M/1000M peak=246M kills=0 rs=0 reqs=6994 +[21:12:13] + 393s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=7278 +[21:12:28] + 408s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=7558 +[21:12:44] + 423s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=7838 +[21:12:59] + 438s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=8118 +[21:13:14] + 454s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=8399 +[21:13:29] + 469s mealie=238M/1000M peak=247M kills=0 rs=0 reqs=8679 +[21:13:44] + 484s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=8963 +[21:13:59] + 499s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=9243 +[21:14:14] + 514s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=9523 +[21:14:29] + 529s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=9803 +[21:14:45] + 544s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=10083 +[21:15:00] + 560s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=10363 +[21:15:15] + 575s mealie=238M/1000M peak=247M kills=0 rs=0 reqs=10643 +[21:15:30] + 590s mealie=238M/1000M peak=247M kills=0 rs=0 reqs=10923 +[21:15:45] + 605s mealie=238M/1000M peak=247M kills=0 rs=0 reqs=11203 +[21:15:45] memory watch: killed=False tight=[] requests=11203 codes={'200': 11203} +[21:15:45] MV-mealie: ABORT — putting the FROM images back +[21:16:19] mealie: readback of the seeded recipe http=200 ok=True +[21:16:19] ABORT: app came back in 30.8s; data present=True +{ + "harness_version": 3, + "edge": "MV-mealie", + "app": "mealie", + "note": "night 2026-09-23 within-a-major move: mealie=ghcr.io/mealie-recipes/mealie:v3.28.0", + "from": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.27.0" + }, + "to": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.28.0" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kmealie | INFO 2026-09-24T23:05:15 - setup plugin alembic.autogenerate.schemas", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 604.9, + "requested_s": 600, + "requests": 11203, + "codes": { + "200": 11203 + }, + "first_kill": null, + "containers": { + "mealie": { + "limit": 1048576000, + "peak": 259948544, + "peak_pct": 0.248, + "anon_peak_sampled": 242405376, + "anon_peak_pct": 0.231, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-24T21:16:19Z", + "evidence": "evidence/MV-mealie", + "scratch_cleared": [], + "files_changed": [], + "total_s": 791.4 +} diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/abort-states.json b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/abort-states.json new file mode 100644 index 00000000..b0082e1a --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/abort-states.json @@ -0,0 +1,8 @@ +{ + "mealie": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/compose-final.log b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/compose-final.log new file mode 100644 index 00000000..b6d8f77f --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/compose-final.log @@ -0,0 +1,130 @@ +mealie | Switching to dedicated user +mealie | +mealie | User uid: 1000 +mealie | User gid: 1000 +mealie | +mealie | INFO 2026-09-24T23:15:53 - Started server process [1] +mealie | INFO 2026-09-24T23:15:53 - Waiting for application startup. +mealie | INFO 2026-09-24T23:15:53 - start: database initialization +mealie | INFO 2026-09-24T23:15:53 - setup plugin alembic.autogenerate.schemas +mealie | INFO 2026-09-24T23:15:53 - setup plugin alembic.autogenerate.tables +mealie | INFO 2026-09-24T23:15:53 - setup plugin alembic.autogenerate.types +mealie | INFO 2026-09-24T23:15:53 - setup plugin alembic.autogenerate.constraints +mealie | INFO 2026-09-24T23:15:53 - setup plugin alembic.autogenerate.defaults +mealie | INFO 2026-09-24T23:15:53 - setup plugin alembic.autogenerate.comments +mealie | INFO 2026-09-24T23:15:53 - setup plugin alembic.ext.checkconstraint_byname +mealie | INFO 2026-09-24T23:15:53 - Database connection established. +mealie | INFO 2026-09-24T23:15:53 - Context impl SQLiteImpl. +mealie | INFO 2026-09-24T23:15:53 - Will assume non-transactional DDL. +mealie | INFO 2026-09-24T23:15:54 - end: database initialization +mealie | INFO 2026-09-24T23:15:54 - -----SYSTEM STARTUP----- +mealie | INFO 2026-09-24T23:15:54 - ------APP SETTINGS------ +mealie | INFO 2026-09-24T23:15:54 - { +mealie | "TESTING": false, +mealie | "PRODUCTION": true, +mealie | "LOG_CONFIG_OVERRIDE": null, +mealie | "LOG_LEVEL": "info", +mealie | "theme": { +mealie | "light_primary": "#E58325", +mealie | "light_accent": "#007A99", +mealie | "light_secondary": "#973542", +mealie | "light_success": "#43A047", +mealie | "light_info": "#1976D2", +mealie | "light_warning": "#FF6D00", +mealie | "light_error": "#EF5350", +mealie | "dark_primary": "#E58325", +mealie | "dark_accent": "#007A99", +mealie | "dark_secondary": "#973542", +mealie | "dark_success": "#43A047", +mealie | "dark_info": "#1976D2", +mealie | "dark_warning": "#FF6D00", +mealie | "dark_error": "#EF5350" +mealie | }, +mealie | "BASE_URL": "https://recipes.gate.invalid", +mealie | "STATIC_FILES": "/opt/mealie/lib/python3.12/site-packages/mealie/frontend", +mealie | "IS_DEMO": false, +mealie | "HOST_IP": "*", +mealie | "API_HOST": "0.0.0.0", +mealie | "API_PORT": 9000, +mealie | "API_DOCS": true, +mealie | "TOKEN_TIME": 48, +mealie | "GIT_COMMIT_HASH": "dedc6cc75f2bd8e89108ad998970e7bdf6d4444f", +mealie | "ALLOW_SIGNUP": false, +mealie | "ALLOW_PASSWORD_LOGIN": true, +mealie | "ALLOWED_IFRAME_HOSTS": "", +mealie | "HTTP_ALLOW_LIST": "", +mealie | "HTTP_DISALLOW_LIST": "", +mealie | "DAILY_SCHEDULE_TIME": "23:45", +mealie | "SECURITY_MAX_LOGIN_ATTEMPTS": 5, +mealie | "SECURITY_USER_LOCKOUT_TIME": 24, +mealie | "DB_ENGINE": "sqlite", +mealie | "SQLITE_MIGRATE_JOURNAL_WAL": false, +mealie | "DEFAULT_GROUP": "Home", +mealie | "DEFAULT_HOUSEHOLD": "Family", +mealie | "SMTP_HOST": "", +mealie | "SMTP_PORT": "25", +mealie | "SMTP_FROM_NAME": "", +mealie | "SMTP_FROM_EMAIL": "", +mealie | "SMTP_USER": null, +mealie | "SMTP_PASSWORD": null, +mealie | "SMTP_AUTH_STRATEGY": "NONE", +mealie | "LDAP_AUTH_ENABLED": false, +mealie | "LDAP_SERVER_URL": null, +mealie | "LDAP_TLS_INSECURE": false, +mealie | "LDAP_TLS_CACERTFILE": null, +mealie | "LDAP_ENABLE_STARTTLS": false, +mealie | "LDAP_BASE_DN": null, +mealie | "LDAP_QUERY_BIND": null, +mealie | "LDAP_QUERY_PASSWORD": null, +mealie | "LDAP_USER_FILTER": null, +mealie | "LDAP_ADMIN_FILTER": null, +mealie | "LDAP_ID_ATTRIBUTE": "uid", +mealie | "LDAP_MAIL_ATTRIBUTE": "mail", +mealie | "LDAP_NAME_ATTRIBUTE": "name", +mealie | "OIDC_AUTH_ENABLED": false, +mealie | "OIDC_CLIENT_ID": null, +mealie | "OIDC_CLIENT_SECRET": null, +mealie | "OIDC_CONFIGURATION_URL": null, +mealie | "OIDC_SIGNUP_ENABLED": true, +mealie | "OIDC_REQUIRES_EMAIL_VERIFICATION": true, +mealie | "OIDC_USER_GROUP": null, +mealie | "OIDC_ADMIN_GROUP": null, +mealie | "OIDC_AUTO_REDIRECT": false, +mealie | "OIDC_PROVIDER_NAME": "OAuth", +mealie | "OIDC_REMEMBER_ME": false, +mealie | "OIDC_USER_CLAIM": "email", +mealie | "OIDC_NAME_CLAIM": "name", +mealie | "OIDC_GROUPS_CLAIM": "groups", +mealie | "OIDC_SCOPES_OVERRIDE": null, +mealie | "OIDC_TLS_CACERTFILE": null, +mealie | "OIDC_CLIENT_TIMEOUT": "default", +mealie | "OPENAI_CUSTOM_PROMPT_DIR": null, +mealie | "SCRAPER_PROXY_URL": null, +mealie | "SCRAPER_PROXY_MODE": "always", +mealie | "SCRAPER_FLARESOLVERR_URL": null, +mealie | "SCRAPER_FLARESOLVERR_TIMEOUT": 60, +mealie | "WORKER_PER_CORE": 1, +mealie | "UVICORN_WORKERS": 1, +mealie | "TLS_CERTIFICATE_PATH": null, +mealie | "TLS_PRIVATE_KEY_PATH": null, +mealie | "YTDLP_COOKIEFILE": null +mealie | } +mealie | INFO 2026-09-24T23:15:54 - ------APP FEATURES------ +mealie | INFO 2026-09-24T23:15:54 - --------==SMTP==-------- +mealie | INFO 2026-09-24T23:15:54 - Enabled: False +mealie | INFO 2026-09-24T23:15:54 - --------==LDAP==-------- +mealie | INFO 2026-09-24T23:15:54 - Enabled: False +mealie | Reason: LDAP_AUTH_ENABLED is false +mealie | INFO 2026-09-24T23:15:54 - --------==OIDC==-------- +mealie | INFO 2026-09-24T23:15:54 - Enabled: False +mealie | Reason: OIDC_AUTH_ENABLED is false +mealie | INFO 2026-09-24T23:15:54 - ------------------------ +mealie | INFO 2026-09-24T23:15:54 - Daily tasks scheduled for 2026-09-24 21:45:00+00:00 +mealie | INFO 2026-09-24T23:15:54 - Application startup complete. +mealie | INFO 2026-09-24T23:15:54 - Uvicorn running on http://0.0.0.0:9000 (Press CTRL+C to quit) +mealie | INFO 2026-09-24T23:16:18 - [172.18.0.1:51188] 200 OK "GET /api/app/about HTTP/1.1" +mealie | INFO 2026-09-24T23:16:19 - [172.18.0.1:51190] 200 OK "POST /api/auth/token HTTP/1.1" +mealie | ERROR 2026-09-24T23:16:19 - No Entry Found on recipe controller action +mealie | ERROR 2026-09-24T23:16:19 - No Entry Found on recipe controller action +mealie | INFO 2026-09-24T23:16:19 - [172.18.0.1:51196] 404 Not Found "GET /api/recipes/nope3ad6c81756 HTTP/1.1" +mealie | INFO 2026-09-24T23:16:19 - [172.18.0.1:51210] 200 OK "GET /api/recipes/drill-f89036ca19 HTTP/1.1" diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/engine-state.json b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/files-after.json b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/files-before.json b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/memory-samples.json b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/memory-samples.json new file mode 100644 index 00000000..42a56339 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/memory-samples.json @@ -0,0 +1,682 @@ +[ + { + "t": 15.1, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244416512, + "peak": 244547584, + "anon": 236642304, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 273 + }, + { + "t": 30.2, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 243523584, + "peak": 254533632, + "anon": 236732416, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 553 + }, + { + "t": 45.4, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244187136, + "peak": 254533632, + "anon": 236867584, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 834 + }, + { + "t": 60.5, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244080640, + "peak": 254533632, + "anon": 236990464, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1106 + }, + { + "t": 75.6, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244125696, + "peak": 254533632, + "anon": 237010944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1386 + }, + { + "t": 90.7, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244408320, + "peak": 254533632, + "anon": 237019136, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1666 + }, + { + "t": 105.8, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244506624, + "peak": 254533632, + "anon": 237051904, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1946 + }, + { + "t": 121.0, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244248576, + "peak": 254533632, + "anon": 237051904, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2226 + }, + { + "t": 136.1, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244543488, + "peak": 254533632, + "anon": 237080576, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2506 + }, + { + "t": 151.2, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244613120, + "peak": 254533632, + "anon": 237117440, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2786 + }, + { + "t": 166.3, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244895744, + "peak": 254533632, + "anon": 237117440, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3066 + }, + { + "t": 181.4, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244695040, + "peak": 254533632, + "anon": 237133824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3346 + }, + { + "t": 196.6, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244715520, + "peak": 254533632, + "anon": 237133824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3623 + }, + { + "t": 211.7, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244482048, + "peak": 254578688, + "anon": 237142016, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3902 + }, + { + "t": 226.8, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 244252672, + "peak": 254578688, + "anon": 237142016, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4183 + }, + { + "t": 241.9, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 243073024, + "peak": 254578688, + "anon": 237142016, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4464 + }, + { + "t": 257.1, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 243355648, + "peak": 254578688, + "anon": 237154304, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4745 + }, + { + "t": 272.2, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 243384320, + "peak": 254578688, + "anon": 237154304, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5026 + }, + { + "t": 287.3, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 248209408, + "peak": 254578688, + "anon": 241786880, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5308 + }, + { + "t": 302.4, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 248594432, + "peak": 258437120, + "anon": 241901568, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5588 + }, + { + "t": 317.5, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 248688640, + "peak": 258437120, + "anon": 241971200, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5869 + }, + { + "t": 332.7, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 248758272, + "peak": 258650112, + "anon": 241979392, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6154 + }, + { + "t": 347.8, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 248369152, + "peak": 258650112, + "anon": 241991680, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6434 + }, + { + "t": 362.9, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249188352, + "peak": 258772992, + "anon": 242012160, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6714 + }, + { + "t": 378.0, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 248520704, + "peak": 258772992, + "anon": 242012160, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6994 + }, + { + "t": 393.1, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249061376, + "peak": 259117056, + "anon": 242032640, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7278 + }, + { + "t": 408.3, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249348096, + "peak": 259117056, + "anon": 242044928, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7558 + }, + { + "t": 423.4, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249180160, + "peak": 259117056, + "anon": 242044928, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7838 + }, + { + "t": 438.5, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249430016, + "peak": 259117056, + "anon": 242061312, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8118 + }, + { + "t": 453.6, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 248782848, + "peak": 259362816, + "anon": 242065408, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8399 + }, + { + "t": 468.8, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249790464, + "peak": 259362816, + "anon": 242069504, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8679 + }, + { + "t": 483.9, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249417728, + "peak": 259362816, + "anon": 242081792, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8963 + }, + { + "t": 499.0, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249401344, + "peak": 259362816, + "anon": 242081792, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9243 + }, + { + "t": 514.1, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249503744, + "peak": 259493888, + "anon": 242081792, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9523 + }, + { + "t": 529.2, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249491456, + "peak": 259493888, + "anon": 242098176, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9803 + }, + { + "t": 544.4, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249380864, + "peak": 259493888, + "anon": 242098176, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10083 + }, + { + "t": 559.5, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249401344, + "peak": 259493888, + "anon": 242110464, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10363 + }, + { + "t": 574.6, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 250253312, + "peak": 259796992, + "anon": 242118656, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10643 + }, + { + "t": 589.7, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 249692160, + "peak": 259796992, + "anon": 242339840, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10923 + }, + { + "t": 604.8, + "containers": { + "mealie": { + "limit": 1048576000, + "current": 250163200, + "peak": 259948544, + "anon": 242405376, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11203 + } +] \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/migration-lines.txt b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/migration-lines.txt new file mode 100644 index 00000000..42083025 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/migration-lines.txt @@ -0,0 +1,2 @@ +mealie | INFO 2026-09-24T23:05:15 - setup plugin alembic.autogenerate.schemas +mealie | "SQLITE_MIGRATE_JOURNAL_WAL": false, \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/run.log b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/run.log new file mode 100644 index 00000000..00746f4a --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/run.log @@ -0,0 +1,58 @@ +[21:03:08] scratch drive folders cleared before FROM (R-656): none existed +[21:03:08] MV-mealie: deploying mealie at FROM {'mealie': 'ghcr.io/mealie-recipes/mealie:v3.27.0'} +[21:04:20] FROM settled=True in 30.9s :: {"mealie": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[21:04:20] fixture: the BOX walk's own (Mealie), through upgrade_boxport +[21:04:22] mealie: create recipe http=201 +[21:04:22] mealie: readback of the seeded recipe http=200 ok=True +[21:04:22] C1 (seed reads back BEFORE): True +[21:04:22] MV-mealie: swapping to TO {'mealie': 'ghcr.io/mealie-recipes/mealie:v3.28.0'} +[21:05:08] TO up -d rc=0 +[21:05:39] TO settled=True in 30.8s :: {"mealie": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[21:05:39] migration lines observed: 2 +[21:05:40] mealie: readback of the seeded recipe http=200 ok=True +[21:05:40] RESULT (seed reads back AFTER): True +[21:05:40] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:9000 +[21:05:55] + 15s mealie=233M/1000M peak=233M kills=0 rs=0 reqs=273 +[21:06:10] + 30s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=553 +[21:06:26] + 45s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=834 +[21:06:41] + 60s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=1106 +[21:06:56] + 76s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=1386 +[21:07:11] + 91s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=1666 +[21:07:26] + 106s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=1946 +[21:07:41] + 121s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=2226 +[21:07:56] + 136s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=2506 +[21:08:11] + 151s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=2786 +[21:08:26] + 166s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=3066 +[21:08:42] + 181s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=3346 +[21:08:57] + 197s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=3623 +[21:09:12] + 212s mealie=233M/1000M peak=242M kills=0 rs=0 reqs=3902 +[21:09:27] + 227s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=4183 +[21:09:42] + 242s mealie=231M/1000M peak=242M kills=0 rs=0 reqs=4464 +[21:09:57] + 257s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=4745 +[21:10:12] + 272s mealie=232M/1000M peak=242M kills=0 rs=0 reqs=5026 +[21:10:27] + 287s mealie=236M/1000M peak=242M kills=0 rs=0 reqs=5308 +[21:10:43] + 302s mealie=237M/1000M peak=246M kills=0 rs=0 reqs=5588 +[21:10:58] + 318s mealie=237M/1000M peak=246M kills=0 rs=0 reqs=5869 +[21:11:13] + 333s mealie=237M/1000M peak=246M kills=0 rs=0 reqs=6154 +[21:11:28] + 348s mealie=236M/1000M peak=246M kills=0 rs=0 reqs=6434 +[21:11:43] + 363s mealie=237M/1000M peak=246M kills=0 rs=0 reqs=6714 +[21:11:58] + 378s mealie=237M/1000M peak=246M kills=0 rs=0 reqs=6994 +[21:12:13] + 393s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=7278 +[21:12:28] + 408s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=7558 +[21:12:44] + 423s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=7838 +[21:12:59] + 438s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=8118 +[21:13:14] + 454s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=8399 +[21:13:29] + 469s mealie=238M/1000M peak=247M kills=0 rs=0 reqs=8679 +[21:13:44] + 484s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=8963 +[21:13:59] + 499s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=9243 +[21:14:14] + 514s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=9523 +[21:14:29] + 529s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=9803 +[21:14:45] + 544s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=10083 +[21:15:00] + 560s mealie=237M/1000M peak=247M kills=0 rs=0 reqs=10363 +[21:15:15] + 575s mealie=238M/1000M peak=247M kills=0 rs=0 reqs=10643 +[21:15:30] + 590s mealie=238M/1000M peak=247M kills=0 rs=0 reqs=10923 +[21:15:45] + 605s mealie=238M/1000M peak=247M kills=0 rs=0 reqs=11203 +[21:15:45] memory watch: killed=False tight=[] requests=11203 codes={'200': 11203} +[21:15:45] MV-mealie: ABORT — putting the FROM images back +[21:16:19] mealie: readback of the seeded recipe http=200 ok=True +[21:16:19] ABORT: app came back in 30.8s; data present=True \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/to-full.log b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/to-full.log new file mode 100644 index 00000000..eaebf967 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/to-full.log @@ -0,0 +1,125 @@ +mealie | Switching to dedicated user +mealie | +mealie | User uid: 1000 +mealie | User gid: 1000 +mealie | +mealie | INFO 2026-09-24T23:05:15 - Started server process [1] +mealie | INFO 2026-09-24T23:05:15 - Waiting for application startup. +mealie | INFO 2026-09-24T23:05:15 - start: database initialization +mealie | INFO 2026-09-24T23:05:15 - setup plugin alembic.autogenerate.schemas +mealie | INFO 2026-09-24T23:05:15 - setup plugin alembic.autogenerate.tables +mealie | INFO 2026-09-24T23:05:15 - setup plugin alembic.autogenerate.types +mealie | INFO 2026-09-24T23:05:15 - setup plugin alembic.autogenerate.constraints +mealie | INFO 2026-09-24T23:05:15 - setup plugin alembic.autogenerate.defaults +mealie | INFO 2026-09-24T23:05:15 - setup plugin alembic.autogenerate.comments +mealie | INFO 2026-09-24T23:05:15 - setup plugin alembic.ext.checkconstraint_byname +mealie | INFO 2026-09-24T23:05:15 - Database connection established. +mealie | INFO 2026-09-24T23:05:15 - Context impl SQLiteImpl. +mealie | INFO 2026-09-24T23:05:15 - Will assume non-transactional DDL. +mealie | INFO 2026-09-24T23:05:16 - end: database initialization +mealie | INFO 2026-09-24T23:05:16 - -----SYSTEM STARTUP----- +mealie | INFO 2026-09-24T23:05:16 - ------APP SETTINGS------ +mealie | INFO 2026-09-24T23:05:16 - { +mealie | "TESTING": false, +mealie | "PRODUCTION": true, +mealie | "LOG_CONFIG_OVERRIDE": null, +mealie | "LOG_LEVEL": "info", +mealie | "theme": { +mealie | "light_primary": "#E58325", +mealie | "light_accent": "#007A99", +mealie | "light_secondary": "#973542", +mealie | "light_success": "#43A047", +mealie | "light_info": "#1976D2", +mealie | "light_warning": "#FF6D00", +mealie | "light_error": "#EF5350", +mealie | "dark_primary": "#E58325", +mealie | "dark_accent": "#007A99", +mealie | "dark_secondary": "#973542", +mealie | "dark_success": "#43A047", +mealie | "dark_info": "#1976D2", +mealie | "dark_warning": "#FF6D00", +mealie | "dark_error": "#EF5350" +mealie | }, +mealie | "BASE_URL": "https://recipes.gate.invalid", +mealie | "STATIC_FILES": "/opt/mealie/lib/python3.14/site-packages/mealie/frontend", +mealie | "IS_DEMO": false, +mealie | "HOST_IP": "*", +mealie | "API_HOST": "0.0.0.0", +mealie | "API_PORT": 9000, +mealie | "API_DOCS": true, +mealie | "TOKEN_TIME": 48, +mealie | "GIT_COMMIT_HASH": "0552eaa4a80031b8572849cca0ed95d07f1be001", +mealie | "ALLOW_SIGNUP": false, +mealie | "ALLOW_PASSWORD_LOGIN": true, +mealie | "ALLOWED_IFRAME_HOSTS": "", +mealie | "HTTP_ALLOW_LIST": "", +mealie | "HTTP_DISALLOW_LIST": "", +mealie | "DAILY_SCHEDULE_TIME": "23:45", +mealie | "SECURITY_MAX_LOGIN_ATTEMPTS": 5, +mealie | "SECURITY_USER_LOCKOUT_TIME": 24, +mealie | "DB_ENGINE": "sqlite", +mealie | "SQLITE_MIGRATE_JOURNAL_WAL": false, +mealie | "DEFAULT_GROUP": "Home", +mealie | "DEFAULT_HOUSEHOLD": "Family", +mealie | "SMTP_HOST": "", +mealie | "SMTP_PORT": "25", +mealie | "SMTP_FROM_NAME": "", +mealie | "SMTP_FROM_EMAIL": "", +mealie | "SMTP_USER": null, +mealie | "SMTP_PASSWORD": null, +mealie | "SMTP_AUTH_STRATEGY": "NONE", +mealie | "LDAP_AUTH_ENABLED": false, +mealie | "LDAP_SERVER_URL": null, +mealie | "LDAP_TLS_INSECURE": false, +mealie | "LDAP_TLS_CACERTFILE": null, +mealie | "LDAP_ENABLE_STARTTLS": false, +mealie | "LDAP_BASE_DN": null, +mealie | "LDAP_QUERY_BIND": null, +mealie | "LDAP_QUERY_PASSWORD": null, +mealie | "LDAP_USER_FILTER": null, +mealie | "LDAP_ADMIN_FILTER": null, +mealie | "LDAP_ID_ATTRIBUTE": "uid", +mealie | "LDAP_MAIL_ATTRIBUTE": "mail", +mealie | "LDAP_NAME_ATTRIBUTE": "name", +mealie | "OIDC_AUTH_ENABLED": false, +mealie | "OIDC_CLIENT_ID": null, +mealie | "OIDC_CLIENT_SECRET": null, +mealie | "OIDC_CONFIGURATION_URL": null, +mealie | "OIDC_SIGNUP_ENABLED": true, +mealie | "OIDC_REQUIRES_EMAIL_VERIFICATION": true, +mealie | "OIDC_USER_GROUP": null, +mealie | "OIDC_ADMIN_GROUP": null, +mealie | "OIDC_AUTO_REDIRECT": false, +mealie | "OIDC_PROVIDER_NAME": "OAuth", +mealie | "OIDC_REMEMBER_ME": false, +mealie | "OIDC_USER_CLAIM": "email", +mealie | "OIDC_NAME_CLAIM": "name", +mealie | "OIDC_GROUPS_CLAIM": "groups", +mealie | "OIDC_SCOPES_OVERRIDE": null, +mealie | "OIDC_TLS_CACERTFILE": null, +mealie | "OIDC_CLIENT_TIMEOUT": "default", +mealie | "OPENAI_CUSTOM_PROMPT_DIR": null, +mealie | "SCRAPER_PROXY_URL": null, +mealie | "SCRAPER_PROXY_MODE": "always", +mealie | "SCRAPER_FLARESOLVERR_URL": null, +mealie | "SCRAPER_FLARESOLVERR_TIMEOUT": 60, +mealie | "WORKER_PER_CORE": 1, +mealie | "UVICORN_WORKERS": 1, +mealie | "TLS_CERTIFICATE_PATH": null, +mealie | "TLS_PRIVATE_KEY_PATH": null, +mealie | "YTDLP_COOKIEFILE": null +mealie | } +mealie | INFO 2026-09-24T23:05:16 - ------APP FEATURES------ +mealie | INFO 2026-09-24T23:05:16 - --------==SMTP==-------- +mealie | INFO 2026-09-24T23:05:16 - Enabled: False +mealie | Reason: Missing required values for ['SMTP_HOST', 'SMTP_FROM_NAME', 'SMTP_FROM_EMAIL'] +mealie | INFO 2026-09-24T23:05:16 - --------==LDAP==-------- +mealie | INFO 2026-09-24T23:05:16 - Enabled: False +mealie | Reason: LDAP_AUTH_ENABLED is false +mealie | INFO 2026-09-24T23:05:16 - --------==OIDC==-------- +mealie | INFO 2026-09-24T23:05:16 - Enabled: False +mealie | Reason: OIDC_AUTH_ENABLED is false +mealie | INFO 2026-09-24T23:05:16 - ------------------------ +mealie | INFO 2026-09-24T23:05:16 - Daily tasks scheduled for 2026-09-24 21:45:00+00:00 +mealie | INFO 2026-09-24T23:05:16 - Application startup complete. +mealie | INFO 2026-09-24T23:05:16 - Uvicorn running on http://0.0.0.0:9000 (Press CTRL+C to quit) diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/to-states.json b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/to-states.json new file mode 100644 index 00000000..b0082e1a --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/to-states.json @@ -0,0 +1,8 @@ +{ + "mealie": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/verdict.json b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/verdict.json new file mode 100644 index 00000000..ad2d17f4 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/bench/evidence/MV-mealie/verdict.json @@ -0,0 +1,51 @@ +{ + "harness_version": 3, + "edge": "MV-mealie", + "app": "mealie", + "note": "night 2026-09-23 within-a-major move: mealie=ghcr.io/mealie-recipes/mealie:v3.28.0", + "from": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.27.0" + }, + "to": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.28.0" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kmealie | INFO 2026-09-24T23:05:15 - setup plugin alembic.autogenerate.schemas", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 604.9, + "requested_s": 600, + "requests": 11203, + "codes": { + "200": 11203 + }, + "first_kill": null, + "containers": { + "mealie": { + "limit": 1048576000, + "peak": 259948544, + "peak_pct": 0.248, + "anon_peak_sampled": 242405376, + "anon_peak_pct": 0.231, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, + "marks": [], + "duration_s": 30.8, + "measured_at": "2026-09-24T21:16:19Z", + "evidence": "evidence/MV-mealie", + "scratch_cleared": [], + "files_changed": [], + "total_s": 791.4 +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/box/app-logs-after.txt b/documentation/audits/night-2026-09-25/E/apps/mealie/box/app-logs-after.txt new file mode 100644 index 00000000..fccb279c --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/box/app-logs-after.txt @@ -0,0 +1,131 @@ +mealie | Switching to dedicated user +mealie | +mealie | User uid: 1000 +mealie | User gid: 1000 +mealie | +mealie | INFO 2026-09-24T23:10:01 - Started server process [1] +mealie | INFO 2026-09-24T23:10:01 - Waiting for application startup. +mealie | INFO 2026-09-24T23:10:01 - start: database initialization +mealie | INFO 2026-09-24T23:10:01 - setup plugin alembic.autogenerate.schemas +mealie | INFO 2026-09-24T23:10:01 - setup plugin alembic.autogenerate.tables +mealie | INFO 2026-09-24T23:10:01 - setup plugin alembic.autogenerate.types +mealie | INFO 2026-09-24T23:10:01 - setup plugin alembic.autogenerate.constraints +mealie | INFO 2026-09-24T23:10:01 - setup plugin alembic.autogenerate.defaults +mealie | INFO 2026-09-24T23:10:01 - setup plugin alembic.autogenerate.comments +mealie | INFO 2026-09-24T23:10:01 - setup plugin alembic.ext.checkconstraint_byname +mealie | INFO 2026-09-24T23:10:01 - Database connection established. +mealie | INFO 2026-09-24T23:10:01 - Context impl SQLiteImpl. +mealie | INFO 2026-09-24T23:10:01 - Will assume non-transactional DDL. +mealie | INFO 2026-09-24T23:10:02 - end: database initialization +mealie | INFO 2026-09-24T23:10:02 - -----SYSTEM STARTUP----- +mealie | INFO 2026-09-24T23:10:02 - ------APP SETTINGS------ +mealie | INFO 2026-09-24T23:10:02 - { +mealie | "TESTING": false, +mealie | "PRODUCTION": true, +mealie | "LOG_CONFIG_OVERRIDE": null, +mealie | "LOG_LEVEL": "info", +mealie | "theme": { +mealie | "light_primary": "#E58325", +mealie | "light_accent": "#007A99", +mealie | "light_secondary": "#973542", +mealie | "light_success": "#43A047", +mealie | "light_info": "#1976D2", +mealie | "light_warning": "#FF6D00", +mealie | "light_error": "#EF5350", +mealie | "dark_primary": "#E58325", +mealie | "dark_accent": "#007A99", +mealie | "dark_secondary": "#973542", +mealie | "dark_success": "#43A047", +mealie | "dark_info": "#1976D2", +mealie | "dark_warning": "#FF6D00", +mealie | "dark_error": "#EF5350" +mealie | }, +mealie | "BASE_URL": "https://recipes.enkisfelhom.hu", +mealie | "STATIC_FILES": "/opt/mealie/lib/python3.14/site-packages/mealie/frontend", +mealie | "IS_DEMO": false, +mealie | "HOST_IP": "*", +mealie | "API_HOST": "0.0.0.0", +mealie | "API_PORT": 9000, +mealie | "API_DOCS": true, +mealie | "TOKEN_TIME": 48, +mealie | "GIT_COMMIT_HASH": "0552eaa4a80031b8572849cca0ed95d07f1be001", +mealie | "ALLOW_SIGNUP": false, +mealie | "ALLOW_PASSWORD_LOGIN": true, +mealie | "ALLOWED_IFRAME_HOSTS": "", +mealie | "HTTP_ALLOW_LIST": "", +mealie | "HTTP_DISALLOW_LIST": "", +mealie | "DAILY_SCHEDULE_TIME": "23:45", +mealie | "SECURITY_MAX_LOGIN_ATTEMPTS": 5, +mealie | "SECURITY_USER_LOCKOUT_TIME": 24, +mealie | "DB_ENGINE": "sqlite", +mealie | "SQLITE_MIGRATE_JOURNAL_WAL": false, +mealie | "DEFAULT_GROUP": "Home", +mealie | "DEFAULT_HOUSEHOLD": "Family", +mealie | "SMTP_HOST": "", +mealie | "SMTP_PORT": "25", +mealie | "SMTP_FROM_NAME": "", +mealie | "SMTP_FROM_EMAIL": "", +mealie | "SMTP_USER": null, +mealie | "SMTP_PASSWORD": null, +mealie | "SMTP_AUTH_STRATEGY": "NONE", +mealie | "LDAP_AUTH_ENABLED": false, +mealie | "LDAP_SERVER_URL": null, +mealie | "LDAP_TLS_INSECURE": false, +mealie | "LDAP_TLS_CACERTFILE": null, +mealie | "LDAP_ENABLE_STARTTLS": false, +mealie | "LDAP_BASE_DN": null, +mealie | "LDAP_QUERY_BIND": null, +mealie | "LDAP_QUERY_PASSWORD": null, +mealie | "LDAP_USER_FILTER": null, +mealie | "LDAP_ADMIN_FILTER": null, +mealie | "LDAP_ID_ATTRIBUTE": "uid", +mealie | "LDAP_MAIL_ATTRIBUTE": "mail", +mealie | "LDAP_NAME_ATTRIBUTE": "name", +mealie | "OIDC_AUTH_ENABLED": false, +mealie | "OIDC_CLIENT_ID": null, +mealie | "OIDC_CLIENT_SECRET": null, +mealie | "OIDC_CONFIGURATION_URL": null, +mealie | "OIDC_SIGNUP_ENABLED": true, +mealie | "OIDC_REQUIRES_EMAIL_VERIFICATION": true, +mealie | "OIDC_USER_GROUP": null, +mealie | "OIDC_ADMIN_GROUP": null, +mealie | "OIDC_AUTO_REDIRECT": false, +mealie | "OIDC_PROVIDER_NAME": "OAuth", +mealie | "OIDC_REMEMBER_ME": false, +mealie | "OIDC_USER_CLAIM": "email", +mealie | "OIDC_NAME_CLAIM": "name", +mealie | "OIDC_GROUPS_CLAIM": "groups", +mealie | "OIDC_SCOPES_OVERRIDE": null, +mealie | "OIDC_TLS_CACERTFILE": null, +mealie | "OIDC_CLIENT_TIMEOUT": "default", +mealie | "OPENAI_CUSTOM_PROMPT_DIR": null, +mealie | "SCRAPER_PROXY_URL": null, +mealie | "SCRAPER_PROXY_MODE": "always", +mealie | "SCRAPER_FLARESOLVERR_URL": null, +mealie | "SCRAPER_FLARESOLVERR_TIMEOUT": 60, +mealie | "WORKER_PER_CORE": 1, +mealie | "UVICORN_WORKERS": 1, +mealie | "TLS_CERTIFICATE_PATH": null, +mealie | "TLS_PRIVATE_KEY_PATH": null, +mealie | "YTDLP_COOKIEFILE": null +mealie | } +mealie | INFO 2026-09-24T23:10:02 - ------APP FEATURES------ +mealie | INFO 2026-09-24T23:10:02 - --------==SMTP==-------- +mealie | INFO 2026-09-24T23:10:02 - Enabled: False +mealie | Reason: Missing required values for ['SMTP_HOST', 'SMTP_FROM_NAME', 'SMTP_FROM_EMAIL'] +mealie | INFO 2026-09-24T23:10:02 - --------==LDAP==-------- +mealie | INFO 2026-09-24T23:10:02 - Enabled: False +mealie | Reason: LDAP_AUTH_ENABLED is false +mealie | INFO 2026-09-24T23:10:02 - --------==OIDC==-------- +mealie | INFO 2026-09-24T23:10:02 - Enabled: False +mealie | Reason: OIDC_AUTH_ENABLED is false +mealie | INFO 2026-09-24T23:10:02 - ------------------------ +mealie | INFO 2026-09-24T23:10:02 - Daily tasks scheduled for 2026-09-24 21:45:00+00:00 +mealie | INFO 2026-09-24T23:10:02 - Application startup complete. +mealie | INFO 2026-09-24T23:10:02 - Uvicorn running on http://0.0.0.0:9000 (Press CTRL+C to quit) +mealie | INFO 2026-09-24T23:10:10 - [192.168.0.180:0] 200 OK "GET /api/app/about HTTP/1.1" +mealie | INFO 2026-09-24T23:10:11 - [192.168.0.180:0] 200 OK "POST /api/auth/token HTTP/1.1" +mealie | ERROR 2026-09-24T23:10:11 - No Entry Found on recipe controller action +mealie | ERROR 2026-09-24T23:10:11 - No Entry Found on recipe controller action +mealie | INFO 2026-09-24T23:10:11 - [192.168.0.180:0] 404 Not Found "GET /api/recipes/noped73dff1dc3 HTTP/1.1" +mealie | INFO 2026-09-24T23:10:11 - [192.168.0.180:0] 200 OK "GET /api/recipes/drill-ae68ffc580 HTTP/1.1" diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/box/badges.json b/documentation/audits/night-2026-09-25/E/apps/mealie/box/badges.json new file mode 100644 index 00000000..d8cd34d9 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/box/badges.json @@ -0,0 +1,31 @@ +{ + "before": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "after": { + "hu": [ + { + "title": "Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.", + "text": "Frissítés elérhető — ma" + } + ], + "en": [ + { + "title": "A newer version of this app is available. Select the Update button to start it.", + "text": "Update available — today" + } + ] + }, + "drill_commit": "15e2ed57c844" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/box/log.txt b/documentation/audits/night-2026-09-25/E/apps/mealie/box/log.txt new file mode 100644 index 00000000..92df26f2 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/box/log.txt @@ -0,0 +1,30 @@ +23:08:28 ==== mealie: ghcr.io/mealie-recipes/mealie:v3.27.0 -> ghcr.io/mealie-recipes/mealie:v3.28.0 (sub=recipes, class=other) +23:08:31 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +23:08:56 [1] deployed, controller state=running, pinned={'mealie': 'ghcr.io/mealie-recipes/mealie:v3.27.0'} +23:08:59 [2] seeding through the app's own front door +23:09:00 mealie: create recipe http=201 +23:09:00 [3] control C1 — reading the seed back BEFORE the update +23:09:00 mealie: readback of the seeded recipe http=200 ok=True +23:09:00 [4] backup press SKIPPED for mealie (R-648: whole-box only; the update's backing-up phase backs up mealie alone) +23:09:02 [5] drill commit 15e2ed57c844: mealie ghcr.io/mealie-recipes/mealie:v3.27.0 -> ghcr.io/mealie-recipes/mealie:v3.28.0 (push rc=0) +23:09:06 [5] badge HU: [{'title': 'Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.', 'text': 'Frissítés elérhető — ma'}] +23:09:06 [5] badge EN: [{'title': 'A newer version of this app is available. Select the Update button to start it.', 'text': 'Update available — today'}] +23:09:06 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +23:09:07 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +23:09:10 + 3.1s phase=safety-dump label=Adatbázis pillanatkép… err=None hold=None +23:09:11 + 4.1s phase=pulling label=Új verzió letöltése… err=None hold=None +23:09:50 + 43.1s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +23:09:55 + 48.5s phase=verifying label=Működés ellenőrzése… err=None hold=None +23:10:10 + 63.9s phase=done label=Frissítve err=None hold=None +23:10:10 [7] reading the seed back AFTER the update +23:10:11 mealie: readback of the seeded recipe http=200 ok=True +23:10:15 [8] pinned = {'mealie': 'ghcr.io/mealie-recipes/mealie:v3.28.0'} +23:10:15 [8] installed = {'mealie': 'ghcr.io/mealie-recipes/mealie:v3.28.0'} +23:10:15 [8] compose = ['image: ghcr.io/mealie-recipes/mealie:v3.28.0'] +23:10:15 [8] inspect = ['mealie ghcr.io/mealie-recipes/mealie:v3.28.0 running=true restarts=0'] +23:10:15 [9] verdict proven -> /mnt/5_hdd/felhom.eu/git/felhom.eu/documentation/audits/night-2026-09-25/tools/../E/apps/mealie/box/verdict.json +23:10:17 [X] stop -> 200 {'ok': True, 'message': 'Stack mealie stop completed'} +23:10:48 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'mealie', 'volumes_removed': ['mealie_mealie_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +23:10:57 [X] after remove: deployed=False leftovers='/opt/docker/stacks/mealie' +23:12:00 [X] R-626 check +60 s after remove: 'clean' +23:12:00 [9] verdict proven -> /mnt/5_hdd/felhom.eu/git/felhom.eu/documentation/audits/night-2026-09-25/tools/../E/apps/mealie/box/verdict.json diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/box/observables-before.json b/documentation/audits/night-2026-09-25/E/apps/mealie/box/observables-before.json new file mode 100644 index 00000000..0d314c75 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/box/observables-before.json @@ -0,0 +1,17 @@ +{ + "pinned_images": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.27.0" + }, + "installed_images": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.27.0" + }, + "catalog_images": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.27.0" + }, + "live_compose_image_lines": [ + "image: ghcr.io/mealie-recipes/mealie:v3.27.0@sha256:ba24b88462380fb59a6c7d04c6d9e607e0b6b04e31306592181186bcdab1952b" + ], + "docker_inspect": [ + "mealie ghcr.io/mealie-recipes/mealie:v3.27.0@sha256:ba24b88462380fb59a6c7d04c6d9e607e0b6b04e31306592181186bcdab1952b running=true restarts=0" + ] +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/box/observables.json b/documentation/audits/night-2026-09-25/E/apps/mealie/box/observables.json new file mode 100644 index 00000000..508e7bb0 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/box/observables.json @@ -0,0 +1,36 @@ +{ + "before": { + "pinned_images": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.27.0" + }, + "installed_images": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.27.0" + }, + "catalog_images": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.27.0" + }, + "live_compose_image_lines": [ + "image: ghcr.io/mealie-recipes/mealie:v3.27.0@sha256:ba24b88462380fb59a6c7d04c6d9e607e0b6b04e31306592181186bcdab1952b" + ], + "docker_inspect": [ + "mealie ghcr.io/mealie-recipes/mealie:v3.27.0@sha256:ba24b88462380fb59a6c7d04c6d9e607e0b6b04e31306592181186bcdab1952b running=true restarts=0" + ] + }, + "after": { + "pinned_images": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.28.0" + }, + "installed_images": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.28.0" + }, + "catalog_images": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.28.0" + }, + "live_compose_image_lines": [ + "image: ghcr.io/mealie-recipes/mealie:v3.28.0" + ], + "docker_inspect": [ + "mealie ghcr.io/mealie-recipes/mealie:v3.28.0 running=true restarts=0" + ] + } +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/box/phases.json b/documentation/audits/night-2026-09-25/E/apps/mealie/box/phases.json new file mode 100644 index 00000000..28d8ea81 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/box/phases.json @@ -0,0 +1,59 @@ +{ + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.0, + "phase": "backing-up", + "label": "Biztonsági mentés készül a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 3.1, + "phase": "safety-dump", + "label": "Adatbázis pillanatkép…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 4.1, + "phase": "pulling", + "label": "Új verzió letöltése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 43.1, + "phase": "copying", + "label": "Az adatok másolása a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 48.5, + "phase": "verifying", + "label": "Működés ellenőrzése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 63.9, + "phase": "done", + "label": "Frissítve", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 63.9, + "final_phase": "done", + "update_error": null, + "hold_reason": null, + "state": "running" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/mealie/box/verdict.json b/documentation/audits/night-2026-09-25/E/apps/mealie/box/verdict.json new file mode 100644 index 00000000..4f56fd50 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/mealie/box/verdict.json @@ -0,0 +1,45 @@ +{ + "harness_version": 1, + "app": "mealie", + "venue": "guest 9202 demo-hp-scratch, controller 0.271.0, drill catalog", + "class": "other", + "from": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.27.0" + }, + "to": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.28.0" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "mealie | \"SQLITE_MIGRATE_JOURNAL_WAL\": false,", + "abort": "not-attempted", + "abort_detail": null, + "duration_s": 63.9, + "measured_at": "2026-09-24T21:08:28.178039+00:00", + "evidence": "apps/mealie/", + "notes": [], + "badge_catchup_seconds": 4.6, + "observables_after": { + "pinned_images": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.28.0" + }, + "installed_images": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.28.0" + }, + "catalog_images": { + "mealie": "ghcr.io/mealie-recipes/mealie:v3.28.0" + }, + "live_compose_image_lines": [ + "image: ghcr.io/mealie-recipes/mealie:v3.28.0" + ], + "docker_inspect": [ + "mealie ghcr.io/mealie-recipes/mealie:v3.28.0 running=true restarts=0" + ] + }, + "final_phase": "done", + "hold_reason": null, + "update_error": null, + "r626_at_60s": "clean" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control-noNetwork/bench/MV-n8n.log b/documentation/audits/night-2026-09-25/E/apps/n8n-control-noNetwork/bench/MV-n8n.log new file mode 100644 index 00000000..57f6b8de --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n-control-noNetwork/bench/MV-n8n.log @@ -0,0 +1,30 @@ +[21:02:01] scratch drive folders cleared before FROM (R-656): none existed +[21:02:01] MV-n8n: deploying n8n at FROM {'n8n': 'n8nio/n8n:2.41.1'} +[21:02:47] FROM deploy FAILED — inconclusive, the edge was never reached +{ + "harness_version": 3, + "edge": "MV-n8n", + "app": "n8n", + "note": "night 2026-09-23 within-a-major move: n8n=alpine:3.20", + "from": { + "n8n": "n8nio/n8n:2.41.1" + }, + "to": { + "n8n": "alpine:3.20" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "FROM deploy failed rc=1: ===========================================>] 10.15MB/10.15MB\n c16728afba34 Pull complete \n eed4985bb3f6 Extracting [========> ] 32.77kB/199.8kB\n eed4985bb3f6 Extracting [==================================================>] 199.8kB/199.8kB\n eed4985bb3f6 Extracting [==================================================>] 199.8kB/199.8kB\n eed4985bb3f6 Pull complete \n 475391c2daa8 Extracting [========> ] 32.77kB/200.6kB\n 475391c2daa8 Extracting [==================================================>] 200.6kB/200.6kB\n 475391c2daa8 Extracting [==================================================>] 200.6kB/200.6kB\n 475391c2daa8 Pull complete \n n8n Pulled \nError response from daemon: network traefik-public not found\n", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 46.7, + "measured_at": "2026-09-24T21:02:47Z", + "evidence": "evidence/MV-n8n", + "scratch_cleared": [], + "total_s": 46.7 +} diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control-noNetwork/bench/evidence/MV-n8n/compose-final.log b/documentation/audits/night-2026-09-25/E/apps/n8n-control-noNetwork/bench/evidence/MV-n8n/compose-final.log new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control-noNetwork/bench/evidence/MV-n8n/run.log b/documentation/audits/night-2026-09-25/E/apps/n8n-control-noNetwork/bench/evidence/MV-n8n/run.log new file mode 100644 index 00000000..a1a57b29 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n-control-noNetwork/bench/evidence/MV-n8n/run.log @@ -0,0 +1,3 @@ +[21:02:01] scratch drive folders cleared before FROM (R-656): none existed +[21:02:01] MV-n8n: deploying n8n at FROM {'n8n': 'n8nio/n8n:2.41.1'} +[21:02:47] FROM deploy FAILED — inconclusive, the edge was never reached \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control-noNetwork/bench/evidence/MV-n8n/verdict.json b/documentation/audits/night-2026-09-25/E/apps/n8n-control-noNetwork/bench/evidence/MV-n8n/verdict.json new file mode 100644 index 00000000..3529430b --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n-control-noNetwork/bench/evidence/MV-n8n/verdict.json @@ -0,0 +1,27 @@ +{ + "harness_version": 3, + "edge": "MV-n8n", + "app": "n8n", + "note": "night 2026-09-23 within-a-major move: n8n=alpine:3.20", + "from": { + "n8n": "n8nio/n8n:2.41.1" + }, + "to": { + "n8n": "alpine:3.20" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "FROM deploy failed rc=1: ===========================================>] 10.15MB/10.15MB\n c16728afba34 Pull complete \n eed4985bb3f6 Extracting [========> ] 32.77kB/199.8kB\n eed4985bb3f6 Extracting [==================================================>] 199.8kB/199.8kB\n eed4985bb3f6 Extracting [==================================================>] 199.8kB/199.8kB\n eed4985bb3f6 Pull complete \n 475391c2daa8 Extracting [========> ] 32.77kB/200.6kB\n 475391c2daa8 Extracting [==================================================>] 200.6kB/200.6kB\n 475391c2daa8 Extracting [==================================================>] 200.6kB/200.6kB\n 475391c2daa8 Pull complete \n n8n Pulled \nError response from daemon: network traefik-public not found\n", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 46.7, + "measured_at": "2026-09-24T21:02:47Z", + "evidence": "evidence/MV-n8n", + "scratch_cleared": [], + "total_s": 46.7 +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/MV-n8n.log b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/MV-n8n.log index 57f6b8de..f364ae39 100644 --- a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/MV-n8n.log +++ b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/MV-n8n.log @@ -1,6 +1,18 @@ -[21:02:01] scratch drive folders cleared before FROM (R-656): none existed -[21:02:01] MV-n8n: deploying n8n at FROM {'n8n': 'n8nio/n8n:2.41.1'} -[21:02:47] FROM deploy FAILED — inconclusive, the edge was never reached +[21:16:45] scratch drive folders cleared before FROM (R-656): none existed +[21:16:45] MV-n8n: deploying n8n at FROM {'n8n': 'n8nio/n8n:2.41.1'} +[21:17:16] FROM settled=True in 30.8s :: {"n8n": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[21:17:16] fixture: the BOX walk's own (N8n), through upgrade_boxport +[21:17:16] n8n: /rest/owner/setup http=200 +[21:17:17] n8n: login as the seeded owner http=200 ok=True +[21:17:17] C1 (seed reads back BEFORE): True +[21:17:17] MV-n8n: swapping to TO {'n8n': 'alpine:3.20'} +[21:17:22] TO up -d rc=0 +[21:24:27] TO settled=False in 424.7s :: {"n8n": {"status": "restarting", "health": "unhealthy", "restarts": 0, "exit": 0}} +[21:24:27] migration lines observed: 0 +[21:31:59] RESULT (seed reads back AFTER): False +[21:31:59] MV-n8n: ABORT — putting the FROM images back +[21:32:31] n8n: login as the seeded owner http=200 ok=True +[21:32:31] ABORT: app came back in 30.8s; data present=True { "harness_version": 3, "edge": "MV-n8n", @@ -12,19 +24,20 @@ "to": { "n8n": "alpine:3.20" }, - "verdict": "inconclusive", - "seed_read_before": false, + "verdict": "failed", + "seed_read_before": true, "seed_read_after": false, "healthy_after": false, "migration_observed": null, - "abort": "not-attempted", - "abort_detail": "FROM deploy failed rc=1: ===========================================>] 10.15MB/10.15MB\n c16728afba34 Pull complete \n eed4985bb3f6 Extracting [========> ] 32.77kB/199.8kB\n eed4985bb3f6 Extracting [==================================================>] 199.8kB/199.8kB\n eed4985bb3f6 Extracting [==================================================>] 199.8kB/199.8kB\n eed4985bb3f6 Pull complete \n 475391c2daa8 Extracting [========> ] 32.77kB/200.6kB\n 475391c2daa8 Extracting [==================================================>] 200.6kB/200.6kB\n 475391c2daa8 Extracting [==================================================>] 200.6kB/200.6kB\n 475391c2daa8 Pull complete \n n8n Pulled \nError response from daemon: network traefik-public not found\n", + "abort": "starts-and-serves", + "abort_detail": null, "engine_state_after": null, "memory": null, "marks": [], - "duration_s": 46.7, - "measured_at": "2026-09-24T21:02:47Z", + "duration_s": 424.7, + "measured_at": "2026-09-24T21:32:31Z", "evidence": "evidence/MV-n8n", "scratch_cleared": [], - "total_s": 46.7 + "files_changed": [], + "total_s": 946.3 } diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/abort-states.json b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/abort-states.json new file mode 100644 index 00000000..967db3cd --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/abort-states.json @@ -0,0 +1,8 @@ +{ + "n8n": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/compose-final.log b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/compose-final.log index e69de29b..5e283563 100644 --- a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/compose-final.log +++ b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/compose-final.log @@ -0,0 +1,78 @@ +n8n | Initializing n8n process +n8n | n8n ready on ::, port 5678 +n8n | n8n Task Broker ready on 127.0.0.1, port 5679 +n8n | Failed to start Python task runner in internal mode. because Python 3 is missing from this system. Launching a Python runner in internal mode is intended only for debugging and is not recommended for production. Users are encouraged to deploy in external mode. See: https://docs.n8n.io/hosting/configuration/task-runners/#setting-up-external-mode +n8n | +n8n | There are deprecations related to your n8n setup. Please take the recommended actions to update your configuration: +n8n | - WEBHOOK_URL -> Use N8N_WEBHOOK_URL instead, which sets the base URL for both test and production webhooks. +n8n | - N8N_UNVERIFIED_PACKAGES_ENABLED -> The default for this variable will change to `false` in a future version. Set it to `true` explicitly to keep installing unverified community packages. +n8n | - N8N_RUNNERS_MODE -> Internal task runner mode is deprecated and will be removed in a future version. For isolation and scaling, run the task runner launcher as a separate process, set this variable to `external` and share `N8N_RUNNERS_AUTH_TOKEN` with the launcher. See https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners +n8n | - N8N_RUNNERS_TASK_TIMEOUT -> The default for this variable will be reduced from 300 (5 minutes) to 60 (1 minute) in a future version. Set it explicitly to keep your current task timeout. +n8n | - N8N_COMPRESSION_NODE_MAX_DECOMPRESSED_SIZE_BYTES -> The default for this variable will be reduced from 2 GiB to 256 MiB in a future version. Set it explicitly to keep your current limit. +n8n | - N8N_COMPRESSION_NODE_MAX_ZIP_ENTRIES -> The default for this variable will be reduced from 5000 to 1000 in a future version. Set it explicitly to keep your current limit. +n8n | +n8n | [license SDK] Skipping renewal on init: license cert is not initialized +n8n | [runner:js] (node:19) ExperimentalWarning: localStorage is not available because --localstorage-file was not provided. +n8n | (Use `node --trace-warnings ...` to show where the warning was created) +n8n | Registered runner "JS Task Runner" (aYGuVbIduiOH4bKyj3mR8) +n8n | Instance registered +n8n | Discovered 4 cluster checks +n8n | Sandbox: enabled=false provider=n8n-sandbox (from env) +n8n | Version: 2.41.1 +n8n | Building workflow dependency index... +n8n | Finished building workflow dependency index. Processed 0 draft workflows, 0 published workflows. +n8n | +n8n | Editor is now accessible via: +n8n | https://auto.gate.invalid +n8n | 2026-09-24T21:32:10.528Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:32:10.746Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:32:11.161Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:32:12.028Z [Rudder] error: Error: ECONNREFUSED +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at AxiosError.from (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:1355:24) +n8n | at RedirectableRequest.handleRequestError (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:4026:25) +n8n | at RedirectableRequest.emit (node:events:526:24) +n8n | at ClientRequest.eventHandlers. (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/follow-redirects@1.16.0_debug@4.4.3_supports-color@8.1.1_/node_modules/follow-redirects/index.js:56:24) +n8n | at ClientRequest.emit (node:events:514:20) +n8n | at emitErrorEvent (node:_http_client:114:11) +n8n | at TLSSocket.socketErrorListener (node:_http_client:768:5) +n8n | at TLSSocket.emit (node:events:526:24) +n8n | at emitErrorNT (node:internal/streams/destroy:170:8) +n8n | at emitErrorCloseNT (node:internal/streams/destroy:129:3) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5427:41) +n8n | at processTicksAndRejections (node:internal/process/task_queues:104:5) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:2017:16) +n8n | +n8n | 2026-09-24T21:32:20.487Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:32:20.696Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:32:21.123Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:32:21.948Z [Rudder] error: Error: ECONNREFUSED +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at AxiosError.from (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:1355:24) +n8n | at RedirectableRequest.handleRequestError (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:4026:25) +n8n | at RedirectableRequest.emit (node:events:526:24) +n8n | at ClientRequest.eventHandlers. (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/follow-redirects@1.16.0_debug@4.4.3_supports-color@8.1.1_/node_modules/follow-redirects/index.js:56:24) +n8n | at ClientRequest.emit (node:events:514:20) +n8n | at emitErrorEvent (node:_http_client:114:11) +n8n | at TLSSocket.socketErrorListener (node:_http_client:768:5) +n8n | at TLSSocket.emit (node:events:526:24) +n8n | at emitErrorNT (node:internal/streams/destroy:170:8) +n8n | at emitErrorCloseNT (node:internal/streams/destroy:129:3) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5427:41) +n8n | at processTicksAndRejections (node:internal/process/task_queues:104:5) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:2017:16) +n8n | diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/engine-state.json b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/files-after.json b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/files-before.json b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/migration-lines.txt b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/migration-lines.txt new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/run.log b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/run.log index a1a57b29..8666d2a6 100644 --- a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/run.log +++ b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/run.log @@ -1,3 +1,15 @@ -[21:02:01] scratch drive folders cleared before FROM (R-656): none existed -[21:02:01] MV-n8n: deploying n8n at FROM {'n8n': 'n8nio/n8n:2.41.1'} -[21:02:47] FROM deploy FAILED — inconclusive, the edge was never reached \ No newline at end of file +[21:16:45] scratch drive folders cleared before FROM (R-656): none existed +[21:16:45] MV-n8n: deploying n8n at FROM {'n8n': 'n8nio/n8n:2.41.1'} +[21:17:16] FROM settled=True in 30.8s :: {"n8n": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[21:17:16] fixture: the BOX walk's own (N8n), through upgrade_boxport +[21:17:16] n8n: /rest/owner/setup http=200 +[21:17:17] n8n: login as the seeded owner http=200 ok=True +[21:17:17] C1 (seed reads back BEFORE): True +[21:17:17] MV-n8n: swapping to TO {'n8n': 'alpine:3.20'} +[21:17:22] TO up -d rc=0 +[21:24:27] TO settled=False in 424.7s :: {"n8n": {"status": "restarting", "health": "unhealthy", "restarts": 0, "exit": 0}} +[21:24:27] migration lines observed: 0 +[21:31:59] RESULT (seed reads back AFTER): False +[21:31:59] MV-n8n: ABORT — putting the FROM images back +[21:32:31] n8n: login as the seeded owner http=200 ok=True +[21:32:31] ABORT: app came back in 30.8s; data present=True \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/to-full.log b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/to-full.log new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/to-states.json b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/to-states.json new file mode 100644 index 00000000..edb4ff98 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/to-states.json @@ -0,0 +1,8 @@ +{ + "n8n": { + "status": "restarting", + "health": "unhealthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/verdict.json b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/verdict.json index 3529430b..5707bf93 100644 --- a/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/verdict.json +++ b/documentation/audits/night-2026-09-25/E/apps/n8n-control/bench/evidence/MV-n8n/verdict.json @@ -9,19 +9,20 @@ "to": { "n8n": "alpine:3.20" }, - "verdict": "inconclusive", - "seed_read_before": false, + "verdict": "failed", + "seed_read_before": true, "seed_read_after": false, "healthy_after": false, "migration_observed": null, - "abort": "not-attempted", - "abort_detail": "FROM deploy failed rc=1: ===========================================>] 10.15MB/10.15MB\n c16728afba34 Pull complete \n eed4985bb3f6 Extracting [========> ] 32.77kB/199.8kB\n eed4985bb3f6 Extracting [==================================================>] 199.8kB/199.8kB\n eed4985bb3f6 Extracting [==================================================>] 199.8kB/199.8kB\n eed4985bb3f6 Pull complete \n 475391c2daa8 Extracting [========> ] 32.77kB/200.6kB\n 475391c2daa8 Extracting [==================================================>] 200.6kB/200.6kB\n 475391c2daa8 Extracting [==================================================>] 200.6kB/200.6kB\n 475391c2daa8 Pull complete \n n8n Pulled \nError response from daemon: network traefik-public not found\n", + "abort": "starts-and-serves", + "abort_detail": null, "engine_state_after": null, "memory": null, "marks": [], - "duration_s": 46.7, - "measured_at": "2026-09-24T21:02:47Z", + "duration_s": 424.7, + "measured_at": "2026-09-24T21:32:31Z", "evidence": "evidence/MV-n8n", "scratch_cleared": [], - "total_s": 46.7 + "files_changed": [], + "total_s": 946.3 } \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench-noNetwork/MV-n8n.log b/documentation/audits/night-2026-09-25/E/apps/n8n/bench-noNetwork/MV-n8n.log new file mode 100644 index 00000000..cd3ff6aa --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench-noNetwork/MV-n8n.log @@ -0,0 +1,30 @@ +[21:02:58] scratch drive folders cleared before FROM (R-656): none existed +[21:02:58] MV-n8n: deploying n8n at FROM {'n8n': 'n8nio/n8n:2.41.1'} +[21:02:58] FROM deploy FAILED — inconclusive, the edge was never reached +{ + "harness_version": 3, + "edge": "MV-n8n", + "app": "n8n", + "note": "night 2026-09-23 within-a-major move: n8n=n8nio/n8n:2.41.2", + "from": { + "n8n": "n8nio/n8n:2.41.1" + }, + "to": { + "n8n": "n8nio/n8n:2.41.2" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "FROM deploy failed rc=1: Error response from daemon: network traefik-public not found\n", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 0.1, + "measured_at": "2026-09-24T21:02:58Z", + "evidence": "evidence/MV-n8n", + "scratch_cleared": [], + "total_s": 0.1 +} diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench-noNetwork/evidence/MV-n8n/compose-final.log b/documentation/audits/night-2026-09-25/E/apps/n8n/bench-noNetwork/evidence/MV-n8n/compose-final.log new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench-noNetwork/evidence/MV-n8n/run.log b/documentation/audits/night-2026-09-25/E/apps/n8n/bench-noNetwork/evidence/MV-n8n/run.log new file mode 100644 index 00000000..9fe20a5b --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench-noNetwork/evidence/MV-n8n/run.log @@ -0,0 +1,3 @@ +[21:02:58] scratch drive folders cleared before FROM (R-656): none existed +[21:02:58] MV-n8n: deploying n8n at FROM {'n8n': 'n8nio/n8n:2.41.1'} +[21:02:58] FROM deploy FAILED — inconclusive, the edge was never reached \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench-noNetwork/evidence/MV-n8n/verdict.json b/documentation/audits/night-2026-09-25/E/apps/n8n/bench-noNetwork/evidence/MV-n8n/verdict.json new file mode 100644 index 00000000..ea53b9c4 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench-noNetwork/evidence/MV-n8n/verdict.json @@ -0,0 +1,27 @@ +{ + "harness_version": 3, + "edge": "MV-n8n", + "app": "n8n", + "note": "night 2026-09-23 within-a-major move: n8n=n8nio/n8n:2.41.2", + "from": { + "n8n": "n8nio/n8n:2.41.1" + }, + "to": { + "n8n": "n8nio/n8n:2.41.2" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "FROM deploy failed rc=1: Error response from daemon: network traefik-public not found\n", + "engine_state_after": null, + "memory": null, + "marks": [], + "duration_s": 0.1, + "measured_at": "2026-09-24T21:02:58Z", + "evidence": "evidence/MV-n8n", + "scratch_cleared": [], + "total_s": 0.1 +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/MV-n8n.log b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/MV-n8n.log index cd3ff6aa..9383095b 100644 --- a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/MV-n8n.log +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/MV-n8n.log @@ -1,6 +1,61 @@ -[21:02:58] scratch drive folders cleared before FROM (R-656): none existed -[21:02:58] MV-n8n: deploying n8n at FROM {'n8n': 'n8nio/n8n:2.41.1'} -[21:02:58] FROM deploy FAILED — inconclusive, the edge was never reached +[21:32:40] scratch drive folders cleared before FROM (R-656): none existed +[21:32:40] MV-n8n: deploying n8n at FROM {'n8n': 'n8nio/n8n:2.41.1'} +[21:33:12] FROM settled=True in 30.8s :: {"n8n": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[21:33:12] fixture: the BOX walk's own (N8n), through upgrade_boxport +[21:33:12] n8n: /rest/owner/setup http=200 +[21:33:12] n8n: login as the seeded owner http=200 ok=True +[21:33:12] C1 (seed reads back BEFORE): True +[21:33:12] MV-n8n: swapping to TO {'n8n': 'n8nio/n8n:2.41.2'} +[21:34:05] TO up -d rc=0 +[21:34:36] TO settled=True in 30.8s :: {"n8n": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[21:34:36] migration lines observed: 0 +[21:34:36] n8n: login as the seeded owner http=200 ok=True +[21:34:36] RESULT (seed reads back AFTER): True +[21:34:37] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:5678 +[21:34:52] + 15s n8n=534M/1536M peak=859M kills=0 rs=0 reqs=300 +[21:35:07] + 30s n8n=541M/1536M peak=859M kills=0 rs=0 reqs=596 +[21:35:22] + 45s n8n=551M/1536M peak=859M kills=0 rs=0 reqs=896 +[21:35:37] + 60s n8n=558M/1536M peak=859M kills=0 rs=0 reqs=1195 +[21:35:52] + 76s n8n=561M/1536M peak=859M kills=0 rs=0 reqs=1492 +[21:36:07] + 91s n8n=565M/1536M peak=859M kills=0 rs=0 reqs=1792 +[21:36:22] + 106s n8n=566M/1536M peak=859M kills=0 rs=0 reqs=2088 +[21:36:38] + 121s n8n=572M/1536M peak=859M kills=0 rs=0 reqs=2388 +[21:36:53] + 136s n8n=568M/1536M peak=859M kills=0 rs=0 reqs=2688 +[21:37:08] + 151s n8n=571M/1536M peak=859M kills=0 rs=0 reqs=2984 +[21:37:23] + 166s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=3284 +[21:37:38] + 181s n8n=573M/1536M peak=859M kills=0 rs=0 reqs=3580 +[21:37:53] + 196s n8n=570M/1536M peak=859M kills=0 rs=0 reqs=3880 +[21:38:08] + 212s n8n=572M/1536M peak=859M kills=0 rs=0 reqs=4180 +[21:38:23] + 227s n8n=570M/1536M peak=859M kills=0 rs=0 reqs=4476 +[21:38:38] + 242s n8n=573M/1536M peak=859M kills=0 rs=0 reqs=4776 +[21:38:54] + 257s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=5076 +[21:39:09] + 272s n8n=572M/1536M peak=859M kills=0 rs=0 reqs=5372 +[21:39:24] + 287s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=5672 +[21:39:39] + 302s n8n=573M/1536M peak=859M kills=0 rs=0 reqs=5972 +[21:39:54] + 318s n8n=568M/1536M peak=859M kills=0 rs=0 reqs=6268 +[21:40:09] + 333s n8n=571M/1536M peak=859M kills=0 rs=0 reqs=6568 +[21:40:24] + 348s n8n=570M/1536M peak=859M kills=0 rs=0 reqs=6868 +[21:40:39] + 363s n8n=572M/1536M peak=859M kills=0 rs=0 reqs=7164 +[21:40:55] + 378s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=7464 +[21:41:10] + 393s n8n=571M/1536M peak=859M kills=0 rs=0 reqs=7764 +[21:41:25] + 408s n8n=570M/1536M peak=859M kills=0 rs=0 reqs=8060 +[21:41:40] + 423s n8n=570M/1536M peak=859M kills=0 rs=0 reqs=8360 +[21:41:55] + 438s n8n=573M/1536M peak=859M kills=0 rs=0 reqs=8658 +[21:42:10] + 454s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=8956 +[21:42:25] + 469s n8n=573M/1536M peak=859M kills=0 rs=0 reqs=9256 +[21:42:40] + 484s n8n=570M/1536M peak=859M kills=0 rs=0 reqs=9556 +[21:42:55] + 499s n8n=573M/1536M peak=859M kills=0 rs=0 reqs=9852 +[21:43:11] + 514s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=10152 +[21:43:26] + 529s n8n=572M/1536M peak=859M kills=0 rs=0 reqs=10448 +[21:43:41] + 544s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=10748 +[21:43:56] + 559s n8n=571M/1536M peak=859M kills=0 rs=0 reqs=11048 +[21:44:11] + 574s n8n=568M/1536M peak=859M kills=0 rs=0 reqs=11344 +[21:44:26] + 590s n8n=571M/1536M peak=859M kills=0 rs=0 reqs=11644 +[21:44:41] + 605s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=11944 +[21:44:42] memory watch: killed=False tight=[] requests=11944 codes={'200': 11944} +[21:44:42] MV-n8n: ABORT — putting the FROM images back +[21:45:14] n8n: login as the seeded owner http=200 ok=True +[21:45:14] ABORT: app came back in 30.8s; data present=True { "harness_version": 3, "edge": "MV-n8n", @@ -12,19 +67,43 @@ "to": { "n8n": "n8nio/n8n:2.41.2" }, - "verdict": "inconclusive", - "seed_read_before": false, - "seed_read_after": false, - "healthy_after": false, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, "migration_observed": null, - "abort": "not-attempted", - "abort_detail": "FROM deploy failed rc=1: Error response from daemon: network traefik-public not found\n", + "abort": "starts-and-serves", + "abort_detail": null, "engine_state_after": null, - "memory": null, + "memory": { + "soak_s": 605.0, + "requested_s": 600, + "requests": 11944, + "codes": { + "200": 11944 + }, + "first_kill": null, + "containers": { + "n8n": { + "limit": 1610612736, + "peak": 900997120, + "peak_pct": 0.559, + "anon_peak_sampled": 361549824, + "anon_peak_pct": 0.224, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, "marks": [], - "duration_s": 0.1, - "measured_at": "2026-09-24T21:02:58Z", + "duration_s": 30.8, + "measured_at": "2026-09-24T21:45:14Z", "evidence": "evidence/MV-n8n", "scratch_cleared": [], - "total_s": 0.1 + "files_changed": [], + "total_s": 753.5 } diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/abort-states.json b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/abort-states.json new file mode 100644 index 00000000..967db3cd --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/abort-states.json @@ -0,0 +1,8 @@ +{ + "n8n": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/compose-final.log b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/compose-final.log index e69de29b..74a59ed0 100644 --- a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/compose-final.log +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/compose-final.log @@ -0,0 +1,79 @@ +n8n | Initializing n8n process +n8n | n8n ready on ::, port 5678 +n8n | n8n Task Broker ready on 127.0.0.1, port 5679 +n8n | Failed to start Python task runner in internal mode. because Python 3 is missing from this system. Launching a Python runner in internal mode is intended only for debugging and is not recommended for production. Users are encouraged to deploy in external mode. See: https://docs.n8n.io/hosting/configuration/task-runners/#setting-up-external-mode +n8n | +n8n | There are deprecations related to your n8n setup. Please take the recommended actions to update your configuration: +n8n | - WEBHOOK_URL -> Use N8N_WEBHOOK_URL instead, which sets the base URL for both test and production webhooks. +n8n | - N8N_UNVERIFIED_PACKAGES_ENABLED -> The default for this variable will change to `false` in a future version. Set it to `true` explicitly to keep installing unverified community packages. +n8n | - N8N_RUNNERS_MODE -> Internal task runner mode is deprecated and will be removed in a future version. For isolation and scaling, run the task runner launcher as a separate process, set this variable to `external` and share `N8N_RUNNERS_AUTH_TOKEN` with the launcher. See https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners +n8n | - N8N_RUNNERS_TASK_TIMEOUT -> The default for this variable will be reduced from 300 (5 minutes) to 60 (1 minute) in a future version. Set it explicitly to keep your current task timeout. +n8n | - N8N_COMPRESSION_NODE_MAX_DECOMPRESSED_SIZE_BYTES -> The default for this variable will be reduced from 2 GiB to 256 MiB in a future version. Set it explicitly to keep your current limit. +n8n | - N8N_COMPRESSION_NODE_MAX_ZIP_ENTRIES -> The default for this variable will be reduced from 5000 to 1000 in a future version. Set it explicitly to keep your current limit. +n8n | +n8n | [license SDK] Skipping renewal on init: license cert is not initialized +n8n | [runner:js] (node:19) ExperimentalWarning: localStorage is not available because --localstorage-file was not provided. +n8n | (Use `node --trace-warnings ...` to show where the warning was created) +n8n | Instance registered +n8n | Discovered 4 cluster checks +n8n | Registered runner "JS Task Runner" (PyMOsbSyLFFrR9CbT6tue) +n8n | Recorded version change: 2.41.2 -> 2.41.1 +n8n | Sandbox: enabled=false provider=n8n-sandbox (from env) +n8n | Version: 2.41.1 +n8n | Building workflow dependency index... +n8n | Finished building workflow dependency index. Processed 0 draft workflows, 0 published workflows. +n8n | +n8n | Editor is now accessible via: +n8n | https://auto.gate.invalid +n8n | 2026-09-24T21:44:55.631Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:44:55.863Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:44:56.323Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:44:57.181Z [Rudder] error: Error: ECONNREFUSED +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at AxiosError.from (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:1355:24) +n8n | at RedirectableRequest.handleRequestError (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:4026:25) +n8n | at RedirectableRequest.emit (node:events:526:24) +n8n | at ClientRequest.eventHandlers. (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/follow-redirects@1.16.0_debug@4.4.3_supports-color@8.1.1_/node_modules/follow-redirects/index.js:56:24) +n8n | at ClientRequest.emit (node:events:514:20) +n8n | at emitErrorEvent (node:_http_client:114:11) +n8n | at TLSSocket.socketErrorListener (node:_http_client:768:5) +n8n | at TLSSocket.emit (node:events:526:24) +n8n | at emitErrorNT (node:internal/streams/destroy:170:8) +n8n | at emitErrorCloseNT (node:internal/streams/destroy:129:3) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5427:41) +n8n | at processTicksAndRejections (node:internal/process/task_queues:104:5) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:2017:16) +n8n | +n8n | 2026-09-24T21:45:05.593Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:45:05.833Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:45:06.315Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:45:07.281Z [Rudder] error: Error: ECONNREFUSED +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at AxiosError.from (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:1355:24) +n8n | at RedirectableRequest.handleRequestError (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:4026:25) +n8n | at RedirectableRequest.emit (node:events:526:24) +n8n | at ClientRequest.eventHandlers. (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/follow-redirects@1.16.0_debug@4.4.3_supports-color@8.1.1_/node_modules/follow-redirects/index.js:56:24) +n8n | at ClientRequest.emit (node:events:514:20) +n8n | at emitErrorEvent (node:_http_client:114:11) +n8n | at TLSSocket.socketErrorListener (node:_http_client:768:5) +n8n | at TLSSocket.emit (node:events:526:24) +n8n | at emitErrorNT (node:internal/streams/destroy:170:8) +n8n | at emitErrorCloseNT (node:internal/streams/destroy:129:3) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5427:41) +n8n | at processTicksAndRejections (node:internal/process/task_queues:104:5) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:2017:16) +n8n | diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/engine-state.json b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/files-after.json b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/files-before.json b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/memory-samples.json b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/memory-samples.json new file mode 100644 index 00000000..4f23d410 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/memory-samples.json @@ -0,0 +1,682 @@ +[ + { + "t": 15.1, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 560967680, + "peak": 900997120, + "anon": 321933312, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 300 + }, + { + "t": 30.2, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 567631872, + "peak": 900997120, + "anon": 328048640, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 596 + }, + { + "t": 45.3, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 578404352, + "peak": 900997120, + "anon": 338776064, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 896 + }, + { + "t": 60.5, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 585572352, + "peak": 900997120, + "anon": 345919488, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1195 + }, + { + "t": 75.6, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 588849152, + "peak": 900997120, + "anon": 349196288, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1492 + }, + { + "t": 90.7, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 593432576, + "peak": 900997120, + "anon": 353181696, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1792 + }, + { + "t": 105.8, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 594251776, + "peak": 900997120, + "anon": 354381824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2088 + }, + { + "t": 120.9, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 600371200, + "peak": 900997120, + "anon": 360312832, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2388 + }, + { + "t": 136.1, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 596107264, + "peak": 900997120, + "anon": 355876864, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2688 + }, + { + "t": 151.2, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 599703552, + "peak": 900997120, + "anon": 359514112, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2984 + }, + { + "t": 166.3, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 597053440, + "peak": 900997120, + "anon": 357158912, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3284 + }, + { + "t": 181.4, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 601079808, + "peak": 900997120, + "anon": 361152512, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3580 + }, + { + "t": 196.5, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 598155264, + "peak": 900997120, + "anon": 358281216, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3880 + }, + { + "t": 211.6, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 600809472, + "peak": 900997120, + "anon": 360697856, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4180 + }, + { + "t": 226.8, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 597962752, + "peak": 900997120, + "anon": 357920768, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4476 + }, + { + "t": 241.9, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 601468928, + "peak": 900997120, + "anon": 361324544, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4776 + }, + { + "t": 257.0, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 596910080, + "peak": 900997120, + "anon": 357064704, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5076 + }, + { + "t": 272.1, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 599937024, + "peak": 900997120, + "anon": 360054784, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5372 + }, + { + "t": 287.2, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 597184512, + "peak": 900997120, + "anon": 357343232, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5672 + }, + { + "t": 302.3, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 600834048, + "peak": 900997120, + "anon": 360603648, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5972 + }, + { + "t": 317.5, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 596189184, + "peak": 900997120, + "anon": 356192256, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6268 + }, + { + "t": 332.6, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 599523328, + "peak": 900997120, + "anon": 359497728, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6568 + }, + { + "t": 347.7, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 597721088, + "peak": 900997120, + "anon": 357625856, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6868 + }, + { + "t": 362.8, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 600268800, + "peak": 900997120, + "anon": 360304640, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7164 + }, + { + "t": 377.9, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 596881408, + "peak": 900997120, + "anon": 356818944, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7464 + }, + { + "t": 393.1, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 599068672, + "peak": 900997120, + "anon": 358682624, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7764 + }, + { + "t": 408.2, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 598036480, + "peak": 900997120, + "anon": 358195200, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8060 + }, + { + "t": 423.3, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 598544384, + "peak": 900997120, + "anon": 358514688, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8360 + }, + { + "t": 438.4, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 601268224, + "peak": 900997120, + "anon": 360890368, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8658 + }, + { + "t": 453.5, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 597635072, + "peak": 900997120, + "anon": 357748736, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8956 + }, + { + "t": 468.7, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 601436160, + "peak": 900997120, + "anon": 361549824, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9256 + }, + { + "t": 483.8, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 598605824, + "peak": 900997120, + "anon": 358170624, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9556 + }, + { + "t": 498.9, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 600948736, + "peak": 900997120, + "anon": 360796160, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9852 + }, + { + "t": 514.0, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 596881408, + "peak": 900997120, + "anon": 356691968, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10152 + }, + { + "t": 529.1, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 599945216, + "peak": 900997120, + "anon": 360079360, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10448 + }, + { + "t": 544.2, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 597213184, + "peak": 900997120, + "anon": 357093376, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10748 + }, + { + "t": 559.4, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 599601152, + "peak": 900997120, + "anon": 359251968, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11048 + }, + { + "t": 574.5, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 596357120, + "peak": 900997120, + "anon": 356507648, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11344 + }, + { + "t": 589.6, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 599670784, + "peak": 900997120, + "anon": 359772160, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11644 + }, + { + "t": 604.7, + "containers": { + "n8n": { + "limit": 1610612736, + "current": 597319680, + "peak": 900997120, + "anon": 356999168, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11944 + } +] \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/migration-lines.txt b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/migration-lines.txt new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/run.log b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/run.log index 9fe20a5b..bcca9328 100644 --- a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/run.log +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/run.log @@ -1,3 +1,58 @@ -[21:02:58] scratch drive folders cleared before FROM (R-656): none existed -[21:02:58] MV-n8n: deploying n8n at FROM {'n8n': 'n8nio/n8n:2.41.1'} -[21:02:58] FROM deploy FAILED — inconclusive, the edge was never reached \ No newline at end of file +[21:32:40] scratch drive folders cleared before FROM (R-656): none existed +[21:32:40] MV-n8n: deploying n8n at FROM {'n8n': 'n8nio/n8n:2.41.1'} +[21:33:12] FROM settled=True in 30.8s :: {"n8n": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[21:33:12] fixture: the BOX walk's own (N8n), through upgrade_boxport +[21:33:12] n8n: /rest/owner/setup http=200 +[21:33:12] n8n: login as the seeded owner http=200 ok=True +[21:33:12] C1 (seed reads back BEFORE): True +[21:33:12] MV-n8n: swapping to TO {'n8n': 'n8nio/n8n:2.41.2'} +[21:34:05] TO up -d rc=0 +[21:34:36] TO settled=True in 30.8s :: {"n8n": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[21:34:36] migration lines observed: 0 +[21:34:36] n8n: login as the seeded owner http=200 ok=True +[21:34:36] RESULT (seed reads back AFTER): True +[21:34:37] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:5678 +[21:34:52] + 15s n8n=534M/1536M peak=859M kills=0 rs=0 reqs=300 +[21:35:07] + 30s n8n=541M/1536M peak=859M kills=0 rs=0 reqs=596 +[21:35:22] + 45s n8n=551M/1536M peak=859M kills=0 rs=0 reqs=896 +[21:35:37] + 60s n8n=558M/1536M peak=859M kills=0 rs=0 reqs=1195 +[21:35:52] + 76s n8n=561M/1536M peak=859M kills=0 rs=0 reqs=1492 +[21:36:07] + 91s n8n=565M/1536M peak=859M kills=0 rs=0 reqs=1792 +[21:36:22] + 106s n8n=566M/1536M peak=859M kills=0 rs=0 reqs=2088 +[21:36:38] + 121s n8n=572M/1536M peak=859M kills=0 rs=0 reqs=2388 +[21:36:53] + 136s n8n=568M/1536M peak=859M kills=0 rs=0 reqs=2688 +[21:37:08] + 151s n8n=571M/1536M peak=859M kills=0 rs=0 reqs=2984 +[21:37:23] + 166s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=3284 +[21:37:38] + 181s n8n=573M/1536M peak=859M kills=0 rs=0 reqs=3580 +[21:37:53] + 196s n8n=570M/1536M peak=859M kills=0 rs=0 reqs=3880 +[21:38:08] + 212s n8n=572M/1536M peak=859M kills=0 rs=0 reqs=4180 +[21:38:23] + 227s n8n=570M/1536M peak=859M kills=0 rs=0 reqs=4476 +[21:38:38] + 242s n8n=573M/1536M peak=859M kills=0 rs=0 reqs=4776 +[21:38:54] + 257s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=5076 +[21:39:09] + 272s n8n=572M/1536M peak=859M kills=0 rs=0 reqs=5372 +[21:39:24] + 287s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=5672 +[21:39:39] + 302s n8n=573M/1536M peak=859M kills=0 rs=0 reqs=5972 +[21:39:54] + 318s n8n=568M/1536M peak=859M kills=0 rs=0 reqs=6268 +[21:40:09] + 333s n8n=571M/1536M peak=859M kills=0 rs=0 reqs=6568 +[21:40:24] + 348s n8n=570M/1536M peak=859M kills=0 rs=0 reqs=6868 +[21:40:39] + 363s n8n=572M/1536M peak=859M kills=0 rs=0 reqs=7164 +[21:40:55] + 378s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=7464 +[21:41:10] + 393s n8n=571M/1536M peak=859M kills=0 rs=0 reqs=7764 +[21:41:25] + 408s n8n=570M/1536M peak=859M kills=0 rs=0 reqs=8060 +[21:41:40] + 423s n8n=570M/1536M peak=859M kills=0 rs=0 reqs=8360 +[21:41:55] + 438s n8n=573M/1536M peak=859M kills=0 rs=0 reqs=8658 +[21:42:10] + 454s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=8956 +[21:42:25] + 469s n8n=573M/1536M peak=859M kills=0 rs=0 reqs=9256 +[21:42:40] + 484s n8n=570M/1536M peak=859M kills=0 rs=0 reqs=9556 +[21:42:55] + 499s n8n=573M/1536M peak=859M kills=0 rs=0 reqs=9852 +[21:43:11] + 514s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=10152 +[21:43:26] + 529s n8n=572M/1536M peak=859M kills=0 rs=0 reqs=10448 +[21:43:41] + 544s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=10748 +[21:43:56] + 559s n8n=571M/1536M peak=859M kills=0 rs=0 reqs=11048 +[21:44:11] + 574s n8n=568M/1536M peak=859M kills=0 rs=0 reqs=11344 +[21:44:26] + 590s n8n=571M/1536M peak=859M kills=0 rs=0 reqs=11644 +[21:44:41] + 605s n8n=569M/1536M peak=859M kills=0 rs=0 reqs=11944 +[21:44:42] memory watch: killed=False tight=[] requests=11944 codes={'200': 11944} +[21:44:42] MV-n8n: ABORT — putting the FROM images back +[21:45:14] n8n: login as the seeded owner http=200 ok=True +[21:45:14] ABORT: app came back in 30.8s; data present=True \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/to-full.log b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/to-full.log new file mode 100644 index 00000000..3b34f1cf --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/to-full.log @@ -0,0 +1,79 @@ +n8n | Initializing n8n process +n8n | n8n ready on ::, port 5678 +n8n | n8n Task Broker ready on 127.0.0.1, port 5679 +n8n | Failed to start Python task runner in internal mode. because Python 3 is missing from this system. Launching a Python runner in internal mode is intended only for debugging and is not recommended for production. Users are encouraged to deploy in external mode. See: https://docs.n8n.io/hosting/configuration/task-runners/#setting-up-external-mode +n8n | +n8n | There are deprecations related to your n8n setup. Please take the recommended actions to update your configuration: +n8n | - WEBHOOK_URL -> Use N8N_WEBHOOK_URL instead, which sets the base URL for both test and production webhooks. +n8n | - N8N_UNVERIFIED_PACKAGES_ENABLED -> The default for this variable will change to `false` in a future version. Set it to `true` explicitly to keep installing unverified community packages. +n8n | - N8N_RUNNERS_MODE -> Internal task runner mode is deprecated and will be removed in a future version. For isolation and scaling, run the task runner launcher as a separate process, set this variable to `external` and share `N8N_RUNNERS_AUTH_TOKEN` with the launcher. See https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners +n8n | - N8N_RUNNERS_TASK_TIMEOUT -> The default for this variable will be reduced from 300 (5 minutes) to 60 (1 minute) in a future version. Set it explicitly to keep your current task timeout. +n8n | - N8N_COMPRESSION_NODE_MAX_DECOMPRESSED_SIZE_BYTES -> The default for this variable will be reduced from 2 GiB to 256 MiB in a future version. Set it explicitly to keep your current limit. +n8n | - N8N_COMPRESSION_NODE_MAX_ZIP_ENTRIES -> The default for this variable will be reduced from 5000 to 1000 in a future version. Set it explicitly to keep your current limit. +n8n | +n8n | [license SDK] Skipping renewal on init: license cert is not initialized +n8n | [runner:js] (node:18) ExperimentalWarning: localStorage is not available because --localstorage-file was not provided. +n8n | (Use `node --trace-warnings ...` to show where the warning was created) +n8n | Instance registered +n8n | Discovered 4 cluster checks +n8n | Registered runner "JS Task Runner" (xxTnJzZRmCKsDTxaCZx3K) +n8n | Recorded version change: 2.41.1 -> 2.41.2 +n8n | Sandbox: enabled=false provider=n8n-sandbox (from env) +n8n | Version: 2.41.2 +n8n | Building workflow dependency index... +n8n | Finished building workflow dependency index. Processed 0 draft workflows, 0 published workflows. +n8n | +n8n | Editor is now accessible via: +n8n | https://auto.gate.invalid +n8n | 2026-09-24T21:34:15.893Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:34:16.104Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:34:16.512Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:34:17.424Z [Rudder] error: Error: ECONNREFUSED +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at AxiosError.from (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:1355:24) +n8n | at RedirectableRequest.handleRequestError (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:4026:25) +n8n | at RedirectableRequest.emit (node:events:526:24) +n8n | at ClientRequest.eventHandlers. (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/follow-redirects@1.16.0_debug@4.4.3_supports-color@8.1.1_/node_modules/follow-redirects/index.js:56:24) +n8n | at ClientRequest.emit (node:events:514:20) +n8n | at emitErrorEvent (node:_http_client:114:11) +n8n | at TLSSocket.socketErrorListener (node:_http_client:768:5) +n8n | at TLSSocket.emit (node:events:526:24) +n8n | at emitErrorNT (node:internal/streams/destroy:170:8) +n8n | at emitErrorCloseNT (node:internal/streams/destroy:129:3) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5427:41) +n8n | at processTicksAndRejections (node:internal/process/task_queues:104:5) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:2017:16) +n8n | +n8n | 2026-09-24T21:34:25.862Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:34:26.068Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:34:26.507Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:34:27.327Z [Rudder] error: Error: ECONNREFUSED +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at AxiosError.from (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:1355:24) +n8n | at RedirectableRequest.handleRequestError (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:4026:25) +n8n | at RedirectableRequest.emit (node:events:526:24) +n8n | at ClientRequest.eventHandlers. (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/follow-redirects@1.16.0_debug@4.4.3_supports-color@8.1.1_/node_modules/follow-redirects/index.js:56:24) +n8n | at ClientRequest.emit (node:events:514:20) +n8n | at emitErrorEvent (node:_http_client:114:11) +n8n | at TLSSocket.socketErrorListener (node:_http_client:768:5) +n8n | at TLSSocket.emit (node:events:526:24) +n8n | at emitErrorNT (node:internal/streams/destroy:170:8) +n8n | at emitErrorCloseNT (node:internal/streams/destroy:129:3) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5427:41) +n8n | at processTicksAndRejections (node:internal/process/task_queues:104:5) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:2017:16) +n8n | diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/to-states.json b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/to-states.json new file mode 100644 index 00000000..967db3cd --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/to-states.json @@ -0,0 +1,8 @@ +{ + "n8n": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/verdict.json b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/verdict.json index ea53b9c4..eabcfcae 100644 --- a/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/verdict.json +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/bench/evidence/MV-n8n/verdict.json @@ -9,19 +9,43 @@ "to": { "n8n": "n8nio/n8n:2.41.2" }, - "verdict": "inconclusive", - "seed_read_before": false, - "seed_read_after": false, - "healthy_after": false, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, "migration_observed": null, - "abort": "not-attempted", - "abort_detail": "FROM deploy failed rc=1: Error response from daemon: network traefik-public not found\n", + "abort": "starts-and-serves", + "abort_detail": null, "engine_state_after": null, - "memory": null, + "memory": { + "soak_s": 605.0, + "requested_s": 600, + "requests": 11944, + "codes": { + "200": 11944 + }, + "first_kill": null, + "containers": { + "n8n": { + "limit": 1610612736, + "peak": 900997120, + "peak_pct": 0.559, + "anon_peak_sampled": 361549824, + "anon_peak_pct": 0.224, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "load": "reached" + }, "marks": [], - "duration_s": 0.1, - "measured_at": "2026-09-24T21:02:58Z", + "duration_s": 30.8, + "measured_at": "2026-09-24T21:45:14Z", "evidence": "evidence/MV-n8n", "scratch_cleared": [], - "total_s": 0.1 + "files_changed": [], + "total_s": 753.5 } \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/box/app-logs-after.txt b/documentation/audits/night-2026-09-25/E/apps/n8n/box/app-logs-after.txt new file mode 100644 index 00000000..23ebdfb1 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/box/app-logs-after.txt @@ -0,0 +1,62 @@ +n8n | Initializing n8n process +n8n | n8n ready on ::, port 5678 +n8n | n8n Task Broker ready on 127.0.0.1, port 5679 +n8n | Failed to start Python task runner in internal mode. because Python 3 is missing from this system. Launching a Python runner in internal mode is intended only for debugging and is not recommended for production. Users are encouraged to deploy in external mode. See: https://docs.n8n.io/hosting/configuration/task-runners/#setting-up-external-mode +n8n | +n8n | There are deprecations related to your n8n setup. Please take the recommended actions to update your configuration: +n8n | - WEBHOOK_URL -> Use N8N_WEBHOOK_URL instead, which sets the base URL for both test and production webhooks. +n8n | - N8N_UNVERIFIED_PACKAGES_ENABLED -> The default for this variable will change to `false` in a future version. Set it to `true` explicitly to keep installing unverified community packages. +n8n | - N8N_RUNNERS_MODE -> Internal task runner mode is deprecated and will be removed in a future version. For isolation and scaling, run the task runner launcher as a separate process, set this variable to `external` and share `N8N_RUNNERS_AUTH_TOKEN` with the launcher. See https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners +n8n | - N8N_RUNNERS_TASK_TIMEOUT -> The default for this variable will be reduced from 300 (5 minutes) to 60 (1 minute) in a future version. Set it explicitly to keep your current task timeout. +n8n | - N8N_COMPRESSION_NODE_MAX_DECOMPRESSED_SIZE_BYTES -> The default for this variable will be reduced from 2 GiB to 256 MiB in a future version. Set it explicitly to keep your current limit. +n8n | - N8N_COMPRESSION_NODE_MAX_ZIP_ENTRIES -> The default for this variable will be reduced from 5000 to 1000 in a future version. Set it explicitly to keep your current limit. +n8n | +n8n | [license SDK] Skipping renewal on init: license cert is not initialized +n8n | [runner:js] (node:26) ExperimentalWarning: localStorage is not available because --localstorage-file was not provided. +n8n | (Use `node --trace-warnings ...` to show where the warning was created) +n8n | Instance registered +n8n | Discovered 4 cluster checks +n8n | Registered runner "JS Task Runner" (P5zJhMQKOh4aRPEe4FryG) +n8n | Recorded version change: 2.41.1 -> 2.41.2 +n8n | Sandbox: enabled=false provider=n8n-sandbox (from env) +n8n | Version: 2.41.2 +n8n | Building workflow dependency index... +n8n | Finished building workflow dependency index. Processed 0 draft workflows, 0 published workflows. +n8n | +n8n | Editor is now accessible via: +n8n | https://auto.enkisfelhom.hu +n8n | 2026-09-24T21:06:33.604Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:06:33.834Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:06:34.249Z [Rudder] error: Response error code: ECONNREFUSED +n8n | 2026-09-24T21:06:35.065Z [Rudder] error: Error: ECONNREFUSED +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at AxiosError.from (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:1355:24) +n8n | at RedirectableRequest.handleRequestError (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:4026:25) +n8n | at RedirectableRequest.emit (node:events:526:24) +n8n | at ClientRequest.eventHandlers. (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/follow-redirects@1.16.0_debug@4.4.3_supports-color@8.1.1_/node_modules/follow-redirects/index.js:56:24) +n8n | at ClientRequest.emit (node:events:514:20) +n8n | at emitErrorEvent (node:_http_client:114:11) +n8n | at TLSSocket.socketErrorListener (node:_http_client:768:5) +n8n | at TLSSocket.emit (node:events:526:24) +n8n | at emitErrorNT (node:internal/streams/destroy:170:8) +n8n | at emitErrorCloseNT (node:internal/streams/destroy:129:3) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5427:41) +n8n | at processTicksAndRejections (node:internal/process/task_queues:104:5) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.18.0_patch_hash=149e256a2a7b632497650b32816716ced972ab02a5ab00fbd8a5158a51722c4_437e4fafb503be805d1d0ae72f0b0deb/node_modules/axios/dist/node/axios.cjs:5423:14) +n8n | +n8n | connect ECONNREFUSED 0.0.0.0:443 +n8n | Error: connect ECONNREFUSED 0.0.0.0:443 +n8n | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:2017:16) +n8n | +n8n | ValidationError: The 'X-Forwarded-For' header is set but the Express 'trust proxy' setting is false (default). This could indicate a misconfiguration which would prevent express-rate-limit from accurately identifying users. See https://express-rate-limit.github.io/ERR_ERL_UNEXPECTED_X_FORWARDED_FOR/ for more information. +n8n | at Object.xForwardedForHeader (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/express-rate-limit@8.2.2_express@5.1.0_supports-color@8.1.1_/node_modules/express-rate-limit/dist/index.cjs:371:13) +n8n | at Object.wrappedValidations. [as xForwardedForHeader] (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/express-rate-limit@8.2.2_express@5.1.0_supports-color@8.1.1_/node_modules/express-rate-limit/dist/index.cjs:685:22) +n8n | at Object.keyGenerator (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/express-rate-limit@8.2.2_express@5.1.0_supports-color@8.1.1_/node_modules/express-rate-limit/dist/index.cjs:788:20) +n8n | at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/express-rate-limit@8.2.2_express@5.1.0_supports-color@8.1.1_/node_modules/express-rate-limit/dist/index.cjs:849:32 +n8n | at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/express-rate-limit@8.2.2_express@5.1.0_supports-color@8.1.1_/node_modules/express-rate-limit/dist/index.cjs:830:5 { +n8n | code: 'ERR_ERL_UNEXPECTED_X_FORWARDED_FOR', +n8n | help: 'https://express-rate-limit.github.io/ERR_ERL_UNEXPECTED_X_FORWARDED_FOR/' +n8n | } diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/box/log.txt b/documentation/audits/night-2026-09-25/E/apps/n8n/box/log.txt new file mode 100644 index 00000000..3a798350 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/box/log.txt @@ -0,0 +1,29 @@ +23:02:25 ==== n8n: n8nio/n8n:2.41.1 -> n8nio/n8n:2.41.2 (sub=auto, class=SQLite) +23:02:29 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +23:04:24 [1] deployed, controller state=running, pinned={'n8n': 'n8nio/n8n:2.41.1'} +23:04:28 [2] seeding through the app's own front door +23:04:28 n8n: /rest/owner/setup http=200 +23:04:28 [3] control C1 — reading the seed back BEFORE the update +23:04:29 n8n: login as the seeded owner http=200 ok=True +23:04:29 [4] backup press SKIPPED for n8n (R-648: whole-box only; the update's backing-up phase backs up n8n alone) +23:04:30 [5] drill commit b18e8810399b: n8n n8nio/n8n:2.41.1 -> n8nio/n8n:2.41.2 (push rc=0) +23:04:34 [5] badge HU: [{'title': 'Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.', 'text': 'Frissítés elérhető — ma'}] +23:04:34 [5] badge EN: [{'title': 'A newer version of this app is available. Select the Update button to start it.', 'text': 'Update available — today'}] +23:04:35 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +23:04:35 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +23:04:39 + 4.1s phase=pulling label=Új verzió letöltése… err=None hold=None +23:06:20 + 105.6s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +23:06:23 + 108.7s phase=verifying label=Működés ellenőrzése… err=None hold=None +23:06:39 + 124.1s phase=done label=Frissítve err=None hold=None +23:06:39 [7] reading the seed back AFTER the update +23:06:39 n8n: login as the seeded owner http=200 ok=True +23:06:42 [8] pinned = {'n8n': 'n8nio/n8n:2.41.2'} +23:06:42 [8] installed = {'n8n': 'n8nio/n8n:2.41.2'} +23:06:42 [8] compose = ['image: n8nio/n8n:2.41.2'] +23:06:42 [8] inspect = ['n8n n8nio/n8n:2.41.2 running=true restarts=0'] +23:06:42 [9] verdict proven -> /mnt/5_hdd/felhom.eu/git/felhom.eu/documentation/audits/night-2026-09-25/tools/../E/apps/n8n/box/verdict.json +23:06:45 [X] stop -> 200 {'ok': True, 'message': 'Stack n8n stop completed'} +23:07:16 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'n8n', 'volumes_removed': ['n8n_n8n_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazás nem +23:07:24 [X] after remove: deployed=False leftovers='/opt/docker/stacks/n8n' +23:08:27 [X] R-626 check +60 s after remove: 'clean' +23:08:27 [9] verdict proven -> /mnt/5_hdd/felhom.eu/git/felhom.eu/documentation/audits/night-2026-09-25/tools/../E/apps/n8n/box/verdict.json diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/box/observables.json b/documentation/audits/night-2026-09-25/E/apps/n8n/box/observables.json new file mode 100644 index 00000000..cf894398 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/box/observables.json @@ -0,0 +1,34 @@ +{ + "before": { + "pinned_images": { + "n8n": "n8nio/n8n:2.41.1" + }, + "installed_images": { + "n8n": "n8nio/n8n:2.41.1" + }, + "catalog_images": null, + "live_compose_image_lines": [ + "image: n8nio/n8n:2.41.1@sha256:52f147bba97908fe58e616738f2f0485696ac7b5670a1baf169ccf1ff3173de7" + ], + "docker_inspect": [ + "n8n n8nio/n8n:2.41.1@sha256:52f147bba97908fe58e616738f2f0485696ac7b5670a1baf169ccf1ff3173de7 running=true restarts=0" + ] + }, + "after": { + "pinned_images": { + "n8n": "n8nio/n8n:2.41.2" + }, + "installed_images": { + "n8n": "n8nio/n8n:2.41.2" + }, + "catalog_images": { + "n8n": "n8nio/n8n:2.41.2" + }, + "live_compose_image_lines": [ + "image: n8nio/n8n:2.41.2" + ], + "docker_inspect": [ + "n8n n8nio/n8n:2.41.2 running=true restarts=0" + ] + } +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/box/phases.json b/documentation/audits/night-2026-09-25/E/apps/n8n/box/phases.json new file mode 100644 index 00000000..37829496 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/box/phases.json @@ -0,0 +1,51 @@ +{ + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.0, + "phase": "backing-up", + "label": "Biztonsági mentés készül a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 4.1, + "phase": "pulling", + "label": "Új verzió letöltése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 105.6, + "phase": "copying", + "label": "Az adatok másolása a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 108.7, + "phase": "verifying", + "label": "Működés ellenőrzése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 124.1, + "phase": "done", + "label": "Frissítve", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 124.1, + "final_phase": "done", + "update_error": null, + "hold_reason": null, + "state": "running" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/apps/n8n/box/verdict.json b/documentation/audits/night-2026-09-25/E/apps/n8n/box/verdict.json new file mode 100644 index 00000000..4fcd2889 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/apps/n8n/box/verdict.json @@ -0,0 +1,45 @@ +{ + "harness_version": 1, + "app": "n8n", + "venue": "guest 9202 demo-hp-scratch, controller 0.271.0, drill catalog", + "class": "SQLite", + "from": { + "n8n": "n8nio/n8n:2.41.1" + }, + "to": { + "n8n": "n8nio/n8n:2.41.2" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": null, + "duration_s": 124.1, + "measured_at": "2026-09-24T21:02:25.828743+00:00", + "evidence": "apps/n8n/", + "notes": [], + "badge_catchup_seconds": 4.6, + "observables_after": { + "pinned_images": { + "n8n": "n8nio/n8n:2.41.2" + }, + "installed_images": { + "n8n": "n8nio/n8n:2.41.2" + }, + "catalog_images": { + "n8n": "n8nio/n8n:2.41.2" + }, + "live_compose_image_lines": [ + "image: n8nio/n8n:2.41.2" + ], + "docker_inspect": [ + "n8n n8nio/n8n:2.41.2 running=true restarts=0" + ] + }, + "final_phase": "done", + "hold_reason": null, + "update_error": null, + "r626_at_60s": "clean" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/E/benchq-Q1.txt b/documentation/audits/night-2026-09-25/E/benchq-Q1.txt index 3e55a99a..2f03f613 100644 --- a/documentation/audits/night-2026-09-25/E/benchq-Q1.txt +++ b/documentation/audits/night-2026-09-25/E/benchq-Q1.txt @@ -3,3 +3,5 @@ 23:02:52 START n8n ['n8n=n8nio/n8n:2.41.2'] 23:03:02 DONE n8n rc=0 verdict=inconclusive read_before=False read_after=False abort=not-attempted marks=[] peaks={} detail='FROM deploy failed rc=1: Error response from daemon: network traefik-public not found\n' (10s) 23:03:02 START mealie ['mealie=ghcr.io/mealie-recipes/mealie:v3.28.0'] +23:16:25 DONE mealie rc=0 verdict=proven read_before=True read_after=True abort=starts-and-serves marks=[] peaks={'mealie': 0.248} detail='None' (802s) +23:16:25 QUEUE Q1 FINISHED diff --git a/documentation/audits/night-2026-09-25/E/benchq-Q2.txt b/documentation/audits/night-2026-09-25/E/benchq-Q2.txt new file mode 100644 index 00000000..cfa420d0 --- /dev/null +++ b/documentation/audits/night-2026-09-25/E/benchq-Q2.txt @@ -0,0 +1,5 @@ +23:16:39 START n8n ['n8n=alpine:3.20'] +23:32:35 DONE n8n rc=0 verdict=failed read_before=True read_after=False abort=starts-and-serves marks=[] peaks={} detail='None' (956s) +23:32:35 START n8n ['n8n=n8nio/n8n:2.41.2'] +23:45:19 DONE n8n rc=0 verdict=proven read_before=True read_after=True abort=starts-and-serves marks=[] peaks={'n8n': 0.559} detail='None' (763s) +23:45:19 QUEUE Q2 FINISHED diff --git a/documentation/audits/night-2026-09-25/G/G1-bench-destroy.txt b/documentation/audits/night-2026-09-25/G/G1-bench-destroy.txt new file mode 100644 index 00000000..2eec58a3 --- /dev/null +++ b/documentation/audits/night-2026-09-25/G/G1-bench-destroy.txt @@ -0,0 +1,17 @@ +== before: 2026-09-24T23:45:46+02:00 +VMID Status Lock Name +9201 running demo-hp +9202 running demo-hp-scratch +9401 running upgrade-harness +local dir active 40453376 22873772 15492488 56.54% +local-lvm lvmthin active 56487936 33350477 23137458 59.04% +nvme-scratch dir active 983379700 82387956 850965132 8.38% +9401 hostname: upgrade-harness +purging CT 9401 from related configurations.. +== after +VMID Status Lock Name +9201 running demo-hp +9202 running demo-hp-scratch +local dir active 40453376 22873700 15492560 56.54% +local-lvm lvmthin active 56487936 33350477 23137458 59.04% +nvme-scratch dir active 983379700 74634000 858719088 7.59% diff --git a/documentation/audits/night-2026-09-25/G/G2-machine-removes.json b/documentation/audits/night-2026-09-25/G/G2-machine-removes.json new file mode 100644 index 00000000..72b543f4 --- /dev/null +++ b/documentation/audits/night-2026-09-25/G/G2-machine-removes.json @@ -0,0 +1,14 @@ +{ + "before": "wishlist containers=1 volumes=2 undo_copies=0\nnavidrome containers=1 volumes=1 undo_copies=0\nromm containers=3 volumes=4 undo_copies=1\nvikunja containers=1 volumes=2 undo_copies=0\nn8n containers=0 volumes=0 undo_copies=0\nmealie containers=0 volumes=0 undo_copies=0\nfelhom-controller filebrowser navidrome paperless-postgres paperless-redis paperless-webserver privatebin romm romm-db romm-redis traefik vikunja wishlist ", + "remove": { + "wishlist": "200", + "navidrome": "200", + "romm": "200", + "vikunja": "200", + "n8n": "not deployed", + "mealie": "not deployed" + }, + "after": "wishlist containers=0 volumes=0 undo_copies=0\nnavidrome containers=0 volumes=0 undo_copies=0\nromm containers=0 volumes=0 undo_copies=0\nvikunja containers=0 volumes=0 undo_copies=0\nn8n containers=0 volumes=0 undo_copies=0\nmealie containers=0 volumes=0 undo_copies=0\nfelhom-controller filebrowser paperless-postgres paperless-redis paperless-webserver privatebin traefik ", + "dirs": "/mnt/felhom-drives/scratch_hdd/userdata/calibre-web/\n/mnt/felhom-drives/scratch_hdd/userdata/documents/\n/mnt/felhom-drives/scratch_hdd/userdata/downloads/\n/mnt/felhom-drives/scratch_hdd/userdata/emby/\n/mnt/felhom-drives/scratch_hdd/userdata/immich/\n/mnt/felhom-drives/scratch_hdd/userdata/jellyfin/\n/mnt/felhom-drives/scratch_hdd/userdata/komga/\n/mnt/felhom-drives/scratch_hdd/userdata/media/\n/mnt/felhom-drives/scratch_hdd/userdata/navidrome/\n/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx/\n/mnt/felhom-drives/scratch_hdd/userdata/plex/\n/mnt/felhom-drives/scratch_hdd/userdata/radarr/\n/mnt/felhom-drives/scratch_hdd/userdata/romm/\n/mnt/felhom-drives/scratch_hdd/userdata/roms/\n/mnt/felhom-drives/scratch_hdd/userdata/sonarr/\npaperless-ngx\n", + "window": "2026/09/24 21:49:16 scheduler.go:67: [DEBUG] [scheduler] daily job db-dump: rescheduled \u2014 recomputing next run\n2026/09/24 21:49:16 scheduler.go:67: [DEBUG] [scheduler] daily job tier2-backup: rescheduled \u2014 recomputing next run\n2026/09/24 21:49:16 scheduler.go:67: [DEBUG] [scheduler] daily job offbox-backup: rescheduled \u2014 recomputing next run\n2026/09/24 21:49:16 backup_handlers.go:64: [INFO] [web] backup window set to 02:30 (legs 02:30/03:30/04:15)\n" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-25/G/G2-machine-removes.log b/documentation/audits/night-2026-09-25/G/G2-machine-removes.log new file mode 100644 index 00000000..39d1cf34 --- /dev/null +++ b/documentation/audits/night-2026-09-25/G/G2-machine-removes.log @@ -0,0 +1,56 @@ +23:46:20 before: +wishlist containers=1 volumes=2 undo_copies=0 +navidrome containers=1 volumes=1 undo_copies=0 +romm containers=3 volumes=4 undo_copies=1 +vikunja containers=1 volumes=2 undo_copies=0 +n8n containers=0 volumes=0 undo_copies=0 +mealie containers=0 volumes=0 undo_copies=0 +felhom-controller filebrowser navidrome paperless-postgres paperless-redis paperless-webserver privatebin romm romm-db romm-redis traefik vikunja wishlist +23:46:20 [X] stop -> 200 {'ok': True, 'message': 'Stack wishlist stop completed'} +23:46:52 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'wishlist', 'volumes_removed': ['wishlist_wishlist_data', 'wishlist_wishlist_uploads'], 'hdd_paths_removed': [], 'hdd_paths_pre +23:47:00 [X] after remove: deployed=False leftovers='/opt/docker/stacks/wishlist' +23:47:01 [X] stop -> 200 {'ok': True, 'message': 'Stack navidrome stop completed'} +23:47:06 [X] remove (with drive data) -> 409 {'ok': False, 'error': 'A(z) /mnt/felhom-drives/scratch_hdd/userdata/navidrome tárhely jelenleg nem elérhető — az alkalmazás nem távolítható el, amíg a meghajtó +23:47:06 [X] refused because the drive path cannot be resolved (R-442, fail-closed and right) — removing the app and KEEPING the drive data instead +23:47:32 [X] remove (keeping drive data) -> 200 {'ok': True, 'data': {'removed': 'navidrome', 'volumes_removed': ['navidrome_navidrome_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'backup_paths +23:47:41 [X] after remove: deployed=False leftovers='/opt/docker/stacks/navidrome' +23:47:49 [X] stop -> 200 {'ok': True, 'message': 'Stack romm stop completed'} +23:47:54 [X] remove (with drive data) -> 409 {'ok': False, 'error': 'A(z) /mnt/felhom-drives/scratch_hdd/userdata/romm tárhely jelenleg nem elérhető — az alkalmazás nem távolítható el, amíg a meghajtó viss +23:47:54 [X] refused because the drive path cannot be resolved (R-442, fail-closed and right) — removing the app and KEEPING the drive data instead +23:48:21 [X] remove (keeping drive data) -> 200 {'ok': True, 'data': {'removed': 'romm', 'volumes_removed': ['romm_romm_config', 'romm_romm_db_data', 'romm_romm_redis_data'], 'hdd_paths_removed': [], 'hdd_pat +23:48:29 [X] after remove: deployed=False leftovers='/opt/docker/stacks/romm' +23:48:30 [X] stop -> 200 {'ok': True, 'message': 'Stack vikunja stop completed'} +23:49:01 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'vikunja', 'volumes_removed': ['vikunja_vikunja_data', 'vikunja_vikunja_db'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [ +23:49:10 [X] after remove: deployed=False leftovers='/opt/docker/stacks/vikunja' +23:49:13 after the product's removes: +wishlist containers=0 volumes=0 undo_copies=0 +navidrome containers=0 volumes=0 undo_copies=0 +romm containers=0 volumes=0 undo_copies=0 +vikunja containers=0 volumes=0 undo_copies=0 +n8n containers=0 volumes=0 undo_copies=0 +mealie containers=0 volumes=0 undo_copies=0 +felhom-controller filebrowser paperless-postgres paperless-redis paperless-webserver privatebin traefik +23:49:16 drive dirs left (read by name): +/mnt/felhom-drives/scratch_hdd/userdata/calibre-web/ +/mnt/felhom-drives/scratch_hdd/userdata/documents/ +/mnt/felhom-drives/scratch_hdd/userdata/downloads/ +/mnt/felhom-drives/scratch_hdd/userdata/emby/ +/mnt/felhom-drives/scratch_hdd/userdata/immich/ +/mnt/felhom-drives/scratch_hdd/userdata/jellyfin/ +/mnt/felhom-drives/scratch_hdd/userdata/komga/ +/mnt/felhom-drives/scratch_hdd/userdata/media/ +/mnt/felhom-drives/scratch_hdd/userdata/navidrome/ +/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx/ +/mnt/felhom-drives/scratch_hdd/userdata/plex/ +/mnt/felhom-drives/scratch_hdd/userdata/radarr/ +/mnt/felhom-drives/scratch_hdd/userdata/romm/ +/mnt/felhom-drives/scratch_hdd/userdata/roms/ +/mnt/felhom-drives/scratch_hdd/userdata/sonarr/ +paperless-ngx + +23:49:21 backup window -> 02:30: 303 +2026/09/24 21:49:16 scheduler.go:67: [DEBUG] [scheduler] daily job db-dump: rescheduled — recomputing next run +2026/09/24 21:49:16 scheduler.go:67: [DEBUG] [scheduler] daily job tier2-backup: rescheduled — recomputing next run +2026/09/24 21:49:16 scheduler.go:67: [DEBUG] [scheduler] daily job offbox-backup: rescheduled — recomputing next run +2026/09/24 21:49:16 backup_handlers.go:64: [INFO] [web] backup window set to 02:30 (legs 02:30/03:30/04:15) + diff --git a/documentation/audits/night-2026-09-25/G/G3-9202-catalog-restored.txt b/documentation/audits/night-2026-09-25/G/G3-9202-catalog-restored.txt new file mode 100644 index 00000000..03d0b125 --- /dev/null +++ b/documentation/audits/night-2026-09-25/G/G3-9202-catalog-restored.txt @@ -0,0 +1,11 @@ +git: + branch: main + repo_url: https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git + sync_interval: 15m + token: + username: "" +hub: +0 + +https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git +c802509 REPORT: step .felhom.yml files (night 2026-09-24) diff --git a/documentation/audits/night-2026-09-25/G/G4-drill-reset.txt b/documentation/audits/night-2026-09-25/G/G4-drill-reset.txt new file mode 100644 index 00000000..16d97c98 --- /dev/null +++ b/documentation/audits/night-2026-09-25/G/G4-drill-reset.txt @@ -0,0 +1,2 @@ +drill=c8025093d23c live=c8025093d23c — 2026-09-24T21:50:07+00:00 +has_actions: False private: True diff --git a/documentation/audits/night-2026-09-25/PROGRESS.md b/documentation/audits/night-2026-09-25/PROGRESS.md index 184c25b7..445d0aab 100644 --- a/documentation/audits/night-2026-09-25/PROGRESS.md +++ b/documentation/audits/night-2026-09-25/PROGRESS.md @@ -18,3 +18,9 @@ Capacity: phase0-capacity.txt. demo-felhom pool 3.13 %, root 31 %. demo-hp pool - register so far: closed R-672 R-673 R-684 R-680 R-678; opened R-685 R-686 R-687; R-676 updated. Before: 341 rows / 685,148 B - [ ] D floor + real night - [ ] E / F / G +- [x] C night5 switch off (nothing pressed), night6 on (vikunja re-tested → done). Data read back 8/8. +- [x] D1 floor 0.271.0 (MinAgent 0.131.0) at 20:59Z; D2 both boxes arrived ~15 s; D3 switch ON (absent), W 02:30, leg 04:15; D0: demo-felhom opengist 1.13→1.15 waiting; demo-hp none +- [x] F3 agent 0.134.0 on both boxes (hub reads 0.134.0) +- [x] E bench 9401 created+destroyed (template removed); n8n 2.41.1→2.41.2 and mealie v3.27.0→v3.28.0 PROVEN on bench AND box; control failed (correct). TODO after 02:30: --write-ladder both, commit each, push, CI. Then reset drill again. +- [x] G partial: 9202 apps removed via product, window 02:30, live catalog c802509 (switch key now explicit true), drill reset to live +- [ ] 02:31 publish E; 04:10 start D watch (d_watch.py) on both boxes diff --git a/documentation/audits/night-2026-09-25/REPORT-DRAFT-C.md b/documentation/audits/night-2026-09-25/REPORT-DRAFT-C.md new file mode 100644 index 00000000..d3ecd7b3 --- /dev/null +++ b/documentation/audits/night-2026-09-25/REPORT-DRAFT-C.md @@ -0,0 +1,26 @@ +## Part C — the proof on 9202: six simulated nights + +Controller v0.271.0 on 9202 only (`C/C0-deploy-9202.txt`), drill catalog (`C/C0-repoint-drill.txt`, health timeout +90 s). Four apps installed through the product at the ladder's first `from`, then the drill put back at the head: +wishlist 1 step behind, navidrome 2, romm 3, vikunja 1 with a failing step (its head probe on port 8999). Marks +set in the drill: navidrome step 1 `needs_person`, wishlist's step `files_may_change`. Data seeded through each +app's own front door and read back after EVERY night (`C/data-readback.txt`: 8 of 8 rounds, 4 of 4 apps, each +fixture with its negative control). The window was moved through the product's own form (`POST /backups/window`) +so the off-site job — and the leg chained to it — fired two minutes later. + +| night | what it proved | leg summary (the box's own line) | pages (hu + en) | +|---|---|---|---| +| 1 | the chain on a box with NO off-site target ("the off-site leg does nothing; the update leg runs now"); one step per app; `needs_person` skipped; `files_may_change` taken WITH a whole copy (wishlist); a failing step undone | `done=2 undone=1 held=0 failed=0 skipped=1 in 3m6s [skipped: navidrome=needs_person]` — romm 60.1 s, vikunja undone 105.2 s, wishlist 20.1 s | „Automatikus frissítés 2026-09-24 22:31-kor — sikeres." / "Automatic update at … — done."; vikunja's undone sentence in both | +| 2 | R-680 live: the undone step is NOT pressed again; navidrome's `files_may_change` step taken (its music folder is `excluded`, so its own unit is whole) | `done=2 undone=0 … skipped=1 in 1m10s [skipped: vikunja=failed_before]` | badges current / behind as expected | +| 3 — accident | controller killed (kill -9) the moment navidrome's step ended | the leg had pressed romm IN THE SAME SECOND; the kill landed before romm's `up` → pin and definition put back, romm runs its previous version, page: „A frissítés megszakadt, mert a vezérlő újraindult…" / "The update was interrupted…"; the leg was not resumed (R-686) | all data read back | +| 4 — accident | power cut (`pct stop`/`pct start` of 9202) while romm's step was `verifying` | box up in 13 s; "resumed 1 interrupted update(s)"; romm healthy after 30 s, DONE in 1 m 32 s; no automatic-update line on the page (the leg died — R-686) | all data read back | +| 5 | the switch OFF (`POST /settings/app-update`, page reads unchecked) | `done=0 … stopped=switched_off in 0s` — nothing pressed | — | +| 6 | the switch ON again; the catalog RE-TESTED vikunja's step (probe fixed, new `tested_at`) → the ladder print changed → R-680's record no longer binds | `done=1 … in 10s` — vikunja done | „Automatikus frissítés … 22:58-kor — sikeres." | + +**Not run live, and why (R-687):** W+5h reached with steps left (the leg starts at W+105m; needs a 3-hour leg — unit +test `TestLeg_NoStepAtOrAfterW5h`); the off-site leg FAILING (9202 has no off-site tier — unit test +`TestChainUpdateLeg_EveryPath` covers error and panic); a `files_may_change` step WITHOUT a whole copy (every app +given the mark was whole on 9202); the full-system gate's deferral (9202 has no agent, so no quiesce loop). + +**Verdict: Part C passed** — every accident that could run on 9202 ended with the app healthy, the data read back, +and a true sentence on its page; the four not-runnable cases are named, unit-proven and in the register. diff --git a/documentation/audits/night-2026-09-25/tools/teardown.py b/documentation/audits/night-2026-09-25/tools/teardown.py index a52b43dc..bfd279e6 100644 --- a/documentation/audits/night-2026-09-25/tools/teardown.py +++ b/documentation/audits/night-2026-09-25/tools/teardown.py @@ -1,12 +1,12 @@ #!/usr/bin/env python3 -"""Part F, the MACHINE layer on 9202: tonight's apps removed THROUGH THE PRODUCT, leftovers read by name, +"""Night 2026-09-25 Part G (adapted from 09-24), the MACHINE layer on 9202: tonight's apps removed THROUGH THE PRODUCT, leftovers read by name, the backup window put back to 02:30 through the product's own form. Apps present before tonight stay: privatebin, paperless-ngx, filebrowser (gokapi was removed in chaos round 5 — R-644's disposition).""" import json, sys, time sys.path.insert(0, ".") import walk as w w.login() -apps = ["nextcloud", "wishlist", "navidrome", "romm", "vikunja", "n8n", "chaosoom", "chaosoomb"] +apps = ["wishlist", "navidrome", "romm", "vikunja", "n8n", "mealie"] q = lambda: w.guest("for p in " + " ".join(apps) + "; do echo \"$p containers=$(docker ps -aq --filter label=com.docker.compose.project=$p | wc -l) volumes=$(docker volume ls -q | grep -c ^${p}_) undo_copies=$(docker volume ls -q --filter label=felhom.undo-copy-of=$p | wc -l)\"; done; docker ps --format '{{.Names}}' | sort | tr '\\n' ' '") before = q(); w.say("before:\n" + before) res = {} @@ -25,5 +25,5 @@ r = w.sh(["curl", "-sk", "-o", "/dev/null", "-w", "%{http_code}", "-H", w.HOSTHD time.sleep(2) win = w.guest("docker logs --since 1m felhom-controller 2>&1 | grep -E 'rescheduled|window set' | tail -4") w.say(f"backup window -> 02:30: {r.stdout}\n{win}") -json.dump({"before": before, "remove": res, "after": after, "dirs": dirs, "window": win}, open("../F/10-machine-removes.json", "w"), indent=2) -open("../F/10-machine-removes.log", "w").write("\n".join(w.LOG) + "\n") +json.dump({"before": before, "remove": res, "after": after, "dirs": dirs, "window": win}, open("../G/G2-machine-removes.json", "w"), indent=2) +open("../G/G2-machine-removes.log", "w").write("\n".join(w.LOG) + "\n")