One artifact. Everywhere.
The most expensive bugs in our industry are the ones that only happen in production. MIDDAG's answer is structural: the artifact running on your laptop is the same artifact running on production.
Not "similar." The same.
Why it matters
A developer who can reproduce a production bug on their own machine is a developer who can fix it before the next deploy. A developer who cannot reproduce it is a developer who is guessing. We do not want our team guessing about your platform.
So the development environment and the production environment share a parent build. The differences are additive — development adds tools the developer needs; it does not replace anything from production. When local and production diverge, that divergence is logged, named, and addressed before the next release. It is never tolerated as "the way it works."
What this enables
- Bugs reproduce locally. Without setup. Without "it works for me." Without a long support thread.
- Onboarding is hours, not days. A new developer pulls the repository and runs one command.
- Production stays clean. No developer tools, no build helpers, no debugger, no surprises. The deployed artifact only contains what your application actually needs.
- Secrets never live inside an artifact. Credentials are injected at build time and discarded; what ships carries no trace.