== relevant scripts/tests ==
./build/lib/plugins/hermes-achievements/tests/test_achievement_engine.py
./dualcoach/profile/tests/test_adaptive_nutrition.py
./dualcoach/profile/tests/test_checkin_flows.py
./dualcoach/profile/tests/test_coaching_grounding.py
./dualcoach/profile/tests/test_customer_admin.py
./dualcoach/profile/tests/test_customer_cleanup.py
./dualcoach/profile/tests/test_customer_cleanup_shared_ledgers.py
./dualcoach/profile/tests/test_customer_coaching_domain.py
./dualcoach/profile/tests/test_customer_nutrition_wizard.py
./dualcoach/profile/tests/test_customer_reporting.py
./dualcoach/profile/tests/test_customer_schedule.py
./dualcoach/profile/tests/test_diagnostic_evidence.py
./dualcoach/profile/tests/test_diagnostic_isolation.py
./dualcoach/profile/tests/test_diagnostic_policy_package.py
./dualcoach/profile/tests/test_event_contract.py
./dualcoach/profile/tests/test_history_baseline.py
./dualcoach/profile/tests/test_history_imports.py
./dualcoach/profile/tests/test_nutrition_onboarding.py
./dualcoach/profile/tests/test_nutrition_onboarding_adaptive.py
./dualcoach/profile/tests/test_nutrition_onboarding_admin.py
./dualcoach/profile/tests/test_nutrition_onboarding_calculations.py
./dualcoach/profile/tests/test_nutrition_onboarding_clarification_policy.py
./dualcoach/profile/tests/test_nutrition_onboarding_cli.py
./dualcoach/profile/tests/test_nutrition_onboarding_models.py
./dualcoach/profile/tests/test_nutrition_onboarding_store.py
./dualcoach/profile/tests/test_nutrition_readiness.py
./dualcoach/profile/tests/test_nutrition_restriction_kb.py
./dualcoach/profile/tests/test_operator_console.py
./dualcoach/profile/tests/test_owner_v1_contract.py
./dualcoach/profile/tests/test_owner_v1_migration.py
./dualcoach/profile/tests/test_staff_membership_activation_gate.py
./dualcoach/profile/tests/test_wizard_domain.py
./dualcoach/releases/v1.0.0/delivered/installed-golden-bundle/verification-tools/source_golden_path.py
./dualcoach/releases/v1.0.0/delivered/installed-golden-bundle/verification-tools/task26_local_telegram_qa.py
./dualcoach/releases/v1.0.0/delivered/installed-golden-bundle/verification-tools/verify_source_golden_path.py
./dualcoach/releases/v1.0.0/delivered/source-golden-bundle/verification-tools/source_golden_path.py
./dualcoach/releases/v1.0.0/delivered/source-golden-bundle/verification-tools/task26_local_telegram_qa.py
./dualcoach/releases/v1.0.0/delivered/source-golden-bundle/verification-tools/verify_source_golden_path.py
./dualcoach/releases/v1.0.0/delivered/verification-tools/source_golden_path.py
./dualcoach/releases/v1.0.0/delivered/verification-tools/task26_local_telegram_qa.py
./dualcoach/releases/v1.0.0/delivered/verification-tools/verify_source_golden_path.py
./dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/source_golden_path.py
./dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_local_telegram_qa.py
./dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/verify_source_golden_path.py
./dualcoach/releases/v1.1.0/source-golden-bundle/verification-tools/source_golden_path.py
./dualcoach/releases/v1.1.0/source-golden-bundle/verification-tools/task26_local_telegram_qa.py
./dualcoach/releases/v1.1.0/source-golden-bundle/verification-tools/verify_source_golden_path.py
./plugins/hermes-achievements/tests/test_achievement_engine.py
./scripts/verify_dualcoach_v11_candidate.py
./skills/creative/comfyui/tests/test_check_deps.py
./skills/creative/comfyui/tests/test_cloud_integration.py
./skills/creative/comfyui/tests/test_common.py
./skills/creative/comfyui/tests/test_extract_schema.py
./skills/creative/comfyui/tests/test_run_workflow.py
./tests/acp/test_approval_isolation.py
./tests/acp/test_auth.py
./tests/acp/test_edit_approval.py
./tests/acp/test_entry.py
./tests/acp/test_events.py
./tests/acp/test_mcp_e2e.py
./tests/acp/test_permissions.py
./tests/acp/test_ping_suppression.py
./tests/acp/test_registry_manifest.py
./tests/acp/test_server.py
./tests/acp/test_session.py
./tests/acp/test_session_db_private_access.py
./tests/acp/test_session_provenance.py
./tests/acp/test_tools.py
./tests/acp_adapter/test_acp_commands.py
./tests/acp_adapter/test_acp_images.py
./tests/acp_adapter/test_detect_provider_entra.py
./tests/agent/lsp/test_backend_gate.py
./tests/agent/lsp/test_broken_set.py
./tests/agent/lsp/test_client_e2e.py
./tests/agent/lsp/test_delta_key.py
./tests/agent/lsp/test_diagnostics_field.py
./tests/agent/lsp/test_eventlog.py
./tests/agent/lsp/test_install_and_lint_fixes.py
./tests/agent/lsp/test_lifecycle.py
./tests/agent/lsp/test_protocol.py
./tests/agent/lsp/test_reporter.py
./tests/agent/lsp/test_service.py
./tests/agent/lsp/test_shell_linter_lsp_skip.py
./tests/agent/lsp/test_workspace.py
./tests/agent/test_anthropic_adapter.py
./tests/agent/test_anthropic_keychain.py
./tests/agent/test_anthropic_kwargs_sanitize.py
./tests/agent/test_anthropic_mcp_prefix_strip.py
./tests/agent/test_anthropic_oauth_pkce.py
./tests/agent/test_anthropic_output_field_leak.py
./tests/agent/test_anthropic_thinking_block_order.py
./tests/agent/test_arcee_trinity_overrides.py
./tests/agent/test_async_utils.py
./tests/agent/test_auxiliary_client.py
./tests/agent/test_auxiliary_client_anthropic_custom.py
./tests/agent/test_auxiliary_client_azure_foundry.py
./tests/agent/test_auxiliary_client_xai_oauth_recovery.py
./tests/agent/test_auxiliary_config_bridge.py
./tests/agent/test_auxiliary_main_first.py
./tests/agent/test_auxiliary_named_custom_providers.py
./tests/agent/test_auxiliary_transport_autodetect.py
./tests/agent/test_auxiliary_user_default_headers.py
./tests/agent/test_azure_identity_adapter.py
./tests/agent/test_bedrock_1m_context.py
./tests/agent/test_bedrock_adapter.py
./tests/agent/test_bedrock_integration.py
./tests/agent/test_billing_view.py
./tests/agent/test_cascading_interrupt_6600.py
./tests/agent/test_codex_cloudflare_headers.py
./tests/agent/test_codex_responses_adapter.py
./tests/agent/test_codex_ttfb_watchdog.py
./tests/agent/test_coding_context.py
./tests/agent/test_compress_focus.py
./tests/agent/test_compressed_summary_metadata.py
./tests/agent/test_compression_concurrent_fork.py
./tests/agent/test_compression_logging_session_context.py
./tests/agent/test_compressor_assistant_tail_anchor.py
./tests/agent/test_compressor_historical_media.py
./tests/agent/test_compressor_image_tokens.py
./tests/agent/test_compressor_media_stripping.py
./tests/agent/test_context_compressor.py
./tests/agent/test_context_compressor_cross_session_guard.py
./tests/agent/test_context_compressor_summary_continuity.py
./tests/agent/test_context_compressor_temporal_anchoring.py
./tests/agent/test_context_engine.py
./tests/agent/test_context_engine_host_contract.py
./tests/agent/test_context_references.py
./tests/agent/test_copilot_acp_client.py
./tests/agent/test_copilot_acp_deprecation.py
./tests/agent/test_credential_pool.py
./tests/agent/test_credential_pool_routing.py
./tests/agent/test_credits_cold_start.py
./tests/agent/test_credits_fixture_snapshot.py
./tests/agent/test_credits_policy.py
./tests/agent/test_credits_tracker.py
./tests/agent/test_credits_view.py
./tests/agent/test_crossloop_client_cache.py
./tests/agent/test_curator.py
./tests/agent/test_curator_activity.py
./tests/agent/test_curator_backup.py
./tests/agent/test_curator_classification.py
./tests/agent/test_curator_reports.py
./tests/agent/test_custom_pool_mismatch_guard.py
./tests/agent/test_custom_provider_extra_body.py
./tests/agent/test_custom_providers_vision.py
./tests/agent/test_deepseek_anthropic_thinking.py
./tests/agent/test_direct_provider_url_detection.py
./tests/agent/test_display.py
./tests/agent/test_display_emoji.py
./tests/agent/test_display_todo_progress.py
./tests/agent/test_display_tool_failure.py
./tests/agent/test_empty_tool_name_loop_dampening.py
./tests/agent/test_error_classifier.py
./tests/agent/test_external_skills.py
./tests/agent/test_external_skills_dirs_cache.py
./tests/agent/test_file_safety.py
./tests/agent/test_file_safety_container_mirror.py
./tests/agent/test_file_safety_credentials.py
./tests/agent/test_file_safety_cross_profile.py
./tests/agent/test_file_safety_sandbox_mirror.py
./tests/agent/test_gemini_cloudcode.py
./tests/agent/test_gemini_fast_fallback.py
./tests/agent/test_gemini_free_tier_gate.py
./tests/agent/test_gemini_native_adapter.py
./tests/agent/test_gemini_schema.py
./tests/agent/test_i18n.py
./tests/agent/test_image_gen_registry.py
./tests/agent/test_image_routing.py
./tests/agent/test_insights.py
./tests/agent/test_jiter_preload.py
./tests/agent/test_kimi_coding_anthropic_thinking.py
./tests/agent/test_last_total_tokens.py
./tests/agent/test_local_stream_timeout.py
./tests/agent/test_markdown_tables.py
./tests/agent/test_memory_async_sync.py
./tests/agent/test_memory_provider.py
./tests/agent/test_memory_session_switch.py
./tests/agent/test_memory_skill_scaffolding.py
./tests/agent/test_memory_user_id.py
./tests/agent/test_message_content.py
./tests/agent/test_minimax_auxiliary_url.py
./tests/agent/test_minimax_provider.py
./tests/agent/test_model_metadata.py
./tests/agent/test_model_metadata_local_ctx.py
./tests/agent/test_model_metadata_ssl.py
./tests/agent/test_models_dev.py
./tests/agent/test_moonshot_schema.py
./tests/agent/test_non_stream_stale_timeout.py
./tests/agent/test_nous_credits_gauge.py
./tests/agent/test_nous_credits_snapshot.py
./tests/agent/test_nous_oauth_401_guidance.py
./tests/agent/test_nous_rate_guard.py
./tests/agent/test_onboarding.py
./tests/agent/test_openrouter_response_cache.py
./tests/agent/test_platform_hint_overrides.py
./tests/agent/test_plugin_llm.py
./tests/agent/test_portal_tags.py
./tests/agent/test_prompt_builder.py
./tests/agent/test_prompt_caching.py
./tests/agent/test_proxy_and_url_validation.py
./tests/agent/test_rate_limit_tracker.py
./tests/agent/test_redact.py
./tests/agent/test_resume_stale_active_task.py
./tests/agent/test_runtime_cwd.py
./tests/agent/test_save_url_image.py
./tests/agent/test_secret_scope.py
./tests/agent/test_set_runtime_main_custom_provider.py
./tests/agent/test_shell_hooks.py
./tests/agent/test_shell_hooks_consent.py
./tests/agent/test_skill_bundles.py
./tests/agent/test_skill_commands.py
./tests/agent/test_skill_commands_reload.py
./tests/agent/test_skill_utils.py
./tests/agent/test_ssl_ca_guard.py
./tests/agent/test_stream_read_timeout_floor.py
./tests/agent/test_streaming_context_scrubber.py
./tests/agent/test_subagent_progress.py
./tests/agent/test_subagent_stop_hook.py
./tests/agent/test_subdirectory_hints.py
./tests/agent/test_summary_prefix_semantics.py
./tests/agent/test_system_prompt.py
./tests/agent/test_system_prompt_restore.py
./tests/agent/test_think_scrubber.py
./tests/agent/test_title_generator.py
./tests/agent/test_tool_dispatch_helpers.py
./tests/agent/test_tool_guardrails.py
./tests/agent/test_tool_result_classification.py
./tests/agent/test_transcription_registry.py
./tests/agent/test_tts_registry.py
./tests/agent/test_turn_context.py
./tests/agent/test_turn_retry_state.py
./tests/agent/test_unsupported_parameter_retry.py
./tests/agent/test_unsupported_temperature_retry.py
./tests/agent/test_usage_pricing.py
./tests/agent/test_video_gen_registry.py
./tests/agent/test_vision_resolved_args.py
./tests/agent/test_vision_routing_31179.py
./tests/agent/transports/test_bedrock_transport.py
./tests/agent/transports/test_chat_completions.py
./tests/agent/transports/test_codex_app_server_runtime.py
./tests/agent/transports/test_codex_app_server_session.py
./tests/agent/transports/test_codex_event_projector.py
./tests/agent/transports/test_codex_transport.py
./tests/agent/transports/test_hermes_tools_mcp_server.py
./tests/agent/transports/test_transport.py
./tests/agent/transports/test_types.py
./tests/cli/test_bracketed_paste_timeout.py
./tests/cli/test_branch_command.py
./tests/cli/test_busy_input_mode_command.py
./tests/cli/test_cli_active_agent_ref_wiring.py
./tests/cli/test_cli_approval_ui.py
./tests/cli/test_cli_background_status_indicator.py
./tests/cli/test_cli_background_tui_refresh.py
./tests/cli/test_cli_bracketed_paste_sanitizer.py
./tests/cli/test_cli_browser_connect.py
./tests/cli/test_cli_context_warning.py
./tests/cli/test_cli_copy_command.py
./tests/cli/test_cli_extension_hooks.py
./tests/cli/test_cli_external_editor.py
./tests/cli/test_cli_file_drop.py
./tests/cli/test_cli_force_redraw.py
./tests/cli/test_cli_goal_interrupt.py
./tests/cli/test_cli_image_command.py
./tests/cli/test_cli_init.py
./tests/cli/test_cli_insights_command.py
./tests/cli/test_cli_interrupt_subagent.py
./tests/cli/test_cli_light_mode.py
./tests/cli/test_cli_loading_indicator.py
./tests/cli/test_cli_markdown_rendering.py
./tests/cli/test_cli_mcp_config_watch.py
./tests/cli/test_cli_new_session.py
./tests/cli/test_cli_prefix_matching.py
./tests/cli/test_cli_preloaded_skills.py
./tests/cli/test_cli_provider_resolution.py
./tests/cli/test_cli_reload_skills.py
./tests/cli/test_cli_resume_command.py
./tests/cli/test_cli_retry.py
./tests/cli/test_cli_save_config_value.py
./tests/cli/test_cli_secret_capture.py
./tests/cli/test_cli_shift_enter_newline.py
./tests/cli/test_cli_shutdown_memory_messages.py
./tests/cli/test_cli_skin_integration.py
./tests/cli/test_cli_status_bar.py
./tests/cli/test_cli_status_command.py
./tests/cli/test_cli_steer_busy_path.py
./tests/cli/test_cli_terminal_response_sanitizer.py
./tests/cli/test_cli_terminal_shortcuts.py
./tests/cli/test_cli_tools_command.py
./tests/cli/test_cli_user_message_preview.py
./tests/cli/test_cli_yolo_toggle.py
./tests/cli/test_compress_focus.py
./tests/cli/test_compress_here.py
./tests/cli/test_cprint_bg_thread.py
./tests/cli/test_ctrl_enter_newline.py
./tests/cli/test_cwd_env_respect.py
./tests/cli/test_destructive_slash_confirm.py
./tests/cli/test_destructive_slash_inline_skip_e2e.py
./tests/cli/test_exit_delete_session.py
./tests/cli/test_exit_summary_resume_hint.py
./tests/cli/test_fast_command.py
./tests/cli/test_gquota_command.py
./tests/cli/test_manual_compress.py
./tests/cli/test_partial_compress.py
./tests/cli/test_personality_none.py
./tests/cli/test_prefill_config.py
./tests/cli/test_prepend_note_to_message.py
./tests/cli/test_prompt_text_input_thread_safety.py
./tests/cli/test_quick_commands.py
./tests/cli/test_reasoning_command.py
./tests/cli/test_resume_display.py
./tests/cli/test_resume_quiet_stderr.py
./tests/cli/test_save_conversation_location.py
./tests/cli/test_session_boundary_hooks.py
./tests/cli/test_single_query_session_finalize.py
./tests/cli/test_slash_command_interrupt.py
./tests/cli/test_slash_confirm_windows.py
./tests/cli/test_steer_inline_repaint_34569.py
./tests/cli/test_stream_delta_think_tag.py
./tests/cli/test_surrogate_sanitization.py
./tests/cli/test_tool_progress_scrollback.py
./tests/cli/test_tui_terminal_reset_on_exit.py
./tests/cli/test_update_command.py
./tests/cli/test_version_command.py
./tests/cli/test_worktree.py
./tests/cli/test_worktree_security.py
./tests/cron/test_blueprint_catalog.py
./tests/cron/test_claim_job_for_fire.py
./tests/cron/test_codex_execution_paths.py
./tests/cron/test_compute_next_run_last_run_at.py
./tests/cron/test_cron_context_from.py
./tests/cron/test_cron_inactivity_timeout.py
./tests/cron/test_cron_no_agent.py
./tests/cron/test_cron_prompt_injection_skill.py
./tests/cron/test_cron_script.py
./tests/cron/test_cron_workdir.py
./tests/cron/test_cronjob_schema.py
./tests/cron/test_file_permissions.py
./tests/cron/test_jobs.py
./tests/cron/test_jobs_changed_notify.py
./tests/cron/test_jobs_crossprocess_lock.py
./tests/cron/test_parallel_pool.py
./tests/cron/test_physique_inline_card.py
./tests/cron/test_rewrite_skill_refs.py
./tests/cron/test_run_one_job.py
./tests/cron/test_scheduler.py
./tests/cron/test_scheduler_mcp_init.py
./tests/cron/test_scheduler_provider.py
./tests/cron/test_suggestions.py
./tests/docker/test_container_restart.py
./tests/docker/test_dashboard.py
./tests/docker/test_docker_exec_privilege_drop.py
./tests/docker/test_dump_build_sha.py
./tests/docker/test_gateway_run_supervised.py
./tests/docker/test_immutable_install_permissions.py
./tests/docker/test_main_invocation.py
./tests/docker/test_profile_gateway.py
./tests/docker/test_s6_profile_gateway_integration.py
./tests/docker/test_tui_passthrough.py
./tests/docker/test_tui_prebuilt_bundle.py
./tests/docker/test_zombie_reaping.py
./tests/e2e/matrix_xsign_bootstrap/test_bootstrap.py
./tests/e2e/test_discord_adapter.py
./tests/e2e/test_platform_commands.py
./tests/gateway/platforms/test_yuanbao_recall_db_only.py
./tests/gateway/relay/test_auth.py
./tests/gateway/relay/test_contract_doc_conformance.py
./tests/gateway/relay/test_descriptor.py
./tests/gateway/relay/test_descriptor_from_entry.py
./tests/gateway/relay/test_no_stub_leak.py
./tests/gateway/relay/test_relay_adapter.py
./tests/gateway/relay/test_relay_follow_up.py
./tests/gateway/relay/test_relay_interrupt.py
./tests/gateway/relay/test_relay_registration.py
./tests/gateway/relay/test_relay_roundtrip.py
./tests/gateway/relay/test_relay_roundtrip_telegram.py
./tests/gateway/relay/test_relay_sheds_crypto.py
./tests/gateway/relay/test_self_provision.py
./tests/gateway/relay/test_ws_transport.py
./tests/gateway/test_35809_auto_reset_clean_context.py
./tests/gateway/test_42039_duplicate_user_message.py
./tests/gateway/test_7100_transient_failure_transcript.py
./tests/gateway/test_active_session_text_merge.py
./tests/gateway/test_adaptive_nutrition.py
./tests/gateway/test_agent_cache.py
./tests/gateway/test_allowed_channels_widening.py
./tests/gateway/test_allowlist_startup_check.py
./tests/gateway/test_api_server.py
./tests/gateway/test_api_server_bind_guard.py
./tests/gateway/test_api_server_jobs.py
./tests/gateway/test_api_server_multimodal.py
./tests/gateway/test_api_server_normalize.py
./tests/gateway/test_api_server_runs.py
./tests/gateway/test_api_server_toolset.py
./tests/gateway/test_approve_deny_commands.py
./tests/gateway/test_auth_fallback.py
./tests/gateway/test_auto_continue.py
./tests/gateway/test_auto_voice_reply_format.py
./tests/gateway/test_background_command.py
./tests/gateway/test_background_process_notifications.py
./tests/gateway/test_base_topic_sessions.py
./tests/gateway/test_bluebubbles.py
./tests/gateway/test_bundles_command.py
./tests/gateway/test_busy_session_ack.py
./tests/gateway/test_busy_session_auth_bypass.py
./tests/gateway/test_cached_agent_max_iterations.py
./tests/gateway/test_cancel_background_drain.py
./tests/gateway/test_channel_directory.py
./tests/gateway/test_clean_shutdown_marker.py
./tests/gateway/test_command_bypass_active_session.py
./tests/gateway/test_complete_path_at_filter.py
./tests/gateway/test_compress_command.py
./tests/gateway/test_compress_focus.py
./tests/gateway/test_compress_plugin_engine.py
./tests/gateway/test_compression_concurrent_sessions.py
./tests/gateway/test_compression_failure_session_sync.py
./tests/gateway/test_compression_session_id_persistence.py
./tests/gateway/test_config.py
./tests/gateway/test_config_cwd_bridge.py
./tests/gateway/test_config_driven_access_policy.py
./tests/gateway/test_config_env_bridge_authority.py
./tests/gateway/test_cron_fire_webhook.py
./tests/gateway/test_debug_command.py
./tests/gateway/test_delivery.py
./tests/gateway/test_delivery_silence_filter.py
./tests/gateway/test_destructive_slash_confirm.py
./tests/gateway/test_diagnostic_isolation.py
./tests/gateway/test_dingtalk.py
./tests/gateway/test_discord_allowed_channels.py
./tests/gateway/test_discord_allowed_mentions.py
./tests/gateway/test_discord_attachment_download.py
./tests/gateway/test_discord_bot_auth_bypass.py
./tests/gateway/test_discord_bot_filter.py
./tests/gateway/test_discord_channel_controls.py
./tests/gateway/test_discord_channel_prompts.py
./tests/gateway/test_discord_channel_skills.py
./tests/gateway/test_discord_clarify_buttons.py
./tests/gateway/test_discord_component_auth.py
./tests/gateway/test_discord_connect.py
./tests/gateway/test_discord_document_handling.py
./tests/gateway/test_discord_free_response.py
./tests/gateway/test_discord_imports.py
./tests/gateway/test_discord_lazy_install_views.py
./tests/gateway/test_discord_media_metadata.py
./tests/gateway/test_discord_model_picker.py
./tests/gateway/test_discord_opus.py
./tests/gateway/test_discord_race_polish.py
./tests/gateway/test_discord_reactions.py
./tests/gateway/test_discord_reply_mode.py
./tests/gateway/test_discord_roles_dm_scope.py
./tests/gateway/test_discord_send.py
./tests/gateway/test_discord_slash_auth.py
./tests/gateway/test_discord_slash_commands.py
./tests/gateway/test_discord_system_messages.py
./tests/gateway/test_discord_thread_persistence.py
./tests/gateway/test_discord_voice_mixer.py
./tests/gateway/test_display_config.py
./tests/gateway/test_dm_topics.py
./tests/gateway/test_document_cache.py
./tests/gateway/test_document_context_note.py
./tests/gateway/test_duplicate_reply_suppression.py
./tests/gateway/test_email.py
./tests/gateway/test_empty_model_recovery.py
./tests/gateway/test_ephemeral_reply.py
./tests/gateway/test_extract_local_files.py
./tests/gateway/test_fallback_eviction.py
./tests/gateway/test_fast_command.py
./tests/gateway/test_feishu.py
./tests/gateway/test_feishu_approval_buttons.py
./tests/gateway/test_feishu_bot_admission.py
./tests/gateway/test_feishu_bot_auth_bypass.py
./tests/gateway/test_feishu_comment.py
./tests/gateway/test_feishu_comment_rules.py
./tests/gateway/test_feishu_meeting_invite.py
./tests/gateway/test_feishu_onboard.py
./tests/gateway/test_fresh_reset_skill_injection.py
./tests/gateway/test_gateway_command_help.py
./tests/gateway/test_gateway_command_line_matcher.py
./tests/gateway/test_gateway_inactivity_timeout.py
./tests/gateway/test_gateway_shutdown.py
./tests/gateway/test_gateway_silence_tokens.py
./tests/gateway/test_goal_max_turns_config.py
./tests/gateway/test_goal_status_notice.py
./tests/gateway/test_goal_verdict_send.py
./tests/gateway/test_google_chat.py
./tests/gateway/test_home_target_env_var.py
./tests/gateway/test_homeassistant.py
./tests/gateway/test_hooks.py
./tests/gateway/test_insights_unicode_flags.py
./tests/gateway/test_internal_event_bypass_pairing.py
./tests/gateway/test_interrupt_key_match.py
./tests/gateway/test_irc_adapter.py
./tests/gateway/test_kanban_notifier.py
./tests/gateway/test_kanban_notifier_watcher_dispatch_gate.py
./tests/gateway/test_kanban_watchers_mixin.py
./tests/gateway/test_keep_typing_timeout.py
./tests/gateway/test_korean_humanizer.py
./tests/gateway/test_line_plugin.py
./tests/gateway/test_load_transcript_db_only.py
./tests/gateway/test_loop_exception_handler.py
./tests/gateway/test_matrix.py
./tests/gateway/test_matrix_approval_reaction_fail_closed.py
./tests/gateway/test_matrix_exec_approval.py
./tests/gateway/test_matrix_mention.py
./tests/gateway/test_matrix_project_context_isolation.py
./tests/gateway/test_matrix_voice.py
./tests/gateway/test_mattermost.py
./tests/gateway/test_max_concurrent_sessions.py
./tests/gateway/test_max_tokens_propagation.py
./tests/gateway/test_mcp_reload_refreshes_cached_agents.py
./tests/gateway/test_media_download_retry.py
./tests/gateway/test_media_extraction.py
./tests/gateway/test_media_metadata_contract.py
./tests/gateway/test_memory_monitor.py
./tests/gateway/test_message_deduplicator.py
./tests/gateway/test_message_timestamps.py
./tests/gateway/test_mirror.py
./tests/gateway/test_model_command_custom_providers.py
./tests/gateway/test_model_command_expensive_confirm.py
./tests/gateway/test_model_command_flat_string_config.py
./tests/gateway/test_model_picker_persist.py
./tests/gateway/test_model_switch_persistence.py
./tests/gateway/test_msgraph_webhook.py
./tests/gateway/test_multiplex_adapter_registry.py
./tests/gateway/test_multiplex_credential_isolation.py
./tests/gateway/test_multiplex_http_routing.py
./tests/gateway/test_multiplex_lifecycle.py
./tests/gateway/test_multiplex_phase0.py
./tests/gateway/test_native_image_buffer_isolation.py
./tests/gateway/test_notice_delivery.py
./tests/gateway/test_notice_rendering.py
./tests/gateway/test_ntfy_plugin.py
./tests/gateway/test_nutrition_coaching.py
./tests/gateway/test_pairing.py
./tests/gateway/test_pending_drain_no_recursion.py
./tests/gateway/test_pending_drain_race.py
./tests/gateway/test_pending_event_none.py
./tests/gateway/test_per_platform_streaming_defaults.py
./tests/gateway/test_pii_redaction.py
./tests/gateway/test_planned_stop_watcher.py
./tests/gateway/test_platform_base.py
./tests/gateway/test_platform_connected_checkers.py
./tests/gateway/test_platform_http_client_limits.py
./tests/gateway/test_platform_reconnect.py
./tests/gateway/test_platform_reconnect_fd_leak.py
./tests/gateway/test_platform_registry.py
./tests/gateway/test_plugin_platform_interface.py
./tests/gateway/test_post_delivery_callback_chaining.py
./tests/gateway/test_pre_gateway_dispatch.py
./tests/gateway/test_proxy_mode.py
./tests/gateway/test_qqbot.py
./tests/gateway/test_queue_consumption.py
./tests/gateway/test_raft_adapter.py
./tests/gateway/test_reasoning_command.py
./tests/gateway/test_relay_capability_surface.py
./tests/gateway/test_reload_skills_command.py
./tests/gateway/test_reload_skills_discord_resync.py
./tests/gateway/test_replay_entry_fields.py
./tests/gateway/test_reply_to_injection.py
./tests/gateway/test_response_filters.py
./tests/gateway/test_restart_drain.py
./tests/gateway/test_restart_notification.py
./tests/gateway/test_restart_redelivery_dedup.py
./tests/gateway/test_restart_resume_pending.py
./tests/gateway/test_resume_command.py
./tests/gateway/test_retry_replacement.py
./tests/gateway/test_retry_response.py
./tests/gateway/test_run_cleanup_progress.py
./tests/gateway/test_run_progress_interrupt.py
./tests/gateway/test_run_progress_topics.py
./tests/gateway/test_run_tool_media_re.py
./tests/gateway/test_runner_fatal_adapter.py
./tests/gateway/test_runner_startup_failures.py
./tests/gateway/test_running_agent_session_toggles.py
./tests/gateway/test_runtime_config_env_expansion.py
./tests/gateway/test_runtime_env_reload_config_authority.py
./tests/gateway/test_runtime_footer.py
./tests/gateway/test_safe_adapter_disconnect.py
./tests/gateway/test_send_image_file.py
./tests/gateway/test_send_multiple_images.py
./tests/gateway/test_send_retry.py
./tests/gateway/test_send_voice_reply_notify.py
./tests/gateway/test_session.py
./tests/gateway/test_session_api.py
./tests/gateway/test_session_boundary_hooks.py
./tests/gateway/test_session_boundary_security_state.py
./tests/gateway/test_session_dm_thread_seeding.py
./tests/gateway/test_session_env.py
./tests/gateway/test_session_hygiene.py
./tests/gateway/test_session_info.py
./tests/gateway/test_session_list_allowed_sources.py
./tests/gateway/test_session_model_override_routing.py
./tests/gateway/test_session_model_reset.py
./tests/gateway/test_session_override_thread_recovery.py
./tests/gateway/test_session_race_guard.py
./tests/gateway/test_session_reset_notify.py
./tests/gateway/test_session_split_brain_11016.py
./tests/gateway/test_session_state_cleanup.py
./tests/gateway/test_session_store_prune.py
./tests/gateway/test_setup_feishu.py
./tests/gateway/test_shared_group_sender_prefix.py
./tests/gateway/test_shutdown_cache_cleanup.py
./tests/gateway/test_shutdown_forensics.py
./tests/gateway/test_shutdown_memory_provider_messages.py
./tests/gateway/test_signal.py
./tests/gateway/test_signal_format.py
./tests/gateway/test_signal_rate_limit.py
./tests/gateway/test_simplex_plugin.py
./tests/gateway/test_slack.py
./tests/gateway/test_slack_approval_buttons.py
./tests/gateway/test_slack_channel_session_scope.py
./tests/gateway/test_slack_channel_skills.py
./tests/gateway/test_slack_mention.py
./tests/gateway/test_slack_plugin_action_handlers.py
./tests/gateway/test_slash_access.py
./tests/gateway/test_slash_access_dispatch.py
./tests/gateway/test_sms.py
./tests/gateway/test_sse_agent_cancel.py
./tests/gateway/test_ssl_cert_detection.py
./tests/gateway/test_ssl_certs.py
./tests/gateway/test_status.py
./tests/gateway/test_status_command.py
./tests/gateway/test_steer_command.py
./tests/gateway/test_step_callback_compat.py
./tests/gateway/test_sticker_cache.py
./tests/gateway/test_stop_thread_sibling.py
./tests/gateway/test_stream_consumer.py
./tests/gateway/test_stream_consumer_draft.py
./tests/gateway/test_stream_consumer_fresh_final.py
./tests/gateway/test_stream_consumer_thread_routing.py
./tests/gateway/test_stream_events.py
./tests/gateway/test_stt_config.py
./tests/gateway/test_stuck_loop.py
./tests/gateway/test_subagent_protection_30170.py
./tests/gateway/test_teams.py
./tests/gateway/test_teams_pipeline_runtime_wiring.py
./tests/gateway/test_telegram_approval_buttons.py
./tests/gateway/test_telegram_audio_vs_voice.py
./tests/gateway/test_telegram_callback_auth_fail_closed.py
./tests/gateway/test_telegram_caption_merge.py
./tests/gateway/test_telegram_channel_posts.py
./tests/gateway/test_telegram_clarify_buttons.py
./tests/gateway/test_telegram_conflict.py
./tests/gateway/test_telegram_customer_bootstrap_invite_ttl.py
./tests/gateway/test_telegram_documents.py
./tests/gateway/test_telegram_format.py
./tests/gateway/test_telegram_forum_commands.py
./tests/gateway/test_telegram_group_gating.py
./tests/gateway/test_telegram_max_doc_bytes.py
./tests/gateway/test_telegram_mention_boundaries.py
./tests/gateway/test_telegram_model_picker.py
./tests/gateway/test_telegram_network.py
./tests/gateway/test_telegram_network_reconnect.py
./tests/gateway/test_telegram_noise_filter.py
./tests/gateway/test_telegram_overflow_partial.py
./tests/gateway/test_telegram_photo_interrupts.py
./tests/gateway/test_telegram_physique_checkin.py
./tests/gateway/test_telegram_progress_edit_transient.py
./tests/gateway/test_telegram_reactions.py
./tests/gateway/test_telegram_reply_mode.py
./tests/gateway/test_telegram_reply_quote.py
./tests/gateway/test_telegram_rich_messages.py
./tests/gateway/test_telegram_send_draft_format.py
./tests/gateway/test_telegram_send_path_health.py
./tests/gateway/test_telegram_slash_confirm.py
./tests/gateway/test_telegram_status_indicator.py
./tests/gateway/test_telegram_status_update.py
./tests/gateway/test_telegram_text_batch_perf.py
./tests/gateway/test_telegram_text_batching.py
./tests/gateway/test_telegram_thread_fallback.py
./tests/gateway/test_telegram_topic_mode.py
./tests/gateway/test_telegram_voice_v0_regressions.py
./tests/gateway/test_telegram_webhook_secret.py
./tests/gateway/test_text_batching.py
./tests/gateway/test_title_command.py
./tests/gateway/test_tool_response_drop_recovery.py
./tests/gateway/test_transcript_offset.py
./tests/gateway/test_tts_media_routing.py
./tests/gateway/test_unauthorized_dm_behavior.py
./tests/gateway/test_unavailable_skill_hint.py
./tests/gateway/test_undo_rewind_session.py
./tests/gateway/test_unknown_command.py
./tests/gateway/test_update_command.py
./tests/gateway/test_update_streaming.py
./tests/gateway/test_usage_command.py
./tests/gateway/test_verbose_command.py
./tests/gateway/test_verify_dualcoach_v11_candidate.py
./tests/gateway/test_version_command.py
./tests/gateway/test_video_context_note.py
./tests/gateway/test_vision_memory_leak.py
./tests/gateway/test_voice_command.py
./tests/gateway/test_voice_mode_platform_isolation.py
./tests/gateway/test_weak_credential_guard.py
./tests/gateway/test_webhook_adapter.py
./tests/gateway/test_webhook_deliver_only.py
./tests/gateway/test_webhook_dynamic_routes.py
./tests/gateway/test_webhook_integration.py
./tests/gateway/test_webhook_signature_rate_limit.py
./tests/gateway/test_wecom.py
./tests/gateway/test_wecom_callback.py
./tests/gateway/test_weixin.py
./tests/gateway/test_weixin_typing.py
./tests/gateway/test_whatsapp_cloud.py
./tests/gateway/test_whatsapp_connect.py
./tests/gateway/test_whatsapp_formatting.py
./tests/gateway/test_whatsapp_group_gating.py
./tests/gateway/test_whatsapp_reply_prefix.py
./tests/gateway/test_whatsapp_stale_bridge.py
./tests/gateway/test_whatsapp_text_batching.py
./tests/gateway/test_ws_auth_retry.py
./tests/gateway/test_yolo_command.py
./tests/hermes_cli/test_active_sessions.py
./tests/hermes_cli/test_anthropic_model_flow_stale_oauth.py
./tests/hermes_cli/test_anthropic_oauth_flow.py
./tests/hermes_cli/test_anthropic_picker_curated.py
./tests/hermes_cli/test_anthropic_provider_persistence.py
./tests/hermes_cli/test_api_key_providers.py
./tests/hermes_cli/test_apply_model_switch_result_context.py
./tests/hermes_cli/test_apply_profile_override.py
./tests/hermes_cli/test_arcee_provider.py
./tests/hermes_cli/test_argparse_flag_propagation.py
./tests/hermes_cli/test_at_context_completion_filter.py
./tests/hermes_cli/test_atomic_json_write.py
./tests/hermes_cli/test_atomic_yaml_write.py
./tests/hermes_cli/test_auth_codex_provider.py
./tests/hermes_cli/test_auth_codex_self_heal.py
./tests/hermes_cli/test_auth_commands.py
./tests/hermes_cli/test_auth_loopback_ssh_hint.py
./tests/hermes_cli/test_auth_manual_paste.py
./tests/hermes_cli/test_auth_nous_provider.py
./tests/hermes_cli/test_auth_profile_fallback.py
./tests/hermes_cli/test_auth_provider_gate.py
./tests/hermes_cli/test_auth_qwen_provider.py
./tests/hermes_cli/test_auth_ssl_macos.py
./tests/hermes_cli/test_auth_toctou_file_modes.py
./tests/hermes_cli/test_auth_usable_secret.py
./tests/hermes_cli/test_auth_xai_oauth_provider.py
./tests/hermes_cli/test_aux_config.py
./tests/hermes_cli/test_azure_detect.py
./tests/hermes_cli/test_azure_foundry_entra.py
./tests/hermes_cli/test_backup.py
./tests/hermes_cli/test_banner.py
./tests/hermes_cli/test_banner_git_state.py
./tests/hermes_cli/test_banner_pip_update.py
./tests/hermes_cli/test_banner_skills.py
./tests/hermes_cli/test_bedrock_model_picker.py
./tests/hermes_cli/test_billing_cli.py
./tests/hermes_cli/test_billing_portal_url.py
./tests/hermes_cli/test_billing_scope_stepup.py
./tests/hermes_cli/test_build_info.py
./tests/hermes_cli/test_bundles.py
./tests/hermes_cli/test_chat_skills_flag.py
./tests/hermes_cli/test_claw.py
./tests/hermes_cli/test_clear_stale_base_url.py
./tests/hermes_cli/test_cli_active_session_limit.py
./tests/hermes_cli/test_cli_output.py
./tests/hermes_cli/test_cmd_update.py
./tests/hermes_cli/test_cmd_update_docker.py
./tests/hermes_cli/test_coalesce_session_args.py
./tests/hermes_cli/test_codex_cli_model_picker.py
./tests/hermes_cli/test_codex_models.py
./tests/hermes_cli/test_codex_runtime_plugin_migration.py
./tests/hermes_cli/test_codex_runtime_switch.py
./tests/hermes_cli/test_commands.py
./tests/hermes_cli/test_completion.py
./tests/hermes_cli/test_config.py
./tests/hermes_cli/test_config_drift.py
./tests/hermes_cli/test_config_env_expansion.py
./tests/hermes_cli/test_config_env_refs.py
./tests/hermes_cli/test_config_validation.py
./tests/hermes_cli/test_container_aware_cli.py
./tests/hermes_cli/test_container_boot.py
./tests/hermes_cli/test_copilot_auth.py
./tests/hermes_cli/test_copilot_catalog_oauth_fallback.py
./tests/hermes_cli/test_copilot_context.py
./tests/hermes_cli/test_copilot_in_model_list.py
./tests/hermes_cli/test_copilot_token_exchange.py
./tests/hermes_cli/test_cron.py
./tests/hermes_cli/test_cron_fire_dashboard.py
./tests/hermes_cli/test_cron_parser_builder.py
./tests/hermes_cli/test_curator_archive_prune.py
./tests/hermes_cli/test_curator_recent_run_notice.py
./tests/hermes_cli/test_curator_run.py
./tests/hermes_cli/test_curator_status.py
./tests/hermes_cli/test_curses_arrow_keys.py
./tests/hermes_cli/test_curses_color_compat.py
./tests/hermes_cli/test_curses_ui_fuzzy_rank.py
./tests/hermes_cli/test_curses_ui_search.py
./tests/hermes_cli/test_custom_provider_context_length.py
./tests/hermes_cli/test_custom_provider_identity.py
./tests/hermes_cli/test_custom_provider_model_switch.py
./tests/hermes_cli/test_dashboard_admin_endpoints.py
./tests/hermes_cli/test_dashboard_auth_401_reauth.py
./tests/hermes_cli/test_dashboard_auth_audit.py
./tests/hermes_cli/test_dashboard_auth_cookies.py
./tests/hermes_cli/test_dashboard_auth_gate.py
./tests/hermes_cli/test_dashboard_auth_middleware.py
./tests/hermes_cli/test_dashboard_auth_password_login.py
./tests/hermes_cli/test_dashboard_auth_plugin_hook.py
./tests/hermes_cli/test_dashboard_auth_prefix.py
./tests/hermes_cli/test_dashboard_auth_provider_base.py
./tests/hermes_cli/test_dashboard_auth_status_endpoint.py
./tests/hermes_cli/test_dashboard_auth_stub_provider.py
./tests/hermes_cli/test_dashboard_auth_ws_auth.py
./tests/hermes_cli/test_dashboard_auth_ws_tickets.py
./tests/hermes_cli/test_dashboard_browser_safe_imports.py
./tests/hermes_cli/test_dashboard_lifecycle_flags.py
./tests/hermes_cli/test_dashboard_profiles_nav_label.py
./tests/hermes_cli/test_dashboard_register.py
./tests/hermes_cli/test_dashboard_tui_backcompat.py
./tests/hermes_cli/test_dashboard_unified_launch.py
./tests/hermes_cli/test_debug.py
./tests/hermes_cli/test_default_interface_resolution.py
./tests/hermes_cli/test_dep_ensure.py
./tests/hermes_cli/test_deprecated_cwd_warning.py
./tests/hermes_cli/test_destructive_slash_confirm_gate.py
./tests/hermes_cli/test_detect_api_mode_for_url.py
./tests/hermes_cli/test_determine_api_mode_hostname.py
./tests/hermes_cli/test_dingtalk_auth.py
./tests/hermes_cli/test_discord_skill_clamp_warning.py
./tests/hermes_cli/test_doctor.py
./tests/hermes_cli/test_doctor_command_install.py
./tests/hermes_cli/test_doctor_dedicated_provider_skip.py
./tests/hermes_cli/test_dump_git_commit.py
./tests/hermes_cli/test_dump_terminal_backend.py
./tests/hermes_cli/test_ensure_hermes_home_uid_34107.py
./tests/hermes_cli/test_ensure_utf8_locale.py
./tests/hermes_cli/test_env_load_cache.py
./tests/hermes_cli/test_env_loader.py
./tests/hermes_cli/test_env_sanitize_on_load.py
./tests/hermes_cli/test_fallback_cmd.py
./tests/hermes_cli/test_gateway.py
./tests/hermes_cli/test_gateway_linger.py
./tests/hermes_cli/test_gateway_platform_gating.py
./tests/hermes_cli/test_gateway_proc_fallback.py
./tests/hermes_cli/test_gateway_restart_loop.py
./tests/hermes_cli/test_gateway_runtime_health.py
./tests/hermes_cli/test_gateway_s6_dispatch.py
./tests/hermes_cli/test_gateway_service.py
./tests/hermes_cli/test_gateway_service_paths.py
./tests/hermes_cli/test_gateway_windows.py
./tests/hermes_cli/test_gateway_wsl.py
./tests/hermes_cli/test_gemini_free_tier_setup_block.py
./tests/hermes_cli/test_gemini_provider.py
./tests/hermes_cli/test_gmi_provider.py
./tests/hermes_cli/test_goals.py
./tests/hermes_cli/test_graphical_browser_detection.py
./tests/hermes_cli/test_gui_command.py
./tests/hermes_cli/test_gui_uninstall.py
./tests/hermes_cli/test_hooks_cli.py
./tests/hermes_cli/test_ignore_user_config_flags.py
./tests/hermes_cli/test_image_gen_picker.py
./tests/hermes_cli/test_install_cua_driver.py
./tests/hermes_cli/test_inventory.py
./tests/hermes_cli/test_inventory_pricing.py
./tests/hermes_cli/test_kanban_blocked_sticky.py
./tests/hermes_cli/test_kanban_boards.py
./tests/hermes_cli/test_kanban_cli.py
./tests/hermes_cli/test_kanban_cli_dispatch_passthrough.py
./tests/hermes_cli/test_kanban_core_functionality.py
./tests/hermes_cli/test_kanban_db.py
./tests/hermes_cli/test_kanban_db_init.py
./tests/hermes_cli/test_kanban_decompose.py
./tests/hermes_cli/test_kanban_decompose_db.py
./tests/hermes_cli/test_kanban_default_assignee.py
./tests/hermes_cli/test_kanban_diagnostics.py
./tests/hermes_cli/test_kanban_goal_mode.py
./tests/hermes_cli/test_kanban_notify.py
./tests/hermes_cli/test_kanban_per_profile_cap.py
./tests/hermes_cli/test_kanban_promote.py
./tests/hermes_cli/test_kanban_specify.py
./tests/hermes_cli/test_kanban_specify_db.py
./tests/hermes_cli/test_kanban_swarm.py
./tests/hermes_cli/test_kanban_worker_image_extraction.py
./tests/hermes_cli/test_kanban_worker_spawn_toolsets.py
./tests/hermes_cli/test_launcher.py
./tests/hermes_cli/test_list_picker_providers.py
./tests/hermes_cli/test_logs.py
./tests/hermes_cli/test_managed_installs.py
./tests/hermes_cli/test_managed_scope.py
./tests/hermes_cli/test_managed_scope_cli_config.py
./tests/hermes_cli/test_managed_scope_config.py
./tests/hermes_cli/test_managed_scope_env.py
./tests/hermes_cli/test_managed_scope_loaders.py
./tests/hermes_cli/test_managed_scope_overlay.py
./tests/hermes_cli/test_managed_scope_regression.py
./tests/hermes_cli/test_managed_scope_surfacing.py
./tests/hermes_cli/test_managed_scope_writeguard.py
./tests/hermes_cli/test_managed_uv.py
./tests/hermes_cli/test_mcp_add_command_dest.py
./tests/hermes_cli/test_mcp_catalog.py
./tests/hermes_cli/test_mcp_config.py
./tests/hermes_cli/test_mcp_reload_confirm_gate.py
./tests/hermes_cli/test_mcp_security.py
./tests/hermes_cli/test_mcp_startup.py
./tests/hermes_cli/test_mcp_tools_config.py
./tests/hermes_cli/test_memory_providers.py
./tests/hermes_cli/test_memory_reset.py
./tests/hermes_cli/test_memory_setup.py
./tests/hermes_cli/test_memory_setup_provider_arg.py
./tests/hermes_cli/test_migrate_xai.py
./tests/hermes_cli/test_model_catalog.py
./tests/hermes_cli/test_model_cost_guard.py
./tests/hermes_cli/test_model_normalize.py
./tests/hermes_cli/test_model_picker_expensive_confirm.py
./tests/hermes_cli/test_model_picker_viewport.py
./tests/hermes_cli/test_model_provider_persistence.py
./tests/hermes_cli/test_model_switch_context_display.py
./tests/hermes_cli/test_model_switch_copilot_api_mode.py
./tests/hermes_cli/test_model_switch_custom_providers.py
./tests/hermes_cli/test_model_switch_opencode_anthropic.py
./tests/hermes_cli/test_model_switch_persist_default.py
./tests/hermes_cli/test_model_switch_variant_tags.py
./tests/hermes_cli/test_model_validation.py
./tests/hermes_cli/test_models.py
./tests/hermes_cli/test_models_dev_preferred_merge.py
./tests/hermes_cli/test_non_ascii_credential.py
./tests/hermes_cli/test_nous_account.py
./tests/hermes_cli/test_nous_auth_status_cache.py
./tests/hermes_cli/test_nous_hermes_non_agentic.py
./tests/hermes_cli/test_nous_inference_url_validation.py
./tests/hermes_cli/test_nous_subscription.py
./tests/hermes_cli/test_ollama_cloud_auth.py
./tests/hermes_cli/test_ollama_cloud_provider.py
./tests/hermes_cli/test_openai_codex_model_validation_fallback.py
./tests/hermes_cli/test_openai_picker_curated.py
./tests/hermes_cli/test_opencode_go_flat_namespace.py
./tests/hermes_cli/test_opencode_go_in_model_list.py
./tests/hermes_cli/test_opencode_go_validation_fallback.py
./tests/hermes_cli/test_overlay_slug_resolution.py
./tests/hermes_cli/test_path_completion.py
./tests/hermes_cli/test_picker_prewarm.py
./tests/hermes_cli/test_pin_kanban_board_env.py
./tests/hermes_cli/test_pip_install_detection.py
./tests/hermes_cli/test_placeholder_usage.py
./tests/hermes_cli/test_plugin_auxiliary_tasks.py
./tests/hermes_cli/test_plugin_cli_registration.py
./tests/hermes_cli/test_plugin_scanner_recursion.py
./tests/hermes_cli/test_plugins.py
./tests/hermes_cli/test_plugins_cmd.py
./tests/hermes_cli/test_plugins_cmd_category_discovery.py
./tests/hermes_cli/test_plugins_cmd_enable_disable_nested.py
./tests/hermes_cli/test_plugins_cmd_list.py
./tests/hermes_cli/test_plugins_transcription_registration.py
./tests/hermes_cli/test_plugins_tts_registration.py
./tests/hermes_cli/test_post_setup_gating.py
./tests/hermes_cli/test_profile_describer.py
./tests/hermes_cli/test_profile_distribution.py
./tests/hermes_cli/test_profile_export_credentials.py
./tests/hermes_cli/test_profiles.py
./tests/hermes_cli/test_profiles_s6_hooks.py
./tests/hermes_cli/test_project_plugin_rce_bypass.py
./tests/hermes_cli/test_prompt_api_key.py
./tests/hermes_cli/test_prompt_size.py
./tests/hermes_cli/test_provider_catalog.py
./tests/hermes_cli/test_provider_config_validation.py
./tests/hermes_cli/test_provider_groups.py
./tests/hermes_cli/test_provider_live_curated_merge.py
./tests/hermes_cli/test_provider_parity.py
./tests/hermes_cli/test_proxy.py
./tests/hermes_cli/test_psutil_android_extract.py
./tests/hermes_cli/test_pty_bridge.py
./tests/hermes_cli/test_reasoning_effort_menu.py
./tests/hermes_cli/test_redact_config_bridge.py
./tests/hermes_cli/test_regression_16767.py
./tests/hermes_cli/test_relaunch.py
./tests/hermes_cli/test_resolve_last_session.py
./tests/hermes_cli/test_resolve_provider_openrouter_pool.py
./tests/hermes_cli/test_run_with_idle_timeout.py
./tests/hermes_cli/test_runtime_provider_resolution.py
./tests/hermes_cli/test_safe_mode.py
./tests/hermes_cli/test_secret_prompt.py
./tests/hermes_cli/test_secrets_bitwarden_non_tty.py
./tests/hermes_cli/test_security_advisories.py
./tests/hermes_cli/test_security_audit.py
./tests/hermes_cli/test_send_cmd.py
./tests/hermes_cli/test_service_manager.py
./tests/hermes_cli/test_session_browse.py
./tests/hermes_cli/test_session_handoff.py
./tests/hermes_cli/test_session_recap.py
./tests/hermes_cli/test_sessions_delete.py
./tests/hermes_cli/test_set_config_value.py
./tests/hermes_cli/test_setup.py
./tests/hermes_cli/test_setup_agent_settings.py
./tests/hermes_cli/test_setup_hermes_script.py
./tests/hermes_cli/test_setup_irc.py
./tests/hermes_cli/test_setup_matrix_e2ee.py
./tests/hermes_cli/test_setup_menu_curses_migration.py
./tests/hermes_cli/test_setup_model_provider.py
./tests/hermes_cli/test_setup_noninteractive.py
./tests/hermes_cli/test_setup_ollama_cloud_force_refresh.py
./tests/hermes_cli/test_setup_openclaw_migration.py
./tests/hermes_cli/test_setup_prompt_menus.py
./tests/hermes_cli/test_setup_reconfigure.py
./tests/hermes_cli/test_signal_handler_kanban_worker.py
./tests/hermes_cli/test_skills_config.py
./tests/hermes_cli/test_skills_hub.py
./tests/hermes_cli/test_skills_install_flags.py
./tests/hermes_cli/test_skills_skip_confirm.py
./tests/hermes_cli/test_skills_subparser.py
./tests/hermes_cli/test_skin_engine.py


