The pattern was present. The build still failed.
Conan, the open-source C/C++ package manager maintained by JFrog, could reject a valid no-op file replacement as missing in 2.31.0. One release was affected before 2.31.1 restored the helper's documented behavior.
The anatomy of a regression
- 01 Project
- 02 Regression & fix
- 03 Early replay
The open-source package manager for C and C++.
Conan is a JFrog-maintained open-source package manager for C and C++ projects. Its Python client manages recipes, dependency graphs, binary packages, and build integrations across platforms.
Project repositoryValid no-op replacements could stop builds.
replace_in_file() started treating unchanged output as proof that no pattern matched. A valid no-op substitution left the file unchanged, so strict mode raised a false not-found exception. Conan 2.31.1 restored separate foundness checks: literal search presence and regular expression match count.
Conan recipe → replace_in_file() → strict foundness check → build result- Compared
- 2.30.0 → 2.31.0
- Affected
- 2.31.0–2.31.0 · 1 release
- Public report
- User · ~19 hours after release
- Fixed
- 2.31.1 · ~20 hours later

Early found the regression.
“replace_in_file misreports no-op replace as not-found”
Early traced the false build failure to the changed foundness predicate and proposed the decisive no-op verification. The reproduction passed on 2.30.0, failed on 2.31.0, and passed again on 2.31.1.
Follow the record.
Independent replay of a public Conan release. Conan and JFrog did not participate.
Explore more Case Files