{"release":{"tag":{"name":"v2.4.2","path":"/ariacompute/engine/tags/v2.4.2","tree_path":"/ariacompute/engine/tree/v2.4.2","message":"","commit":{"id":"3f07942aec42fe240ea3587985b68b9473f7db24","short_id":"3f07942","title":"fix(test): build the expected cache path per component on windows","title_markdown":"fix(test): build the expected cache path per component on windows","description":"\n`model_cache_dir_reports_errors_and_paths` compared the C ABI string against\n`dir.path().join(\"models/afm-de\")`. `Path::join` keeps a literal \"/\" verbatim, so\non Windows the expectation rendered\n`...\\Temp\\.tmpXXXX\\models/afm-de` while `model_cache_dir` emits the platform\nseparator (`models_dir()?.join(model)` → `...\\models\\afm-de`) and the assertion\nfailed with mixed separators.\n\nJoin component by component (`join(\"models\").join(\"afm-de\")`) so the expected\nstring follows `MAIN_SEPARATOR`, reusing the same `c_char` buffer plumbing.\n\nSwept the rest of the suite for the same class of bug while here: string\ncomparisons of paths (only this one; other `join(\"a/b\")` calls feed\n`fs::write`/`read`/`exists`, which accept \"/\" on Windows), `PathBuf` equality in\n`resolve_checkpoint` (both sides are the same literal), e2e stdout assertions\n(no path separators), and `std::os::unix` usage (already `#[cfg(unix)]`).\n\nVerified: fmt, `clippy -D warnings`, `cargo test --workspace`, coverage gate\n(`lines: 8260/8260 (100.00%)`).","description_markdown":"\u003Ccode\u003Emodel_cache_dir_reports_errors_and_paths\u003C/code\u003E compared the C ABI string against\n\u003Ccode\u003Edir.path().join(\"models/afm-de\")\u003C/code\u003E. \u003Ccode\u003EPath::join\u003C/code\u003E keeps a literal \"/\" verbatim, so\non Windows the expectation rendered\n\u003Ccode\u003E...\\Temp\\.tmpXXXX\\models/afm-de\u003C/code\u003E while \u003Ccode\u003Emodel_cache_dir\u003C/code\u003E emits the platform\nseparator (\u003Ccode\u003Emodels_dir()?.join(model)\u003C/code\u003E → \u003Ccode\u003E...\\models\\afm-de\u003C/code\u003E) and the assertion\nfailed with mixed separators.\nJoin component by component (\u003Ccode\u003Ejoin(\"models\").join(\"afm-de\")\u003C/code\u003E) so the expected\nstring follows \u003Ccode\u003EMAIN_SEPARATOR\u003C/code\u003E, reusing the same \u003Ccode\u003Ec_char\u003C/code\u003E buffer plumbing.\nSwept the rest of the suite for the same class of bug while here: string\ncomparisons of paths (only this one; other \u003Ccode\u003Ejoin(\"a/b\")\u003C/code\u003E calls feed\n\u003Ccode\u003Efs::write\u003C/code\u003E/\u003Ccode\u003Eread\u003C/code\u003E/\u003Ccode\u003Eexists\u003C/code\u003E, which accept \"/\" on Windows), \u003Ccode\u003EPathBuf\u003C/code\u003E equality in\n\u003Ccode\u003Eresolve_checkpoint\u003C/code\u003E (both sides are the same literal), e2e stdout assertions\n(no path separators), and \u003Ccode\u003Estd::os::unix\u003C/code\u003E usage (already \u003Ccode\u003E\\#\\[cfg(unix)\\]\u003C/code\u003E).\nVerified: fmt, \u003Ccode\u003Eclippy -D warnings\u003C/code\u003E, \u003Ccode\u003Ecargo test --workspace\u003C/code\u003E, coverage gate\n(\u003Ccode\u003Elines: 8260/8260 (100.00%)\u003C/code\u003E).","message":"fix(test): build the expected cache path per component on windows\n\n`model_cache_dir_reports_errors_and_paths` compared the C ABI string against\n`dir.path().join(\"models/afm-de\")`. `Path::join` keeps a literal \"/\" verbatim, so\non Windows the expectation rendered\n`...\\Temp\\.tmpXXXX\\models/afm-de` while `model_cache_dir` emits the platform\nseparator (`models_dir()?.join(model)` → `...\\models\\afm-de`) and the assertion\nfailed with mixed separators.\n\nJoin component by component (`join(\"models\").join(\"afm-de\")`) so the expected\nstring follows `MAIN_SEPARATOR`, reusing the same `c_char` buffer plumbing.\n\nSwept the rest of the suite for the same class of bug while here: string\ncomparisons of paths (only this one; other `join(\"a/b\")` calls feed\n`fs::write`/`read`/`exists`, which accept \"/\" on Windows), `PathBuf` equality in\n`resolve_checkpoint` (both sides are the same literal), e2e stdout assertions\n(no path separators), and `std::os::unix` usage (already `#[cfg(unix)]`).\n\nVerified: fmt, `clippy -D warnings`, `cargo test --workspace`, coverage gate\n(`lines: 8260/8260 (100.00%)`).\n","message_markdown":"fix(test): build the expected cache path per component on windows\n\u003Ccode\u003Emodel_cache_dir_reports_errors_and_paths\u003C/code\u003E compared the C ABI string against\n\u003Ccode\u003Edir.path().join(\"models/afm-de\")\u003C/code\u003E. \u003Ccode\u003EPath::join\u003C/code\u003E keeps a literal \"/\" verbatim, so\non Windows the expectation rendered\n\u003Ccode\u003E...\\Temp\\.tmpXXXX\\models/afm-de\u003C/code\u003E while \u003Ccode\u003Emodel_cache_dir\u003C/code\u003E emits the platform\nseparator (\u003Ccode\u003Emodels_dir()?.join(model)\u003C/code\u003E → \u003Ccode\u003E...\\models\\afm-de\u003C/code\u003E) and the assertion\nfailed with mixed separators.\nJoin component by component (\u003Ccode\u003Ejoin(\"models\").join(\"afm-de\")\u003C/code\u003E) so the expected\nstring follows \u003Ccode\u003EMAIN_SEPARATOR\u003C/code\u003E, reusing the same \u003Ccode\u003Ec_char\u003C/code\u003E buffer plumbing.\nSwept the rest of the suite for the same class of bug while here: string\ncomparisons of paths (only this one; other \u003Ccode\u003Ejoin(\"a/b\")\u003C/code\u003E calls feed\n\u003Ccode\u003Efs::write\u003C/code\u003E/\u003Ccode\u003Eread\u003C/code\u003E/\u003Ccode\u003Eexists\u003C/code\u003E, which accept \"/\" on Windows), \u003Ccode\u003EPathBuf\u003C/code\u003E equality in\n\u003Ccode\u003Eresolve_checkpoint\u003C/code\u003E (both sides are the same literal), e2e stdout assertions\n(no path separators), and \u003Ccode\u003Estd::os::unix\u003C/code\u003E usage (already \u003Ccode\u003E\\#\\[cfg(unix)\\]\u003C/code\u003E).\nVerified: fmt, \u003Ccode\u003Eclippy -D warnings\u003C/code\u003E, \u003Ccode\u003Ecargo test --workspace\u003C/code\u003E, coverage gate\n(\u003Ccode\u003Elines: 8260/8260 (100.00%)\u003C/code\u003E).","detail_path":"/ariacompute/engine/commit/3f07942aec42fe240ea3587985b68b9473f7db24","commits_path":"/ariacompute/engine/commits/3f07942aec42fe240ea3587985b68b9473f7db24","tree_path":"/ariacompute/engine/tree/3f07942aec42fe240ea3587985b68b9473f7db24","author":{"name":"Jia Jia","email":"jia@ariacompute.com","username":null,"user_path":null,"enterprise_user_path":null,"image_path":"no_portrait.png#Jia Jia-","is_gitee_user":false,"is_enterprise_user":null,"widget_url":null},"committer":{"name":"Jia Jia","email":"jia@ariacompute.com","username":null,"user_path":null,"enterprise_user_path":null,"image_path":"no_portrait.png#Jia Jia-","is_gitee_user":false,"is_enterprise_user":null,"widget_url":null},"authored_date":"2026-11-04T13:44:14+08:00","committed_date":"2026-11-04T13:44:14+08:00","signature":null,"build_state":null},"archive_path":"/ariacompute/engine/repository/archive/v2.4.2","signature":null},"operating":{"edit":false,"download":true,"destroy":false,"enterprise_forbid_zip":false},"release":{"title":"v2.4.2","path":"/ariacompute/engine/releases/tag/v2.4.2","tag_path":"/ariacompute/engine/tree/v2.4.2","project_id":50544088,"created_at":"2026-11-04T13:56:30+08:00","is_prerelease":false,"description":"**Full Changelog**: https://github.com/ariacompute/engine/compare/v2.4.1...v2.4.2","author":{"name":"craftslab","username":"craftslab","path":"/craftslab","avatar_url":"https://foruda.gitee.com/avatar/1781416636270333794/7935856_craftslab_1781416636.png!avatar30"},"attach_files":[{"download_url":"/ariacompute/engine/attach_files/3588526/download/aria-engine_2.4.2_linux_arm64.tar.gz","name":"aria-engine_2.4.2_linux_arm64.tar.gz","cli_download_url":"https://gitee.com/ariacompute/engine/releases/download/v2.4.2/aria-engine_2.4.2_linux_arm64.tar.gz","censor_failed":false,"censor_tip":null},{"download_url":"/ariacompute/engine/attach_files/3588529/download/aria-engine_2.4.2_linux_x86_64.tar.gz","name":"aria-engine_2.4.2_linux_x86_64.tar.gz","cli_download_url":"https://gitee.com/ariacompute/engine/releases/download/v2.4.2/aria-engine_2.4.2_linux_x86_64.tar.gz","censor_failed":false,"censor_tip":null},{"download_url":"/ariacompute/engine/attach_files/3588535/download/aria-engine_2.4.2_macos.tar.gz","name":"aria-engine_2.4.2_macos.tar.gz","cli_download_url":"https://gitee.com/ariacompute/engine/releases/download/v2.4.2/aria-engine_2.4.2_macos.tar.gz","censor_failed":false,"censor_tip":null},{"download_url":"/ariacompute/engine/attach_files/3588540/download/aria-engine_2.4.2_windows_x86_64.zip","name":"aria-engine_2.4.2_windows_x86_64.zip","cli_download_url":"https://gitee.com/ariacompute/engine/releases/download/v2.4.2/aria-engine_2.4.2_windows_x86_64.zip","censor_failed":false,"censor_tip":null},{"download_url":"/ariacompute/engine/attach_files/3588554/download/libaria-engine_ffi_2.4.2_linux_arm64.tar.gz","name":"libaria-engine_ffi_2.4.2_linux_arm64.tar.gz","cli_download_url":"https://gitee.com/ariacompute/engine/releases/download/v2.4.2/libaria-engine_ffi_2.4.2_linux_arm64.tar.gz","censor_failed":false,"censor_tip":null},{"download_url":"/ariacompute/engine/attach_files/3588557/download/libaria-engine_ffi_2.4.2_linux_x86_64.tar.gz","name":"libaria-engine_ffi_2.4.2_linux_x86_64.tar.gz","cli_download_url":"https://gitee.com/ariacompute/engine/releases/download/v2.4.2/libaria-engine_ffi_2.4.2_linux_x86_64.tar.gz","censor_failed":false,"censor_tip":null},{"download_url":"/ariacompute/engine/attach_files/3588558/download/libaria-engine_ffi_2.4.2_macos.tar.gz","name":"libaria-engine_ffi_2.4.2_macos.tar.gz","cli_download_url":"https://gitee.com/ariacompute/engine/releases/download/v2.4.2/libaria-engine_ffi_2.4.2_macos.tar.gz","censor_failed":false,"censor_tip":null},{"download_url":"/ariacompute/engine/attach_files/3588571/download/libaria-engine_ffi_2.4.2_windows_x86_64.tar.gz","name":"libaria-engine_ffi_2.4.2_windows_x86_64.tar.gz","cli_download_url":"https://gitee.com/ariacompute/engine/releases/download/v2.4.2/libaria-engine_ffi_2.4.2_windows_x86_64.tar.gz","censor_failed":false,"censor_tip":null}],"zip_download_url":"/ariacompute/engine/releases/tag/v2.4.2.zip","tar_download_url":"/ariacompute/engine/releases/tag/v2.4.2.tar.gz"}}}