- Preserve the completed inert `le_app_codex` Phase 1 identity/workspace; do not rerun bootstrap artifacts.
- Select the Phase 2 package path separately; never perform a partial Arch upgrade or install the unmodified AUR extras package.
- Use a version-matched, checksum-pinned Moby launcher and a genuine per-user Docker service managed through root-controlled `user@1200.service`; never enable lingering or run `dockerd` from a system service with `User=le_app_codex`.
- Apply containment and the proposed `user-1200.slice` limits to the complete user manager; accept only `unix:///run/user/1200/docker.sock`.
- Create an IPv4-only root-owned namespace with default-deny egress and explicit host/LAN/WireGuard/metadata/private/loopback/bridge/SMTP/IPv6 denial after DNS and complete address inventories are approved.
- Prototype with schema push only on disposable development PostgreSQL.
- Replace push with committed deterministic migrations before authoritative rehearsal.
- Implement captured email recovery/verification and shared cookie/session contract.
## Milestone 3 — deterministic migration pipeline
- Implement separate reset, schema, import, and validation jobs.
- Import in dependency order with preserved IDs/timestamps/ownership and repaired sequences.
- Preserve password hashes for compatibility research without logging them.
- Copy referenced media and retain/classify all unreferenced files.
- Make imports restartable/idempotent or fail safely with explicit checkpoints.
## Milestone 4 — application compatibility and end-to-end behavior
- Move each Directus consumer behind shared Payload/compatibility clients.
- Rebuild Ko-fi, claims, memberships, flows, and backfill behavior.
- Implement API contract comparisons and the full fixture/snapshot test matrix.
- Validate password-hash transitional login and forced rehash strategy.
## Milestone 5 — full rehearsals and staging candidate
- Run repeated clean destination rehearsals.
- Verify counts, IDs, relationships, timestamps, ownership, permissions, files, checksums, API behavior, and browser workflows.
- Produce aggregate/non-personal validation summaries and unresolved product decisions.
- Build immutable release images and promote their digests to staging.
## Production boundary
Stop for explicit authorization before production deployment, reverse-proxy/DNS changes, production secrets or SMTP use, email to real users, final write freeze/cutover, Directus restart/retirement, production database mutation, or archive destruction.