# Campaign 005 SD Qualifier Gate 2 checkpoint

Status: complete
Result: Gate 2 GO; software, release, deployment, plan, bundle, backup, rollback, restart, performance, and operator-authenticated Playwright acceptance gates pass
Type: evidence
Updated: 2026-08-17
Next Action: close Campaign 005 and advance the owner queue to Campaign 006
Campaign: 005-complete-sd-qualifier-gate2-release-plan-acceptance

## Quiescent baseline

- The original Gate 2 expectation was 11 terminal campaigns. Current workspace
  truth contains those 11 plus two later Campaign 003 proof campaigns. After
  supported closeout of the idle completed proof, all 13 campaigns are
  terminal `ABORTED`; no history was reopened, deleted, relabeled, or credited.
- Live counts after deployment remain: 13 terminal campaigns, 385 terminal
  runs, 10 terminal coordinator tasks, zero commands, 755 terminal HPT2 command
  operations, eight terminal scrubs, and four terminal initializations.
- Pre-mutation backup
  `/backups/sd-qualifier-20260817T173630Z.dump` is restore-verified, 4,034,462
  bytes, SHA-256
  `84d3c7d8816f55df78fef1364de2b2636ff090a381e02e5b6ef08759e8251661`.

## Reviewed release

| Identity | Value |
| --- | --- |
| SDQ source commit | `2e15e1592e8bd3917f322f206c3256e9f98d9257` |
| Release identity | `gate2-contract-plan-2e15e15` |
| Image ID | `sha256:746287c81cd178d5dd0dcb49a13b59e90df98485bf2cf0e1fe0fd674bb762ce5` |
| Compose override SHA-256 | `5391c0b9935229e84b38e45239db88bf1e0595778f28f7cd4f43001ce38e02db` |
| SBOM SHA-256 | `610c47a3c1d457ab498413b143fac4720b31bd5fd4d67771f77f9f64b2b74de3` |
| Release manifest SHA-256 | `99af08323d905861854e69c341d153077847c0f9b9382158a020d021f84861aa` |
| Release `SHA256SUMS` SHA-256 | `faa187b3b976615dd727dfe59377414246e95812d665409b8e4bc6827d7b2ff9` |

The offline release package is at
`/home/jong/dev/sdq-gate2-release-20260817/release-media/gate2-contract-plan-2e15e15`.
Every entry in `SHA256SUMS`, including the 688,200,192-byte image archive,
passes readback verification. All five application services use the same image
and exact release labels. The host task runner uses the same source worktree
and Compose override.

## Validation and immutable plan

- Django system check and migration-drift check pass.
- Full Django suite passes 406/406 in 71.671 seconds.
- Packaging, network-policy, contract, and runner suite passes 53/53.
- The immutable active catalog is `card-family-initial` revision 2 for
  `CARD_FAMILY_INITIAL`, bound to `SMI-SDQ-CONTRACT-V1`.
- Contract SHA-256 is
  `865b478e21ef97f5b0b11a4b7336257e1ad68aa317276348de56e068ff11813e`;
  plan-definition SHA-256 is
  `5a1608477a752148e2dccbfbebb31ad4911e1aa876439bd8861b941117bf55b6`.
- The definition has all ten ordered contract phases, 70 bounded leaves,
  independent A/B role frontiers, at most one replacement attempt, exact
  evidence admission, and fail-closed aggregation. Fixtures cover pass, fail,
  blocked, inconclusive, exhausted budget, duplicate/idempotent registration,
  evidence reuse, A/B parity, final review, restart, pause/resume, concurrency,
  and no command replay through focused and regression suites.

## Firmware bundle admission

- Imported and reread-verified bundle:
  `smi-00-05-00-cae69f7c7943-75f108d5e2e7-release`.
- Canonical offline-manifest SHA-256:
  `3b3470483906ec521df4814dffdcb90e9754ca9701f36f37c6210fda700bfe12`.
- Source commit: `b6aadb53fbdca20d9858bd8bb463b3b504e18284`.
- S-record SHA-256:
  `75f108d5e2e77031e107b2d71852545c9fd246b128085ccb7d4f6e256bc37462`.
- Profile SHA-256:
  `b0d5247f4c2de03b02ab57c5748920a606d4b37cba61b82aeb065777f10fa0e8`.
- Admission scope is campaign selection. Its immutable record explicitly keeps
  controller access, controller programming, and physical-media authority
  false. No controller was accessed or programmed.

## Live verification and recovery

- Migration `qualification.0024_qualification_plan_catalog` applied cleanly.
- Health is HTTP 200 `status=ok`, `required_now_ready=true`, database, storage,
  clock, and workers true. Live/state-changing gates remain safely false.
- A full application/runner restart left counts unchanged at 10 coordinator
  tasks, zero commands, 755 HPT2 operations, eight scrubs, and four
  initializations, proving no replay or duplicate execution.
- Authenticated server-side UI checks pass: dashboard and campaign detail HTTP
  200; the dashboard projects the plan and contract; the normal campaign form
  presents the exact admitted bundle and readable accepted plan.
- Final five-sample timing: warm dashboard 0.0559–0.0742 seconds with 0.3971
  second cold maximum; campaign qualification detail 0.0998–0.1104 seconds
  with 0.1380 second cold maximum.
- Post-admission backup
  `/backups/sd-qualifier-20260817T180050Z.dump` is restore-verified, 4,047,422
  bytes, SHA-256
  `120735d709cf16d56644c69dc69d2738acdcd6eb67301abad3946c0be397c5ac`.
- Rollback is retained and identity-verified: prior image
  `sha256:e41f65af64f7e3a45b83654a2a24031be95d4c58a1deb7178235c1c5134ce2f9`,
  source `e8d0d073e1b7f9a02a32acb6c3632a9b500aa2db`, prior Compose override,
  both protected supervisor-environment snapshots, and the restore-verified
  pre-mutation backup.

## Operator-authenticated Playwright acceptance

- The operator signed in through the production Front Door as `admin` in the
  existing Playwright session. The authenticated dashboard rendered `SD
  Qualifier`, `APPLIANCE · LIVE DISABLED`, 0 in-process campaigns, and 13
  history campaigns.
- The normal campaign-detail page rendered the exact corrected bundle
  `smi-00-05-00-cae69f7c7943-75f108d5e2e7-release`, canonical manifest prefix
  `3b3470483906`, and `Campaign selection admitted` state.
- The detail page rendered `CARD_FAMILY_INITIAL`, `card-family-initial`
  revision 2, `SMI-SDQ-CONTRACT-V1`, contract prefix `865b478e21ef`, and plan
  prefix `5a1608477a75`; it also showed both controller identities ready while
  live access remained disabled.
- The normal campaign-create form offered exactly one admitted firmware bundle:
  `smi-00-05-00-cae69f7c7943-75f108d5e2e7-release (3b3470483906)`, and exactly
  one immutable plan: `Contract-bound initial A/B card-family qualification ·
  SMI-SDQ-CONTRACT-V1 · card-family-initial revision 2`.
- There were no application console errors. The only browser-console error
  remained the nonfunctional `/favicon.ico` 404.

Gate 2 disposition: `GO`. Campaign 005 has direct evidence for every explicit
completion criterion and can close.
