Files
felhom.eu/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/undo/undo-proof-termix.json
T

175 lines
9.7 KiB
JSON

{
"app": "termix",
"from": {
"termix": "ghcr.io/lukegus/termix:2.9.2"
},
"to": {
"termix": "ghcr.io/lukegus/termix:26.10.5"
},
"started": "2026-10-28T13:54:56Z",
"drill_head_before": "7011ef31674f7efa8c524cb3a0cfc32827e57d9c",
"failing_compose_main_healthcheck": [
"test: [\"CMD\", \"false\"]"
],
"failing_probe": true,
"update": {
"accepted": true,
"http": "202",
"phases": [
{
"t": 0.0,
"phase": "backing-up",
"label": "Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 13.3,
"phase": "pulling",
"label": "\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 45.1,
"phase": "copying",
"label": "Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 58.4,
"phase": "starting",
"label": "Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 59.4,
"phase": "verifying",
"label": "M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 361.7,
"phase": "undoing",
"label": "Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 389.4,
"phase": "undone",
"label": "Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra",
"updating": false,
"error": null,
"hold": null
}
],
"duration_s": 389.4,
"final_phase": "undone",
"update_error": null,
"hold_reason": null,
"state": "running"
},
"to_log_while_verifying": [
"[2:58:05 PM] [SUCCESS] [\ud83e\udde9] Activated plugin ai [op:plugin_activate]",
"[2:58:05 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/ldap [op:plugin_http_mount]",
"[2:58:05 PM] [SUCCESS] [\ud83e\udde9] Activated plugin ldap [op:plugin_activate]",
"[2:58:06 PM] [WARN] [\ud83e\udde9] Plugin opkssh serves 5 route(s) without authentication: /chooser/:requestId, /chooser/:requestId/*, /callback, /callback/:requestId, /callback/:requestId/* [op:plugin_http_public]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/opkssh [op:plugin_http_mount]",
"[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin opkssh [op:plugin_activate]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin proxmox: 0002_mysql_indexes [op:plugin_migrate]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/proxmox [op:plugin_http_mount]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Proxmox routes mounted at /plugin-api/proxmox [op:plugin:proxmox]",
"[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin proxmox [op:plugin_activate]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/secret-sources [op:plugin_http_mount]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Secret sources routes mounted at /plugin-api/secret-sources [op:plugin:secret-sources]",
"[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin secret-sources [op:plugin_activate]",
"[2:58:06 PM] [WARN] [\ud83e\udde9] Plugin session-sharing serves 2 route(s) without authentication: /resolve/:linkToken, /guest/:token [op:plugin_http_public]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/session-sharing [op:plugin_http_mount]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Session sharing mounted at /plugin-api/session-sharing [op:plugin:session-sharing]",
"[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin session-sharing [op:plugin_activate]",
"[2:58:06 PM] [WARN] [\ud83e\udde9] Plugin step-ca serves 1 route(s) without authentication: /callback [op:plugin_http_public]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/step-ca [op:plugin_http_mount]",
"[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin step-ca [op:plugin_activate]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/tailscale [op:plugin_http_mount]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Tailscale routes mounted at /plugin-api/tailscale [op:plugin:tailscale]",
"[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin tailscale [op:plugin_activate]",
"[2:58:06 PM] [WARN] [\ud83e\udde9] Plugin termix-identity serves 2 route(s) without authentication: /u/:handle, /u/:handle/:algo [op:plugin_http_public]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/termix-identity [op:plugin_http_mount]",
"[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin termix-identity [op:plugin_activate]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/tmux-monitor [op:plugin_http_mount]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Tmux Monitor routes mounted at /plugin-api/tmux-monitor [op:plugin:tmux-monitor]",
"[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin tmux-monitor [op:plugin_activate]",
"[2:58:06 PM] [WARN] [\ud83e\udde9] Plugin vault serves 1 route(s) without authentication: /oidc/callback [op:plugin_http_public]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/vault [op:plugin_http_mount]",
"[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin vault [op:plugin_activate]",
"[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin warpgate [op:plugin_activate]",
"[2:58:06 PM] [WARN] [\ud83e\udde9] Plugin web-endpoint serves 1 route(s) without authentication: /p/:token/* [op:plugin_http_public]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/web-endpoint [op:plugin_http_mount]",
"[2:58:06 PM] [INFO] [\ud83e\udde9] Web Endpoint routes mounted at /plugin-api/web-endpoint [op:plugin:web-endpoint]",
"[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin web-endpoint [op:plugin_activate]",
"[2:58:06 PM] [INFO] [\ud83d\ude80] Loaded 40 plugin(s) [op:plugin_init]",
"[2:58:06 PM] [SUCCESS] [\ud83d\ude80] Termix backend started successfully [op:backend_init_complete,duration:18712ms]",
"[3:01:05 PM] [INFO] [\ud83e\udde9] Sent daily usage statistics [op:plugin:telemetry]"
],
"observables_after": {
"pinned_images": {
"termix": "ghcr.io/lukegus/termix:2.9.2"
},
"installed_images": {
"termix": "ghcr.io/lukegus/termix:2.9.2"
},
"catalog_images": {
"termix": "ghcr.io/lukegus/termix:26.10.5"
},
"live_compose_image_lines": [
"image: ghcr.io/lukegus/termix:2.9.2"
],
"docker_inspect": [
"termix ghcr.io/lukegus/termix:2.9.2 running=true restarts=0"
]
},
"running_images_after": {
"termix": "ghcr.io/lukegus/termix:2.9.2"
},
"seed_after_undo": true,
"verdict": "proven",
"why": "TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back",
"drill_head_after": "4834d9dceb7ef88702562cae12d05e96938b0d30",
"drill_tree_equal_to_before": true,
"log": [
"14:55:05 [5] the box's drill mirror now at 7011ef316",
"14:55:10 [1] deploy -> 202 {'ok': True, 'message': 'Telep\u00edt\u00e9s elind\u00edtva \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}",
"14:56:20 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.9.2'}",
"14:56:20 gate: termix is gated \u2014 passed as the household (cookie set)",
"14:56:21 termix: seeded user drill5eec15db via /users/create",
"14:56:21 termix: readback found=True (http 200, control refused as it must)",
"14:56:22 drill commit 9e086d4dad4f: termix TO with failing checks",
"14:56:31 [5] the box's drill mirror now at 9e086d4da",
"14:56:36 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Friss\u00edt\u00e9s elindult \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}",
"14:56:36 + 0.0s phase=backing-up label=Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None",
"14:56:50 + 13.3s phase=pulling label=\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026 err=None hold=None",
"14:57:21 + 45.1s phase=copying label=Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None",
"14:57:35 + 58.4s phase=starting label=Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026 err=None hold=None",
"14:57:36 + 59.4s phase=verifying label=M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026 err=None hold=None",
"15:02:38 + 361.7s phase=undoing label=Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026 err=None hold=None",
"15:03:06 + 389.4s phase=undone label=Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra err=None hold=None",
"15:03:34 termix: readback found=True (http 200, control refused as it must)",
"15:03:34 RESULT proven \u2014 TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back",
"15:03:34 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'}",
"15:04:06 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm",
"15:04:15 [X] after remove: deployed=False leftovers=''",
"15:04:24 [5] the box's drill mirror now at 4834d9dce",
"15:04:24 drill revert 9e086d4dad4f: rc=0",
"15:04:24 drill templates/termix equal to before: True"
]
}