== external release root confirmation ==
drwxrwxr-x 38 cube cube 4096 Aug 20 23:44 /home/cube/projects/richard/hermes-agent-dualcoach-v1.1
drwxrwxr-x  7 cube cube 4096 Aug 20 23:42 /home/cube/projects/richard/hermes-agent-dualcoach-v1.1/dualcoach/releases/v1.1.0
== available python runtimes ==
/home/cube/miniconda3/bin/python3
Python 3.12.9


**Planning reading release files and scripts**


"""Verify the narrow product delta from DualCoach v1.0.0 to v1.1.0."""

from __future__ import annotations

import argparse
import base64
import csv
import hashlib
import io
import json
import zipfile
from dataclasses import dataclass
from pathlib import Path
from typing import Final

_TTL_MEMBER: Final = "gateway/platforms/telegram_customer_bootstrap.py"
_RECORD_MEMBER: Final = "hermes_agent-0.17.0.dist-info/RECORD"
_EXPECTED_CHANGED_MEMBERS: Final = (_TTL_MEMBER, _RECORD_MEMBER)
_OLD_TTL: Final = b"_INVITE_TTL: Final = timedelta(minutes=30)"
_NEW_TTL: Final = b"_INVITE_TTL: Final = timedelta(hours=24)"
_DIGEST_LENGTH: Final = 64

