# Development loop qualification These are acceptance commands and historical results for the workstation loop. Start with the [developer guide](../development.md) for everyday use. Results below apply to the revisions and environments stated; they do not qualify subsequent changes to the shared infrastructure or deployment flow. See the [layout conversion checks](devbox-layout-conversion.md) and [Argo AAI checks](argo-aai.md) for the current consolidation work. ## Acceptance checks Use your own dev box with no active takeover and a clean application checkout. Install the browser dependencies once with `pnpm install --frozen-lockfile` and `pnpm exec playwright install chromium`, and trust its CA. Run each runtime you intend to support: ```sh uv run --project devops --frozen python dx/common/scripts/qualify_takeover.py \ --target dev-yourname --ssh your-vm-alias --runtime native --browser uv run --project devops --frozen python dx/common/scripts/qualify_takeover.py \ --target dev-yourname --runtime docker --browser ``` These checks temporarily edit and restore application files, repeat credential preparation, verify both frontends refresh without navigation, sign in through AAI as `alice`, check the retained catalogue and logout/session replay, then simulate connection loss, retry and hand back to Argo. Keep the checkout free from concurrent edits. Evidence is saved in the target's private workstation state. For an automated browser with an explicitly verified certificate public key, `--spki-file` accepts its Chromium SPKI pin instead of changing system trust. With the HTTPS SSH forward running, also exercise Git and LFS through the clone origin advertised by retained Themelio: ```sh METALLO_SSH=your-vm-alias uv run --project devops --frozen python dx/common/scripts/qualify_gitlab.py \ --target dev-yourname --git-origin themelio-compat ``` This creates and removes throwaway users, a private repository and LFS objects; it checks role restrictions, push/clone and an LFS checksum. The original `--git-origin gitlab` checks the provider directly. The Argo routes Application owns both origins and preserves `/api/` for the retained frontend. Legacy CPU execution remains deferred until the new backend provides it. These checks also leave operator project/repository journeys and GitLab's immediate post-logout token rejection as separately reported acceptance items. ## Readiness Cold and seeded installation passed on clean Debian 12 AMD64 VMs with 16 vCPU, 32 GiB RAM, an 80 GiB root disk and a separate 100 GiB data disk. Fresh-VM checks also cover network isolation, Tilt and the Docker platform-web browser flow. On 15 October 2026, the complete fresh-VM runtime qualification passed from a WSL2 workstation at `51c9fd3ae`: Tilt automatic selection, reload and return; Docker platform-web takeover with the browser, session, realtime and logout scenario; Docker and native retained-web takeover with Alice's AAI login to retained Themelio, GitLab and Waldur; and the native Go/Python loop with partial hand-back. Afterwards all seven Applications were Synced/Healthy at that commit with no lease. WSL2 with 2 vCPU and about 6 GiB swapped heavily during the retained web's first compilation; the run passed with 9 GiB. On 15 October 2026, macOS ARM64 qualification passed against the rebuilt Debian dev box in both native and Docker modes: all seven services reloaded after repeated preparation, both frontends refreshed without navigation, retained AAI login/catalogue/logout and session replay passed, and connection-loss shutdown, retry and Argo hand-back passed. Git/LFS through the retained origin passed its permission and checksum checks. Mac deployment through the Linux SSH runner also passed with local Docker calls blocked. Minikube, reboot recovery and human UAT remain separate checks. Legacy CPU execution is deferred, and immediate GitLab token rejection after logout remains unqualified. Review and merge precede wider adoption. On 16 October 2026, Colima 0.10.3 with Docker Engine 29.5.2 on macOS ARM64 passed full Telepresence takeover with Docker Desktop stopped. The profile used 8 CPUs, 12 GiB RAM, a 50 GiB disk and home-directory sharing. All seven services passed reload and repeated preparation; both frontends refreshed without navigation; retained AAI login, authenticated catalogue, secure cookies, logout and session replay passed. Connection-loss shutdown, retry and Argo hand-back passed. All seven remote Applications finished Synced/Healthy with no lease or local takeover containers remaining. The run used this workstation tooling with application source matching the dev box's delivered commit `0e9ee83fbdff`. Taking over Metallo from a checkout with different context migrations failed its database checksum check; those changes require a committed delivery. Host disk exhaustion also interrupted an earlier run; unused Docker images and build caches were cleared before the successful run. Check host free space as well as the VM's disk capacity. Separate socket checks passed read-only source mounts and access to loopback through both `host.docker.internal` and `host-gateway`.