mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-10-20 05:15:31 +00:00
The startup pruner only considered directories named hermes-* (the hermes -w scratch trees), so salvage/review/port lanes created with raw 'git worktree add' accumulated forever — a real checkout reached 117 directories / 26 GB with trees dating back months. Two further leaks: squash-merged branches' local commits stay unreachable from refs/remotes/* forever, so the unpushed-commits guard preserved fully merged scratch trees indefinitely; and preserved trees rotted silently with no visibility. - Pruner now covers every directory under .worktrees/ except kanban task trees (t_<hex>, owned by 'hermes kanban gc'). Named (non hermes-*) trees get a 3x timeline (72h soft / 9d hard) since they were created deliberately. - New _worktree_commits_all_merged_upstream(): git-cherry patch-equivalence check against origin/HEAD|main|master, bounded at 20 commits ahead, fails safe toward preserve. Lets the pruner reap trees whose every local-only commit already landed upstream via squash-merge/cherry-pick. - Dirty guard now applies at every tier (previously the 24-72h tier skipped it — it only survived because the unpushed check usually caught the same trees). - Trees preserved for unpushed/dirty reasons older than 7 days are listed in a single WARNING so in-flight work can't rot silently. - tips.py text updated; 13 new behavior-contract tests. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| test_bracketed_paste_timeout.py | ||
| test_branch_command.py | ||
| test_busy_input_mode_command.py | ||
| test_chat_q_exit_clear.py | ||
| test_cli_active_agent_ref_wiring.py | ||
| test_cli_approval_ui.py | ||
| test_cli_async_delegation_delivery.py | ||
| test_cli_background_status_indicator.py | ||
| test_cli_background_tui_refresh.py | ||
| test_cli_bracketed_paste_sanitizer.py | ||
| test_cli_browser_connect.py | ||
| test_cli_codex_context_reference.py | ||
| test_cli_context_warning.py | ||
| test_cli_copy_command.py | ||
| test_cli_delegate_background_notice.py | ||
| test_cli_extension_hooks.py | ||
| test_cli_external_editor.py | ||
| test_cli_file_drop.py | ||
| test_cli_force_redraw.py | ||
| test_cli_goal_interrupt.py | ||
| test_cli_image_command.py | ||
| test_cli_init.py | ||
| test_cli_insights_command.py | ||
| test_cli_interrupt_ack_race.py | ||
| test_cli_interrupt_drain_regression.py | ||
| test_cli_interrupt_subagent.py | ||
| test_cli_light_mode.py | ||
| test_cli_loading_indicator.py | ||
| test_cli_markdown_rendering.py | ||
| test_cli_mcp_config_watch.py | ||
| test_cli_new_session.py | ||
| test_cli_pet_pane.py | ||
| test_cli_prefix_matching.py | ||
| test_cli_preloaded_skills.py | ||
| test_cli_provider_resolution.py | ||
| test_cli_reload_skills.py | ||
| test_cli_resume_command.py | ||
| test_cli_retry.py | ||
| test_cli_save_config_value.py | ||
| test_cli_secret_capture.py | ||
| test_cli_shift_enter_newline.py | ||
| test_cli_shutdown_memory_messages.py | ||
| test_cli_skin_integration.py | ||
| test_cli_status_bar.py | ||
| test_cli_status_command.py | ||
| test_cli_steer_busy_path.py | ||
| test_cli_terminal_response_sanitizer.py | ||
| test_cli_terminal_shortcuts.py | ||
| test_cli_tools_command.py | ||
| test_cli_user_message_preview.py | ||
| test_cli_yolo_toggle.py | ||
| test_compress_flags.py | ||
| test_compress_focus.py | ||
| test_compress_here.py | ||
| test_compress_type_ahead.py | ||
| test_cpr_local_leak.py | ||
| test_cprint_bg_thread.py | ||
| test_ctrl_enter_newline.py | ||
| test_cwd_env_respect.py | ||
| test_destructive_slash_confirm.py | ||
| test_destructive_slash_inline_skip_e2e.py | ||
| test_exit_delete_session.py | ||
| test_exit_summary_resume_hint.py | ||
| test_exit_watchdog_signal_arm.py | ||
| test_fast_command.py | ||
| test_manual_compress.py | ||
| test_moa_command.py | ||
| test_partial_compress.py | ||
| test_personality_none.py | ||
| test_prefill_config.py | ||
| test_prepend_note_to_message.py | ||
| test_prompt_text_input_thread_safety.py | ||
| test_quick_commands.py | ||
| test_reasoning_command.py | ||
| test_resume_display.py | ||
| test_resume_quiet_stderr.py | ||
| test_save_conversation_location.py | ||
| test_session_boundary_hooks.py | ||
| test_single_query_session_finalize.py | ||
| test_slash_command_interrupt.py | ||
| test_slash_confirm_windows.py | ||
| test_steer_inline_repaint_34569.py | ||
| test_stream_delta_think_tag.py | ||
| test_stream_partial_line_flush.py | ||
| test_surrogate_sanitization.py | ||
| test_terminal_interrupt_recovery.py | ||
| test_tool_progress_scrollback.py | ||
| test_tui_terminal_reset_on_exit.py | ||
| test_update_command.py | ||
| test_version_command.py | ||
| test_worktree.py | ||
| test_worktree_security.py | ||
| test_worktree_sync_base.py | ||