@dataclass(frozen=True, slots=True)
class WheelDelta:
    """Verified member-level difference between two Hermes wheels."""

    member_count: int
    changed_members: tuple[str, ...]

def _canonical(value: dict[str, object]) -> bytes:
    return json.dumps(
        value,
        ensure_ascii=False,
        sort_keys=True,
        separators=(",", ":"),
        allow_nan=False,
    ).encode()

def _read_object(path: Path) -> dict[str, object]:
    value = json.loads(path.read_text(encoding="utf-8"))
    if not isinstance(value, dict) or any(not isinstance(key, str) for key in value):
        raise ValueError(f"{path.name} is not an object")
    return value

def _sha256(data: bytes) -> str:
    return hashlib.sha256(data).hexdigest()

def _record_digest(encoded: str) -> str:
    algorithm, separator, value = encoded.partition("=")
    if algorithm != "sha256" or separator != "=":
        raise ValueError("wheel RECORD digest is invalid")
    padded = value + "=" * (-len(value) % 4)
    digest = base64.urlsafe_b64decode(padded)
    if len(digest) * 2 != _DIGEST_LENGTH:
        raise ValueError("wheel RECORD digest length is invalid")
    return digest.hex()

def _verify_record(archive: zipfile.ZipFile, names: tuple[str, ...]) -> None:
    if len(names) != len(set(names)) or _RECORD_MEMBER not in names:
        raise ValueError("wheel member inventory is invalid")
    rows = csv.reader(io.StringIO(archive.read(_RECORD_MEMBER).decode("utf-8")))
    seen: set[str] = set()
    for row in rows:
        if len(row) != 3:
            raise ValueError("wheel RECORD row is invalid")
        relative, encoded_hash, raw_size = row
        if relative in seen or relative not in names:
            raise ValueError("wheel RECORD path is invalid")
        seen.add(relative)
        if relative == _RECORD_MEMBER:
            if encoded_hash or raw_size:
                raise ValueError("wheel RECORD self-row is invalid")
            continue
        if not raw_size.isdecimal():
            raise ValueError("wheel RECORD size is invalid")
        payload = archive.read(relative)
        if int(raw_size) != len(payload) or _record_digest(encoded_hash) != _sha256(
            payload
        ):
            raise ValueError("wheel RECORD content binding is invalid")
    if seen != set(names):
        raise ValueError("wheel RECORD inventory is incomplete")

