Production acceptance record
Use this record for one exact staging or production deployment. It is evidence, not a substitute for the production operator runbook. Copy the template outside the repository for each deployment and retain only secret-free output. Never record credentials, tokens, reset URLs, TOTP or recovery codes, session identifiers, SMTP passwords, private Media paths, or customer data.
Deployment identity
- Environment name:
- Acceptance date and UTC time:
- Operator:
- Exact Git commit or verified artifact SHA-256:
- Release/version reported by
php8.5 bin/zoosper version: - Canonical origin, without credentials, query, or fragment:
- Selected cache backend:
file/redis - Database engine and version:
- Rollback code reference recorded:
yes/no - Database backup recorded:
yes/no - Uploaded-Media rollback point recorded:
yes/no
A record is accepted only when every applicable check is PASS, every non-applicable check has an explicit deployment-specific reason, and no secret-bearing evidence is attached.
Automated and configuration checks
Record the command, exit status, and a bounded secret-free result. Do not paste environment values.
- [ ]
PASSLocked production Composer install completed from the committed lock file. - [ ]
PASScomposer validate --strict. - [ ]
PASScomposer check-platform-reqs --no-dev. - [ ]
PASScomposer audit --locked --no-interaction. - [ ]
PASSphp8.5 bin/zoosper security:generate-secrets --checkwithout disclosed values. - [ ]
PASSphp8.5 bin/zoosper module:manifest:check. - [ ]
PASSphp8.5 bin/zoosper schema:foreign-keys:status --format=json; requireadd=0,mismatch=0, andsqlite_rebuild_required=0. - [ ]
PASSphp8.5 bin/zoosper media:queue:status --format=json; record only aggregate queue telemetry. - [ ]
PASSphp8.5 bin/zoosper release:check. - [ ]
PASSApplication and exception logs inspected without copying secrets into this record.
Public origin, proxy, session, and webroot
- [ ]
PASSCanonical HTTPS redirect andAPP_URLbehaviour verified. - [ ]
PASSDirect requests cannot use untrusted forwarded headers to spoof HTTPS or client identity. - [ ]
PASSRequests through configured trusted proxies resolve HTTPS and client identity correctly. - [ ]
PASSSession cookie is Secure and uses the intended SameSite policy. - [ ]
PASSHSTS appears on HTTPS and is absent from plain HTTP responses before redirect. - [ ]
PASSWeb-server document root ispublic/. - [ ]
PASSRepository root,.env, Git metadata, Composer metadata,app/,packages/,config/,storage/, andvar/are not publicly retrievable. - [ ]
PASSOriginal Media remains outsidepublic/; only controlled validated copies are publicly served.
Cache and SMTP
- [ ]
PASSSelected cache backend works in the target environment. - [ ]
PASSIf Redis is selected, authentication, dedicated database/prefix, network restriction, and a dedicated strong cache encryption key were verified without recording values. - [ ]
N/AIf file cache is selected, Redis checks are explicitly not applicable. - [ ]
PASSRedacted SMTP configuration has no warnings. - [ ]
PASSSMTP endpoint is reachable from the application host. - [ ]
PASSControlled password-reset delivery reached the test administrator. - [ ]
PASSDelivered reset link uses the exact canonicalAPP_URLand configured Admin base path. - [ ]
PASSReset credential was single-use and was not copied into logs or this record.
Enforcing CSP browser journey
Confirm the response uses Content-Security-Policy, not report-only mode. Record browser/version and a secret-free pass/fail summary. Any blocked required script, style, image, font, or connection is a failure.
- [ ]
PASSLogin, logout, TOTP, and recovery-code authentication. - [ ]
PASSPassword-reset request and completion. - [ ]
PASSDashboard and personalisation. - [ ]
PASSSettings, Users, Roles, and permission-sensitive actions. - [ ]
PASSPages, revisions, preview, publication, and lifecycle actions. - [ ]
PASSMenus and frontend navigation. - [ ]
PASSMedia library, upload, picker, delivery, and lifecycle actions. - [ ]
PASSAdmin Grid filters, columns, saved views, pagination, exports, and destructive confirmations. - [ ]
PASSBrowser console contains no deployment-blocking CSP violations.
Database, workers, and scheduled maintenance
- [ ]
PASSTarget MySQL/MariaDB migration completed against a recorded backup and was not blindly retried after failure. - [ ]
PASSPost-migration foreign-key status is fully reconciled. - [ ]
PASSQueue worker is supervised and alerts on a non-zero batch exit. - [ ]
PASSQueue depth, retries, failures, oldest-pending age, queue wait, and processing latency are within deployment-owned thresholds. - [ ]
PASSrate-limit:pruneis scheduled with overlap protection. - [ ]
PASSScheduler and queue-worker ownership, restart policy, logs, and alert destination are recorded in the deployment platform.
Post-deployment smoke
- [ ]
PASSAPI health and authenticated API access. - [ ]
PASSHome, About, Page rendering, Menus, and Media delivery. - [ ]
PASSAdmin login/logout and authenticated Admin smoke journey. - [ ]
PASSTOTP, recovery code, and password-reset delivery/completion. - [ ]
PASSManifest, foreign-key, Media queue, and release checks remain green after deployment. - [ ]
PASSPrevious code, database backup, and Media rollback point remain available until acceptance.
Exceptions and decision
For each exception, record the check, observed fact, owner, disposition, and linked secret-free evidence. Do not mark an unverified item as passed.
- Exceptions: none / listed below
- Acceptance decision:
ACCEPTED/REJECTED - Decision owner:
- Decision UTC time:
- Follow-up work:
C4.2 can be marked complete only after this record is filled from the target environment and independently reviewed. Repository-local tests and static contracts do not replace target-environment evidence.