# Admin Bootstrap Closure Evidence Generated at: `2026-03-27 17:39:14 +08:00` ## Scope This evidence package covers the first-admin bootstrap closure for the current repository state: - public backend endpoint: `POST /api/v1/auth/bootstrap-admin` - public frontend route: `/bootstrap-admin` - login/register first-run entry points - supported-browser validation for `首次管理员初始化 -> 进入后台 -> 登出` ## Implemented closure - Backend: - added one-time admin bootstrap service flow guarded by `GET /api/v1/auth/capabilities -> admin_bootstrap_required` - bootstrap now creates the first active admin, binds the `admin` role, issues a real session, and closes the bootstrap window afterward - Frontend: - added `/bootstrap-admin` page - added login/register entry points when bootstrap is still required - added post-bootstrap auto-login into `/dashboard` - E2E: - `frontend/admin/scripts/run-playwright-auth-e2e.ps1` no longer depends on startup-injected admin credentials - the Playwright CDP suite now validates real bootstrap creation before the rest of the admin workflow scenarios ## Verification executed ```powershell go test ./... -count=1 go build ./cmd/server cd D:\project\frontend\admin npm.cmd run lint npm.cmd run test:run npm.cmd run build powershell -ExecutionPolicy Bypass -File .\scripts\run-playwright-auth-e2e.ps1 ``` ## Latest supported-browser result The latest real-browser run completed with: - `PASS admin-bootstrap` - `PASS public-registration` - `PASS email-activation` - `PASS login-surface` - `PASS auth-workflow` - `PASS responsive-login` - `PASS desktop-mobile-navigation` - `Playwright CDP E2E completed successfully` ## Real boundary - This closes the product loop for first-admin initialization in the current supported browser-validation environment. - It does not change the previously stated external boundaries: - no live third-party OAuth provider evidence yet - no live external SMTP provider deliverability evidence yet - no external production delivery/governance evidence beyond the local auditable package already formed in-repo