def verify_wheel_delta(base_wheel: Path, successor_wheel: Path) -> WheelDelta:
    """Require the successor wheel to change only TTL code and RECORD."""
    with (
        zipfile.ZipFile(base_wheel) as base,
        zipfile.ZipFile(successor_wheel) as successor,
    ):
        base_names = tuple(base.namelist())
        successor_names = tuple(successor.namelist())
        if base_names != successor_names:
            raise ValueError("wheel member order or inventory changed")
        _verify_record(base, base_names)
        _verify_record(successor, successor_names)
        changed = tuple(
            name
            for name in base_names
            if base.read(name) != successor.read(name)
        )
        if changed != _EXPECTED_CHANGED_MEMBERS:
            raise ValueError("wheel delta exceeds the TTL seam")
        before = base.read(_TTL_MEMBER)
        after = successor.read(_TTL_MEMBER)
        if (
            before.count(_OLD_TTL) != 1
            or before.count(_NEW_TTL) != 0
            or after.count(_OLD_TTL) != 0
            or after.count(_NEW_TTL) != 1
            or before.replace(_OLD_TTL, _NEW_TTL) != after
        ):
            raise ValueError("TTL source replacement is not exact")
        return WheelDelta(len(base_names), changed)

def _verify_binding(document: dict[str, object]) -> dict[str, object]:
    if set(document) != {
        "schema",
        "derivation_inputs",
        "candidate_digest",
        "binding_sha256",
    }:
        raise ValueError("product binding fields are invalid")
    raw_inputs = document["derivation_inputs"]
    if not isinstance(raw_inputs, dict) or any(
        not isinstance(key, str) for key in raw_inputs
    ):
        raise ValueError("product derivation inputs are invalid")
    inputs = dict(raw_inputs)
    candidate = _sha256(_canonical(inputs))
    unsigned = {key: value for key, value in document.items() if key != "binding_sha256"}
    if (
        document["schema"] != "task26-preexecution-product-binding-v1"
        or document["candidate_digest"] != candidate
        or document["binding_sha256"] != _sha256(_canonical(unsigned))
    ):
        raise ValueError("product binding digest is invalid")
    return inputs

