Idea

A product's real behavior isn't in the repository alone: it depends on the deployed configuration

Info

Originally written in French. Translated by AI — the meaning has been preserved, not the prose.

Main idea

A repository that contains a feature flag doesn't contain one behavior, it contains two — and it doesn't say which one runs. Reading the code then establishes that both exist, never which one applies. When a Customer Success Manager asks "under what conditions does this workflow block for this customer?", the answer isn't in the files: it is in the state of the flag for the environment that customer works in.

Two answering regimes follow, and they are not worth the same. Without access to the environment, the answer stays conditional: if the flag is on, the behavior is this, otherwise it is different. With that access, it becomes an answer about the product as that particular customer experiences it, in their configuration, on that date.

The point is broader than the flag mechanism. A support or pre-sales question is almost never about the code in the abstract; it is about what a given account sees on screen. Designating the repository as the source of truth settles the disagreement between the code and outdated documentation, and leaves the gap between the code and a deployment entirely intact. The complete source of observed behavior is a pair: the repository, and the state of the environment running it.

Why it matters

This blocks a too-hasty reading of the shift toward the code. "The truth is what's running" designates the repository as long as you talk about the product in general, and stops designating it as soon as you talk about a customer — which is what most of the questions arriving every day are about.

It also sets what a salesperson has the right to promise. A behavior present in the repository isn't a behavior available to the prospect in front of them, and the difference between the two is read in a setting, not in the code.

Nuances and limits

The dependency on configuration only concerns part of the product. On most of the behavior, no switch is involved and the repository settles it alone; treating every answer as conditional on principle would amount to asserting nothing at all.

Access to the environment, moreover, isn't a purely technical question. Reading a customer's production configuration involves real data and confidentiality rules, and not every organization can open it to the same range of functions.

Finally, the state of a flag is dated like everything else. An answer that is exact when given stops being exact at the first change of setting, with no code modification to signal it.

Open questions

  • Who, in an organization, authorizes an answering system to read a customer's production configuration, and under what control?
  • How does a conditional answer get passed on to a customer without becoming unusable for whoever carries it into a meeting?