| Code is available immediately after a small atomic change | A successful merge to main triggers an automated deploy or publish path |
| Feature flags replace deploy-time release decisions | Runtime flags, kill switches, routing rules, capability gates, or remote config control exposure |
| No long-lived branches | main is the only long-lived branch; short-lived branches are allowed only as review vehicles |
| Code under use is protected from unsafe edits | Required tests, review, ownership, branch protection, static checks, compatibility checks, and staged rollout |
| Function/type versioning | Backward-compatible APIs, versioned interfaces, adapters, branch-by-abstraction, compatibility tests |
| Database versioning | Expand-contract migrations, dual-read/write, non-destructive deploy steps, migration verification |
| Production traces drive development | Correlated request logs, traces, replay fixtures, sampled production scenarios, regression tests |
| Rollback is mostly behavioral | Turn flags off, kill routes, disable capabilities, or roll back deployment only for infrastructure/runtime failures |
| AI can generate more PRs than humans can review | AI PR intake labels, WIP limits, ownership, merge queues, CODEOWNERS, and low-context PR rejection rules |
| Agents need bounded autonomy | Scope challenge, planning artifacts, vertical slices, test-first implementation, independent design/review passes, and primary-agent merge judgment |