Regression Case Files
Regression Case FileIndependent OSS replay

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 pattern was present.Conan reported it missing.
Baseline2.30.0Jun 29, 2026
analyzed change
Released2.31.0Jul 23, 2026
1 release affected
Restored2.31.1Jul 24, 2026
The case file

The anatomy of a regression

  1. 01 Project
  2. 02 Regression & fix
  3. 03 Early replay
The project

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 repository
The regression & fix

Valid 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
Before Conan 2.31.0 a present no-op pattern succeeded, while 2.31.0 treated the unchanged file as evidence that the pattern was missing.
The new predicate measured content difference instead of pattern presence.
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 product finding titled replace_in_file misreports no-op replace as not-found, classified as a Regression.
The actual Regression finding from the Early product.
The Early replay

Early found the regression.

1Regression
8Expected changes
Early verdict · 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.

Primary evidence

Follow the record.

Independent replay of a public Conan release. Conan and JFrog did not participate.

Explore more Case Files
Your case file

Remember your last regression?

Let Early trace it