def verify_product_binding_delta(
    base_binding: Path,
    successor_binding: Path,
) -> str:
    """Require canonical bindings to differ only by the Hermes wheel hash."""
    base = _read_object(base_binding)
    successor = _read_object(successor_binding)
    base_inputs = _verify_binding(base)
    successor_inputs = _verify_binding(successor)
    changed = {
        key
        for key in base_inputs.keys() | successor_inputs.keys()
        if base_inputs.get(key) != successor_inputs.get(key)
    }
    if changed != {"hermes_wheel_sha256"}:
        raise ValueError("product derivation delta exceeds the Hermes wheel")
    candidate = successor["candidate_digest"]
    if not isinstance(candidate, str) or len(candidate) != _DIGEST_LENGTH:
        raise ValueError("successor candidate digest is invalid")
    return candidate

def verify_release_inputs(
    base_root: Path,
    successor_root: Path,
) -> dict[str, object]:
    """Verify product identity and both fresh Golden Path qualifications."""
    base_binding_path = base_root / "preexecution-product-binding.json"
    successor_binding_path = successor_root / "preexecution-product-binding.json"
    candidate = verify_product_binding_delta(
        base_binding_path,
        successor_binding_path,
    )
    binding = _read_object(successor_binding_path)
    inputs = _verify_binding(binding)
    base_wheel = (
        base_root / "artifacts" / "hermes_agent-0.17.0-py3-none-any.whl"
    )
    successor_wheel = (
        successor_root / "artifacts" / "hermes_agent-0.17.0-py3-none-any.whl"
    )
    profile_wheel = (
        successor_root
        / "artifacts"
        / "physique_checkin_cli-0.1.0-py3-none-any.whl"
    )
    if (
        inputs.get("hermes_wheel_sha256")
        != _sha256(successor_wheel.read_bytes())
        or inputs.get("profile_wheel_sha256")
        != _sha256(profile_wheel.read_bytes())
    ):
        raise ValueError("successor wheel hash differs from product binding")
    delta = verify_wheel_delta(base_wheel, successor_wheel)
    statuses: dict[str, str] = {}
    for mode, expected in (
        ("source", "ACTUAL_SOURCE_GOLDEN_PATH_PASS"),
        ("installed", "ACTUAL_INSTALLED_GOLDEN_PATH_PASS"),
    ):
        result = _read_object(successor_root / "receipts" / f"{mode}-result.json")
        verification = _read_object(
            successor_root / "receipts" / f"{mode}-verify.json"
        )
        if (
            result.get("candidate_digest") != candidate
            or result.get("candidate_product_binding_sha256")
            != binding.get("binding_sha256")
            or result.get("hermes_wheel_sha256")
            != inputs.get("hermes_wheel_sha256")
            or result.get("profile_wheel_sha256")
            != inputs.get("profile_wheel_sha256")
            or verification.get("candidate_digest") != candidate
            or verification.get("status") != expected
        ):
            raise ValueError(f"{mode} Golden Path binding is invalid")
        statuses[mode] = expected
    return {
        "candidate_digest": candidate,
        "installed_golden_path": statuses["installed"],
        "source_golden_path": statuses["source"],
        "wheel_member_count": delta.member_count,
    }

