ci(release): 添加 Linux 构建 job + 更新 README 下载链接 - #44
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
变更内容\n\n- CI: Created devbase--linux-x64.tar.gz 新增 job,实现 Windows + Linux 双平台并行构建\n- CI: 上传方式改为 ,避免 Windows/Linux job 竞态创建 release\n- Docs: README 预编译二进制下载链接同步为 v0.20.0 实际资产(.zip / .tar.gz + 解压指引)\n\n## 验证\n\n- [x] Windows 本地 成功(24M)\n- [x] WSL Ubuntu 成功(22M)\n- [x] v0.20.0 Release 双平台资产已手动上传\n- [x]
running 456 tests
test arxiv::tests::test_parse_arxiv_atom_invalid_xml ... ok
test arxiv::tests::test_parse_arxiv_atom_missing_title ... ok
test arxiv::tests::test_parse_arxiv_atom_no_authors ... ok
test arxiv::tests::test_parse_arxiv_atom_success ... ok
test asyncgit::tests::test_async_notification_variants ... ok
test asyncgit::tests::test_async_repo_status_clone ... ok
test asyncgit::tests::test_async_single_job_new ... ok
test asyncgit::tests::test_repo_status_notification_clone ... ok
test asyncgit::tests::test_sync_progress_notification_clone ... ok
test backup::tests::test_backup_filename_contains_timestamp ... ok
test backup::tests::test_backup_filename_format ... ok
test backup::tests::test_clean_old_backups_removes_oldest ... ok
test backup::tests::test_export_sqlite_creates_file ... ok
test config::tests::test_config_custom_values ... ok
test config::tests::test_config_default ... ok
test config::tests::test_config_empty_uses_defaults ... ok
test config::tests::test_config_serialize_roundtrip ... ok
test daemon::tests::test_daemon_new ... ok
test dependency_graph::tests::test_parse_cargo_toml_deps ... ok
test dependency_graph::tests::test_parse_cmake_add_subdirectory_local ... ok
test dependency_graph::tests::test_parse_cmake_fetchcontent_declare ... ok
test dependency_graph::tests::test_parse_cmake_find_package ... ok
test dependency_graph::tests::test_parse_cmake_target_link_libraries ... ok
test dependency_graph::tests::test_parse_go_mod_deps ... ok
test dependency_graph::tests::test_parse_package_json_deps ... ok
test dependency_graph::tests::test_parse_pyproject_toml_deps ... ok
test dependency_graph::tests::test_parse_requirements_txt_deps ... ok
test digest::tests::test_generate_daily_digest_empty ... ok
test digest::tests::test_generate_daily_digest_with_repos ... ok
test digest::tests::test_generate_daily_digest_with_unhealthy_repo ... ok
test discovery_engine::tests::test_discover_dependencies_cargo ... ok
test discovery_engine::tests::test_discover_dependencies_go_mod ... ok
test discovery_engine::tests::test_discover_dependencies_no_manifest ... ok
test discovery_engine::tests::test_discover_dependencies_package_json ... ok
test discovery_engine::tests::test_discover_similar_projects ... ok
test discovery_engine::tests::test_normalize_dep_name ... ok
test health::tests::test_compute_workspace_hash_changes_with_content ... ok
test health::tests::test_compute_workspace_hash_empty_dir ... ok
test health::tests::test_compute_workspace_hash_ignores_dirs ... ok
test health::tests::test_fmt_version_bun ... ok
test health::tests::test_fmt_version_cargo ... ok
test health::tests::test_fmt_version_cmake ... ok
test health::tests::test_fmt_version_docker ... ok
test health::tests::test_fmt_version_go ... ok
test health::tests::test_fmt_version_java ... ok
test health::tests::test_fmt_version_python ... ok
test health::tests::test_fmt_version_rustc ... ok
test health::tests::test_fmt_version_single_word ... ok
test health::tests::test_fmt_version_unknown ... ok
test i18n::en::tests::test_build ... ok
test i18n::tests::test_en_build ... ok
test i18n::tests::test_format_template_basic ... ok
test i18n::tests::test_format_template_extra_args_ignored ... ok
test i18n::tests::test_format_template_multiple ... ok
test i18n::tests::test_format_template_no_placeholder ... ok
test i18n::tests::test_from_language_en ... ok
test i18n::tests::test_log_strings_loaded_repos ... ok
test i18n::tests::test_log_strings_status_fmt ... ok
test i18n::tests::test_zh_build ... ok
test i18n::zh_cn::tests::test_build ... ok
test knowledge_engine::index::tests::test_prepare_repos_empty_path_returns_all ... ok
test knowledge_engine::index::tests::test_prepare_repos_matching_path_returns_one ... ok
test knowledge_engine::index::tests::test_prepare_repos_nonexistent_path_errors ... ok
test knowledge_engine::index::tests::test_prepare_repos_unregistered_existing_path_auto_registers ... ok
test knowledge_engine::index::tests::test_save_and_get_repo_index_state ... ok
test knowledge_engine::index_state::tests::test_get_repo_index_state_fresh ... ok
test knowledge_engine::index_state::tests::test_get_repo_index_state_missing ... ok
test knowledge_engine::index_state::tests::test_get_repo_index_state_stale ... ok
test knowledge_engine::index_state::tests::test_get_repo_index_state_unknown_not_git ... ok
test knowledge_engine::index_state::tests::test_index_state_is_fresh_and_changed_count ... ok
test knowledge_engine::index_state::tests::test_index_state_variants_serialize ... ok
test knowledge_engine::readme::tests::test_build_llm_prompt_contains_json_instruction ... ok
test knowledge_engine::readme::tests::test_extract_module_structure_for_devbase ... ok
test knowledge_engine::readme::tests::test_extract_module_structure_non_rust ... ok
test knowledge_engine::readme::tests::test_extract_readme_summary_basic ... ok
test knowledge_engine::readme::tests::test_extract_readme_summary_truncates_at_sentence ... ok
test knowledge_engine::readme::tests::test_extract_readme_summary_with_badges ... ok
test knowledge_engine::readme::tests::test_fallback_summary_cargo_toml ... ok
test knowledge_engine::readme::tests::test_module_info_clone ... ok
test knowledge_engine::readme::tests::test_parse_llm_json_markdown_fenced ... ok
test knowledge_engine::readme::tests::test_parse_llm_json_valid ... ok
test knowledge_engine::readme::tests::test_real_gitui_repo ... ignored, integration test on real gitui repo
test knowledge_engine::readme::tests::test_real_syncthing_repo ... ignored, integration test on real syncthing repo
test knowledge_engine::readme::tests::test_try_llm_summary_disabled_returns_none ... ok
test mcp::tests::test_destructive_gate_disabled_by_default ... ok
test mcp::tests::test_destructive_gate_enabled ... ok
test mcp::tests::test_format_mcp_message ... ok
test mcp::tests::test_initialize ... ok
test mcp::tests::test_nl_filter_repos_empty_query_returns_empty ... ok
test mcp::tests::test_nl_filter_repos_fallback_finds_by_language ... ok
test mcp::tests::test_nl_filter_repos_tantivy_finds_devbase ... ok
test mcp::tests::test_parse_tool_tiers ... ok
test mcp::tests::test_parse_tool_tiers_empty ... ok
test mcp::tests::test_stdio_content_length_format ... ok
test mcp::tests::test_tools_call_devkit_arxiv_fetch ... ok
test mcp::tests::test_tools_call_devkit_health ... ok
test mcp::tests::test_tools_call_devkit_project_context ... ok
test mcp::tests::test_tools_call_devkit_query ... ok
test mcp::tests::test_tools_call_devkit_skill_discover ... ok
test mcp::tests::test_tools_call_devkit_skill_list ... ok
test mcp::tests::test_tools_call_devkit_skill_run ... ignored, requires knowledge-report skill installed and may run external Python process
test mcp::tests::test_tools_call_devkit_skill_search ... ok
test mcp::tests::test_tools_call_unknown_tool ... ok
test mcp::tests::test_tools_list ... ok
test mcp::tests::test_unknown_method ... ok
test mcp::tools::brief::tests::test_name ... ok
test mcp::tools::context::tests::test_collect_hot_files_basic ... ok
test mcp::tools::context::tests::test_collect_hot_files_empty_repo ... ok
test mcp::tools::context::tests::test_collect_hot_files_no_git ... ok
test mcp::tools::context::tests::test_collect_recent_commits_basic ... ok
test mcp::tools::context::tests::test_collect_recent_commits_empty_repo ... ok
test mcp::tools::context::tests::test_collect_recent_commits_limit ... ok
test mcp::tools::context::tests::test_name ... ok
test mcp::tools::context::tests::test_schema_is_object ... ok
test mcp::tools::evaluate::tests::test_evaluate_tool_name ... ok
test mcp::tools::evaluate::tests::test_truncate_output ... ok
test mcp::tools::impact::tests::test_name ... ok
test mcp::tools::known_limit::tests::test_name ... ok
test mcp::tools::known_limit::tests::test_schema_is_object ... ok
test mcp::tools::oplog::tests::test_name ... ok
test mcp::tools::oplog::tests::test_schema_is_object ... ok
test mcp::tools::query::tests::test_name ... ok
test mcp::tools::query::tests::test_schema_is_object ... ok
test mcp::tools::relations::tests::test_relation_query_bidirectional ... ok
test mcp::tools::relations::tests::test_relation_store_and_query_roundtrip ... ok
test mcp::tools::relations::tests::test_relation_store_missing_required_fields ... ok
test mcp::tools::repo::tests::test_extract_tag_from_query ... ok
test mcp::tools::repo::tests::test_parse_github_repo_https ... ok
test mcp::tools::repo::tests::test_parse_github_repo_invalid ... ok
test mcp::tools::repo::tests::test_parse_github_repo_ssh ... ok
test mcp::tools::repo::tests::test_parse_stars_condition ... ok
test mcp::tools::search::tests::test_parse_f32_array ... ok
test mcp::tools::session::tests::test_schemas_are_objects ... ok
test mcp::tools::session::tests::test_session_tool_names ... ok
test mcp::tools::skill::tests::test_name ... ok
test mcp::tools::skill::tests::test_schema_is_object ... ok
test mcp::tools::tests::test_tool_modules_compile ... ok
test mcp::tools::vault::tests::test_resolve_vault_path_absolute_blocked ... ok
test mcp::tools::vault::tests::test_resolve_vault_path_dotdot_within_bounds ... ok
test mcp::tools::vault::tests::test_resolve_vault_path_empty ... ok
test mcp::tools::vault::tests::test_resolve_vault_path_nested ... ok
test mcp::tools::vault::tests::test_resolve_vault_path_normal ... ok
test mcp::tools::vault::tests::test_resolve_vault_path_performance ... ok
test mcp::tools::vault::tests::test_resolve_vault_path_traversal_blocked ... ok
test mcp::tools::vault::tests::test_resolve_vault_path_with_dot ... ok
test mcp::tools::vault::tests::test_vault_daily_appends_to_existing ... ok
test mcp::tools::vault::tests::test_vault_daily_creates_file ... ok
test mcp::tools::vault::tests::test_vault_graph_basic ... ok
test mcp::tools::vault::tests::test_vault_graph_bfs_traversal ... ok
test mcp::tools::vault::tests::test_vault_graph_filtered_by_repo ... ok
test mcp::tools::vault::tests::test_vault_history_tool ... ok
test mcp::tools::workflow::tests::test_workflow_list_empty_registry ... ok
test mcp::tools::workflow::tests::test_workflow_run_not_found ... ok
test mcp::tools::workflow::tests::test_workflow_status_invalid_id ... ok
test oplog_analytics::tests::test_generate_report_empty_db ... ok
test oplog_analytics::tests::test_generate_report_with_data ... ok
test query::tests::test_eval_behind_match ... ok
test query::tests::test_eval_behind_no_match ... ok
test query::tests::test_eval_keyword_match ... ok
test query::tests::test_eval_keyword_no_match ... ok
test query::tests::test_eval_note_match ... ok
test query::tests::test_eval_note_no_match ... ok
test query::tests::test_eval_stale_never_synced ... ok
test query::tests::test_eval_tag_match ... ok
test query::tests::test_eval_tag_no_match ... ok
test query::tests::test_parse_cmp_expr_empty ... ok
test query::tests::test_parse_cmp_expr_eq_implicit ... ok
test query::tests::test_parse_cmp_expr_gt ... ok
test query::tests::test_parse_query_behind ... ok
test query::tests::test_parse_query_keyword ... ok
test query::tests::test_parse_query_lang ... ok
test query::tests::test_parse_query_multiple ... ok
test query::tests::test_parse_query_note ... ok
test query::tests::test_parse_query_stale ... ok
test query::tests::test_parse_query_tag ... ok
test registry::agent_context::tests::test_cascade_delete ... ok
test registry::agent_context::tests::test_context_crud ... ok
test registry::agent_context::tests::test_entity_links ... ok
test registry::agent_context::tests::test_get_context_with_memories ... ok
test registry::agent_context::tests::test_memory_crud ... ok
test registry::agent_context::tests::test_missing_context ... ok
test registry::code_symbols::tests::test_query_code_symbols_by_file ... ok
test registry::code_symbols::tests::test_query_code_symbols_by_name ... ok
test registry::code_symbols::tests::test_query_code_symbols_by_symbol_type ... ok
test registry::code_symbols::tests::test_query_code_symbols_limit ... ok
test registry::code_symbols::tests::test_query_code_symbols_no_filter ... ok
test registry::dead_code::tests::test_query_dead_code_basic ... ok
test registry::dead_code::tests::test_query_dead_code_excludes_called ... ok
test registry::dead_code::tests::test_query_dead_code_excludes_main ... ok
test registry::dead_code::tests::test_query_dead_code_excludes_pub_when_not_include_pub ... ok
test registry::dead_code::tests::test_query_dead_code_excludes_test_attribute ... ok
test registry::dead_code::tests::test_query_dead_code_excludes_test_prefix ... ok
test registry::dead_code::tests::test_query_dead_code_excludes_tests_rs ... ok
test registry::knowledge::tests::test_cross_repo_search_symbols ... ok
test registry::knowledge::tests::test_find_papers_by_venue ... ok
test registry::knowledge::tests::test_find_related_symbols ... ok
test registry::knowledge::tests::test_module_crud ... ok
test registry::knowledge::tests::test_paper_roundtrip ... ok
test registry::knowledge::tests::test_save_embeddings ... ok
test registry::knowledge::tests::test_save_summary_smoke ... ok
test registry::knowledge::tests::test_semantic_search_symbols ... ok
test registry::knowledge::tests::test_symbol_read_tracking ... ok
test registry::knowledge_meta::tests::test_knowledge_meta_crud ... ok
test registry::known_limits::tests::test_known_limit_crud ... ok
test registry::known_limits::tests::test_list_known_limits_by_category ... ok
test registry::links::tests::test_get_linked_repos ... ok
test registry::links::tests::test_get_linked_repos_empty ... ok
test registry::links::tests::test_get_linked_repos_full ... ok
test registry::links::tests::test_get_linked_vault_notes ... ok
test registry::links::tests::test_get_linked_vaults ... ok
test registry::migrate::tests::test_db_path_format ... ok
test registry::migrate::tests::test_workspace_dir_format ... ok
test registry::repo::tests::test_list_repos_empty ... ok
test registry::repo::tests::test_list_repos_need_index ... ok
test registry::repo::tests::test_list_repos_stale_health ... ok
test registry::repo::tests::test_list_workspaces_by_tier ... ok
test registry::repo::tests::test_save_and_list_repo ... ok
test registry::repo::tests::test_save_repo_updates_existing ... ok
test registry::repo::tests::test_save_repo_with_remotes ... ok
test registry::repo::tests::test_save_repo_with_stars ... ok
test registry::repo::tests::test_save_repo_with_tags ... ok
test registry::repo::tests::test_update_repo_language ... ok
test registry::repo::tests::test_update_repo_last_synced_at ... ok
test registry::repo::tests::test_update_repo_tier ... ok
test registry::repo::tests::test_update_repo_workspace_type ... ok
test registry::repos_toml::tests::test_apply_overrides ... ok
test registry::repos_toml::tests::test_parse_repos_toml ... ok
test registry::test_helpers::tests::test_agent_contexts_table_exists ... ok
test registry::test_helpers::tests::test_agent_memories_table_exists ... ok
test registry::test_helpers::tests::test_in_memory_schema_version ... ok
test registry::test_helpers::tests::test_knowledge_meta_table_exists ... ok
test registry::test_helpers::tests::test_known_limits_table_exists ... ok
test registry::test_helpers::tests::test_workflow_executions_table_exists ... ok
test registry::tests::test_dead_code_excludes_pub_variants_and_main ... ok
test registry::tests::test_dead_code_include_pub ... ok
test registry::tests::test_oplog_event_type_roundtrip ... ok
test registry::tests::test_oplog_migration_compat ... ok
test registry::tests::test_oplog_save_and_list ... ok
test registry::tests::test_primary_remote_fallback_to_first ... ok
test registry::tests::test_primary_remote_none ... ok
test registry::tests::test_primary_remote_prefers_origin ... ok
test registry::tests::test_stars_cache_miss ... ok
test registry::tests::test_stars_cache_roundtrip ... ok
test registry::tests::test_stars_cache_update ... ok
test registry::vault::tests::test_delete_vault_note ... ok
test registry::vault::tests::test_list_vault_notes_empty ... ok
test registry::vault::tests::test_save_and_list_vault_note ... ok
test scan::tests::test_detect_language_cpp ... ok
test scan::tests::test_detect_language_go ... ok
test scan::tests::test_detect_language_node ... ok
test scan::tests::test_detect_language_none ... ok
test scan::tests::test_detect_language_python_pyproject ... ok
test scan::tests::test_detect_language_python_requirements ... ok
test scan::tests::test_detect_language_rust ... ok
test scan::tests::test_discover_repos_devbase_ignore ... ok
test scan::tests::test_discover_repos_excludes_paths ... ok
test scan::tests::test_discover_repos_excludes_patterns ... ok
test scan::tests::test_discover_repos_finds_non_git_workspaces ... ok
test scan::tests::test_inspect_non_git_workspace_generic ... ok
test scan::tests::test_inspect_non_git_workspace_openclaw ... ok
test scan::tests::test_is_excluded_path_sync_context ... ok
test scan::tests::test_is_nested_submodule_false ... ok
test scan::tests::test_is_nested_submodule_true ... ok
test scan::tests::test_normal_tags ... ok
test scan::tests::test_parse_github_owner_repo_https ... ok
test scan::tests::test_parse_github_owner_repo_invalid ... ok
test scan::tests::test_parse_github_owner_repo_non_github ... ok
test scan::tests::test_parse_github_owner_repo_ssh ... ok
test scan::tests::test_zip_snapshot_tags_main ... ok
test scan::tests::test_zip_snapshot_tags_master ... ok
test search::hybrid::tests::test_hybrid_search_fallback_to_keyword ... ok
test search::hybrid::tests::test_hybrid_search_symbols_with_metrics ... ok
test search::hybrid::tests::test_keyword_search_basic ... ok
test search::hybrid::tests::test_keyword_search_latency_regression_10k ... ignored, performance regression: run with --ignored to execute
test search::hybrid::tests::test_keyword_search_latency_regression_1k ... ignored, performance regression: run with --ignored to execute
test search::hybrid::tests::test_rrf_merge_empty_lists ... ok
test search::hybrid::tests::test_rrf_merge_single_list_passthrough ... ok
test search::hybrid::tests::test_rrf_merge_two_lists ... ok
test search::symbol_index::tests::test_add_and_search_symbol ... ok
test search::symbol_index::tests::test_delete_repo_symbols ... ok
test search::symbol_index::tests::test_search_signature_match ... ok
test search::tests::test_add_and_search_repo ... ok
test search::tests::test_add_vault_doc ... ok
test search::tests::test_build_schema ... ok
test search::tests::test_delete_repo_doc ... ok
test search::tests::test_index_is_empty ... ok
test search::tests::test_list_indexed_repo_ids ... ok
test search::tests::test_search_repos ... ok
test search::tests::test_search_vault ... ok
test search::tests::test_sync_index_to_db_removes_orphans ... ok
test semantic_index::git_diff::tests::test_current_head_hash_after_commit ... ok
test semantic_index::git_diff::tests::test_current_head_hash_empty_repo ... ok
test semantic_index::git_diff::tests::test_diff_since_deleted_file ... ok
test semantic_index::git_diff::tests::test_diff_since_no_changes ... ok
test semantic_index::git_diff::tests::test_diff_since_none_first_index ... ok
test semantic_index::git_diff::tests::test_diff_since_with_last_hash ... ok
test semantic_index::git_diff::tests::test_diff_since_workdir_modification ... ok
test semantic_index::git_diff::tests::test_diff_since_workdir_untracked ... ok
test semantic_index::persist::tests::test_delete_symbols_for_files ... ok
test semantic_index::persist::tests::test_save_calls_incremental ... ok
test semantic_index::persist::tests::test_save_calls_replaces_old ... ok
test semantic_index::persist::tests::test_save_symbols_incremental ... ok
test semantic_index::persist::tests::test_save_symbols_replaces_old ... ok
test semantic_index::symbol::tests::test_extract_rust_attributes ... ok
test semantic_index::tests::test_extract_go_const ... ok
test semantic_index::tests::test_extract_go_function ... ok
test semantic_index::tests::test_extract_go_method ... ok
test semantic_index::tests::test_extract_go_struct_and_interface ... ok
test semantic_index::tests::test_extract_js_function ... ok
test semantic_index::tests::test_extract_multiple_rust ... ok
test semantic_index::tests::test_extract_python_class ... ok
test semantic_index::tests::test_extract_python_function ... ok
test semantic_index::tests::test_extract_python_multiple ... ok
test semantic_index::tests::test_extract_rust_function ... ok
test semantic_index::tests::test_extract_rust_struct ... ok
test semantic_index::tests::test_extract_ts_class_and_interface ... ok
test semantic_index::tests::test_extract_ts_enum ... ok
test semantic_index::tests::test_index_repo_full ... ok
test semantic_index::tests::test_save_calls ... ok
test semantic_index::tests::test_save_symbols ... ok
test skill_runtime::clarity_sync::tests::test_conflict_resolution_skips_older_devbase_skill ... ok
test skill_runtime::clarity_sync::tests::test_conflict_resolution_updates_when_devbase_newer ... ok
test skill_runtime::clarity_sync::tests::test_sync_skills_to_clarity ... ok
test skill_runtime::dependency::tests::test_detect_cycle_direct ... ok
test skill_runtime::dependency::tests::test_detect_cycle_none ... ok
test skill_runtime::dependency::tests::test_resolve_cycle_fails ... ok
test skill_runtime::dependency::tests::test_resolve_topological_order ... ok
test skill_runtime::dependency::tests::test_validate_dependencies_all_satisfied ... ok
test skill_runtime::dependency::tests::test_validate_dependencies_missing ... ok
test skill_runtime::discover::tests::test_generate_entry_script_node ... ok
test skill_runtime::discover::tests::test_generate_entry_script_python ... ok
test skill_runtime::discover::tests::test_generate_entry_script_rust ... ok
test skill_runtime::discover::tests::test_generate_skill_md_structure ... ok
test skill_runtime::executor::tests::test_external_embedding_endpoint_error_response ... ok
test skill_runtime::executor::tests::test_external_embedding_endpoint_ollama_parsing ... ok
test skill_runtime::executor::tests::test_hard_veto_guard_empty_registry ... ok
test skill_runtime::executor::tests::test_hard_veto_guard_with_unresolved_vetoes ... ok
test skill_runtime::executor::tests::test_resolve_interpreter_binary ... ok
test skill_runtime::executor::tests::test_resolve_interpreter_powershell ... ok
test skill_runtime::executor::tests::test_resolve_interpreter_python ... ok
test skill_runtime::executor::tests::test_resolve_interpreter_shell ... ok
test skill_runtime::executor::tests::test_run_skill_not_found ... ok
test skill_runtime::executor::tests::test_run_skill_success ... ok
test skill_runtime::publish::tests::test_get_default_remote_fallback ... ok
test skill_runtime::publish::tests::test_get_default_remote_origin ... ok
test skill_runtime::publish::tests::test_push_tag_no_remote ... ok
test skill_runtime::publish::tests::test_push_tag_success_to_bare_remote ... ok
test skill_runtime::registry::tests::test_execution_tracking ... ok
test skill_runtime::registry::tests::test_install_and_get_skill ... ok
test skill_runtime::registry::tests::test_list_skills_by_type ... ok
test skill_runtime::registry::tests::test_search_skills_text ... ok
test skill_runtime::registry::tests::test_uninstall_skill ... ok
test skill_runtime::scoring::tests::test_calculate_scores ... ok
test skill_runtime::scoring::tests::test_recalculate_all ... ok
test skill_runtime::scoring::tests::test_recommend_skills ... ok
test skill_sync::tests::test_convert_to_skill ... ok
test skill_sync::tests::test_extract_description_long ... ok
test skill_sync::tests::test_extract_description_short ... ok
test skill_sync::tests::test_extract_description_skips_heading ... ok
test storage::tests::test_app_context_with_temp_storage ... ok
test storage::tests::test_repair_tantivy_consistency_detects_orphan ... ok
test sync::orchestrator::tests::test_sync_orchestrator_new ... ok
test sync::policy::tests::test_classify_sync_error ... ok
test sync::policy::tests::test_recommend_sync_action ... ok
test sync::policy::tests::test_sync_policy_capabilities ... ok
test sync::policy::tests::test_sync_policy_from_tags ... ok
test sync::tasks::tests::test_map_action_known ... ok
test sync::tasks::tests::test_map_action_unknown ... ok
test sync::tasks::tests::test_write_syncdone_marker ... ok
test sync::tests::test_assess_safety_blocked_dirty ... ok
test sync::tests::test_assess_safety_blocked_diverged_conservative ... ok
test sync::tests::test_assess_safety_diverged_rebase_allowed ... ok
test sync::tests::test_assess_safety_no_upstream ... ok
test sync::tests::test_assess_safety_safe_ff ... ok
test sync::tests::test_assess_safety_up_to_date ... ok
test sync::tests::test_collect_tasks_default_mode_excludes_untagged ... ok
test sync::tests::test_collect_tasks_default_mode_includes_known_tags ... ok
test sync::tests::test_collect_tasks_explicit_filter_includes_untagged ... ok
test sync::tests::test_map_action ... ok
test sync::tests::test_perform_merge_fast_forward ... ok
test sync::tests::test_perform_merge_up_to_date ... ok
test sync::tests::test_sync_repo_skip_no_syncdone ... ok
test sync::tests::test_write_syncdone_marker ... ok
test tui::event::tests::test_tui_action_variants ... ok
test tui::layout::tests::test_layout_centered ... ok
test tui::layout::tests::test_layout_compact ... ok
test tui::layout::tests::test_layout_inner ... ok
test tui::layout::tests::test_layout_standard ... ok
test tui::layout::tests::test_layout_wide ... ok
test tui::render::detail::tests::test_overview_status_desc ... ok
test tui::render::detail::tests::test_overview_status_icon ... ok
test tui::render::detail::tests::test_sync_policy_color ... ok
test tui::render::help::tests::test_help_section_empty ... ok
test tui::render::help::tests::test_help_section_with_bindings ... ok
test tui::render::list::tests::test_repo_status_fg ... ok
test tui::render::list::tests::test_repo_status_icon ... ok
test tui::render::logs::tests::test_format_log_line_plain ... ok
test tui::render::logs::tests::test_format_log_line_with_timestamp ... ok
test tui::render::popups::tests::test_search_results_title_empty ... ok
test tui::render::popups::tests::test_search_results_title_with_results ... ok
test tui::render::tests::test_read_repo_summary_found ... ok
test tui::render::tests::test_read_repo_summary_missing ... ok
test tui::render::tests::test_read_syncdone_info_missing ... ok
test tui::render::tests::test_read_syncdone_info_valid ... ok
test tui::state::tests::test_run_nlp_selected_skill_empty_results ... ok
test tui::tests::test_detail_tab_label ... ok
test tui::tests::test_main_view_toggle ... ok
test tui::tests::test_search_mode_label ... ok
test tui::tests::test_sort_mode_toggle ... ok
test tui::theme::tests::test_styles_from_dark_theme ... ok
test tui::theme::tests::test_theme_dark_colors ... ok
test tui::theme::tests::test_theme_default_is_dark ... ok
test tui::theme::tests::test_theme_light_colors ... ok
test vault::backlinks::tests::test_backlink_index_basic ... ok
test vault::fs_io::tests::test_read_note_body_with_frontmatter ... ok
test vault::fs_io::tests::test_read_note_body_without_frontmatter ... ok
test vault::fs_io::tests::test_read_note_content ... ok
test vault::fs_io::tests::test_read_note_content_missing ... ok
test vault::history::tests::test_note_history_basic ... ok
test vault::history::tests::test_note_history_not_git ... ok
test vault::indexer::tests::test_index_vault_note_core_add ... ok
test vault::indexer::tests::test_index_vault_note_core_update ... ok
test vault::indexer::tests::test_reindex_vault_core_empty ... ok
test vault::indexer::tests::test_reindex_vault_core_with_notes ... ok
test vault::scanner::tests::test_scan_vault_basic ... ok
test vault::scanner::tests::test_scan_vault_empty_dir ... ok
test vault::scanner::tests::test_scan_vault_missing_dir ... ok
test watch::tests::test_folder_scheduler_degrades_to_scan ... ok
test watch::tests::test_folder_scheduler_first_run ... ok
test watch::tests::test_folder_scheduler_incremental_no_change ... ok
test watch::tests::test_watch_aggregator_dedup ... ok
test workflow::executor::tests::test_condition_step_false ... ok
test workflow::executor::tests::test_condition_step_true ... ok
test workflow::executor::tests::test_loop_body_continue ... ok
test workflow::executor::tests::test_loop_body_fallback ... ok
test workflow::executor::tests::test_loop_empty_collection ... ok
test workflow::executor::tests::test_loop_failure ... ok
test workflow::executor::tests::test_loop_multi_iteration ... ok
test workflow::executor::tests::test_loop_single_iteration ... ok
test workflow::executor::tests::test_parallel_step ... ok
test workflow::executor::tests::test_subworkflow_step ... ok
test workflow::parser::tests::test_parse_basic_workflow ... ok
test workflow::parser::tests::test_parse_invalid_id ... ok
test workflow::scheduler::tests::test_linear_schedule ... ok
test workflow::scheduler::tests::test_parallel_schedule ... ok
test workflow::scheduler::tests::test_transitive_deps ... ok
test workflow::scheduler::tests::test_transitive_deps_leaf ... ok
test workflow::state::tests::test_create_and_update_execution ... ok
test workflow::state::tests::test_end_to_end_workflow_lifecycle ... ok
test workflow::state::tests::test_save_and_get_workflow ... ok
test workflow::validator::tests::test_cycle_detected ... ok
test workflow::validator::tests::test_loop_body_duplicate_global_id ... ok
test workflow::validator::tests::test_loop_body_missing_dep ... ok
test workflow::validator::tests::test_loop_body_valid ... ok
test workflow::validator::tests::test_missing_dep ... ok
test workflow::validator::tests::test_valid_dag ... ok
test result: ok. 451 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 26.46s 451 passed\n- [x] 零警告\n- [x] 通过