diff --git a/rust/crates/rusty-claude-cli/src/main.rs b/rust/crates/rusty-claude-cli/src/main.rs index dbdbd07b..61ea906b 100644 --- a/rust/crates/rusty-claude-cli/src/main.rs +++ b/rust/crates/rusty-claude-cli/src/main.rs @@ -2627,12 +2627,15 @@ fn print_version(output_format: CliOutputFormat) -> Result<(), Box serde_json::Value { + let executable_path = env::current_exe().ok().map(|p| p.display().to_string()); json!({ "kind": "version", "message": render_version_report(), "version": VERSION, "git_sha": GIT_SHA, "target": BUILD_TARGET, + "build_date": DEFAULT_DATE, + "executable_path": executable_path, }) } diff --git a/rust/crates/rusty-claude-cli/tests/output_format_contract.rs b/rust/crates/rusty-claude-cli/tests/output_format_contract.rs index e5d8372c..e5ac08e8 100644 --- a/rust/crates/rusty-claude-cli/tests/output_format_contract.rs +++ b/rust/crates/rusty-claude-cli/tests/output_format_contract.rs @@ -30,6 +30,15 @@ fn version_emits_json_when_requested() { let parsed = assert_json_command(&root, &["--output-format", "json", "version"]); assert_eq!(parsed["kind"], "version"); assert_eq!(parsed["version"], env!("CARGO_PKG_VERSION")); + // Provenance fields must be present for binary identification (#507). + assert!( + parsed["build_date"].is_string(), + "build_date must be a string in version JSON" + ); + assert!( + parsed["executable_path"].is_string(), + "executable_path must be a string in version JSON so callers can identify which binary is running" + ); } #[test]