left4me/docs/superpowers/plans
mwiegand 36d3d83de6
docs: postmortem for the overlay-umount EBUSY rabbit hole
Captures the symptom (Reset blew up on `umount target busy`), the
false starts (eager retry, lazy fallback, TimeoutStopSec bump — all
shipped briefly and reverted), the actual root cause (the helper's
own Python interpreter inheriting and pinning the unit's mount
namespace), and the fix (nsenter at the systemd Exec line).

The lessons section is the part future-me reads first: a retry loop
is a hint that something we own is the blocker; probe `/proc/*/ns/mnt`
before assuming kernel async; `+` Exec prefix doesn't escape the
unit's mount namespace.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 15:50:41 +02:00
..
2026-04-22-l4d2-host-lib-v1.md feat(l4d2): add l4d2ctl host command boundary 2026-05-06 16:35:20 +02:00
2026-04-23-l4d2-web-app-v1.md feat(l4d2): add l4d2ctl host command boundary 2026-05-06 16:35:20 +02:00
2026-05-05-l4d2-host-smoke-test.md feat(l4d2): add l4d2ctl host command boundary 2026-05-06 16:35:20 +02:00
2026-05-06-l4d2-cli-host-client.md feat(l4d2): add l4d2ctl host command boundary 2026-05-06 16:35:20 +02:00
2026-05-06-l4d2-install-logging.md fix(deploy): add venv to PATH in left4me-web systemd service 2026-05-06 20:45:37 +02:00
2026-05-06-l4d2-job-pages-and-cancel.md feat(l4d2-web): add job pages and cancellation 2026-05-06 15:05:13 +02:00
2026-05-06-l4d2-web-auth-pages.md fix(l4d2-web): reject encoded unsafe redirects 2026-05-06 13:24:04 +02:00
2026-05-06-l4d2-web-queue-worker.md feat(l4d2): add l4d2ctl host command boundary 2026-05-06 16:35:20 +02:00
2026-05-06-l4d2-web-ui.md docs(l4d2-web): plan functional web ui 2026-05-06 11:34:23 +02:00
2026-05-06-l4d2host-step-logging.md fix(deploy): add venv to PATH in left4me-web systemd service 2026-05-06 20:45:37 +02:00
2026-05-06-left4me-deployment.md feat(deploy): add production-like test deployment 2026-05-06 19:30:10 +02:00
2026-05-06-server-port-constraint.md docs: add server port constraint implementation plan 2026-05-06 20:53:50 +02:00
2026-05-07-l4d2-global-map-overlays.md feat(l4d2-web): managed global map overlays with daily refresh 2026-05-08 08:05:14 +02:00
2026-05-07-l4d2-workshop-overlays.md docs(workshop): spec and plan for steam workshop overlays 2026-05-07 16:25:13 +02:00
2026-05-08-kernel-overlayfs-helper.md docs(specs): kernel overlayfs migration design + plan 2026-05-08 12:19:26 +02:00
2026-05-08-l4d2-script-overlays.md docs(specs): script overlay type — design + implementation plan 2026-05-08 15:27:14 +02:00
2026-05-08-l4d2-script-sandbox-v2-systemd.md docs(specs): script sandbox v2 — systemd-only design + plan 2026-05-08 16:46:13 +02:00
2026-05-08-l4d2-script-sandbox-v3-egress-filter.md docs(specs): script sandbox v3 — egress filter design + plan 2026-05-08 17:08:47 +02:00
2026-05-08-overlay-file-tree.md fix(l4d2-web): file tree fetches in plain JS — vendored htmx is a stub 2026-05-08 20:23:04 +02:00
2026-05-08-overlay-server-cfg-aliases.md feat(l4d2-web): per-overlay server.cfg aliases — expose checkbox + auto-exec 2026-05-09 01:26:31 +02:00
2026-05-09-l4d2-cpu-isolation.md docs(plans): l4d2 cpu isolation — implementation plan 2026-05-09 11:03:37 +02:00
2026-05-09-l4d2-server-host-perf-baseline.md docs(plans): l4d2 server host perf baseline — implementation plan 2026-05-09 09:39:12 +02:00
2026-05-09-l4d2-server-lifecycle-reboot-and-drift.md docs(plans): l4d2 server lifecycle reboot-and-drift — implementation plan 2026-05-09 12:21:59 +02:00
2026-05-09-overlay-umount-helper-namespace-pin.md docs: postmortem for the overlay-umount EBUSY rabbit hole 2026-05-09 15:50:41 +02:00