def main() -> int:
    parser = argparse.ArgumentParser()
    parser.add_argument("base", type=Path)
    parser.add_argument("successor", type=Path)
    args = parser.parse_args()
    result = {
        "status": "DUALCOACH_V11_CANDIDATE_INPUTS_PASS",
        **verify_release_inputs(args.base, args.successor),
    }
    print(json.dumps(result, sort_keys=True, separators=(",", ":")))
    return 0

if __name__ == "__main__":
    raise SystemExit(main())


customer bootstrap invite is unavailable

resource-contention diagnostic, not a release gate

two internal timeout failures and one 140-second file ceiling


getMe deleteWebhook deleteWebhook setMyCommands setMyCommands getUpdates setMyCommands


two internal timeout failures and one long-file ceiling


**Planning verification of v1.0 release and wheel API**

**Inspecting wheel source and test files with unzip and Python**

**Tracing historic Telegram evidence hashes in base release**

bash

cd /home/cube/projects/richard/hermes-agent-dualcoach-v1.1 && python3 - <<'PY'
from pathlib import Path
import zipfile
wheel=Path('dualcoach/releases/v1.1.0/artifacts/hermes_agent-0.17.0-py3-none-any.whl')
member='gateway/platforms/telegram_customer_bootstrap.py'
with zipfile.ZipFile(wheel) as z:
    print(z.read(member).decode())
