"""What this build IS — stamped at image build time, not configurable. Deliberately separate from `config.py`. Those are operator settings, read from the environment and meant to be changed. These describe the artifact itself and are baked in by CI (the `FC_VERSION` / `FC_CHANNEL` build args); an operator setting them by hand is not a supported thing to do, it is just how a value gets from the build into the running process. **Absent rather than empty when unknown.** A locally-built image has no version, and neither did any image predating the field — one spelling of "cannot say", which every reader already has to handle, instead of a second one to special-case (note #3127 §7). **Why this matters more than it used to.** Milestone 318 stopped publishing version image tags, so a running instance's self-report is now the *only* answer to "which build is this?" — there is no registry name left to check it against. A wrong value here has nothing to contradict it. That is why the UI renders `unknown` rather than a blank or a plausible default: an empty footer reads as "no version", which is a different and false claim. The channel lives BESIDE the version and is never folded into it (rule 149). A `-dev` suffix would be parsed by the extension's comparator as a segment worth 0, making every dev build compare equal to every other — issue #2993's exact failure. """ import os FC_VERSION = os.environ.get("FC_VERSION", "").strip() FC_CHANNEL = os.environ.get("FC_CHANNEL", "").strip()