Context
Athena runs 10 containers under DSM Container Manager. Exactly one of them — netbootxyz-nas — is current, sanctioned, digest-pinned, and bound to a specific interface. The other nine are residue from migrations and benchmarks that already completed.
Live inventory, 2026-08-23:
| Container |
State |
Image |
Ports |
netbootxyz-nas-netbootxyz-1 |
Up 4 days (healthy) |
netbootxyz:0.7.6-nbxyz24 (digest-pinned) |
10.32.20.5:{69/udp,3000,8080} |
vss |
Exited (0) 15h |
visionect-server-v3:7.6.5 |
— |
pdb |
Up 6 weeks |
postgres:latest |
5432 (internal) |
visionect-redis-1 |
Up 6 weeks |
redis |
6379 (internal) |
newsprint-app |
Up 6 weeks |
kelchm/newsprint:latest |
0.0.0.0:8090 |
dockerge-dockge-1 |
Up 6 weeks (healthy) |
louislam/dockge:1 |
0.0.0.0:55001 |
iperf3-{a,b,c} |
Exited (1) 4 months |
networkstatic/iperf3:latest |
— |
nginx-test-nginx-1 |
Exited (0) 4 months |
nginx:latest |
— |
docker system df: images 4.516 GB total with 2.052 GB (45%) reclaimable; /volume1/docker/dockerge is 2.1 GB.
Every leftover uses a mutable :latest tag, and newsprint-app and dockge bind 0.0.0.0 — every NAS interface on every VLAN — where netbootxyz correctly binds 10.32.20.5 only.
The retention gate — do not skip
docs/runbooks/visionect-migration.md requires keeping the stopped VSS, PostgreSQL, Redis, anonymous volumes, and final dump through at least 2026-08-30 and one successful restore drill. They are the rollback target for the 2026-08-23 cutover.
All seven anonymous Docker volumes belong to this group — six to vss, one to visionect-redis-1. docker volume prune before the gate passes destroys the rollback path. docker system df reports them as active with 0 B reclaimable, which is correct and must not be read as "safe to clear."
Work
Phase 1 — independent of the gate
Phase 2 — after 2026-08-30 and a successful restore drill
Phase 3 — Dockge
Phase 4 — images
Acceptance criteria
Related
Context
Athena runs 10 containers under DSM Container Manager. Exactly one of them —
netbootxyz-nas— is current, sanctioned, digest-pinned, and bound to a specific interface. The other nine are residue from migrations and benchmarks that already completed.Live inventory, 2026-08-23:
netbootxyz-nas-netbootxyz-1netbootxyz:0.7.6-nbxyz24(digest-pinned)10.32.20.5:{69/udp,3000,8080}vssvisionect-server-v3:7.6.5pdbpostgres:latestvisionect-redis-1redisnewsprint-appkelchm/newsprint:latest0.0.0.0:8090dockerge-dockge-1louislam/dockge:10.0.0.0:55001iperf3-{a,b,c}networkstatic/iperf3:latestnginx-test-nginx-1nginx:latestdocker system df: images 4.516 GB total with 2.052 GB (45%) reclaimable;/volume1/docker/dockergeis 2.1 GB.Every leftover uses a mutable
:latesttag, andnewsprint-appanddockgebind0.0.0.0— every NAS interface on every VLAN — wherenetbootxyzcorrectly binds10.32.20.5only.The retention gate — do not skip
docs/runbooks/visionect-migration.mdrequires keeping the stopped VSS, PostgreSQL, Redis, anonymous volumes, and final dump through at least 2026-08-30 and one successful restore drill. They are the rollback target for the 2026-08-23 cutover.All seven anonymous Docker volumes belong to this group — six to
vss, one tovisionect-redis-1.docker volume prunebefore the gate passes destroys the rollback path.docker system dfreports them as active with 0 B reclaimable, which is correct and must not be read as "safe to clear."Work
Phase 1 — independent of the gate
iperf3-{a,b,c}and theiperf3-testproject (storage-benchmark residue;docs/storage-benchmarks.mdholds the results)nginx-test-nginx-1and thenginx-testprojecthttp://vss.home.kelch.io:8090, per the cutover runbook's post-cutover listnewsprint-app. Broadsheet has servedbroadsheet.home.kelch.ioin-cluster for 48 days; the cutover runbook records that the migration deliberately did not preserve port 8090Phase 2 — after 2026-08-30 and a successful restore drill
vss,pdb,visionect-redis-1, thevisionectproject, and their seven anonymous volumes/volume1/docker/dockerge/visionect/migration/Phase 3 — Dockge
iperf3-test,newsprint,nginx-test, andvisionect. Removedockerge-dockge-1and/volume1/docker/dockerge/0.0.0.0:55001exposure with itPhase 4 — images
kelchm/newsprintimages and the now-unreferenced:latesttagsghcr.io/netbootxyz/netbootxyzentry. It shows as<none>because digest-pinned pulls are stored untagged, and it is the image the running container usesAcceptance criteria
docker ps -aon Athena lists onlynetbootxyz-nas-netbootxyz-1/volume1/docker/contains onlynetbootxyz/0.0.0.0docs/runbooks/visionect-migration.mdrecords the rollback-retirement date its post-cutover section asks forRelated