PY

cd /home/cube/projects/richard/hermes-agent-dualcoach-v1.1 && printf '%s\n' '== v1.0 release top-level ==' && find dualcoach/releases/v1.0.0 -maxdepth 3 -type f -printf '%s %p\n' | sort -n | tail -250 && printf '%s\n' '== references to v1 real-evidence seals ==' && rg -n --hidden '31d7daa60dad93dce41761b2c36f1fe3ec38e8f9257761fd9b6771d83ac32a76|50eb92a4ef7fde599aad82f445f5ba12a456895a9050319642163303ef7aed9d|4f578c4752a9728d40308a0faa52b4ad22349af8483e9d522c0fb343ba70a2a4|real.?Telegram|historical.*Telegram' dualcoach/releases/v1.0.0 dualcoach/releases/v1.1.0 . 2>/dev/null | head -1000

cd /home/cube/projects/richard/hermes-agent-dualcoach-v1.1 && printf '%s\n' '== golden scripts CLI surface ==' && python3 -I dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/source_golden_path.py --help && printf '%s\n' '== verifier CLI surface ==' && python3 -I dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/verify_source_golden_path.py --help && printf '%s\n' '== release verifier CLI surface ==' && python3 -I scripts/verify_dualcoach_v11_candidate.py --help

cd /home/cube/projects/richard/hermes-agent-dualcoach-v1.1 && printf '%s\n' '== stored v1/v1.1 transcript evidence metadata ==' && find dualcoach/releases -type f \( -name '*telegram*' -o -name '*transcript*' -o -name '*surface*' -o -name '*historical*' \) -printf '%p\n' | sort | grep -v '/wheelhouse/' | head -1000


