Where does your repo drift most: local, CI, containers, or remote?
by•
If you've been following along and would like to support us we would appreciate a star of GitHub: https://github.com/ota-run/ota
A repo can look fine until it is run in a different environment. Native setup, Docker, CI, and remote execution often carry different assumptions, and most teams only discover the mismatch when something breaks.
Ota makes those execution paths explicit so a repo can declare how it should be prepared, verified, and run in each environment.
Where does drift cost your team the most today: local setup, CI, containers, or remote environments?
That version is a bit better because it asks about pain, not just category.
113 views


Replies
@Adamma honestly the lockfile is the one I actually trust. Node/runtime version I've been burned by more than once because someone updates a .nvmrc locally and forgets to touch the Dockerfile, and it doesn't blow up until CI or a teammate's machine hits it. The undeclared-Postgres-version problem you mentioned is exactly the kind of thing that's bitten us too, someone installed it manually years ago and nobody wrote it down anywhere. Does ota detect flag "no version pinned anywhere" as its own warning category, separate from an actual mismatch?
Ota
@omri_ben_shoham1 Not yet as a distinct no version pinned anywhere finding. Ota can flag a mismatch when two repo-owned sources disagree, but it does not (and should not) invent an expected Postgres version from a machine that happened to have one installed. If the repository itself declares a required service or runtime but uses a floating source, Ota can surface that specific repo-owned ambiguity. Otherwise, the absence of a version declaration is not a finding: it is missing intent that the team must intentionally choose to declare. In the Postgres cases you have seen, is the service referenced anywhere repo-owned, such as Compose, CI, a devcontainer, or setup scripts, or is it purely tribal/local-machine state?
Ota
I'll get things started: in my experience, the sneakiest drift happens between local and CI because both feel like they're running the same thing, right up until they're not. Local passes, CI fails, and the next hour disappears into environment archaeology. Which gap has cost you the most time?