Operations

GA readiness

Groundwork before calling Externa GA (post-beta): security walkthrough, light performance smoke, and support/upgrade expectations.

Security checklist (staging pass)

Walk Security checklist and Threat model against a staging deploy before GA:

AreaExpectation
APP_DEBUGfalse in production
APP_KEYUnique; never shared across envs
Headers / HTTPSPrefer TLS; TRUSTED_PROXIES when behind a proxy
File downloadsAuthZ on private disks; denylist for dangerous uploads
Public CMS APIKeys + origin allowlist; no unintended public role grants
GraphQLDepth / complexity limits as documented
AI toolsPermission gates (ChecksAiPermissions) on mutating tools

Record findings in the milestone issue or fix before GA cut. Host reporting: repo SECURITY.md.

Performance smoke

Not a full load test. On a reference box (Compose prod or comparable VPS):

  1. Login
  2. List collections; open one item
  3. Public CMS API list + show (Bruno or curl)
  4. Optional GraphQL introspection / one query

Note rough p95 latency for those paths. Flag obvious N+1 or filter costs (especially MySQL vs Postgres) if seen. Optional helper: scripts/perf-smoke.sh in externa-core when present.

Support window (beta → GA)

TopicExpectation
Upgrade pathFollow Upgrade; backup first (Backup)
InstallPrefer Packagist create-project once published; Docker / Herd remain supported
DatabasesSupported databases — Postgres recommended
IssuesGitHub Issues
Pre-1.0Breaking changes may still appear in beta notes; after 1.0.0, Public API follows API 1.x compatibility

Evidence for this milestone

Beta.3 ships the Packagist/docs/upgrade/backup/security-CI groundwork. GA cut (1.0.0) still requires a fresh staging checklist pass with dated notes on the GA issue.

Previous
Security checklist