vectordotdev/vector · error

not found

Error message

{} not found

What it means

This error is thrown by vdev's release preparation when the VRL changelog should be appended into a release CUE file. Before reading the file, it verifies that `website/cue/reference/releases/<new_vector_version>.cue` exists; if not, it aborts with the path in the message. It means the release CUE document for the version being prepared was never created, so there is nowhere to append the VRL changelog.

Solutions

  1. Check the exact path in the error and create/restore `website/cue/reference/releases/<version>.cue` (copy structure from a previous release's CUE file).
  2. Verify `new_vector_version` in the release config/state matches the actual CUE filename (watch for `vX.Y.Z` vs `X.Y.Z` mismatches).
  3. Pull/rebase from main to pick up the release CUE file if it was added by another maintainer.
  4. Re-run the earlier release step that scaffolds the CUE file before re-running `vdev release prepare`.

Example fix

// before (file missing)
$ vdev release prepare
Error: website/cue/reference/releases/0.46.0.cue not found

// after: scaffold the file first
$ cp website/cue/reference/releases/0.45.0.cue website/cue/reference/releases/0.46.0.cue
$ vdev release prepare
Defensive patterns

Strategy: validation

Validate before calling

let cue_path = std::path::Path::new("website/cue/reference/releases").join(format!("{version}.cue"));
if !cue_path.is_file() {
    // scaffold from a prior release before invoking the command
    anyhow::bail!("missing release CUE file: {}", cue_path.display());
}

Prevention

When it happens

Trigger: Calling generate_release_cue -> append_vrl_changelog_to_release_cue when `website/cue/reference/releases/{new_vector_version}.cue` does not exist on disk, typically because `vdev release prepare` was invoked before the per-version CUE file was generated or committed.

Common situations: Running a Vector release prep on a checkout that is missing the newly scaffolded release notes file; a typo or mismatch in the configured new version string so the expected `{version}.cue` filename differs from what exists; branching from before the release file was added.

Understand the failure class

Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.

Related errors


AI-assisted analysis of vectordotdev/vector@0d4ab78a4f (2026-09-16). Data as JSON: /api/errors/aaa8f5c3db6ddf81. Report an issue: GitHub.

Appendix: source

Thrown at vdev/src/commands/release/prepare.rs:227

            .arg("--label")
            .arg("no-changelog")
            .current_dir(&self.repo_root)
            .status()?;
        if !gh_status.success() {
            return Err(anyhow!("Failed to create PR with gh CLI"));
        }
        info!("Successfully created PR against {}", self.release_branch);
        Ok(())
    }

    fn append_vrl_changelog_to_release_cue(&self) -> Result<()> {
        debug!("append_vrl_changelog_to_release_cue");

        let releases_path = self.repo_root.join("website/cue/reference/releases");
        let version = &self.new_vector_version;
        let cue_path = releases_path.join(format!("{version}.cue"));
        if !cue_path.is_file() {
            return Err(anyhow!("{} not found", cue_path.display()));
        }

        let vrl_changelog = get_vrl_changelog(&self.vrl_version)?;
        let vrl_changelog_block = format_vrl_changelog_block(&vrl_changelog);

        let original = fs::read_to_string(&cue_path)?;
        let updated = insert_block_after_changelog(&original, &vrl_changelog_block);

        let tmp_path = cue_path.with_extension("cue.tmp");
        fs::write(&tmp_path, &updated)?;
        fs::rename(&tmp_path, &cue_path)?;

        run_command(&format!("cue fmt {}", cue_path.display()));
        debug!("Successfully added VRL changelog to the release cue file.");
        Ok(())
    }
}

View on GitHub (pinned to 0d4ab78a4f)