ferrflow validate and ferrflow doctor both detect a versionedFiles entry whose path does not
exist, and validate exits 1 for it. check and release skip that check entirely: they plan and
perform a bump against a file that is never written, and exit 0.
Reproduce
Monorepo config with a package-relative path instead of a repo-root-relative one, which is the easy
mistake to make since package.path is its own prefix:
[[package]]
name = "api"
path = "packages/api"
[[package.versioned_files]]
path = "Cargo.toml" # should be packages/api/Cargo.toml
format = "toml"
$ ferrflow validate
✗ Cargo.toml: versioned file "Cargo.toml" does not exist
$ echo $?
1
$ ferrflow check
● api 2.4.0 → 2.5.0 (minor, from tag api@v2.4.0)
$ echo $?
0
Note the missing over <file> suffix on the api line: every correctly configured package prints
over packages/sdk/pyproject.toml, api prints nothing. That is the only signal, and it is easy to
miss in a list of packages. When no tag exists yet, the same misconfiguration surfaces as
Version: unknown in ferrflow why, with no indication that a configured file is missing.
Impact
The release runs, tags are created and the changelog is written, but the version file is never
bumped. The repo ends up tagged at a version its manifest does not carry, which is exactly the
drift FerrFlow exists to prevent.
Suggested fix
Run the existence check that validate already implements at the start of check and release,
and fail with the same message. A missing versioned file is a configuration error, not something to
silently work around.
Reproduced with ferrflow 7.13.1 (ferrflow-windows-x64).
ferrflow validateandferrflow doctorboth detect aversionedFilesentry whose path does notexist, and
validateexits 1 for it.checkandreleaseskip that check entirely: they plan andperform a bump against a file that is never written, and exit 0.
Reproduce
Monorepo config with a package-relative path instead of a repo-root-relative one, which is the easy
mistake to make since
package.pathis its own prefix:Note the missing
over <file>suffix on theapiline: every correctly configured package printsover packages/sdk/pyproject.toml,apiprints nothing. That is the only signal, and it is easy tomiss in a list of packages. When no tag exists yet, the same misconfiguration surfaces as
Version: unknowninferrflow why, with no indication that a configured file is missing.Impact
The release runs, tags are created and the changelog is written, but the version file is never
bumped. The repo ends up tagged at a version its manifest does not carry, which is exactly the
drift FerrFlow exists to prevent.
Suggested fix
Run the existence check that
validatealready implements at the start ofcheckandrelease,and fail with the same message. A missing versioned file is a configuration error, not something to
silently work around.
Reproduced with ferrflow 7.13.1 (
ferrflow-windows-x64).