When FerrFlow encounters an error, it displays a code like error[E2001] with a link to this page. Use the code to find the cause and fix.
Configuration Errors
E1001: Config file not found
The config file specified via --config does not exist.
E1002: Failed to parse ferrflow.json
The ferrflow.json file contains invalid JSON (missing commas, trailing commas, unquoted keys).
E1003: Failed to parse ferrflow.json5
The ferrflow.json5 file contains invalid JSON5.
E1004: Failed to parse ferrflow.toml
The ferrflow.toml file contains invalid TOML.
E1005: Failed to serialize to TOML
Internal error when writing TOML output.
E1006: Failed to parse .ferrflow
The .ferrflow dotfile contains invalid JSON.
E1007: Failed to serialize .ferrflow
Internal error when writing the dotfile.
E1008: Failed to resolve path
A path in the config could not be resolved to an absolute path.
E1009: Failed to write temporary loader file
Could not write the temporary JS/TS loader during config evaluation.
E1010: Failed to execute tsx
The tsx runtime could not be found or executed for .ts config files.
E1011: Failed to execute node
The node runtime could not be found or executed for .js config files.
E1012: Config evaluation failed
The JS/TS config file threw an error during evaluation.
E1013: Invalid config output
The JS/TS config file produced non-UTF-8 output.
E1014: Invalid JSON from config
The JS/TS config file did not produce valid JSON output.
E1015: Failed to read config file
The config file exists but could not be read (permissions, encoding).
E1016: Multiple config files found
More than one config file was found in the project root (e.g. both ferrflow.json and ferrflow.toml).
E1017: Config file already exists
Running ferrflow init when a config file already exists.
Validation Errors
E1100: Invalid repo spec
The --repo argument does not match the expected format owner/repo or host/owner/repo.
E1101: GitHub API error
The GitHub API returned an error during remote config validation.
E1102: GitLab API error
The GitLab API returned an error during remote config validation.
E1103: Invalid UTF-8 in config
The remote config file contains invalid UTF-8 encoding.
E1104: Failed to parse remote config
The remote config file could not be parsed.
E1105: Remote config file not found
The specified config file path does not exist in the remote repository.
E1106: No config file found
No FerrFlow config file was found in the remote repository.
E1107: --ref requires --repo
The --ref flag was used without specifying --repo.
Git Operation Errors
E2001: Not a git repository
The current directory is not inside a git repository.
E2002: Bare repository not supported
FerrFlow does not support bare git repositories.
E2003: Tag already exists
The tag that FerrFlow wants to create already exists.
E2004: Failed to push branch
Could not push the release branch to the remote.
E2005: Push rejected by remote
The remote rejected the push (non-fast-forward, branch protection, hooks).
E2006: Failed to push tags
Could not push tags to the remote.
E2007: Failed to push floating tags
Could not force-push floating tags (e.g. v1, v1.2).
E2008: Remote not found
The configured git remote (default: origin) does not exist.
E2009: Post-push verification failed
After pushing, the release commit could not be verified on the remote branch.
E2010: Remote branch not found
The remote branch was not found after a push operation.
GitHub API Errors
E3001: Failed to create release
The GitHub Releases API returned an error when creating a release.
E3002: Failed to list releases
Could not fetch existing releases from the GitHub API.
E3003: Failed to parse releases response
The GitHub API returned an unexpected response format.
E3004: Failed to publish release
Could not publish (un-draft) a GitHub release.
E3005: Failed to create pull request
The GitHub API returned an error when creating a PR.
E3006: Failed to parse PR response
The GitHub API returned an unexpected PR response format.
E3007: PR response missing required field
The GitHub API PR response was missing the number or node_id field.
E3008: Failed to enable auto-merge
Could not enable auto-merge on the release PR via the GraphQL API.
E3009: Failed to parse GraphQL response
The GitHub GraphQL API returned an unexpected response.
E3010: Auto-merge failed
The GraphQL mutation to enable auto-merge returned an error.
GitLab API Errors
E3101: Failed to create release
The GitLab Releases API returned an error.
E3102: Failed to create merge request
The GitLab API returned an error when creating an MR.
E3103: Failed to parse MR response
The GitLab API returned an unexpected MR response format.
E3104: MR response missing iid field
The GitLab MR response was missing the iid field.
E3105: Failed to merge MR
Could not merge the release MR via the GitLab API.
Version File Errors
TOML (E4101 to E4105)
| Code | Error |
|---|---|
| E4101 | Cannot read TOML version file |
| E4102 | Invalid TOML syntax |
| E4103 | No version field found |
| E4104 | Failed to write TOML version file |
| E4105 | Invalid UTF-8 in TOML file |
JSON (E4201 to E4205)
| Code | Error |
|---|---|
| E4201 | Cannot read JSON version file |
| E4202 | Invalid JSON syntax |
| E4203 | No version field found |
| E4204 | Failed to write JSON version file |
| E4205 | Invalid UTF-8 in JSON file |
Helm / YAML (E4301 to E4304)
| Code | Error |
|---|---|
| E4301 | Cannot read Chart.yaml |
| E4302 | No version field found |
| E4303 | Failed to write Chart.yaml |
| E4304 | Invalid UTF-8 in Chart.yaml |
XML (E4401 to E4404)
| Code | Error |
|---|---|
| E4401 | Cannot read XML version file |
| E4402 | No tag found |
| E4403 | Failed to write XML file |
| E4404 | Invalid UTF-8 in XML file |
CSProj (E4410 to E4413)
| Code | Error |
|---|---|
| E4410 | Cannot read .csproj file |
| E4411 | No tag found |
| E4412 | Failed to write .csproj file |
| E4413 | Invalid UTF-8 in .csproj file |
Gradle (E4501 to E4504)
| Code | Error |
|---|---|
| E4501 | Cannot read build.gradle |
| E4502 | No version field found |
| E4503 | Failed to write build.gradle |
| E4504 | Invalid UTF-8 in build.gradle |
Go mod (E4601 to E4603)
| Code | Error |
|---|---|
| E4601 | Failed to run git describe |
| E4602 | No version tag found — handled internally since v3 |
| E4603 | Go modules do not support write |
On E4602: starting with FerrFlow v3 the release flow catches this case and falls back to the strategy's bootstrap baseline (0.0.0 / 0 / …), so the first release on a brand-new repo succeeds without a pre-seeded tag. The error code still exists for programs that import GoModVersionFile directly, but end users running ferrflow release should not see it anymore.
Text (E4701 to E4704)
| Code | Error |
|---|---|
| E4701 | Cannot read text version file |
| E4702 | No version found |
| E4703 | Failed to write text file |
| E4704 | Invalid UTF-8 in text file |
Pre-release Errors
E5001: Empty channel name
The pre-release channel name is empty.
E5002: Invalid channel name
The channel name contains invalid characters. Only alphanumeric characters and hyphens are allowed.
Versioning Errors
E5010: Invalid semver
The current version string is not valid semantic versioning.
Hook Errors
E6001: Hook execution failed
A lifecycle hook exited with a non-zero status code and on_failure is set to abort.
Query Errors
E7001: No packages configured
No packages are defined in the config file.
E7002: Package not found
The specified package name does not exist in the config.
Monorepo Errors
E8001: Package not found in config
A package referenced during release was not found in the configuration.
E8002: Floating tag backward move
A floating tag would move to an older version.