The database container the package ships, run¶
S2.4 from the shipping plan, run on 2026-08-19 at
827dc67. The plan called it "the highest-risk untested path on the page,
precisely because it is the default one": quadlet/laneward-db.container and
its pgdata volume are what a new user gets, because they will not already have
a Postgres, and nothing had ever started them. D-014 was demonstrated against an
external database.
The Linux host, and why it is a container¶
This machine's WSL cannot run any systemd user manager
(the S3 note records the failure), and the
Podman machine itself holds the live laneward-postgres volume, so it is not
somewhere to install things. The host is therefore a throwaway
registry.fedoraproject.org/fedora:44 container with systemd as PID 1,
--systemd=always --privileged, a non-root lane user with linger enabled, and
podman inside it. systemctl --user works there, which is the whole requirement.
Two things had to be fixed in the container, and neither is a Laneward
defect. The Fedora base image ships no systemd, and nested rootless podman
needs cap_setuid/cap_setgid file capabilities on newuidmap/newgidmap;
without them every podman run fails with cannot set up namespace. Both are
properties of running podman inside podman.
The result¶
./install.sh units, quadlet, config, app, pgdata
systemctl --user start laneward-db.service active <- first time ever
systemctl --user start laneward.service active
bun --env-file=... run db/migrate.ts Applied 28 statements.
systemctl --user start laneward-conductor.service
conductor loop started, draining every 5000 ms
s24-notes: started
s24-notes: completed
podman ps inside the host reported
laneward-db | Up | 127.0.0.1:5433->5432/tcp, exactly what the quadlet declares.
The lane's notes.txt carried the requested line, git status showed the one
file it owned, and the evidence row recorded overall: not_configured for a
repository that declares no checks.
The volume persists. pgdata reached 46.3 MB, systemctl --user restart
laneward-db.service brought the container back, and the hub reconnected on its
own with the lane history intact. That is the claim the pgdata volume exists to
make, and it had never been checked.
Two other paths closed in the same sitting¶
The declared agent, on Linux. The worker was a LANEWARD_AGENT_WRITE JSON
argument array pointing at a script that takes --workdir and --model and
knows no Codex flag. S2b's adapter had run under the Windows Scheduled Task and
in the test suite; this is its first run under systemd.
install.sh --uninstall after a real install. It had only ever been run
after a dry one. It removed the units, the quadlet's container and the app
directory, and kept ~/.config/laneward/.env and pgdata while saying so,
which is the behaviour the flag promises and the reason it is not --purge by
default.
What this does not establish¶
- A real Codex worker under systemd. Deliberately not attempted: it would have meant putting Codex credentials into a throwaway container. A real Codex worker has now run under the Windows Scheduled Task (notes); under systemd it is still the fixture-or-declared-agent story.
- Reboot and logout (S4.2). Linger is enabled in the container by construction, so nothing was learned about the case where it is not.
- A bare-metal or VM Linux host. Everything above is inside a privileged container on a Podman machine on Windows. The systemd user manager, the quadlet, the volume and the units are real; the kernel is shared with the host, and the two nesting fixes above would not be needed elsewhere.
Cleaned up¶
The container and its image were removed. Nothing was installed on the Podman
machine or on this Windows host, and laneward-postgres was not touched.