# SD Qualifier campaign workspace first-pass deployment — 2026-08-12

## Scope contract

- Outcome: make `/sd-qualifier/` a campaign-oriented operator application suitable for owner evaluation.
- Scope: Django web views, templates, CSS, and view/responsive tests only.
- Git: commit and push the application branch.
- Deployment: replace only the `web` container on `srv-rpi00.local`.
- Validation: focused tests plus desktop/mobile operator-path smoke checks.
- Out of scope: firmware, controller commands, media actions, database migrations, worker restarts, and final release hardening.

## Delivered state

- Application branch: `codex/campaign-workspace-ui-20260812`.
- Source commit: `7a31b3ea3ddf1a33122a84ddf649bdeda93c032f`.
- Deployed image: `srv-rpi00-sd-qualifier:campaign-workspace-ui-7a31b3e`.
- Image ID: `sha256:c194d97a51733233943f5192fb8a3297b52bfc965506df01bd74a2bc4d0c7928`.
- The landing page presents campaigns in process, history, and a new-campaign entry point.
- Campaign pages use the common header/footer/left-navigation/right-content shell.
- Campaign pages present authoritative status, completed/total steps, current step, ETA or withheld reason, a persistent phase rail, and Overview, Card & setup, Qualification, Results, and Activity sections.
- Detailed plan and historical run evidence remain available through expandable sections without dominating the default page.

## Focused verification

- The final CSS-only correction passed both responsive CSS tests in the exact ARM64 image.
- Earlier application candidate `2cf9c0d` passed the complete `355/355` test suite before the final containment-only CSS change.
- Production web health reports `healthy` on the final image.
- Desktop Playwright smoke verification confirmed campaign cards, current blocked-state warning, history/new-campaign entry points, and shared shell.
- Mobile Playwright verification at 390 CSS pixels measured a 375-pixel document, shell, and navigation pane; the content pane was 343 pixels with no document-level horizontal overflow. Long navigation and campaign tabs scroll within their own strips.
- Playwright reported zero browser console errors and no failed dynamic requests during the smoke path.

## Continuity and safety

Only `sd-qualifier-web-1` was recreated. Command worker, notification worker,
campaign coordinator, and qualification watchdog retained their original
container IDs and start times. No controller action, physical media action,
database migration, or firmware change was performed. The live campaign's
supervisor-blocked condition remains visible and its completion forecast is
withheld rather than inferred.

## Handoff

This is an owner-evaluation first pass, not a final hardened release. Further
UI changes should be opened as explicitly scoped campaigns. Immutable release
packaging and complete regression should be reserved for an approved release
candidate.
