# SD Qualifier Physical-Card Status Deployment Evidence

Status: complete
Result: production web deployment verified
Type: evidence
Updated: 2026-08-06
Next Action: retain the compact physical-card status surface while Controller A continues
Campaign: 006-start-clean-contract-bound-sd-qualification-campaign
Parent: work/tickets/ticket-show-compact-physical-card-qualification-status.md

## Outcome

The authenticated dashboard now shows compact top-of-page links for F1-A1 and
F1-B1. Each opens a physical-card qualification status page that aggregates
only exact `CardSample`/`CampaignSample` relationships. Seven existing KEXIN
campaigns appear oldest-to-newest as native accordions; only the current phase
is expanded by default, and each phase links to its full campaign page.

Card-specific state is separated from shared campaign-plan state. F1-A1 shows
its active Controller A run. F1-B1 remains `PENDING`, shows `INTAKE` and
`Complete intake`, and does not inherit F1-A1's checkpoint or active-run text.
Shared execution plans remain available in a separately labeled nested
accordion.

## Source and image identity

- Repository: `PC-Redemption/sd-qualification`
- Feature commits:
  - `14e9ed266aeeb456e127b84e256c9a0fdae9cdcc`
  - `5ec68ee9f00a279d5a86580d8786aa38c22a7306`
- Pull request: `https://github.com/PC-Redemption/sd-qualification/pull/36`
- Merge commit: `97abe0e181b5885e68fc08bf77ff5fed4cf91571`
- Deployed tag: `srv-rpi00-sd-qualifier:card-status-5ec68ee`
- Deployed image:
  `sha256:f96598811aa09f3f243f594366b07357c90fadcb4d782eafecb9468188ea0d58`
- Container start: `2026-08-06T15:44:48.113224079Z`

No migration or backfill was required. The view derives chronological history
from existing immutable relationships and does not copy or rewrite campaigns,
runs, identities, or evidence.

## Automated validation

- Focused card-status tests: 4/4 passed after the card-isolation correction.
- Complete view test class: 21/21 passed.
- Exact final Linux image: 243/243 tests passed in 54.168 seconds.
- Django system check: no issues.

## MCP Playwright review

Desktop dashboard at 1440 × 1000:

- two active-card links were present near the top;
- F1-A1 displayed `RUNNING`, one open run, and seven open phases;
- F1-B1 displayed `PENDING`, zero open runs, and seven open phases;
- the active-card section was 221 pixels high;
- horizontal overflow was zero.

F1-A1 status page:

- seven campaigns appeared oldest-to-newest;
- one outer accordion and zero nested plan accordions opened by default;
- opening the oldest phase left its full-campaign link available;
- the current phase showed the exact F1-A1 run and checkpoint;
- desktop and 390 × 844 mobile layouts had zero horizontal overflow.

F1-B1 isolation verification on the final image:

- overall and current phase status were `PENDING`;
- the current assignment showed Controller B, `INTAKE`, and `Complete intake`;
- no active-run callout or F1-A1 checkpoint was rendered.

## Runtime continuity

Deployment recreated only the web service with `--no-deps` during a fresh
observation boundary. The command and notification workers remained running on
their qualified image
`sha256:4237e644eec42d742be75942a9ff2f8013812ebc309e0f416f306b70aefbd9c7`.
All four current Controller A campaign systemd services remained active.

Post-deployment verification showed 27 completed runs and one active run at S4
BEFORE 44640. No observer, programmer, scrub, HPT2-command, or initialization
tool container was active during the final continuity check.