from __future__ import annotations

from datetime import datetime, timedelta, timezone
from pathlib import Path

import pytest

from gateway.platforms.telegram_customer_bootstrap import (
    BootstrapError,
    BootstrapState,
    CustomerDraft,
    RoomBootstrapStore,
)

def _draft() -> CustomerDraft:
    return CustomerDraft(
        customer_key="pilot_001",
        display_name="Pilot Customer",
        starts_on="2026-08-21",
        daily_time="08:00",
        weekly_weekday=0,
        monthly_day=1,
        calories_kcal=2200,
        protein_g=140,
        meals=("breakfast", "lunch", "dinner"),
    )

def test_unclaimed_invite_expires_at_24_hour_boundary(tmp_path: Path) -> None:
    issued_at = datetime(2026, 8, 21, tzinfo=timezone.utc)
    current_time = [issued_at]
    store = RoomBootstrapStore(
        tmp_path / "bootstrap",
        now=lambda: current_time[0],
    )
    prepared = store.prepare_rehearsal_customer_invite(
        _draft(),
        bot_username="dualcoachtestbot",
        owner_id="12",
    )
    token = prepared.customer_link.rsplit("=", 1)[1]

    assert prepared.expires_at == issued_at + timedelta(hours=24)
    current_time[0] = issued_at + timedelta(hours=23, minutes=59, seconds=59)
    assert store.rehearsal_customer_invite_session(token) == prepared.session

    current_time[0] = issued_at + timedelta(hours=24)
    with pytest.raises(BootstrapError, match="unavailable"):
        _ = store.rehearsal_customer_invite_session(token)
    assert store.get(prepared.session.session_id).state is BootstrapState.EXPIRED

def test_invite_claimed_before_24_hours_remains_single_use(tmp_path: Path) -> None:
    issued_at = datetime(2026, 8, 21, tzinfo=timezone.utc)
    current_time = [issued_at]
    store = RoomBootstrapStore(
        tmp_path / "bootstrap",
        now=lambda: current_time[0],
    )
    prepared = store.prepare_rehearsal_customer_invite(
        _draft(),
        bot_username="dualcoachtestbot",
        owner_id="12",
    )
    token = prepared.customer_link.rsplit("=", 1)[1]
    current_time[0] = issued_at + timedelta(hours=23, minutes=59)

    claimed = store.claim_rehearsal_customer_invite(
        token,
        user_id="10",
        chat_id="10",
        message_id="100",
    )

    assert claimed.state is BootstrapState.REGISTERING
    with pytest.raises(BootstrapError, match="unavailable"):
        _ = store.claim_rehearsal_customer_invite(
            token,
            user_id="10",
            chat_id="10",
            message_id="101",
        )