Ctrl K
ComunidadGuías…

scripts/butler-mypy-strict-gate.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env bash
# Mypy strict gate for opt-in modules (--follow-imports=skip keeps it fast).
# Usage: bash scripts/butler-mypy-strict-gate.sh
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"

if ! command -v python >/dev/null 2>&1; then
  echo "python not found" >&2
  exit 1
fi

python -c "import mypy" 2>/dev/null || {
  echo "mypy not installed (pip install -e '.[dev]')" >&2
  exit 1
}

# P2-F expansion: contracts + opt-in strict modules.
MODULES=(
  butler/contracts/__init__.py
  butler/contracts/bridge_access.py
  butler/contracts/compaction_ports.py
  butler/contracts/context_transform_ports.py
  butler/contracts/dev_context_ports.py
  butler/contracts/dev_state_ports.py
  butler/contracts/eval_ports.py
  butler/contracts/events.py
  butler/contracts/gateway_registry.py
  butler/contracts/hook_context_ports.py
  butler/contracts/memory_ports.py
  butler/contracts/message_ports.py
  butler/contracts/owner_gate.py
  butler/contracts/review_ports.py
  butler/contracts/sink_registry.py
  butler/tools/delegate_run_state.py
  butler/tools/delegate_record.py
  butler/core/approval_cards.py
  butler/core/events_sink.py
  butler/core/schema_recovery.py
  butler/core/llm_retry_errors.py
  butler/core/llm_retry_outcomes.py
  butler/core/tool_batch_finalize.py
  butler/ops/lazy_import_budget.py
  butler/ops/degradation_registry.py
  butler/tools/terminal_approval.py
  butler/dag_scheduler.py
  butler/gateway/network_route_verify_runner.py
  butler/gateway/events_sink_impl.py
  butler/workflow_step_runner.py
  butler/gateway/locked_phase_registry.py
  butler/defaults/model_defaults.py
  butler/orchestrator/templates.py
  butler/orchestrator/loop_factory.py
  butler/orchestrator/memory_bridge.py
  butler/orchestrator/skill_bridge.py
  butler/orchestrator/prompt_assembler.py
  butler/core/__init__.py
  butler/core/agent_loop/
  butler/core/agent_loop_phases.py
  butler/core/agents_md_sections.py
  butler/core/auto_continue.py
  butler/core/auto_review.py
  butler/core/batch_sequence_guard.py
  butler/core/best_effort.py
  butler/core/cache_safe_delegate.py
  butler/core/compaction_checkpoint.py
  butler/core/compaction_context_adapter.py
  butler/core/compaction_cutoff.py
  butler/core/compaction_phase.py
  butler/core/compaction_prompt.py
  butler/core/compaction_status.py
  butler/core/compaction_steer_bridge.py
  butler/core/compaction_task.py
  butler/core/confirm_flags.py
  butler/core/context_budget.py
  butler/core/context_compress_hooks.py
  butler/core/context_compress_pipeline.py
  butler/core/context_compress_support.py
  butler/core/context_compressor.py
  butler/core/context_pipeline.py
  butler/core/context_transform_registry.py
  butler/core/correction_intent.py
  butler/core/delegate_context.py
  butler/core/delegate_semaphore.py
  butler/core/design_md_sections.py
  butler/core/dev_context_adapter.py
  butler/core/dev_state_context_adapter.py
  butler/core/evidence_extract.py
  butler/core/exp_cache.py
  butler/core/fact_extraction.py
  butler/core/finish_tool_truncate.py
  butler/core/goal_loop.py
  butler/core/handoff.py
  butler/core/harness_flags.py
  butler/core/hashline.py
  butler/core/hook_context_adapter.py
  butler/core/hygiene_preflight.py
  butler/core/inline_tool_compress.py
  butler/core/input_stage.py
  butler/core/instruction_walkup.py
  butler/core/intent_keywords.py
  butler/core/interrupt.py
  butler/core/io_guardrail.py
  butler/core/json_repair.py
  butler/core/llm_retry.py
  butler/core/llm_retry_helpers.py
  butler/core/llm_retry_invoke.py
  butler/core/llm_retry_safe.py
  butler/core/llm_retry_success.py
  butler/core/loop_budget_nudge.py
  butler/core/loop_callbacks_merge.py
  butler/core/loop_middleware.py
  butler/core/loop_plugins.py
  butler/core/loop_response.py
  butler/core/loop_stuck.py
  butler/core/loop_types.py
  butler/core/memory_context_adapter.py
  butler/core/memory_recap_line.py
  butler/core/memory_source_surface.py
  butler/core/message_context_adapter.py
  butler/core/message_ir.py
  butler/core/message_repair.py
  butler/core/message_sanitize.py
  butler/core/meta_flags.py
  butler/core/metrics_sink.py
  butler/core/mode_classifier.py
  butler/core/model_context.py
  butler/core/output_grounding.py
  butler/core/output_schema_registry.py
  butler/core/parallel_tools.py
  butler/core/pim_state.py
  butler/core/pipeline_steps.py
  butler/core/plan_reason_graph.py
  butler/core/plan_snapshot.py
  butler/core/post_commit.py
  butler/core/post_compact_cleanup.py
  butler/core/post_edit_format.py
  butler/core/preemptive_compact.py
  butler/core/preread_context.py
  butler/core/prompt_renderer.py
  butler/core/reactive_compact.py
  butler/core/read_file_partial.py
  butler/core/read_state.py
  butler/core/reasoning_trace.py
  butler/core/reflection_closure.py
  butler/core/reflexion_ephemeral.py
  butler/core/reflexion_write.py
  butler/core/remote_compact.py
  butler/core/research_simplicity.py
  butler/core/retry_policy.py
  butler/core/review_context_adapter.py
  butler/core/rules_engine.py
  butler/core/safety_finish.py
  butler/core/schema_optimizer.py
  butler/core/session_epoch.py
  butler/core/session_hydration.py
  butler/core/session_recall_intent.py
  butler/core/session_todos.py
  butler/core/session_tool_index.py
  butler/core/session_transcript.py
  butler/core/skill_compact_rescue.py
  butler/core/skill_tool_bridge.py
  butler/core/steer.py
  butler/core/streaming_tools.py
  butler/core/structured_events.py
  butler/core/system_reminder.py
  butler/core/task_route_hints.py
  butler/core/text_truncate.py
  butler/core/todo_continuation.py
  butler/core/tool_batch.py
  butler/core/tool_batch_hooks.py
  butler/core/tool_batch_runner.py
  butler/core/tool_batch_state.py
  butler/core/tool_call_limits.py
  butler/core/tool_call_normalize.py
  butler/core/tool_dispatch.py
  butler/core/tool_dispatch_doom.py
  butler/core/tool_error_policy.py
  butler/core/tool_loop_detect.py
  butler/core/tool_narrative.py
  butler/core/tool_orchestrator.py
  butler/core/tool_output_masking.py
  butler/core/tool_output_prune.py
  butler/core/tool_pair_repair.py
  butler/core/tool_prune_policy.py
  butler/core/tool_recall_bm25.py
  butler/core/tool_result_cache.py
  butler/core/tool_result_classification.py
  butler/core/tool_result_storage.py
  butler/core/tool_retry.py
  butler/core/tool_selector.py
  butler/core/transcript_export.py
  butler/core/transcript_fork.py
  butler/core/transcript_fts.py
  butler/core/transcript_index.py
  butler/core/transcript_retention.py
  butler/core/transcript_revert.py
  butler/core/transcript_search.py
  butler/core/transform_feedback.py
  butler/core/transform_overrides.py
  butler/core/turn_compaction.py
  butler/core/turn_summary_line.py
  butler/core/turn_token_budget.py
  butler/core/two_phase_confirm.py
  butler/core/workflow_flags.py
  butler/dev_engine/__init__.py
  butler/dev_engine/b9_delegate_gate.py
  butler/dev_engine/b9_experience_retrieval.py
  butler/dev_engine/b9_live_fixed_tasks.py
  butler/dev_engine/b9_live_tuning.py
  butler/dev_engine/b9_oracle_curriculum.py
  butler/dev_engine/b9_oracle_fewshot.py
  butler/dev_engine/b9_prod_shaped_tasks.py
  butler/dev_engine/b9_tiers.py
  butler/dev_engine/b9_types.py
  butler/dev_engine/b9_verify_utils.py
  butler/dev_engine/code_search.py
  butler/dev_engine/coding_knowledge/
  butler/dev_engine/coding_knowledge_benchmark.py
  butler/dev_engine/coding_knowledge_fixup.py
  butler/dev_engine/delegate_finalize.py
  butler/dev_engine/delegate_init.py
  butler/dev_engine/delegate_workspace.py
  butler/dev_engine/dev_benchmark.py
  butler/dev_engine/dev_context.py
  butler/dev_engine/dev_loop.py
  butler/dev_engine/dev_metrics.py
  butler/dev_engine/dev_state.py
  butler/dev_engine/dev_tools.py
  butler/dev_engine/diagnostics.py
  butler/dev_engine/fix_strategy.py
  butler/dev_engine/gentc_mutation.py
  butler/dev_engine/llm_delegate_benchmark.py
  butler/dev_engine/loop_plugin.py
  butler/dev_engine/optimize_advisory.py
  butler/dev_engine/prod_delegate_bridge.py
  butler/dev_engine/prod_playbook_seeds.py
  butler/dev_engine/project_dev_env.py
  butler/dev_engine/review_closure.py
  butler/dev_engine/review_knowledge.py
  butler/dev_engine/review_static.py
  butler/dev_engine/swe_curriculum.py
  butler/dev_engine/swebench_lite/
  butler/dev_engine/verify.py
  butler/gateway/__init__.py
  butler/gateway/approval_cards.py
  butler/gateway/bot_loop_guard.py
  butler/gateway/command_registry.py
  butler/gateway/completion_notify.py
  butler/gateway/completion_telemetry.py
  butler/gateway/delegate_push_dedup.py
  butler/gateway/delegate_task_kind.py
  butler/gateway/durable_outbox.py
  butler/gateway/error_cards.py
  butler/gateway/events_sink.py
  butler/gateway/ext5_phrases.py
  butler/gateway/gate_reply_templates.py
  butler/gateway/gateway_contracts.py
  butler/gateway/gateway_transcript.py
  butler/gateway/handler_commands.py
  butler/gateway/handler_helpers.py
  butler/gateway/hooks.py
  butler/gateway/inbound_drain.py
  butler/gateway/inbound_idempotency.py
  butler/gateway/inbound_media.py
  butler/gateway/inbound_pipeline.py
  butler/gateway/inbound_validate.py
  butler/gateway/internal_leak_scrub.py
  butler/gateway/item_event_sink.py
  butler/gateway/item_events.py
  butler/gateway/locked_phases.py
  butler/gateway/locked_turn_orchestrator.py
  butler/gateway/media_telemetry.py
  butler/gateway/message_handler.py
  butler/gateway/message_pipelines.py
  butler/gateway/message_pipelines_fail_closed.py
  butler/gateway/message_queue.py
  butler/gateway/minimax_image_gen.py
  butler/gateway/minimax_tts.py
  butler/gateway/minimax_vlm.py
  butler/gateway/outbound_bridge.py
  butler/gateway/outbound_delay.py
  butler/gateway/outbound_events.py
  butler/gateway/outbound_files.py
  butler/gateway/outbound_prefs.py
  butler/gateway/owner_delegate_shortcuts.py
  butler/gateway/owner_gate.py
  butler/gateway/owner_ingest_shortcuts.py
  butler/gateway/owner_surface.py
  butler/gateway/pii_scrub.py
  butler/gateway/platform_policy.py
  butler/gateway/progressive_stream.py
  butler/gateway/queue_settings.py
  butler/gateway/reply_admission.py
  butler/gateway/runner.py
  butler/gateway/session_lifecycle.py
  butler/gateway/session_loop_factory.py
  butler/gateway/session_registry.py
  butler/gateway/singleton_lock.py
  butler/gateway/speech_stt.py
  butler/gateway/task_milestone.py
  butler/gateway/turn_post_pipeline.py
  butler/gateway/user_errors.py
  butler/gateway/vision_fallback.py
  butler/gateway/wechat_scenario_sim.py
  butler/gateway/wechat_text_export.py
  butler/hooks/__init__.py
  butler/hooks/loader.py
  butler/hooks/runner.py
  butler/hooks/telemetry.py
  butler/mcp/__init__.py
  butler/mcp/approval.py
  butler/mcp/async_runner.py
  butler/mcp/bridge.py
  butler/mcp/classify.py
  butler/mcp/client_http.py
  butler/mcp/client_stdio.py
  butler/mcp/config.py
  butler/mcp/deferred.py
  butler/mcp/diagnostics.py
  butler/mcp/extension_grounding.py
  butler/mcp/extension_manifest.py
  butler/mcp/extension_verify.py
  butler/mcp/github_grounding.py
  butler/mcp/github_tool_aliases.py
  butler/mcp/manager.py
  butler/mcp/naming.py
  butler/mcp/outbound_grounding_gate.py
  butler/mcp/profiles.py
  butler/mcp/registry_hook.py
  butler/mcp/result_slim.py
  butler/mcp/schema_normalize.py
  butler/mcp/server_stdio.py
  butler/mcp/todoist_grounding.py
  butler/mcp/todoist_tool_aliases.py
  butler/mcp/tools_engine.py
  butler/mcp/tools_manifest.py
  butler/mcp/turn_scrape_dedup.py
  butler/mcp/types.py
  butler/memory/__init__.py
  butler/memory/butler_memory.py
  butler/memory/chunking.py
  butler/memory/coding_recall.py
  butler/memory/corpus_router.py
  butler/memory/corrective_recall.py
  butler/memory/diagnostics.py
  butler/memory/diagnostics_collect.py
  butler/memory/document_ingest.py
  butler/memory/embedding.py
  butler/memory/experience_consolidation.py
  butler/memory/experience_mining.py
  butler/memory/experience_mining_cli.py
  butler/memory/facade.py
  butler/memory/injection_guard.py
  butler/memory/injection_llm_score.py
  butler/memory/knowledge_db.py
  butler/memory/memory_benchmark.py
  butler/memory/memory_caps.py
  butler/memory/memory_metrics.py
  butler/memory/memory_scope.py
  butler/memory/metrics_persist.py
  butler/memory/observation_migrate.py
  butler/memory/observation_recall.py
  butler/memory/observation_store.py
  butler/memory/observer_queue.py
  butler/memory/owner_experience_seed.py
  butler/memory/owner_write_pending.py
  butler/memory/pending_cli.py
  butler/memory/prefetch_cache.py
  butler/memory/prefetch_retrieval_metrics.py
  butler/memory/private_tags.py
  butler/memory/project_memory.py
  butler/memory/query_decompose.py
  butler/memory/query_relaxation.py
  butler/memory/recall_layers.py
  butler/memory/recall_scopes.py
  butler/memory/reindex.py
  butler/memory/retrieval_ranking.py
  butler/memory/retrieval_telemetry.py
  butler/memory/scope_diagnostics.py
  butler/memory/search_cli.py
  butler/memory/search_result.py
  butler/memory/semantic_config.py
  butler/memory/semantic_health.py
  butler/memory/semantic_index.py
  butler/memory/semantic_project.py
  butler/memory/transcript_memory_pipeline.py
  butler/memory/transcript_recall.py
  butler/memory/triplets.py
  butler/memory/unified_recall.py
  butler/memory/unified_recall_config.py
  butler/memory/vector_gc.py
  butler/memory/vector_store.py
  butler/memory/vector_sync_telemetry.py
  butler/ops/__init__.py
  butler/ops/agent_eval_weekly.py
  butler/ops/assistant_health.py
  butler/ops/b9_failure_analysis.py
  butler/ops/b9_harness_audit.py
  butler/ops/b9_lessons.py
  butler/ops/b9_prod_promoted_registry.py
  butler/ops/b9_prod_weekly.py
  butler/ops/boundary_observability.py
  butler/ops/butler_inbox.py
  butler/ops/compaction_audit.py
  butler/ops/cost_calibration.py
  butler/ops/cost_calibration_cli.py
  butler/ops/cost_tracker.py
  butler/ops/delegate_failure_b9_import.py
  butler/ops/delegate_failure_b9_promote.py
  butler/ops/delegate_failure_capture.py
  butler/ops/delegate_judge.py
  butler/ops/deploy_profile.py
  butler/ops/dev_eval.py
  butler/ops/dual_playbook_probe.py
  butler/ops/embedding_diagnostics.py
  butler/ops/embedding_health.py
  butler/ops/env_profiles.py
  butler/ops/eval_actions.py
  butler/ops/eval_bridge.py
  butler/ops/eval_config_overrides.py
  butler/ops/eval_diagnostics.py
  butler/ops/eval_experiment.py
  butler/ops/eval_feedback.py
  butler/ops/eval_regression.py
  butler/ops/eval_scoring.py
  butler/ops/eval_turn.py
  butler/ops/execution_surface_collect.py
  butler/ops/execution_surface_diagnostics.py
  butler/ops/experience_selection_telemetry.py
  butler/ops/experiment_diagnostics.py
  butler/ops/g1_04_prod_evidence.py
  butler/ops/harness_diagnostics.py
  butler/ops/head_to_head.py
  butler/ops/head_to_head_common.py
  butler/ops/head_to_head_t1.py
  butler/ops/health_report.py
  butler/ops/health_report_turn.py
  butler/ops/hermes_gate.py
  butler/ops/langfuse_tracer.py
  butler/ops/lingwen1_capture_probe.py
  butler/ops/lingwen1_delegate_drill.py
  butler/ops/lingwen1_failure_seed.py
  butler/ops/lingwen1_prod_sample.py
  butler/ops/memory_eval.py
  butler/ops/morning_brief_push.py
  butler/ops/observation_diagnostics.py
  butler/ops/onboard.py
  butler/ops/openclaw_diagnostics.py
  butler/ops/owner_brief_blocks.py
  butler/ops/owner_feedback.py
  butler/ops/owner_pmf_metrics.py
  butler/ops/owner_quality_surface.py
  butler/ops/owner_trust_surface.py
  butler/ops/prod_experience_effectiveness.py
  butler/ops/production_failure_experience.py
  butler/ops/rag_diagnostics.py
  butler/ops/registry_diagnostics.py
  butler/ops/retry_buckets.py
  butler/ops/runtime_metrics.py
  butler/ops/runtime_metrics_sink.py
  butler/ops/secrets_contract.py
  butler/ops/secrets_contract_cli.py
  butler/ops/security_audit.py
  butler/ops/snapshot.py
  butler/ops/stack_diagnostics.py
  butler/ops/swebench_entry_gate.py
  butler/ops/swebench_live_eval.py
  butler/ops/tcr_report.py
  butler/ops/tcr_strict_readiness.py
  butler/ops/terminal_sandbox_diagnostics.py
  butler/ops/token_cost_diagnostics.py
  butler/ops/tool_routing.py
  butler/ops/transcript_diagnostics.py
  butler/ops/usage_ledger.py
  butler/ops/wechat_corpus_eval.py
  butler/ops/wechat_dataset.py
  butler/orchestrator/__init__.py
  butler/runtime/__init__.py
  butler/runtime/approval.py
  butler/runtime/async_delegate.py
  butler/runtime/audit.py
  butler/runtime/builtin_handlers.py
  butler/runtime/cc_bridge.py
  butler/runtime/consistency_outcome.py
  butler/runtime/delegate_job.py
  butler/runtime/delegate_job_types.py
  butler/runtime/delegate_async_result.py
  butler/runtime/delegate_job_finalize.py
  butler/runtime/delegate_progress.py
  butler/runtime/delegate_registry.py
  butler/runtime/diagnostics.py
  butler/runtime/failure_tracker.py
  butler/runtime/loader.py
  butler/runtime/notify.py
  butler/runtime/push_queue.py
  butler/runtime/runner.py
  butler/runtime/schedule.py
  butler/runtime/schema.py
  butler/runtime/service.py
  butler/runtime/summary_enrich.py
  butler/runtime/task_store.py
  butler/runtime/workflow_version.py
  butler/session/__init__.py
  butler/session/auto_title.py
  butler/session/keys.py
  butler/session/lifecycle.py
  butler/session/memory_prefetch.py
  butler/session/new_session.py
  butler/session/post_session.py
  butler/session/post_session_guard.py
  butler/session/post_session_layered.py
  butler/skills/__init__.py
  butler/skills/consolidator.py
  butler/skills/experience_pointers.py
  butler/skills/fusion_wiring.py
  butler/skills/guard.py
  butler/skills/injection_policy.py
  butler/skills/layout.py
  butler/skills/learn.py
  butler/skills/lint.py
  butler/skills/manager/
  butler/skills/router.py
  butler/skills/seed_bundled.py
  butler/skills/similarity.py
  butler/skills/usage.py
  butler/skills/write_approval.py
  butler/tools/__init__.py
  butler/tools/_file_cache.py
  butler/tools/audit_persist.py
  butler/tools/builtin_impl.py
  butler/tools/builtin_register.py
  butler/tools/butlerignore.py
  butler/tools/command_canonicalize.py
  butler/tools/config_tools.py
  butler/tools/contacts.py
  butler/tools/data_query.py
  butler/tools/delegate_impl.py
  butler/tools/delegate_phases.py
  butler/tools/delegate_prepare.py
  butler/tools/delegate_report.py
  butler/tools/delegate_role_guard.py
  butler/tools/delegate_run.py
  butler/tools/delegate_subagent.py
  butler/tools/delegate_summary_budget.py
  butler/tools/delegate_yield_tools.py
  butler/tools/document_reader.py
  butler/tools/download_tools.py
  butler/tools/execute_code.py
  butler/tools/expense.py
  butler/tools/file_io.py
  butler/tools/git_tools.py
  butler/tools/habits.py
  butler/tools/interrupt.py
  butler/tools/knowledge_search.py
  butler/tools/mcp_self_service.py
  butler/tools/memo.py
  butler/tools/memory_tools.py
  butler/tools/multimodal_tools.py
  butler/tools/network_route_verify.py
  butler/tools/network_search_policy.py
  butler/tools/orthogonality_lint.py
  butler/tools/path_safety.py
  butler/tools/pim_schema.py
  butler/tools/project_todos.py
  butler/tools/project_tools.py
  butler/tools/provider_layers.py
  butler/tools/registry.py
  butler/tools/registry_gates.py
  butler/tools/registry_tools.py
  butler/tools/reminder.py
  butler/tools/runtime_tools.py
  butler/tools/safe_root.py
  butler/tools/session_todos_tools.py
  butler/tools/tenant_store.py
  butler/tools/terminal_danger.py
  butler/tools/terminal_impl.py
  butler/tools/terminal_pattern_approval.py
  butler/tools/terminal_sandbox.py
  butler/tools/tool_arg_normalize.py
  butler/tools/tool_audit.py
  butler/tools/tool_doc_templates.py
  butler/tools/tool_implicit_context.py
  butler/tools/tool_schemas.py
  butler/tools/toolset_profiles.py
  butler/tools/web_fetch.py
  butler/tools/web_search.py
  butler/tools/web_search_probe.py
  butler/tools/workflow_tools.py
  butler/transport/__init__.py
  butler/transport/anthropic_transport.py
  butler/transport/auxiliary_client.py
  butler/transport/base.py
  butler/transport/cache_control.py
  butler/transport/chat_completions.py
  butler/transport/content_sanitize.py
  butler/transport/error_classifier.py
  butler/transport/fallback.py
  butler/transport/fusion_client.py
  butler/transport/interruptible_client.py
  butler/transport/llm_client.py
  butler/transport/memory_context_scrubber.py
  butler/transport/model_capabilities.py
  butler/transport/model_context.py
  butler/transport/provider_health.py
  butler/transport/providers.py
  butler/transport/reasoning_replay.py
  butler/transport/retry_utils.py
  butler/transport/schema_sanitizer.py
  butler/transport/stream_probe.py
  butler/transport/streaming_signal.py
  butler/transport/think_scrubber.py
  butler/transport/thinking_headers.py
  butler/transport/thinking_protocol.py
  butler/transport/tool_wire.py
  butler/transport/types.py
  butler/transport/usage_normalize.py
  butler/registry/__init__.py
  butler/registry/audit.py
  butler/registry/mcp_catalog_remote.py
  butler/registry/registry_errors.py
  butler/registry/skill_lock.py
  butler/registry/skill_sources/__init__.py
  butler/registry/skill_sources/base.py
  butler/registry/skill_sources/zip_safety.py
  butler/registry/skill_types.py
  butler/registry/hub_manifest.py
  butler/registry/mcp_catalog.py
  butler/registry/skill_sources/bundled.py
  butler/registry/skill_sources/project.py
  butler/registry/skill_sources/url.py
  butler/workflows/__init__.py
  butler/workflows/artifact_paths.py
  butler/workflows/callbacks.py
  butler/workflows/schema.py
  butler/workflows/until_assert.py
  butler/workflows/validate.py
  butler/workflows/variables.py
  butler/workflows/pause_state.py
  butler/workflows/runner.py
  butler/workflows/workflow_run_snapshot.py
  butler/delegate/__init__.py
  butler/delegate/category_resolver.py
  butler/delegate/task_kind.py
  butler/permissions/__init__.py
  butler/permissions/rules_fail_closed.py
  butler/permissions/tool_boundary_registry.py
  butler/project/__init__.py
  butler/project/archetypes.py
  butler/project/lead.py
  butler/project/plugins.py
  butler/registry/catalog_integrity.py
  butler/registry/install_pending.py
  butler/registry/mcp_project_tools.py
  butler/registry/mcp_ssot.py
  butler/registry/skill_install.py
  butler/registry/skill_normalize.py
  butler/registry/skill_sources/clawhub.py
  butler/registry/skill_sources/lobehub.py
  butler/registry/skill_sources/marketplace.py
  butler/registry/skills_project_sync.py
  butler/registry/skills_ssot.py
  butler/workflows/loader.py
  butler/permissions/doom_loop.py
  butler/permissions/rules.py
  butler/project/manager.py
  butler/project/meta.py
  butler/project/preflight.py
  butler/project/worktree.py
  butler/registry/hub_index_cache.py
  butler/registry/install_scan.py
  butler/registry/skill_service.py
  butler/registry/skill_sources/github.py
  butler/delegate/policy.py
  butler/delegate/subagent_permissions.py
  butler/permissions/approvals.py
  butler/registry/mcp_merge.py
  butler/registry/url_safety.py
  butler/registry/marketplace_compat.py
  butler/workflows/commands.py
  butler/registry/paths.py
  butler/registry/mcp_install.py
  butler/permissions/rules_context.py
  butler/project/model.py
  butler/__init__.py
  butler/config_service.py
  butler/env_parse.py
  butler/logging_config.py
  butler/memory_plugin.py
  butler/tenant.py
  butler/io/atomic_write.py
  butler/experiments/__init__.py
  butler/experiments/ledger.py
  butler/experiments/metrics.py
  butler/agent_profiles.py
  butler/agents_md.py
  butler/memory_settings.py
  butler/provider_presets.py
  butler/experiments/outcomes.py
  butler/experiments/crash_guard.py
  butler/experiments/git_utils.py
  butler/context_settings.py
  butler/config_secrets.py
  butler/model_resolve.py
  butler/tool_guardrails.py
  butler/main.py
  butler/experiments/mode.py
  butler/config.py
  butler/config_secrets_crypto.py
  butler/io/safe_load.py
  butler/human_gate.py
  butler/execution_context.py
  butler/task_orchestrator.py
  butler/gateway_settings.py
  butler/cli/__init__.py
  butler/cli/doctor.py
  butler/cli/spinner.py
  butler/eval_integration/__init__.py
  butler/eval_integration/presets.py
  butler/eval_integration/report_schema.py
  butler/eval_integration/sinks/__init__.py
  butler/eval_integration/suite_registry.py
  butler/eval_integration/suites/__init__.py
  butler/eval_integration/suites/agent_weekly_suite.py
  butler/eval_integration/suites/deepeval_suite.py
  butler/eval_integration/suites/hermes_gate_suite.py
  butler/eval_integration/suites/ragas_suite.py
  butler/eval_integration/suites/regression_suite.py
  butler/eval_integration/suites/wechat_corpus_suite.py
  butler/eval_integration/sync_policy.py
  butler/defaults/__init__.py
  butler/defaults/env_defaults.py
  butler/defaults/env_domains.py
  butler/report/__init__.py
  butler/report/acceptance_card.py
  butler/cli/eval_cli.py
  butler/cli/experiment_cli.py
  butler/cli/onboard_cli.py
  butler/cli/prompt_eval_cli.py
  butler/cli/provider_presets_cli.py
  butler/cli/registry_cli.py
  butler/cli/secrets_cli.py
  butler/cli/stream.py
  butler/cli/transcript_cli.py
  butler/cli/workflow_cli.py
  butler/eval_integration/oss/prefetch_audit_loader.py
  butler/eval_integration/sinks/audit_sink.py
  butler/eval_integration/sinks/deepeval_sink.py
  butler/eval_integration/sinks/junit_sink.py
  butler/eval_integration/sinks/langfuse_sink.py
  butler/eval_integration/sinks/ragas_sink.py
  butler/eval_integration/suites/b9_oracle_suite.py
  butler/eval_integration/suites/capability_suite.py
  butler/eval_integration/suites/memory_mb_suite.py
  butler/eval_integration/suites/tcr_suite.py
  butler/report/store.py
  butler/cli/slash_dispatch.py
  butler/cli/memory_cli.py
  butler/eval_integration/manager.py
  butler/report/format.py
  butler/report/generator.py
  butler/eval_integration/oss/deepeval_runner.py
  butler/eval_integration/oss/ragas_runner.py
  butler/execpolicy/__init__.py
  butler/extensions/__init__.py
  butler/plan/__init__.py
  butler/prompt_eval/__init__.py
  butler/tests_policies/__init__.py
  butler/transport/multimodal/__init__.py
  butler/transport/multimodal/minimax_tts.py
  butler/gateway/commands/__init__.py
  butler/gateway/platforms/__init__.py
  butler/gateway/platforms/base.py
  butler/gateway/platforms/helpers.py
  butler/gateway/platforms/types.py
  butler/gateway/platforms/wechat.py
  butler/gateway/platforms/wechat_format.py
  butler/gateway/platforms/wechat_ilink/account.py
  butler/gateway/platforms/wechat_ilink/constants.py
  butler/gateway/platforms/wechat_ilink/crypto.py
  butler/gateway/platforms/wechat_ilink/direct.py
  butler/gateway/platforms/wechat_ilink/media.py
  butler/gateway/platforms/wechat_ilink/poll_phases.py
  butler/gateway/platforms/wechat_ilink/qr_phases.py
  butler/gateway/platforms/wechat_ilink/registry.py
  butler/gateway/commands/dev_commands.py
  butler/gateway/commands/outcome_handlers.py
  butler/gateway/commands/sandbox_commands.py
  butler/gateway/commands/sessions_handlers.py
  butler/gateway/platforms/wechat_ilink/__init__.py
  butler/gateway/platforms/wechat_ilink/adapter_inbound.py
  butler/gateway/platforms/wechat_ilink/connect_phases.py
  butler/gateway/platforms/wechat_ilink/qr_login.py
  butler/gateway/platforms/wechat_ilink_constants.py
  butler/gateway/platforms/wechat_ilink_direct.py
  butler/gateway/platforms/wechat_ilink_phases.py
  butler/gateway/platforms/wechat_ilink_registry.py
  butler/gateway/platforms/wechat_ilink_utils.py
  butler/plan/markdown_sync.py
  butler/plan/store.py
  butler/prompt_eval/runner.py
  butler/tests_policies/scan_magicmock_spec.py
  butler/transport/multimodal/minimax_image_gen.py
  butler/cli/chat_cli.py
  butler/cli/cost_cli.py
  butler/cli/display.py
  butler/cli/doctor_sections.py
  butler/cli/gateway_cli.py
  butler/cli/mcp_catalog_cli.py
  butler/cli/mcp_cli.py
  butler/cli/projects_cli.py
  butler/cli/runtime_cli.py
  butler/cli/session_ui.py
  butler/cli/sessions_cli.py
  butler/cli/skills_registry.py
  butler/cli/slash_commands.py
  butler/execpolicy/engine.py
  butler/extensions/opencode.py
  butler/gateway/commands/cc_bridge_commands.py
  butler/gateway/commands/dev_handlers.py
  butler/gateway/commands/dialog_commands.py
  butler/gateway/commands/experience_commands.py
  butler/gateway/commands/export_handlers.py
  butler/gateway/commands/help_handlers.py
  butler/gateway/commands/info_commands.py
  butler/gateway/commands/lifecycle_commands.py
  butler/gateway/commands/memory_commands.py
  butler/gateway/commands/memory_handlers.py
  butler/gateway/commands/owner_shortcut_commands.py
  butler/gateway/commands/permission_commands.py
  butler/gateway/commands/project_commands.py
  butler/gateway/commands/project_handlers.py
  butler/gateway/commands/registry_handlers.py
  butler/gateway/commands/runtime_commands.py
  butler/gateway/commands/runtime_handlers.py
  butler/gateway/commands/skill_commands.py
  butler/gateway/platforms/wechat_ilink/_compat.py
  butler/gateway/platforms/wechat_ilink/_utils_legacy.py
  butler/gateway/platforms/wechat_ilink/adapter.py
  butler/gateway/platforms/wechat_ilink/adapter_lifecycle.py
  butler/gateway/platforms/wechat_ilink/adapter_media.py
  butler/gateway/platforms/wechat_ilink/adapter_outbound.py
  butler/gateway/platforms/wechat_ilink/phases.py
  butler/gateway/platforms/wechat_ilink/send_phases.py
  butler/gateway/platforms/wechat_ilink/transport.py
  butler/plan/mode.py
  butler/prompt_eval/corpus_bridge.py
  butler/prompt_eval/llm_rubric.py
)

# P5 *_ops.py strict (committed list — refresh: python3 scripts/p5_ops_strict_modules.py --refresh)
mapfile -t P5_OPS_MODULES < <(python3 scripts/p5_ops_strict_modules.py)
MODULES+=("${P5_OPS_MODULES[@]}")

echo "== Butler mypy strict gate (${#MODULES[@]} modules) =="
for mod in "${MODULES[@]}"; do
  echo "  -> $mod"
  python -m mypy "$mod" --follow-imports=skip
done
echo "Mypy strict gate: OK"