diff --git a/docs/generated/giant-file-registry.md b/docs/generated/giant-file-registry.md new file mode 100644 index 000000000..32307a421 --- /dev/null +++ b/docs/generated/giant-file-registry.md @@ -0,0 +1,99 @@ +# Giant-file Registry + +> Generated by `python3 scripts/generate_inventory_docs.py` from `scripts/giant_file_registry.toml`. Do not edit manually. + +- Giant-file threshold: `>= 1000` production lines (excludes `#[cfg(test)] mod` blocks). +- Registered giant files: `79` +- Tracked (decision + owner): `79` +- Grandfathered (awaiting owner/decision backfill or decomposition): `0` + +## Tracked Decisions + +| Path | Prod | Decision | Owner | Deadline | Decompose Issue | Keep Reason | +| --- | ---: | --- | --- | --- | --- | --- | +| `src/cli/client.rs` | 2464 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/cli/dcserver.rs` | 1474 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/cli/direct.rs` | 1838 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/cli/doctor/orchestrator.rs` | 4375 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/cli/init.rs` | 1439 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/cli/migrate/apply.rs` | 3238 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/cli/migrate/plan.rs` | 1513 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/cli/migrate/source.rs` | 1612 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/cli/provider_cli/mod.rs` | 1039 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/config.rs` | 3270 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/db/auto_queue/entries.rs` | 1692 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/db/auto_queue/phase_gates.rs` | 1556 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/db/dispatched_sessions.rs` | 2225 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/db/dispatches/mod.rs` | 1029 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/db/postgres.rs` | 1906 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/dispatch/dispatch_context.rs` | 2817 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/dispatch/dispatch_create.rs` | 1340 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/dispatch/dispatch_status.rs` | 1573 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/engine/loader.rs` | 1332 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/engine/mod.rs` | 1278 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/engine/ops/db_ops.rs` | 1413 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/github/sync.rs` | 1504 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/pipeline.rs` | 1383 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/receipt.rs` | 1842 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/reconcile.rs` | 1618 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/server/mod.rs` | 2851 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/server/routes/agents.rs` | 1240 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/server/routes/agents_crud.rs` | 1297 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/server/routes/agents_setup.rs` | 1366 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/server/routes/escalation.rs` | 1361 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/server/routes/health_api.rs` | 1934 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/server/routes/kanban.rs` | 2420 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/server/routes/meetings.rs` | 1245 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/server/routes/resume.rs` | 1227 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/server/routes/v1.rs` | 1866 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/auto_queue.rs` | 1545 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/services/auto_queue/activate_command.rs` | 1537 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/services/auto_queue/cleanup_tasks.rs` | 1464 | keep | automation-pipeline | | | Enqueue-on-transaction, claim/drain, replay, attempt-cap dead-lettering, and the backlog gauge are one durable row-lifecycle contract for auto_queue_run_cleanup_tasks; splitting them separates the at-most-once emit invariant from the code that enforces it. Measured 663 code lines against 427 comment lines, so the file exceeds the giant signal on documentation density rather than code volume, and a split would relocate prose while breaking a compiler-unenforceable invariant. | +| `src/services/claude.rs` | 2910 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/claude_tui/input.rs` | 2265 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/codex.rs` | 3101 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/codex_tmux_wrapper.rs` | 1411 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/codex_tui/input.rs` | 1914 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/codex_tui/rollout_tail.rs` | 1529 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/discord/catch_up.rs` | 1820 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/discord/commands/text_commands.rs` | 1484 | shrink | discord-relay | 2027-01-31 | #4712 | | +| `src/services/discord/health/recovery.rs` | 2658 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/discord/health/snapshot.rs` | 1240 | shrink | discord-relay | 2027-02-28 | #5447 | | +| `src/services/discord/mod.rs` | 2709 | shrink | discord-relay | 2027-01-31 | #4712 | | +| `src/services/discord/outbound/delivery_record.rs` | 2662 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/discord/recovery_engine/restore_inflight.rs` | 2359 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/discord/router/intake_gate.rs` | 1682 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/discord/router/message_handler/headless_turn.rs` | 1295 | shrink | discord-relay | 2027-01-31 | #4712 | | +| `src/services/discord/router/message_handler/intake_turn.rs` | 2505 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/discord/session_relay_sink.rs` | 1498 | shrink | discord-relay | 2027-01-31 | #4712 | | +| `src/services/discord/standby_relay.rs` | 1012 | keep | discord-relay | | | Completion draining, terminal response selection, and identity-guarded delivery share one durable cursor contract; preserve the cohesive verified relay boundary until a scoped split is planned. | +| `src/services/discord/tmux.rs` | 1708 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/discord/tmux_watcher.rs` | 2544 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/discord/tmux_watcher/turn_stream_collector.rs` | 1148 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/discord/tui_direct_pending_start.rs` | 1763 | shrink | discord-relay | 2027-01-31 | #4712 | | +| `src/services/discord/tui_prompt_relay/synthetic_start.rs` | 1120 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/discord/turn_bridge/stream_tick.rs` | 1116 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/discord_config_audit.rs` | 1280 | shrink | discord-relay | 2027-01-31 | #4712 | | +| `src/services/dispatched_sessions.rs` | 1879 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/services/dispatches/discord_delivery/orchestration.rs` | 1502 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/services/dispatches/outbox_route.rs` | 1178 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/services/gemini.rs` | 1360 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/memory/memento.rs` | 1511 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/onboarding/mod.rs` | 2858 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/opencode.rs` | 2807 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/platform/binary_resolver.rs` | 1482 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/provider.rs` | 1628 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/qwen.rs` | 1724 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/routines/agent_executor.rs` | 2134 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/services/routines/discord_log.rs` | 1596 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/services/routines/store.rs` | 3573 | shrink | automation-pipeline | 2027-01-31 | #4711 | | +| `src/services/settings.rs` | 1112 | shrink | server-runtime | 2027-01-31 | #4710 | | +| `src/services/tmux_common.rs` | 2091 | shrink | discord-relay | 2026-10-31 | #4712 | | +| `src/services/turn_orchestrator.rs` | 3288 | shrink | server-runtime | 2027-01-31 | #4710 | | + +## Grandfathered + +> Predate the decision mandate (#4519). Each must be decomposed (drops off this list) or promoted to shrink(owner + deadline + issue) or keep(owner + reason). + +| Path | Prod | +| --- | ---: | diff --git a/docs/generated/module-inventory.md b/docs/generated/module-inventory.md new file mode 100644 index 000000000..81414c04b --- /dev/null +++ b/docs/generated/module-inventory.md @@ -0,0 +1,1420 @@ +# Module Inventory + +> Generated by `python3 scripts/generate_inventory_docs.py`. Do not edit manually. +> Drift policy: see [docs/generated/README.md](README.md#generated-docs-drift-policy). + +- Production Rust modules: `1364` +- Giant-file threshold: `>= 1000` production lines +- Giant files: `79` + +> `Prod` excludes lines inside `#[cfg(test)] mod` blocks and whole +> files reached only through test-only module declarations; the +> giant-file flag tracks `Prod` so test fixtures do not freeze a module +> (#3036/#4394). `Lines` is the raw total for reference. + +## Namespace Summary + +| Namespace | Modules | +| --- | ---: | +| `api_caller_observability` | 1 | +| `app_state` | 1 | +| `bootstrap` | 1 | +| `cli` | 31 | +| `compat` | 3 | +| `config` | 2 | +| `config_live_reload` | 1 | +| `crate` | 1 | +| `credential` | 1 | +| `db` | 72 | +| `dispatch` | 10 | +| `engine` | 32 | +| `error` | 1 | +| `eventbus` | 1 | +| `github` | 3 | +| `high_risk_recovery` | 1 | +| `kanban` | 10 | +| `launch` | 1 | +| `lib` | 1 | +| `logging` | 1 | +| `manual_intervention` | 1 | +| `phase_gate` | 1 | +| `pipeline` | 1 | +| `queue_contract` | 1 | +| `receipt` | 1 | +| `reconcile` | 1 | +| `runtime_layout` | 6 | +| `server` | 122 | +| `services` | 1018 | +| `supervisor` | 1 | +| `ui` | 2 | +| `utils` | 11 | +| `voice` | 23 | + +## Detailed Inventory + +| Module | Path | Lines | Prod | Test | Flags | +| --- | --- | ---: | ---: | ---: | --- | +| `api_caller_observability` | `src/api_caller_observability.rs` | 252 | 150 | 102 | | +| `app_state` | `src/app_state.rs` | 47 | 47 | 0 | | +| `bootstrap` | `src/bootstrap.rs` | 93 | 93 | 0 | | +| `cli` | `src/cli/mod.rs` | 29 | 29 | 0 | | +| `cli::args` | `src/cli/args.rs` | 1614 | 996 | 618 | | +| `cli::client` | `src/cli/client.rs` | 2722 | 2464 | 258 | giant-file | +| `cli::client::runtime_config` | `src/cli/client/runtime_config.rs` | 55 | 23 | 32 | | +| `cli::dcserver` | `src/cli/dcserver.rs` | 1474 | 1474 | 0 | giant-file | +| `cli::dcserver_pg_bootstrap` | `src/cli/dcserver_pg_bootstrap.rs` | 1068 | 544 | 524 | | +| `cli::dcserver_restart_marker` | `src/cli/dcserver_restart_marker.rs` | 242 | 146 | 96 | | +| `cli::dcserver_restart_wait` | `src/cli/dcserver_restart_wait.rs` | 567 | 249 | 318 | | +| `cli::direct` | `src/cli/direct.rs` | 1838 | 1838 | 0 | giant-file | +| `cli::discord` | `src/cli/discord.rs` | 472 | 249 | 223 | | +| `cli::discord_thread_create` | `src/cli/discord_thread_create.rs` | 1468 | 415 | 1053 | | +| `cli::discord_thread_create_lock` | `src/cli/discord_thread_create_lock.rs` | 669 | 611 | 58 | | +| `cli::doctor` | `src/cli/doctor.rs` | 9 | 9 | 0 | | +| `cli::doctor::contract` | `src/cli/doctor/contract.rs` | 100 | 100 | 0 | | +| `cli::doctor::health` | `src/cli/doctor/health.rs` | 471 | 320 | 151 | | +| `cli::doctor::mailbox` | `src/cli/doctor/mailbox.rs` | 358 | 252 | 106 | | +| `cli::doctor::orchestrator` | `src/cli/doctor/orchestrator.rs` | 4518 | 4375 | 143 | giant-file | +| `cli::doctor::startup` | `src/cli/doctor/startup.rs` | 715 | 600 | 115 | | +| `cli::init` | `src/cli/init.rs` | 1564 | 1439 | 125 | giant-file | +| `cli::intake_outbox` | `src/cli/intake_outbox.rs` | 111 | 96 | 15 | | +| `cli::json_output` | `src/cli/json_output.rs` | 452 | 272 | 180 | | +| `cli::migrate` | `src/cli/migrate.rs` | 317 | 317 | 0 | | +| `cli::migrate::apply` | `src/cli/migrate/apply.rs` | 3238 | 3238 | 0 | giant-file | +| `cli::migrate::plan` | `src/cli/migrate/plan.rs` | 1513 | 1513 | 0 | giant-file | +| `cli::migrate::source` | `src/cli/migrate/source.rs` | 1612 | 1612 | 0 | giant-file | +| `cli::monitoring` | `src/cli/monitoring.rs` | 127 | 127 | 0 | | +| `cli::provider_cli` | `src/cli/provider_cli/mod.rs` | 1039 | 1039 | 0 | giant-file | +| `cli::query` | `src/cli/query.rs` | 462 | 379 | 83 | | +| `cli::restart_terminal_proof` | `src/cli/restart_terminal_proof.rs` | 107 | 107 | 0 | | +| `cli::run` | `src/cli/run.rs` | 856 | 809 | 47 | | +| `cli::utils` | `src/cli/utils.rs` | 510 | 402 | 108 | | +| `compat` | `src/compat/mod.rs` | 39 | 39 | 0 | | +| `compat::legacy_db_paths` | `src/compat/legacy_db_paths.rs` | 12 | 12 | 0 | | +| `compat::legacy_tmp_paths` | `src/compat/legacy_tmp_paths.rs` | 27 | 27 | 0 | | +| `config` | `src/config.rs` | 4060 | 3270 | 790 | giant-file | +| `config::agent_channels` | `src/config/agent_channels.rs` | 88 | 88 | 0 | | +| `config_live_reload` | `src/config_live_reload.rs` | 1042 | 561 | 481 | | +| `crate` | `src/main.rs` | 7 | 7 | 0 | | +| `credential` | `src/credential.rs` | 212 | 59 | 153 | | +| `db` | `src/db/mod.rs` | 36 | 36 | 0 | | +| `db::agents` | `src/db/agents.rs` | 407 | 246 | 161 | | +| `db::auto_queue` | `src/db/auto_queue/mod.rs` | 23 | 23 | 0 | | +| `db::auto_queue::claim` | `src/db/auto_queue/claim.rs` | 762 | 762 | 0 | | +| `db::auto_queue::consultation` | `src/db/auto_queue/consultation.rs` | 129 | 129 | 0 | | +| `db::auto_queue::entries` | `src/db/auto_queue/entries.rs` | 2701 | 1692 | 1009 | giant-file | +| `db::auto_queue::entries::dispatch_failure` | `src/db/auto_queue/entries/dispatch_failure.rs` | 696 | 272 | 424 | | +| `db::auto_queue::phase_gate_verdict` | `src/db/auto_queue/phase_gate_verdict.rs` | 316 | 144 | 172 | | +| `db::auto_queue::phase_gates` | `src/db/auto_queue/phase_gates.rs` | 3588 | 1556 | 2032 | giant-file | +| `db::auto_queue::queries` | `src/db/auto_queue/queries.rs` | 550 | 550 | 0 | | +| `db::auto_queue::run_status` | `src/db/auto_queue/run_status.rs` | 82 | 51 | 31 | | +| `db::auto_queue::runs` | `src/db/auto_queue/runs.rs` | 491 | 491 | 0 | | +| `db::auto_queue::slot_predicate` | `src/db/auto_queue/slot_predicate.rs` | 249 | 104 | 145 | | +| `db::auto_queue::slots` | `src/db/auto_queue/slots.rs` | 180 | 180 | 0 | | +| `db::auto_queue::test_support` | `src/db/auto_queue/test_support.rs` | 151 | 0 | 151 | | +| `db::automation_candidate_card_program` | `src/db/automation_candidate_card_program.rs` | 298 | 298 | 0 | | +| `db::automation_candidates` | `src/db/automation_candidates.rs` | 719 | 719 | 0 | | +| `db::cancel_tombstones` | `src/db/cancel_tombstones.rs` | 193 | 193 | 0 | | +| `db::dispatch_semaphores` | `src/db/dispatch_semaphores.rs` | 331 | 298 | 33 | | +| `db::dispatched_sessions` | `src/db/dispatched_sessions.rs` | 3116 | 2225 | 891 | giant-file | +| `db::dispatched_sessions::canonical_identity` | `src/db/dispatched_sessions/canonical_identity.rs` | 804 | 727 | 77 | | +| `db::dispatched_sessions::rebind_override` | `src/db/dispatched_sessions/rebind_override.rs` | 154 | 94 | 60 | | +| `db::dispatches` | `src/db/dispatches/mod.rs` | 1029 | 1029 | 0 | giant-file | +| `db::dispatches::delivery_events` | `src/db/dispatches/delivery_events.rs` | 453 | 251 | 202 | | +| `db::dispatches::metadata` | `src/db/dispatches/metadata.rs` | 262 | 235 | 27 | | +| `db::dispatches::outbox` | `src/db/dispatches/outbox/mod.rs` | 41 | 41 | 0 | | +| `db::dispatches::outbox::claim` | `src/db/dispatches/outbox/claim.rs` | 171 | 171 | 0 | | +| `db::dispatches::outbox::delivery` | `src/db/dispatches/outbox/delivery.rs` | 321 | 241 | 80 | | +| `db::dispatches::outbox::diagnostics` | `src/db/dispatches/outbox/diagnostics.rs` | 127 | 127 | 0 | | +| `db::dispatches::outbox::followup` | `src/db/dispatches/outbox/followup.rs` | 91 | 91 | 0 | | +| `db::dispatches::outbox::model` | `src/db/dispatches/outbox/model.rs` | 74 | 74 | 0 | | +| `db::dispatches::outbox::notify` | `src/db/dispatches/outbox/notify.rs` | 75 | 75 | 0 | | +| `db::dispatches::outbox::retry` | `src/db/dispatches/outbox/retry.rs` | 62 | 62 | 0 | | +| `db::fixture_target` | `src/db/fixture_target.rs` | 380 | 0 | 380 | | +| `db::idempotency` | `src/db/idempotency.rs` | 659 | 302 | 357 | | +| `db::intake_delivery_required_migrations` | `src/db/intake_delivery_required_migrations.rs` | 8 | 8 | 0 | | +| `db::intake_outbox` | `src/db/intake_outbox.rs` | 3117 | 851 | 2266 | | +| `db::intake_outbox_delivery_proof` | `src/db/intake_outbox_delivery_proof.rs` | 584 | 320 | 264 | | +| `db::intake_outbox_dispatch_stamp` | `src/db/intake_outbox_dispatch_stamp.rs` | 37 | 37 | 0 | | +| `db::intake_outbox_dispatched_audit` | `src/db/intake_outbox_dispatched_audit.rs` | 181 | 66 | 115 | | +| `db::intake_outbox_force_fail` | `src/db/intake_outbox_force_fail.rs` | 154 | 154 | 0 | | +| `db::intake_outbox_open_status` | `src/db/intake_outbox_open_status.rs` | 261 | 12 | 249 | | +| `db::intake_outbox_status` | `src/db/intake_outbox_status.rs` | 308 | 162 | 146 | | +| `db::kanban` | `src/db/kanban.rs` | 1 | 1 | 0 | | +| `db::kanban_cards` | `src/db/kanban_cards/mod.rs` | 273 | 273 | 0 | | +| `db::kanban_cards::crud` | `src/db/kanban_cards/crud.rs` | 414 | 414 | 0 | | +| `db::kanban_cards::listing` | `src/db/kanban_cards/listing.rs` | 324 | 324 | 0 | | +| `db::kanban_cards::metadata` | `src/db/kanban_cards/metadata.rs` | 123 | 123 | 0 | | +| `db::kanban_cards::transitions` | `src/db/kanban_cards/transitions.rs` | 480 | 480 | 0 | | +| `db::meetings` | `src/db/meetings.rs` | 621 | 621 | 0 | | +| `db::postgres` | `src/db/postgres.rs` | 3883 | 1906 | 1977 | giant-file | +| `db::prompt_manifests` | `src/db/prompt_manifests/mod.rs` | 26 | 26 | 0 | | +| `db::prompt_manifests::builder` | `src/db/prompt_manifests/builder.rs` | 90 | 90 | 0 | | +| `db::prompt_manifests::model` | `src/db/prompt_manifests/model.rs` | 191 | 191 | 0 | | +| `db::prompt_manifests::redaction` | `src/db/prompt_manifests/redaction.rs` | 77 | 77 | 0 | | +| `db::prompt_manifests::repository` | `src/db/prompt_manifests/repository.rs` | 275 | 275 | 0 | | +| `db::prompt_manifests::retention` | `src/db/prompt_manifests/retention.rs` | 96 | 96 | 0 | | +| `db::prompt_manifests::storage_stats` | `src/db/prompt_manifests/storage_stats.rs` | 122 | 122 | 0 | | +| `db::relay_dead_letter` | `src/db/relay_dead_letter.rs` | 250 | 133 | 117 | | +| `db::scheduled_messages` | `src/db/scheduled_messages.rs` | 958 | 958 | 0 | | +| `db::scheduled_messages::agent` | `src/db/scheduled_messages/agent.rs` | 316 | 316 | 0 | | +| `db::scheduled_messages::api_json` | `src/db/scheduled_messages/api_json.rs` | 61 | 61 | 0 | | +| `db::scheduled_messages::discord_mentions` | `src/db/scheduled_messages/discord_mentions.rs` | 37 | 37 | 0 | | +| `db::scheduled_messages::external_delivery` | `src/db/scheduled_messages/external_delivery.rs` | 406 | 379 | 27 | | +| `db::scheduled_messages::outbox` | `src/db/scheduled_messages/outbox.rs` | 24 | 24 | 0 | | +| `db::scheduled_messages::writes` | `src/db/scheduled_messages/writes.rs` | 65 | 65 | 0 | | +| `db::session_agent_resolution` | `src/db/session_agent_resolution.rs` | 304 | 278 | 26 | | +| `db::session_observability` | `src/db/session_observability.rs` | 216 | 216 | 0 | | +| `db::session_status` | `src/db/session_status.rs` | 78 | 78 | 0 | | +| `db::session_transcripts` | `src/db/session_transcripts.rs` | 977 | 857 | 120 | | +| `db::table_metadata` | `src/db/table_metadata.rs` | 181 | 181 | 0 | | +| `db::turns` | `src/db/turns.rs` | 216 | 173 | 43 | | +| `dispatch` | `src/dispatch/mod.rs` | 67 | 67 | 0 | | +| `dispatch::dispatch_cancel` | `src/dispatch/dispatch_cancel.rs` | 725 | 596 | 129 | | +| `dispatch::dispatch_channel` | `src/dispatch/dispatch_channel.rs` | 150 | 95 | 55 | | +| `dispatch::dispatch_context` | `src/dispatch/dispatch_context.rs` | 3950 | 2817 | 1133 | giant-file | +| `dispatch::dispatch_create` | `src/dispatch/dispatch_create.rs` | 1470 | 1340 | 130 | giant-file | +| `dispatch::dispatch_query` | `src/dispatch/dispatch_query.rs` | 89 | 89 | 0 | | +| `dispatch::dispatch_status` | `src/dispatch/dispatch_status.rs` | 2248 | 1573 | 675 | giant-file | +| `dispatch::dispatch_summary` | `src/dispatch/dispatch_summary.rs` | 326 | 240 | 86 | | +| `dispatch::test_support` | `src/dispatch/test_support.rs` | 116 | 0 | 116 | | +| `dispatch::types` | `src/dispatch/types.rs` | 32 | 32 | 0 | | +| `engine` | `src/engine/mod.rs` | 1354 | 1278 | 76 | giant-file | +| `engine::hooks` | `src/engine/hooks.rs` | 84 | 84 | 0 | | +| `engine::intent` | `src/engine/intent.rs` | 529 | 508 | 21 | | +| `engine::loader` | `src/engine/loader.rs` | 2013 | 1332 | 681 | giant-file | +| `engine::ops` | `src/engine/ops.rs` | 100 | 100 | 0 | | +| `engine::ops::agent_ops` | `src/engine/ops/agent_ops.rs` | 246 | 246 | 0 | | +| `engine::ops::auto_queue_ops` | `src/engine/ops/auto_queue_ops.rs` | 807 | 658 | 149 | | +| `engine::ops::cards_ops` | `src/engine/ops/cards_ops.rs` | 448 | 448 | 0 | | +| `engine::ops::ci_recovery_ops` | `src/engine/ops/ci_recovery_ops.rs` | 347 | 347 | 0 | | +| `engine::ops::config_ops` | `src/engine/ops/config_ops.rs` | 473 | 108 | 365 | | +| `engine::ops::db_ops` | `src/engine/ops/db_ops.rs` | 1891 | 1413 | 478 | giant-file | +| `engine::ops::dispatch_ops` | `src/engine/ops/dispatch_ops.rs` | 364 | 364 | 0 | | +| `engine::ops::dm_reply_ops` | `src/engine/ops/dm_reply_ops.rs` | 376 | 376 | 0 | | +| `engine::ops::exec_ops` | `src/engine/ops/exec_ops.rs` | 616 | 439 | 177 | | +| `engine::ops::http_ops` | `src/engine/ops/http_ops.rs` | 902 | 446 | 456 | | +| `engine::ops::kanban_ops` | `src/engine/ops/kanban_ops.rs` | 2075 | 993 | 1082 | | +| `engine::ops::kv_ops` | `src/engine/ops/kv_ops.rs` | 281 | 257 | 24 | | +| `engine::ops::log_ops` | `src/engine/ops/log_ops.rs` | 76 | 60 | 16 | | +| `engine::ops::message_ops` | `src/engine/ops/message_ops.rs` | 149 | 110 | 39 | | +| `engine::ops::pipeline_ops` | `src/engine/ops/pipeline_ops.rs` | 310 | 244 | 66 | | +| `engine::ops::quality_ops` | `src/engine/ops/quality_ops.rs` | 95 | 95 | 0 | | +| `engine::ops::queue_ops` | `src/engine/ops/queue_ops.rs` | 114 | 114 | 0 | | +| `engine::ops::review_automation_ops` | `src/engine/ops/review_automation_ops.rs` | 804 | 804 | 0 | | +| `engine::ops::review_ops` | `src/engine/ops/review_ops.rs` | 417 | 417 | 0 | | +| `engine::ops::runtime_ops` | `src/engine/ops/runtime_ops.rs` | 275 | 275 | 0 | | +| `engine::ops::timeouts_ops` | `src/engine/ops/timeouts_ops.rs` | 772 | 671 | 101 | | +| `engine::ops::turn_ops` | `src/engine/ops/turn_ops.rs` | 348 | 255 | 93 | | +| `engine::slow_hook_warn` | `src/engine/slow_hook_warn.rs` | 61 | 29 | 32 | | +| `engine::sql_guard` | `src/engine/sql_guard.rs` | 189 | 189 | 0 | | +| `engine::transition` | `src/engine/transition.rs` | 1485 | 835 | 650 | | +| `engine::transition_executor_pg` | `src/engine/transition_executor_pg.rs` | 281 | 281 | 0 | | +| `engine::transition_timeout` | `src/engine/transition_timeout.rs` | 207 | 207 | 0 | | +| `error` | `src/error.rs` | 159 | 159 | 0 | | +| `eventbus` | `src/eventbus.rs` | 161 | 161 | 0 | | +| `github` | `src/github/mod.rs` | 708 | 708 | 0 | | +| `github::sync` | `src/github/sync.rs` | 1917 | 1504 | 413 | giant-file | +| `github::triage` | `src/github/triage.rs` | 867 | 667 | 200 | | +| `high_risk_recovery` | `src/high_risk_recovery.rs` | 1296 | 0 | 1296 | | +| `kanban` | `src/kanban/mod.rs` | 20 | 20 | 0 | | +| `kanban::audit` | `src/kanban/audit.rs` | 37 | 37 | 0 | | +| `kanban::github_sync` | `src/kanban/github_sync.rs` | 35 | 35 | 0 | | +| `kanban::github_sync_target` | `src/kanban/github_sync_target.rs` | 62 | 62 | 0 | | +| `kanban::hooks` | `src/kanban/hooks.rs` | 347 | 347 | 0 | | +| `kanban::review_tuning` | `src/kanban/review_tuning.rs` | 242 | 242 | 0 | | +| `kanban::state_machine` | `src/kanban/state_machine.rs` | 64 | 64 | 0 | | +| `kanban::terminal_cleanup` | `src/kanban/terminal_cleanup.rs` | 438 | 369 | 69 | | +| `kanban::transition_cleanup` | `src/kanban/transition_cleanup.rs` | 341 | 341 | 0 | | +| `kanban::transition_core` | `src/kanban/transition_core.rs` | 707 | 707 | 0 | | +| `launch` | `src/launch.rs` | 67 | 67 | 0 | | +| `lib` | `src/lib.rs` | 275 | 275 | 0 | | +| `logging` | `src/logging.rs` | 626 | 402 | 224 | | +| `manual_intervention` | `src/manual_intervention.rs` | 35 | 35 | 0 | | +| `phase_gate` | `src/phase_gate.rs` | 386 | 290 | 96 | | +| `pipeline` | `src/pipeline.rs` | 1517 | 1383 | 134 | giant-file | +| `queue_contract` | `src/queue_contract.rs` | 4 | 4 | 0 | | +| `receipt` | `src/receipt.rs` | 1842 | 1842 | 0 | giant-file | +| `reconcile` | `src/reconcile.rs` | 2546 | 1618 | 928 | giant-file | +| `runtime_layout` | `src/runtime_layout/mod.rs` | 768 | 710 | 58 | | +| `runtime_layout::config_merge` | `src/runtime_layout/config_merge.rs` | 593 | 593 | 0 | | +| `runtime_layout::legacy_migration` | `src/runtime_layout/legacy_migration.rs` | 396 | 396 | 0 | | +| `runtime_layout::paths` | `src/runtime_layout/paths.rs` | 144 | 110 | 34 | | +| `runtime_layout::skill_refresh` | `src/runtime_layout/skill_refresh.rs` | 376 | 276 | 100 | | +| `runtime_layout::skill_sync` | `src/runtime_layout/skill_sync.rs` | 1253 | 962 | 291 | | +| `server` | `src/server/mod.rs` | 3655 | 2851 | 804 | giant-file | +| `server::cluster` | `src/server/cluster.rs` | 9 | 9 | 0 | | +| `server::cluster_session_routing` | `src/server/cluster_session_routing.rs` | 9 | 9 | 0 | | +| `server::cron_catalog` | `src/server/cron_catalog.rs` | 67 | 67 | 0 | | +| `server::dashboard_provision` | `src/server/dashboard_provision.rs` | 137 | 107 | 30 | | +| `server::dto` | `src/server/dto/mod.rs` | 7 | 7 | 0 | | +| `server::dto::agents` | `src/server/dto/agents.rs` | 69 | 33 | 36 | | +| `server::dto::analytics` | `src/server/dto/analytics.rs` | 13 | 13 | 0 | | +| `server::dto::dispatches` | `src/server/dto/dispatches.rs` | 155 | 123 | 32 | | +| `server::dto::kanban` | `src/server/dto/kanban.rs` | 109 | 109 | 0 | | +| `server::dto::settings` | `src/server/dto/settings.rs` | 16 | 16 | 0 | | +| `server::issue_specs` | `src/server/issue_specs.rs` | 406 | 362 | 44 | | +| `server::maintenance` | `src/server/maintenance/mod.rs` | 1012 | 915 | 97 | | +| `server::maintenance::storage_jobs` | `src/server/maintenance/storage_jobs.rs` | 295 | 251 | 44 | | +| `server::multinode_regression` | `src/server/multinode_regression.rs` | 518 | 518 | 0 | | +| `server::outbox_actionable_delivery` | `src/server/outbox_actionable_delivery.rs` | 147 | 101 | 46 | | +| `server::outbox_delivery_alert` | `src/server/outbox_delivery_alert.rs` | 149 | 149 | 0 | | +| `server::resource_locks` | `src/server/resource_locks.rs` | 415 | 239 | 176 | | +| `server::routes` | `src/server/routes/mod.rs` | 574 | 339 | 235 | | +| `server::routes::agents` | `src/server/routes/agents.rs` | 1290 | 1240 | 50 | giant-file | +| `server::routes::agents_crud` | `src/server/routes/agents_crud.rs` | 1297 | 1297 | 0 | giant-file | +| `server::routes::agents_setup` | `src/server/routes/agents_setup.rs` | 1366 | 1366 | 0 | giant-file | +| `server::routes::analytics` | `src/server/routes/analytics.rs` | 554 | 554 | 0 | | +| `server::routes::auth` | `src/server/routes/auth.rs` | 281 | 178 | 103 | | +| `server::routes::auto_queue` | `src/server/routes/auto_queue.rs` | 224 | 224 | 0 | | +| `server::routes::automation_candidates` | `src/server/routes/automation_candidates.rs` | 320 | 320 | 0 | | +| `server::routes::claude_accounts_api` | `src/server/routes/claude_accounts_api.rs` | 182 | 182 | 0 | | +| `server::routes::cluster` | `src/server/routes/cluster.rs` | 379 | 379 | 0 | | +| `server::routes::cron_api` | `src/server/routes/cron_api.rs` | 180 | 180 | 0 | | +| `server::routes::departments` | `src/server/routes/departments.rs` | 342 | 266 | 76 | | +| `server::routes::discord` | `src/server/routes/discord.rs` | 403 | 346 | 57 | | +| `server::routes::dispatched_sessions` | `src/server/routes/dispatched_sessions.rs` | 257 | 257 | 0 | | +| `server::routes::dispatches` | `src/server/routes/dispatches/mod.rs` | 29 | 29 | 0 | | +| `server::routes::dispatches::crud` | `src/server/routes/dispatches/crud.rs` | 1146 | 762 | 384 | | +| `server::routes::dispatches::discord_delivery` | `src/server/routes/dispatches/discord_delivery.rs` | 15 | 15 | 0 | | +| `server::routes::dispatches::outbox` | `src/server/routes/dispatches/outbox.rs` | 10 | 10 | 0 | | +| `server::routes::dispatches::thread_reuse` | `src/server/routes/dispatches/thread_reuse.rs` | 115 | 115 | 0 | | +| `server::routes::dm_reply` | `src/server/routes/dm_reply.rs` | 60 | 60 | 0 | | +| `server::routes::docs` | `src/server/routes/docs.rs` | 1188 | 375 | 813 | | +| `server::routes::docs::guides` | `src/server/routes/docs/guides.rs` | 247 | 247 | 0 | | +| `server::routes::docs::inventory` | `src/server/routes/docs/inventory.rs` | 279 | 279 | 0 | | +| `server::routes::docs::inventory::endpoints` | `src/server/routes/docs/inventory/endpoints/mod.rs` | 27 | 27 | 0 | | +| `server::routes::docs::inventory::endpoints::part_01` | `src/server/routes/docs/inventory/endpoints/part_01.rs` | 701 | 701 | 0 | | +| `server::routes::docs::inventory::endpoints::part_02` | `src/server/routes/docs/inventory/endpoints/part_02.rs` | 658 | 658 | 0 | | +| `server::routes::docs::inventory::endpoints::part_03` | `src/server/routes/docs/inventory/endpoints/part_03.rs` | 646 | 646 | 0 | | +| `server::routes::docs::inventory::endpoints::part_04` | `src/server/routes/docs/inventory/endpoints/part_04.rs` | 719 | 719 | 0 | | +| `server::routes::docs::inventory::endpoints::part_05` | `src/server/routes/docs/inventory/endpoints/part_05.rs` | 726 | 726 | 0 | | +| `server::routes::docs::inventory::endpoints::part_06` | `src/server/routes/docs/inventory/endpoints/part_06.rs` | 835 | 817 | 18 | | +| `server::routes::docs::inventory::endpoints::part_07` | `src/server/routes/docs/inventory/endpoints/part_07.rs` | 723 | 723 | 0 | | +| `server::routes::docs::inventory::endpoints::part_08` | `src/server/routes/docs/inventory/endpoints/part_08.rs` | 797 | 755 | 42 | | +| `server::routes::docs::inventory::endpoints::part_09` | `src/server/routes/docs/inventory/endpoints/part_09.rs` | 202 | 202 | 0 | | +| `server::routes::docs::inventory::endpoints::part_10` | `src/server/routes/docs/inventory/endpoints/part_10.rs` | 134 | 134 | 0 | | +| `server::routes::docs::taxonomy` | `src/server/routes/docs/taxonomy.rs` | 256 | 256 | 0 | | +| `server::routes::domains` | `src/server/routes/domains/mod.rs` | 9 | 9 | 0 | | +| `server::routes::domains::access` | `src/server/routes/domains/access.rs` | 13 | 13 | 0 | | +| `server::routes::domains::admin` | `src/server/routes/domains/admin.rs` | 83 | 83 | 0 | | +| `server::routes::domains::agents` | `src/server/routes/domains/agents.rs` | 57 | 57 | 0 | | +| `server::routes::domains::analytics` | `src/server/routes/domains/analytics.rs` | 22 | 22 | 0 | | +| `server::routes::domains::integrations` | `src/server/routes/domains/integrations.rs` | 86 | 86 | 0 | | +| `server::routes::domains::kanban` | `src/server/routes/domains/kanban.rs` | 87 | 87 | 0 | | +| `server::routes::domains::onboarding` | `src/server/routes/domains/onboarding.rs` | 39 | 39 | 0 | | +| `server::routes::domains::ops` | `src/server/routes/domains/ops.rs` | 404 | 404 | 0 | | +| `server::routes::domains::reviews` | `src/server/routes/domains/reviews.rs` | 33 | 33 | 0 | | +| `server::routes::e2e_control` | `src/server/routes/e2e_control.rs` | 275 | 169 | 106 | | +| `server::routes::escalation` | `src/server/routes/escalation.rs` | 1591 | 1361 | 230 | giant-file | +| `server::routes::github` | `src/server/routes/github.rs` | 940 | 663 | 277 | | +| `server::routes::github_dashboard` | `src/server/routes/github_dashboard.rs` | 190 | 190 | 0 | | +| `server::routes::health_api` | `src/server/routes/health_api.rs` | 3367 | 1934 | 1433 | giant-file | +| `server::routes::home_metrics` | `src/server/routes/home_metrics.rs` | 352 | 352 | 0 | | +| `server::routes::hooks` | `src/server/routes/hooks.rs` | 136 | 136 | 0 | | +| `server::routes::idle_recap` | `src/server/routes/idle_recap.rs` | 406 | 406 | 0 | | +| `server::routes::kanban` | `src/server/routes/kanban.rs` | 2483 | 2420 | 63 | giant-file | +| `server::routes::kanban_repos` | `src/server/routes/kanban_repos.rs` | 234 | 234 | 0 | | +| `server::routes::maintenance` | `src/server/routes/maintenance.rs` | 17 | 17 | 0 | | +| `server::routes::meetings` | `src/server/routes/meetings.rs` | 1245 | 1245 | 0 | giant-file | +| `server::routes::memory_api` | `src/server/routes/memory_api.rs` | 883 | 443 | 440 | | +| `server::routes::message_outbox` | `src/server/routes/message_outbox.rs` | 478 | 285 | 193 | | +| `server::routes::messages` | `src/server/routes/messages.rs` | 195 | 195 | 0 | | +| `server::routes::monitoring` | `src/server/routes/monitoring.rs` | 96 | 96 | 0 | | +| `server::routes::offices` | `src/server/routes/offices.rs` | 381 | 381 | 0 | | +| `server::routes::onboarding` | `src/server/routes/onboarding.rs` | 61 | 61 | 0 | | +| `server::routes::pipeline` | `src/server/routes/pipeline.rs` | 353 | 353 | 0 | | +| `server::routes::pr_summary` | `src/server/routes/pr_summary.rs` | 241 | 142 | 99 | | +| `server::routes::prompt_manifest_retention` | `src/server/routes/prompt_manifest_retention.rs` | 57 | 57 | 0 | | +| `server::routes::provider_cli_api` | `src/server/routes/provider_cli_api.rs` | 371 | 371 | 0 | | +| `server::routes::queue_api` | `src/server/routes/queue_api.rs` | 436 | 387 | 49 | | +| `server::routes::receipt` | `src/server/routes/receipt.rs` | 813 | 500 | 313 | | +| `server::routes::resume` | `src/server/routes/resume.rs` | 1227 | 1227 | 0 | giant-file | +| `server::routes::review_verdict` | `src/server/routes/review_verdict/mod.rs` | 14 | 14 | 0 | | +| `server::routes::review_verdict::decision_route` | `src/server/routes/review_verdict/decision_route.rs` | 56 | 56 | 0 | | +| `server::routes::review_verdict::tuning_aggregate` | `src/server/routes/review_verdict/tuning_aggregate.rs` | 14 | 14 | 0 | | +| `server::routes::review_verdict::verdict_route` | `src/server/routes/review_verdict/verdict_route.rs` | 703 | 639 | 64 | | +| `server::routes::reviews` | `src/server/routes/reviews.rs` | 733 | 644 | 89 | | +| `server::routes::routines` | `src/server/routes/routines.rs` | 252 | 154 | 98 | | +| `server::routes::routines::audit` | `src/server/routes/routines/audit.rs` | 190 | 115 | 75 | | +| `server::routes::routines::handlers` | `src/server/routes/routines/handlers.rs` | 509 | 509 | 0 | | +| `server::routes::routines::helpers` | `src/server/routes/routines/helpers.rs` | 356 | 262 | 94 | | +| `server::routes::routines::responses` | `src/server/routes/routines/responses.rs` | 195 | 76 | 119 | | +| `server::routes::scheduled_messages` | `src/server/routes/scheduled_messages.rs` | 1089 | 996 | 93 | | +| `server::routes::scheduled_messages::delivery_render` | `src/server/routes/scheduled_messages/delivery_render.rs` | 66 | 66 | 0 | | +| `server::routes::scheduled_messages::discord_mentions` | `src/server/routes/scheduled_messages/discord_mentions.rs` | 147 | 116 | 31 | | +| `server::routes::scheduled_messages::provider_targets` | `src/server/routes/scheduled_messages/provider_targets.rs` | 122 | 106 | 16 | | +| `server::routes::scheduled_messages::snapshot_capture` | `src/server/routes/scheduled_messages/snapshot_capture.rs` | 159 | 159 | 0 | | +| `server::routes::session_activity` | `src/server/routes/session_activity.rs` | 13 | 13 | 0 | | +| `server::routes::settings` | `src/server/routes/settings.rs` | 91 | 91 | 0 | | +| `server::routes::skill_usage_analytics` | `src/server/routes/skill_usage_analytics.rs` | 425 | 425 | 0 | | +| `server::routes::skills_api` | `src/server/routes/skills_api.rs` | 640 | 640 | 0 | | +| `server::routes::stats` | `src/server/routes/stats.rs` | 708 | 571 | 137 | | +| `server::routes::termination_events` | `src/server/routes/termination_events.rs` | 152 | 152 | 0 | | +| `server::routes::tests::preflight_harness::types` | `src/server/routes/tests/preflight_harness/types.rs` | 217 | 0 | 217 | | +| `server::routes::tests::preflight_harness::validation` | `src/server/routes/tests/preflight_harness/validation.rs` | 260 | 0 | 260 | | +| `server::routes::v1` | `src/server/routes/v1.rs` | 1866 | 1866 | 0 | giant-file | +| `server::routes::voice_config` | `src/server/routes/voice_config.rs` | 466 | 396 | 70 | | +| `server::startup_preflight` | `src/server/startup_preflight.rs` | 72 | 36 | 36 | | +| `server::state` | `src/server/state.rs` | 11 | 11 | 0 | | +| `server::task_dispatch_claims` | `src/server/task_dispatch_claims.rs` | 1406 | 411 | 995 | | +| `server::test_phase_runs` | `src/server/test_phase_runs.rs` | 426 | 400 | 26 | | +| `server::worker_recovery` | `src/server/worker_recovery.rs` | 1219 | 641 | 578 | | +| `server::worker_registry` | `src/server/worker_registry.rs` | 677 | 483 | 194 | | +| `server::worker_registry::registry` | `src/server/worker_registry/registry.rs` | 616 | 616 | 0 | | +| `server::worker_registry::status` | `src/server/worker_registry/status.rs` | 241 | 241 | 0 | | +| `server::ws` | `src/server/ws.rs` | 140 | 140 | 0 | | +| `services` | `src/services/mod.rs` | 164 | 164 | 0 | | +| `services::agent_protocol` | `src/services/agent_protocol.rs` | 618 | 618 | 0 | | +| `services::agent_quality` | `src/services/agent_quality/mod.rs` | 29 | 29 | 0 | | +| `services::agent_quality::regression_alerts` | `src/services/agent_quality/regression_alerts.rs` | 757 | 509 | 248 | | +| `services::agents` | `src/services/agents/mod.rs` | 3 | 3 | 0 | | +| `services::agents::query` | `src/services/agents/query.rs` | 583 | 499 | 84 | | +| `services::agents::serialization` | `src/services/agents/serialization.rs` | 447 | 299 | 148 | | +| `services::agents::turn` | `src/services/agents/turn.rs` | 832 | 719 | 113 | | +| `services::analytics` | `src/services/analytics.rs` | 21 | 21 | 0 | | +| `services::analytics::api_usage` | `src/services/analytics/api_usage.rs` | 198 | 171 | 27 | | +| `services::analytics::dispatch_metrics` | `src/services/analytics/dispatch_metrics.rs` | 258 | 218 | 40 | | +| `services::analytics::dto` | `src/services/analytics/dto.rs` | 116 | 90 | 26 | | +| `services::analytics::queue_metrics` | `src/services/analytics/queue_metrics.rs` | 516 | 495 | 21 | | +| `services::analytics::session_metrics` | `src/services/analytics/session_metrics.rs` | 115 | 70 | 45 | | +| `services::api_friction` | `src/services/api_friction/mod.rs` | 23 | 23 | 0 | | +| `services::api_friction::core` | `src/services/api_friction/core.rs` | 49 | 49 | 0 | | +| `services::api_friction::issue_body` | `src/services/api_friction/issue_body.rs` | 221 | 132 | 89 | | +| `services::api_friction::issues` | `src/services/api_friction/issues.rs` | 269 | 269 | 0 | | +| `services::api_friction::markers` | `src/services/api_friction/markers.rs` | 195 | 195 | 0 | | +| `services::api_friction::memory_sync` | `src/services/api_friction/memory_sync.rs` | 157 | 157 | 0 | | +| `services::api_friction::patterns` | `src/services/api_friction/patterns.rs` | 154 | 154 | 0 | | +| `services::api_friction::storage` | `src/services/api_friction/storage.rs` | 278 | 278 | 0 | | +| `services::auto_queue` | `src/services/auto_queue.rs` | 1928 | 1545 | 383 | giant-file | +| `services::auto_queue::activate_command` | `src/services/auto_queue/activate_command.rs` | 2742 | 1537 | 1205 | giant-file | +| `services::auto_queue::activate_preflight` | `src/services/auto_queue/activate_preflight.rs` | 199 | 199 | 0 | | +| `services::auto_queue::activate_route` | `src/services/auto_queue/activate_route.rs` | 19 | 19 | 0 | | +| `services::auto_queue::cancel_run` | `src/services/auto_queue/cancel_run.rs` | 1295 | 917 | 378 | | +| `services::auto_queue::cleanup_tasks` | `src/services/auto_queue/cleanup_tasks.rs` | 1488 | 1464 | 24 | giant-file | +| `services::auto_queue::command` | `src/services/auto_queue/command.rs` | 572 | 424 | 148 | | +| `services::auto_queue::control_routes` | `src/services/auto_queue/control_routes.rs` | 913 | 861 | 52 | | +| `services::auto_queue::dispatch_assignment_command` | `src/services/auto_queue/dispatch_assignment_command.rs` | 101 | 101 | 0 | | +| `services::auto_queue::dispatch_command` | `src/services/auto_queue/dispatch_command.rs` | 908 | 908 | 0 | | +| `services::auto_queue::dispatch_query` | `src/services/auto_queue/dispatch_query.rs` | 93 | 93 | 0 | | +| `services::auto_queue::fsm` | `src/services/auto_queue/fsm.rs` | 927 | 691 | 236 | | +| `services::auto_queue::lifecycle_routes` | `src/services/auto_queue/lifecycle_routes.rs` | 168 | 168 | 0 | | +| `services::auto_queue::order_routes` | `src/services/auto_queue/order_routes.rs` | 295 | 295 | 0 | | +| `services::auto_queue::phase_gate` | `src/services/auto_queue/phase_gate.rs` | 789 | 606 | 183 | | +| `services::auto_queue::phase_gate_catalog` | `src/services/auto_queue/phase_gate_catalog.rs` | 52 | 17 | 35 | | +| `services::auto_queue::phase_gate_violations` | `src/services/auto_queue/phase_gate_violations.rs` | 264 | 211 | 53 | | +| `services::auto_queue::planning` | `src/services/auto_queue/planning.rs` | 592 | 248 | 344 | | +| `services::auto_queue::query` | `src/services/auto_queue/query.rs` | 262 | 242 | 20 | | +| `services::auto_queue::route` | `src/services/auto_queue/route.rs` | 113 | 113 | 0 | | +| `services::auto_queue::route_generate` | `src/services/auto_queue/route_generate.rs` | 887 | 755 | 132 | | +| `services::auto_queue::route_request_generate` | `src/services/auto_queue/route_request_generate.rs` | 418 | 284 | 134 | | +| `services::auto_queue::route_types` | `src/services/auto_queue/route_types.rs` | 151 | 151 | 0 | | +| `services::auto_queue::runtime` | `src/services/auto_queue/runtime.rs` | 400 | 400 | 0 | | +| `services::auto_queue::slot_routes` | `src/services/auto_queue/slot_routes.rs` | 322 | 322 | 0 | | +| `services::auto_queue::view` | `src/services/auto_queue/view.rs` | 514 | 419 | 95 | | +| `services::auto_queue::view_admin_routes` | `src/services/auto_queue/view_admin_routes.rs` | 730 | 730 | 0 | | +| `services::automation_candidate_contract` | `src/services/automation_candidate_contract.rs` | 127 | 87 | 40 | | +| `services::automation_candidate_materializer` | `src/services/automation_candidate_materializer.rs` | 844 | 844 | 0 | | +| `services::claude` | `src/services/claude.rs` | 4234 | 2910 | 1324 | giant-file | +| `services::claude::active_usage` | `src/services/claude/active_usage.rs` | 55 | 55 | 0 | | +| `services::claude::backend_routing` | `src/services/claude/backend_routing.rs` | 122 | 122 | 0 | | +| `services::claude_command` | `src/services/claude_command.rs` | 418 | 177 | 241 | | +| `services::claude_compact_context` | `src/services/claude_compact_context.rs` | 466 | 299 | 167 | | +| `services::claude_compact_trigger` | `src/services/claude_compact_trigger.rs` | 1123 | 538 | 585 | | +| `services::claude_e` | `src/services/claude_e/mod.rs` | 18 | 18 | 0 | | +| `services::claude_e::cancellation` | `src/services/claude_e/cancellation.rs` | 3 | 3 | 0 | | +| `services::claude_e::jsonl_parser` | `src/services/claude_e/jsonl_parser.rs` | 4 | 4 | 0 | | +| `services::claude_e::process` | `src/services/claude_e/process.rs` | 415 | 376 | 39 | | +| `services::claude_e::spawn_queue` | `src/services/claude_e/spawn_queue.rs` | 3 | 3 | 0 | | +| `services::claude_tui` | `src/services/claude_tui/mod.rs` | 19 | 19 | 0 | | +| `services::claude_tui::composer_lock` | `src/services/claude_tui/composer_lock.rs` | 159 | 60 | 99 | | +| `services::claude_tui::hook_bundle` | `src/services/claude_tui/hook_bundle.rs` | 1229 | 737 | 492 | | +| `services::claude_tui::hook_output_guard` | `src/services/claude_tui/hook_output_guard.rs` | 157 | 157 | 0 | | +| `services::claude_tui::hook_registry` | `src/services/claude_tui/hook_registry.rs` | 1333 | 718 | 615 | | +| `services::claude_tui::hook_relay` | `src/services/claude_tui/hook_relay.rs` | 2085 | 806 | 1279 | | +| `services::claude_tui::hook_relay::ordered_queue` | `src/services/claude_tui/hook_relay/ordered_queue.rs` | 2029 | 923 | 1106 | | +| `services::claude_tui::hook_relay::queue_retention` | `src/services/claude_tui/hook_relay/queue_retention.rs` | 183 | 183 | 0 | | +| `services::claude_tui::hook_server` | `src/services/claude_tui/hook_server.rs` | 1334 | 708 | 626 | | +| `services::claude_tui::hook_server::relay_receipts` | `src/services/claude_tui/hook_server/relay_receipts.rs` | 346 | 290 | 56 | | +| `services::claude_tui::hosting` | `src/services/claude_tui/hosting/mod.rs` | 13 | 13 | 0 | | +| `services::claude_tui::hosting::followup_support` | `src/services/claude_tui/hosting/followup_support.rs` | 519 | 402 | 117 | | +| `services::claude_tui::hosting::warm_followup` | `src/services/claude_tui/hosting/warm_followup.rs` | 771 | 714 | 57 | | +| `services::claude_tui::input` | `src/services/claude_tui/input.rs` | 4184 | 2265 | 1919 | giant-file | +| `services::claude_tui::memento_feedback` | `src/services/claude_tui/memento_feedback.rs` | 1566 | 863 | 703 | | +| `services::claude_tui::prompt_readiness` | `src/services/claude_tui/prompt_readiness.rs` | 479 | 252 | 227 | | +| `services::claude_tui::session` | `src/services/claude_tui/session.rs` | 811 | 440 | 371 | | +| `services::claude_tui::startup_dialog` | `src/services/claude_tui/startup_dialog.rs` | 276 | 121 | 155 | | +| `services::claude_tui::transcript_tail` | `src/services/claude_tui/transcript_tail.rs` | 666 | 334 | 332 | | +| `services::claude_tui::tui_relay` | `src/services/claude_tui/tui_relay.rs` | 1323 | 618 | 705 | | +| `services::cluster` | `src/services/cluster/mod.rs` | 35 | 35 | 0 | | +| `services::cluster::capability_routing` | `src/services/cluster/capability_routing.rs` | 261 | 261 | 0 | | +| `services::cluster::intake_preflight` | `src/services/cluster/intake_preflight.rs` | 838 | 423 | 415 | | +| `services::cluster::intake_router_hook` | `src/services/cluster/intake_router_hook.rs` | 2874 | 927 | 1947 | | +| `services::cluster::intake_router_hook::owner_record` | `src/services/cluster/intake_router_hook/owner_record.rs` | 2439 | 944 | 1495 | | +| `services::cluster::intake_router_hook::session_owner` | `src/services/cluster/intake_router_hook/session_owner.rs` | 134 | 134 | 0 | | +| `services::cluster::intake_routing` | `src/services/cluster/intake_routing.rs` | 351 | 149 | 202 | | +| `services::cluster::intake_routing_config` | `src/services/cluster/intake_routing_config.rs` | 317 | 247 | 70 | | +| `services::cluster::intake_routing_telemetry` | `src/services/cluster/intake_routing_telemetry.rs` | 479 | 371 | 108 | | +| `services::cluster::intake_worker` | `src/services/cluster/intake_worker.rs` | 824 | 585 | 239 | | +| `services::cluster::intake_worker_capabilities` | `src/services/cluster/intake_worker_capabilities.rs` | 250 | 191 | 59 | | +| `services::cluster::node_registry` | `src/services/cluster/node_registry.rs` | 1091 | 804 | 287 | | +| `services::cluster::registry_adapter_sink` | `src/services/cluster/registry_adapter_sink.rs` | 347 | 117 | 230 | | +| `services::cluster::relay_producer_registry` | `src/services/cluster/relay_producer_registry.rs` | 254 | 148 | 106 | | +| `services::cluster::session_discovery` | `src/services/cluster/session_discovery.rs` | 1350 | 742 | 608 | | +| `services::cluster::session_matcher` | `src/services/cluster/session_matcher.rs` | 952 | 529 | 423 | | +| `services::cluster::session_registry` | `src/services/cluster/session_registry.rs` | 566 | 330 | 236 | | +| `services::cluster::session_routing` | `src/services/cluster/session_routing.rs` | 421 | 221 | 200 | | +| `services::cluster::stream_relay` | `src/services/cluster/stream_relay.rs` | 1792 | 995 | 797 | | +| `services::cluster::stream_relay::identity` | `src/services/cluster/stream_relay/identity.rs` | 158 | 158 | 0 | | +| `services::cluster::stream_relay::terminal_resolution` | `src/services/cluster/stream_relay/terminal_resolution.rs` | 56 | 56 | 0 | | +| `services::cluster::watcher_supervisor` | `src/services/cluster/watcher_supervisor.rs` | 845 | 373 | 472 | | +| `services::codex` | `src/services/codex.rs` | 3823 | 3101 | 722 | giant-file | +| `services::codex_remote_policy` | `src/services/codex_remote_policy.rs` | 49 | 32 | 17 | | +| `services::codex_tmux_wrapper` | `src/services/codex_tmux_wrapper.rs` | 2585 | 1411 | 1174 | giant-file | +| `services::codex_tui` | `src/services/codex_tui/mod.rs` | 5 | 5 | 0 | | +| `services::codex_tui::input` | `src/services/codex_tui/input.rs` | 3287 | 1914 | 1373 | giant-file | +| `services::codex_tui::rollout_index` | `src/services/codex_tui/rollout_index.rs` | 1200 | 618 | 582 | | +| `services::codex_tui::rollout_tail` | `src/services/codex_tui/rollout_tail.rs` | 4987 | 1529 | 3458 | giant-file | +| `services::codex_tui::rollout_tail::parser` | `src/services/codex_tui/rollout_tail/parser.rs` | 405 | 405 | 0 | | +| `services::codex_tui::session` | `src/services/codex_tui/session.rs` | 957 | 449 | 508 | | +| `services::codex_tui::warm_followup` | `src/services/codex_tui/warm_followup.rs` | 730 | 515 | 215 | | +| `services::cswap` | `src/services/cswap.rs` | 887 | 552 | 335 | | +| `services::discord` | `src/services/discord/mod.rs` | 4091 | 2709 | 1382 | giant-file | +| `services::discord::abandon_request_store` | `src/services/discord/abandon_request_store.rs` | 862 | 601 | 261 | | +| `services::discord::adk_session` | `src/services/discord/adk_session.rs` | 1000 | 885 | 115 | | +| `services::discord::agent_handoff` | `src/services/discord/agent_handoff.rs` | 1078 | 651 | 427 | | +| `services::discord::agentdesk_config` | `src/services/discord/agentdesk_config.rs` | 1047 | 946 | 101 | | +| `services::discord::answer_flush_barrier` | `src/services/discord/answer_flush_barrier.rs` | 511 | 209 | 302 | | +| `services::discord::bot_role` | `src/services/discord/bot_role.rs` | 103 | 66 | 37 | | +| `services::discord::busy_followup_retry_store` | `src/services/discord/busy_followup_retry_store.rs` | 617 | 399 | 218 | | +| `services::discord::catch_up` | `src/services/discord/catch_up.rs` | 3229 | 1820 | 1409 | giant-file | +| `services::discord::catch_up::classification` | `src/services/discord/catch_up/classification.rs` | 323 | 323 | 0 | | +| `services::discord::catch_up::phase2` | `src/services/discord/catch_up/phase2.rs` | 97 | 97 | 0 | | +| `services::discord::catch_up::settled_ledger_consult` | `src/services/discord/catch_up/settled_ledger_consult.rs` | 25 | 25 | 0 | | +| `services::discord::catch_up::too_old_notice` | `src/services/discord/catch_up/too_old_notice.rs` | 295 | 115 | 180 | | +| `services::discord::commands` | `src/services/discord/commands/mod.rs` | 266 | 207 | 59 | | +| `services::discord::commands::command_policy` | `src/services/discord/commands/command_policy.rs` | 219 | 209 | 10 | | +| `services::discord::commands::config` | `src/services/discord/commands/config.rs` | 1241 | 973 | 268 | | +| `services::discord::commands::control` | `src/services/discord/commands/control.rs` | 991 | 924 | 67 | | +| `services::discord::commands::diagnostics` | `src/services/discord/commands/diagnostics/mod.rs` | 386 | 386 | 0 | | +| `services::discord::commands::diagnostics::reports` | `src/services/discord/commands/diagnostics/reports.rs` | 765 | 667 | 98 | | +| `services::discord::commands::fast_mode` | `src/services/discord/commands/fast_mode.rs` | 81 | 81 | 0 | | +| `services::discord::commands::goals` | `src/services/discord/commands/goals.rs` | 72 | 72 | 0 | | +| `services::discord::commands::help` | `src/services/discord/commands/help.rs` | 107 | 94 | 13 | | +| `services::discord::commands::inspect` | `src/services/discord/commands/inspect/mod.rs` | 175 | 175 | 0 | | +| `services::discord::commands::inspect::formatting` | `src/services/discord/commands/inspect/formatting.rs` | 244 | 244 | 0 | | +| `services::discord::commands::inspect::model` | `src/services/discord/commands/inspect/model.rs` | 52 | 52 | 0 | | +| `services::discord::commands::inspect::query` | `src/services/discord/commands/inspect/query.rs` | 153 | 153 | 0 | | +| `services::discord::commands::inspect::render_context` | `src/services/discord/commands/inspect/render_context.rs` | 65 | 65 | 0 | | +| `services::discord::commands::inspect::render_last` | `src/services/discord/commands/inspect/render_last.rs` | 54 | 54 | 0 | | +| `services::discord::commands::inspect::render_prompt` | `src/services/discord/commands/inspect/render_prompt.rs` | 181 | 181 | 0 | | +| `services::discord::commands::inspect::render_recovery` | `src/services/discord/commands/inspect/render_recovery.rs` | 60 | 60 | 0 | | +| `services::discord::commands::inspect::render_session` | `src/services/discord/commands/inspect/render_session.rs` | 37 | 37 | 0 | | +| `services::discord::commands::meeting_cmd` | `src/services/discord/commands/meeting_cmd.rs` | 116 | 116 | 0 | | +| `services::discord::commands::model_picker` | `src/services/discord/commands/model_picker.rs` | 196 | 196 | 0 | | +| `services::discord::commands::model_ui` | `src/services/discord/commands/model_ui.rs` | 383 | 275 | 108 | | +| `services::discord::commands::node` | `src/services/discord/commands/node.rs` | 483 | 451 | 32 | | +| `services::discord::commands::receipt` | `src/services/discord/commands/receipt.rs` | 273 | 273 | 0 | | +| `services::discord::commands::recovery_ops` | `src/services/discord/commands/recovery_ops.rs` | 519 | 380 | 139 | | +| `services::discord::commands::restart` | `src/services/discord/commands/restart.rs` | 245 | 245 | 0 | | +| `services::discord::commands::session` | `src/services/discord/commands/session.rs` | 369 | 369 | 0 | | +| `services::discord::commands::sidecar` | `src/services/discord/commands/sidecar.rs` | 40 | 40 | 0 | | +| `services::discord::commands::skill` | `src/services/discord/commands/skill.rs` | 406 | 406 | 0 | | +| `services::discord::commands::text_commands` | `src/services/discord/commands/text_commands.rs` | 1484 | 1484 | 0 | giant-file | +| `services::discord::commands::tui_passthrough` | `src/services/discord/commands/tui_passthrough.rs` | 411 | 356 | 55 | | +| `services::discord::commands::voice` | `src/services/discord/commands/voice.rs` | 1030 | 972 | 58 | | +| `services::discord::commands::voice::alert` | `src/services/discord/commands/voice/alert.rs` | 50 | 50 | 0 | | +| `services::discord::compact_turn_authority` | `src/services/discord/compact_turn_authority.rs` | 151 | 95 | 56 | | +| `services::discord::completion_footer_metadata` | `src/services/discord/completion_footer_metadata.rs` | 845 | 369 | 476 | | +| `services::discord::delivery_lease_cell` | `src/services/discord/delivery_lease_cell.rs` | 917 | 861 | 56 | | +| `services::discord::delivery_lease_cell::exact_lease` | `src/services/discord/delivery_lease_cell/exact_lease.rs` | 365 | 0 | 365 | | +| `services::discord::delivery_lease_cell::exact_lease::token` | `src/services/discord/delivery_lease_cell/exact_lease/token.rs` | 17 | 0 | 17 | | +| `services::discord::delivery_lease_cell::source_epoch_observer` | `src/services/discord/delivery_lease_cell/source_epoch_observer.rs` | 154 | 154 | 0 | | +| `services::discord::delivery_lease_key` | `src/services/discord/delivery_lease_key.rs` | 253 | 196 | 57 | | +| `services::discord::destructive_cancel_capture` | `src/services/discord/destructive_cancel_capture.rs` | 63 | 34 | 29 | | +| `services::discord::destructive_cancel_gate` | `src/services/discord/destructive_cancel_gate.rs` | 925 | 398 | 527 | | +| `services::discord::discord_io` | `src/services/discord/discord_io.rs` | 510 | 510 | 0 | | +| `services::discord::dispatch_policy` | `src/services/discord/dispatch_policy.rs` | 514 | 304 | 210 | | +| `services::discord::e2e_control` | `src/services/discord/e2e_control.rs` | 514 | 382 | 132 | | +| `services::discord::execution_identity` | `src/services/discord/execution_identity.rs` | 488 | 250 | 238 | | +| `services::discord::footer_view_reconciler` | `src/services/discord/footer_view_reconciler/mod.rs` | 680 | 492 | 188 | | +| `services::discord::footer_view_reconciler::registry` | `src/services/discord/footer_view_reconciler/registry.rs` | 630 | 630 | 0 | | +| `services::discord::formatting` | `src/services/discord/formatting.rs` | 258 | 141 | 117 | | +| `services::discord::formatting::delivery` | `src/services/discord/formatting/delivery.rs` | 675 | 535 | 140 | | +| `services::discord::formatting::long_send_rollback` | `src/services/discord/formatting/long_send_rollback.rs` | 644 | 579 | 65 | | +| `services::discord::formatting::replace_long_message` | `src/services/discord/formatting/replace_long_message.rs` | 639 | 639 | 0 | | +| `services::discord::formatting::rollback_journal` | `src/services/discord/formatting/rollback_journal.rs` | 363 | 363 | 0 | | +| `services::discord::formatting::streaming_status` | `src/services/discord/formatting/streaming_status.rs` | 896 | 896 | 0 | | +| `services::discord::formatting::tool_markdown` | `src/services/discord/formatting/tool_markdown.rs` | 725 | 725 | 0 | | +| `services::discord::gateway` | `src/services/discord/gateway.rs` | 1568 | 999 | 569 | | +| `services::discord::gateway::outbound_messages` | `src/services/discord/gateway/outbound_messages.rs` | 303 | 182 | 121 | | +| `services::discord::gateway_voice_queue` | `src/services/discord/gateway_voice_queue.rs` | 95 | 17 | 78 | | +| `services::discord::health` | `src/services/discord/health.rs` | 1015 | 844 | 171 | | +| `services::discord::health::headless_turn` | `src/services/discord/health/headless_turn.rs` | 367 | 367 | 0 | | +| `services::discord::health::liveness_authority` | `src/services/discord/health/liveness_authority.rs` | 1049 | 559 | 490 | | +| `services::discord::health::mailbox` | `src/services/discord/health/mailbox.rs` | 223 | 198 | 25 | | +| `services::discord::health::provider_probe` | `src/services/discord/health/provider_probe.rs` | 483 | 253 | 230 | | +| `services::discord::health::reachability` | `src/services/discord/health/reachability.rs` | 61 | 61 | 0 | | +| `services::discord::health::reachability::composite` | `src/services/discord/health/reachability/composite.rs` | 832 | 832 | 0 | | +| `services::discord::health::reachability::discovery` | `src/services/discord/health/reachability/discovery.rs` | 531 | 268 | 263 | | +| `services::discord::health::reachability::divergence` | `src/services/discord/health/reachability/divergence.rs` | 541 | 281 | 260 | | +| `services::discord::health::reachability::external_verdict` | `src/services/discord/health/reachability/external_verdict.rs` | 676 | 394 | 282 | | +| `services::discord::health::reachability::ledger` | `src/services/discord/health/reachability/ledger.rs` | 540 | 540 | 0 | | +| `services::discord::health::reachability::obligation` | `src/services/discord/health/reachability/obligation.rs` | 418 | 418 | 0 | | +| `services::discord::health::reachability::observation` | `src/services/discord/health/reachability/observation.rs` | 419 | 180 | 239 | | +| `services::discord::health::reachability::tail` | `src/services/discord/health/reachability/tail.rs` | 461 | 189 | 272 | | +| `services::discord::health::reachability::verdict` | `src/services/discord/health/reachability/verdict.rs` | 472 | 223 | 249 | | +| `services::discord::health::rebind_request` | `src/services/discord/health/rebind_request.rs` | 112 | 87 | 25 | | +| `services::discord::health::recovery` | `src/services/discord/health/recovery.rs` | 6658 | 2658 | 4000 | giant-file | +| `services::discord::health::recovery::leak_recovery_ledger` | `src/services/discord/health/recovery/leak_recovery_ledger.rs` | 370 | 370 | 0 | | +| `services::discord::health::recovery::self_watchdog` | `src/services/discord/health/recovery/self_watchdog.rs` | 193 | 193 | 0 | | +| `services::discord::health::recovery::stall_alert` | `src/services/discord/health/recovery/stall_alert.rs` | 517 | 174 | 343 | | +| `services::discord::health::recovery::watchdog_decisions` | `src/services/discord/health/recovery/watchdog_decisions.rs` | 356 | 356 | 0 | | +| `services::discord::health::redaction` | `src/services/discord/health/redaction.rs` | 33 | 23 | 10 | | +| `services::discord::health::relay_auto_heal` | `src/services/discord/health/relay_auto_heal.rs` | 2652 | 749 | 1903 | | +| `services::discord::health::relay_dead_reattach` | `src/services/discord/health/relay_dead_reattach.rs` | 489 | 195 | 294 | | +| `services::discord::health::relay_progress` | `src/services/discord/health/relay_progress.rs` | 108 | 66 | 42 | | +| `services::discord::health::runtime_resolve` | `src/services/discord/health/runtime_resolve.rs` | 388 | 320 | 68 | | +| `services::discord::health::session_enrichment` | `src/services/discord/health/session_enrichment.rs` | 908 | 487 | 421 | | +| `services::discord::health::snapshot` | `src/services/discord/health/snapshot.rs` | 2303 | 1240 | 1063 | giant-file | +| `services::discord::health::stall_liveness` | `src/services/discord/health/stall_liveness.rs` | 2425 | 977 | 1448 | | +| `services::discord::health::stall_liveness::redrive_grace` | `src/services/discord/health/stall_liveness/redrive_grace.rs` | 1452 | 675 | 777 | | +| `services::discord::health::stall_verdict` | `src/services/discord/health/stall_verdict.rs` | 1443 | 425 | 1018 | | +| `services::discord::health::transcript_binding_stall` | `src/services/discord/health/transcript_binding_stall.rs` | 381 | 226 | 155 | | +| `services::discord::health::unpaired_active_token` | `src/services/discord/health/unpaired_active_token.rs` | 204 | 142 | 62 | | +| `services::discord::health::watcher_respawn` | `src/services/discord/health/watcher_respawn.rs` | 1410 | 632 | 778 | | +| `services::discord::http` | `src/services/discord/http.rs` | 391 | 279 | 112 | | +| `services::discord::idle_detector` | `src/services/discord/idle_detector.rs` | 475 | 401 | 74 | | +| `services::discord::idle_recap` | `src/services/discord/idle_recap.rs` | 2097 | 885 | 1212 | | +| `services::discord::idle_recap::card` | `src/services/discord/idle_recap/card.rs` | 509 | 509 | 0 | | +| `services::discord::idle_recap::context_display` | `src/services/discord/idle_recap/context_display.rs` | 154 | 154 | 0 | | +| `services::discord::idle_recap::relay_integrity` | `src/services/discord/idle_recap/relay_integrity.rs` | 213 | 160 | 53 | | +| `services::discord::idle_recap::scrollback` | `src/services/discord/idle_recap/scrollback.rs` | 301 | 287 | 14 | | +| `services::discord::idle_recap_interaction` | `src/services/discord/idle_recap_interaction.rs` | 1376 | 842 | 534 | | +| `services::discord::idle_relay_drift` | `src/services/discord/idle_relay_drift.rs` | 965 | 659 | 306 | | +| `services::discord::inflight` | `src/services/discord/inflight.rs` | 5988 | 656 | 5332 | | +| `services::discord::inflight::anchor_repost` | `src/services/discord/inflight/anchor_repost.rs` | 550 | 189 | 361 | | +| `services::discord::inflight::budget` | `src/services/discord/inflight/budget.rs` | 340 | 109 | 231 | | +| `services::discord::inflight::clear_store` | `src/services/discord/inflight/clear_store/mod.rs` | 864 | 864 | 0 | | +| `services::discord::inflight::clear_store::abandon` | `src/services/discord/inflight/clear_store/abandon.rs` | 260 | 260 | 0 | | +| `services::discord::inflight::clear_store::identity` | `src/services/discord/inflight/clear_store/identity.rs` | 282 | 282 | 0 | | +| `services::discord::inflight::clear_store::reconcile_gate` | `src/services/discord/inflight/clear_store/reconcile_gate.rs` | 840 | 355 | 485 | | +| `services::discord::inflight::destructive_commit` | `src/services/discord/inflight/destructive_commit.rs` | 333 | 162 | 171 | | +| `services::discord::inflight::episode_guard` | `src/services/discord/inflight/episode_guard.rs` | 213 | 164 | 49 | | +| `services::discord::inflight::finalizer_identity` | `src/services/discord/inflight/finalizer_identity.rs` | 56 | 56 | 0 | | +| `services::discord::inflight::invariant_test_capture` | `src/services/discord/inflight/invariant_test_capture.rs` | 66 | 0 | 66 | | +| `services::discord::inflight::model` | `src/services/discord/inflight/model.rs` | 1328 | 896 | 432 | | +| `services::discord::inflight::model::identity` | `src/services/discord/inflight/model/identity.rs` | 32 | 32 | 0 | | +| `services::discord::inflight::model::serde_adapters` | `src/services/discord/inflight/model/serde_adapters.rs` | 71 | 71 | 0 | | +| `services::discord::inflight::model::turn_kinds` | `src/services/discord/inflight/model/turn_kinds.rs` | 84 | 84 | 0 | | +| `services::discord::inflight::orphan_relay_reclaim` | `src/services/discord/inflight/orphan_relay_reclaim.rs` | 820 | 306 | 514 | | +| `services::discord::inflight::ownership_ops` | `src/services/discord/inflight/ownership_ops.rs` | 329 | 329 | 0 | | +| `services::discord::inflight::rebind_reap` | `src/services/discord/inflight/rebind_reap.rs` | 697 | 697 | 0 | | +| `services::discord::inflight::removal` | `src/services/discord/inflight/removal.rs` | 1090 | 755 | 335 | | +| `services::discord::inflight::save_store` | `src/services/discord/inflight/save_store.rs` | 1293 | 336 | 957 | | +| `services::discord::inflight::save_store::create_monotonic_observer` | `src/services/discord/inflight/save_store/create_monotonic_observer.rs` | 449 | 130 | 319 | | +| `services::discord::inflight::save_store::delivery_rewind` | `src/services/discord/inflight/save_store/delivery_rewind.rs` | 59 | 59 | 0 | | +| `services::discord::inflight::save_store::identity_gate` | `src/services/discord/inflight/save_store/identity_gate.rs` | 1526 | 918 | 608 | | +| `services::discord::inflight::save_store::identity_gate::bridge_entry` | `src/services/discord/inflight/save_store/identity_gate/bridge_entry.rs` | 317 | 223 | 94 | | +| `services::discord::inflight::save_store::identity_gate::claude_e_stamp` | `src/services/discord/inflight/save_store/identity_gate/claude_e_stamp.rs` | 380 | 142 | 238 | | +| `services::discord::inflight::save_store::identity_gate::completion_preserve` | `src/services/discord/inflight/save_store/identity_gate/completion_preserve.rs` | 141 | 141 | 0 | | +| `services::discord::inflight::save_store::identity_gate::guarded_read` | `src/services/discord/inflight/save_store/identity_gate/guarded_read.rs` | 48 | 48 | 0 | | +| `services::discord::inflight::save_store::identity_gate::heartbeat` | `src/services/discord/inflight/save_store/identity_gate/heartbeat.rs` | 78 | 78 | 0 | | +| `services::discord::inflight::save_store::identity_gate::runtime_stamp` | `src/services/discord/inflight/save_store/identity_gate/runtime_stamp.rs` | 981 | 457 | 524 | | +| `services::discord::inflight::save_store::identity_gate::stamp_merge` | `src/services/discord/inflight/save_store/identity_gate/stamp_merge.rs` | 112 | 112 | 0 | | +| `services::discord::inflight::save_store::identity_gate::stream_loop_patch` | `src/services/discord/inflight/save_store/identity_gate/stream_loop_patch.rs` | 1440 | 628 | 812 | | +| `services::discord::inflight::save_store::rebind_adoption` | `src/services/discord/inflight/save_store/rebind_adoption.rs` | 76 | 76 | 0 | | +| `services::discord::inflight::stall_recovery_tests::flake_isolation_4361` | `src/services/discord/inflight/stall_recovery_tests/flake_isolation_4361.rs` | 310 | 0 | 310 | | +| `services::discord::inflight::stall_recovery_tests::flake_isolation_4422` | `src/services/discord/inflight/stall_recovery_tests/flake_isolation_4422.rs` | 98 | 0 | 98 | | +| `services::discord::inflight::store` | `src/services/discord/inflight/store.rs` | 487 | 433 | 54 | | +| `services::discord::inflight::terminal_delivery_evidence_loss` | `src/services/discord/inflight/terminal_delivery_evidence_loss.rs` | 164 | 78 | 86 | | +| `services::discord::inflight::watcher_state` | `src/services/discord/inflight/watcher_state.rs` | 365 | 365 | 0 | | +| `services::discord::inflight_heartbeat_sweeper` | `src/services/discord/inflight_heartbeat_sweeper.rs` | 299 | 264 | 35 | | +| `services::discord::internal_api` | `src/services/discord/internal_api.rs` | 739 | 739 | 0 | | +| `services::discord::jsonl_watcher` | `src/services/discord/jsonl_watcher.rs` | 276 | 210 | 66 | | +| `services::discord::mailbox_finish` | `src/services/discord/mailbox_finish.rs` | 209 | 198 | 11 | | +| `services::discord::mcp_credential_watcher` | `src/services/discord/mcp_credential_watcher.rs` | 594 | 483 | 111 | | +| `services::discord::meeting_artifact_store` | `src/services/discord/meeting_artifact_store.rs` | 208 | 208 | 0 | | +| `services::discord::meeting_orchestrator` | `src/services/discord/meeting_orchestrator.rs` | 553 | 553 | 0 | | +| `services::discord::meeting_orchestrator::lifecycle` | `src/services/discord/meeting_orchestrator/lifecycle.rs` | 496 | 496 | 0 | | +| `services::discord::meeting_orchestrator::records` | `src/services/discord/meeting_orchestrator/records.rs` | 519 | 519 | 0 | | +| `services::discord::meeting_orchestrator::rounds` | `src/services/discord/meeting_orchestrator/rounds.rs` | 623 | 623 | 0 | | +| `services::discord::meeting_orchestrator::selection` | `src/services/discord/meeting_orchestrator/selection.rs` | 225 | 225 | 0 | | +| `services::discord::meeting_orchestrator::selection_runtime` | `src/services/discord/meeting_orchestrator/selection_runtime.rs` | 846 | 846 | 0 | | +| `services::discord::meeting_state_machine` | `src/services/discord/meeting_state_machine.rs` | 161 | 161 | 0 | | +| `services::discord::metrics` | `src/services/discord/metrics.rs` | 122 | 122 | 0 | | +| `services::discord::model_catalog` | `src/services/discord/model_catalog.rs` | 1029 | 994 | 35 | | +| `services::discord::model_catalog::bounded_cache_file` | `src/services/discord/model_catalog/bounded_cache_file.rs` | 154 | 46 | 108 | | +| `services::discord::model_catalog::claude` | `src/services/discord/model_catalog/claude.rs` | 1545 | 756 | 789 | | +| `services::discord::model_picker_interaction` | `src/services/discord/model_picker_interaction.rs` | 370 | 370 | 0 | | +| `services::discord::monitoring_status` | `src/services/discord/monitoring_status.rs` | 388 | 388 | 0 | | +| `services::discord::org_schema` | `src/services/discord/org_schema.rs` | 402 | 402 | 0 | | +| `services::discord::org_writer` | `src/services/discord/org_writer.rs` | 169 | 169 | 0 | | +| `services::discord::outbound` | `src/services/discord/outbound/mod.rs` | 60 | 60 | 0 | | +| `services::discord::outbound::completed_turn_ledger` | `src/services/discord/outbound/completed_turn_ledger.rs` | 273 | 194 | 79 | | +| `services::discord::outbound::confirmation` | `src/services/discord/outbound/confirmation.rs` | 65 | 65 | 0 | | +| `services::discord::outbound::decision` | `src/services/discord/outbound/decision.rs` | 254 | 254 | 0 | | +| `services::discord::outbound::delivery` | `src/services/discord/outbound/delivery.rs` | 1481 | 740 | 741 | | +| `services::discord::outbound::delivery_frontier_probe` | `src/services/discord/outbound/delivery_frontier_probe.rs` | 75 | 75 | 0 | | +| `services::discord::outbound::delivery_record` | `src/services/discord/outbound/delivery_record.rs` | 5944 | 2662 | 3282 | giant-file | +| `services::discord::outbound::manual_delivery` | `src/services/discord/outbound/manual_delivery.rs` | 1411 | 751 | 660 | | +| `services::discord::outbound::manual_delivery::headless_nonce` | `src/services/discord/outbound/manual_delivery/headless_nonce.rs` | 225 | 74 | 151 | | +| `services::discord::outbound::message` | `src/services/discord/outbound/message.rs` | 471 | 447 | 24 | | +| `services::discord::outbound::policy` | `src/services/discord/outbound/policy.rs` | 124 | 124 | 0 | | +| `services::discord::outbound::reaction_control` | `src/services/discord/outbound/reaction_control.rs` | 190 | 125 | 65 | | +| `services::discord::outbound::receipt_index` | `src/services/discord/outbound/receipt_index.rs` | 692 | 344 | 348 | | +| `services::discord::outbound::result` | `src/services/discord/outbound/result.rs` | 181 | 181 | 0 | | +| `services::discord::outbound::send_api` | `src/services/discord/outbound/send_api.rs` | 646 | 323 | 323 | | +| `services::discord::outbound::send_gate` | `src/services/discord/outbound/send_gate.rs` | 642 | 393 | 249 | | +| `services::discord::outbound::send_target` | `src/services/discord/outbound/send_target.rs` | 263 | 153 | 110 | | +| `services::discord::outbound::send_to_agent` | `src/services/discord/outbound/send_to_agent.rs` | 164 | 100 | 64 | | +| `services::discord::outbound::serenity_reference` | `src/services/discord/outbound/serenity_reference.rs` | 239 | 200 | 39 | | +| `services::discord::outbound::source_registry` | `src/services/discord/outbound/source_registry.rs` | 247 | 159 | 88 | | +| `services::discord::outbound::transport` | `src/services/discord/outbound/transport.rs` | 431 | 431 | 0 | | +| `services::discord::outbound::turn_output_controller` | `src/services/discord/outbound/turn_output_controller.rs` | 3457 | 996 | 2461 | | +| `services::discord::outbound::turn_output_controller::fresh_send` | `src/services/discord/outbound/turn_output_controller/fresh_send.rs` | 228 | 228 | 0 | | +| `services::discord::outbound::turn_output_controller::transport` | `src/services/discord/outbound/turn_output_controller/transport.rs` | 314 | 314 | 0 | | +| `services::discord::placeholder_cleanup` | `src/services/discord/placeholder_cleanup.rs` | 763 | 453 | 310 | | +| `services::discord::placeholder_controller` | `src/services/discord/placeholder_controller.rs` | 1281 | 686 | 595 | | +| `services::discord::placeholder_controller::queued_card_gate` | `src/services/discord/placeholder_controller/queued_card_gate.rs` | 283 | 283 | 0 | | +| `services::discord::placeholder_live_events` | `src/services/discord/placeholder_live_events/mod.rs` | 694 | 694 | 0 | | +| `services::discord::placeholder_live_events::background_task_events` | `src/services/discord/placeholder_live_events/background_task_events.rs` | 109 | 109 | 0 | | +| `services::discord::placeholder_live_events::common` | `src/services/discord/placeholder_live_events/common.rs` | 240 | 240 | 0 | | +| `services::discord::placeholder_live_events::completion_footer` | `src/services/discord/placeholder_live_events/completion_footer.rs` | 497 | 497 | 0 | | +| `services::discord::placeholder_live_events::context_panel` | `src/services/discord/placeholder_live_events/context_panel.rs` | 72 | 72 | 0 | | +| `services::discord::placeholder_live_events::freshness` | `src/services/discord/placeholder_live_events/freshness.rs` | 469 | 124 | 345 | | +| `services::discord::placeholder_live_events::panel_cache_invalidation` | `src/services/discord/placeholder_live_events/panel_cache_invalidation.rs` | 94 | 94 | 0 | | +| `services::discord::placeholder_live_events::recent_events` | `src/services/discord/placeholder_live_events/recent_events.rs` | 322 | 322 | 0 | | +| `services::discord::placeholder_live_events::session_banner_claim` | `src/services/discord/placeholder_live_events/session_banner_claim.rs` | 91 | 91 | 0 | | +| `services::discord::placeholder_live_events::session_panel` | `src/services/discord/placeholder_live_events/session_panel.rs` | 262 | 262 | 0 | | +| `services::discord::placeholder_live_events::slot_rehydration` | `src/services/discord/placeholder_live_events/slot_rehydration.rs` | 525 | 447 | 78 | | +| `services::discord::placeholder_live_events::status_events` | `src/services/discord/placeholder_live_events/status_events.rs` | 791 | 791 | 0 | | +| `services::discord::placeholder_live_events::status_panel` | `src/services/discord/placeholder_live_events/status_panel.rs` | 794 | 794 | 0 | | +| `services::discord::placeholder_live_events::status_panel::completed_kind` | `src/services/discord/placeholder_live_events/status_panel/completed_kind.rs` | 15 | 15 | 0 | | +| `services::discord::placeholder_live_events::status_panel::derived_status` | `src/services/discord/placeholder_live_events/status_panel/derived_status.rs` | 84 | 84 | 0 | | +| `services::discord::placeholder_live_events::subagent_panel` | `src/services/discord/placeholder_live_events/subagent_panel.rs` | 368 | 318 | 50 | | +| `services::discord::placeholder_live_events::subagent_rollout` | `src/services/discord/placeholder_live_events/subagent_rollout.rs` | 531 | 356 | 175 | | +| `services::discord::placeholder_live_events::subagent_summary` | `src/services/discord/placeholder_live_events/subagent_summary.rs` | 69 | 69 | 0 | | +| `services::discord::placeholder_live_events::task_panel` | `src/services/discord/placeholder_live_events/task_panel.rs` | 410 | 410 | 0 | | +| `services::discord::placeholder_live_events::turn_anchor` | `src/services/discord/placeholder_live_events/turn_anchor.rs` | 210 | 115 | 95 | | +| `services::discord::placeholder_live_events::workflow_panel` | `src/services/discord/placeholder_live_events/workflow_panel.rs` | 270 | 270 | 0 | | +| `services::discord::placeholder_sweeper` | `src/services/discord/placeholder_sweeper.rs` | 1305 | 990 | 315 | | +| `services::discord::placeholder_sweeper::abandon_guard` | `src/services/discord/placeholder_sweeper/abandon_guard.rs` | 994 | 502 | 492 | | +| `services::discord::placeholder_sweeper::panel_shape` | `src/services/discord/placeholder_sweeper/panel_shape.rs` | 51 | 35 | 16 | | +| `services::discord::prompt_builder` | `src/services/discord/prompt_builder/mod.rs` | 678 | 678 | 0 | | +| `services::discord::prompt_builder::channel_recent_context` | `src/services/discord/prompt_builder/channel_recent_context.rs` | 496 | 220 | 276 | | +| `services::discord::prompt_builder::dispatch_contract` | `src/services/discord/prompt_builder/dispatch_contract.rs` | 576 | 576 | 0 | | +| `services::discord::prompt_builder::layer_rendering` | `src/services/discord/prompt_builder/layer_rendering.rs` | 510 | 299 | 211 | | +| `services::discord::prompt_builder::manifest` | `src/services/discord/prompt_builder/manifest.rs` | 317 | 317 | 0 | | +| `services::discord::prompt_builder::memory_guidance` | `src/services/discord/prompt_builder/memory_guidance.rs` | 361 | 125 | 236 | | +| `services::discord::prompt_builder::section_dedupe` | `src/services/discord/prompt_builder/section_dedupe.rs` | 159 | 105 | 54 | | +| `services::discord::queue_dispatch` | `src/services/discord/queue_dispatch.rs` | 372 | 372 | 0 | | +| `services::discord::queue_io` | `src/services/discord/queue_io.rs` | 2718 | 832 | 1886 | | +| `services::discord::queue_marker` | `src/services/discord/queue_marker.rs` | 763 | 223 | 540 | | +| `services::discord::queue_overflow_dlq` | `src/services/discord/queue_overflow_dlq.rs` | 210 | 127 | 83 | | +| `services::discord::queue_reactions` | `src/services/discord/queue_reactions.rs` | 37 | 25 | 12 | | +| `services::discord::queued_placeholders_store` | `src/services/discord/queued_placeholders_store.rs` | 251 | 251 | 0 | | +| `services::discord::reaction_cleanup` | `src/services/discord/reaction_cleanup.rs` | 49 | 24 | 25 | | +| `services::discord::reaction_lifecycle` | `src/services/discord/reaction_lifecycle.rs` | 363 | 321 | 42 | | +| `services::discord::readopted_mailbox_ledger` | `src/services/discord/readopted_mailbox_ledger.rs` | 238 | 238 | 0 | | +| `services::discord::recovery_engine` | `src/services/discord/recovery_engine.rs` | 531 | 475 | 56 | | +| `services::discord::recovery_engine::analytics_transcript` | `src/services/discord/recovery_engine/analytics_transcript.rs` | 111 | 111 | 0 | | +| `services::discord::recovery_engine::completion_delivery` | `src/services/discord/recovery_engine/completion_delivery.rs` | 854 | 326 | 528 | | +| `services::discord::recovery_engine::crash_resume_guard` | `src/services/discord/recovery_engine/crash_resume_guard.rs` | 368 | 176 | 192 | | +| `services::discord::recovery_engine::jsonl_extract` | `src/services/discord/recovery_engine/jsonl_extract.rs` | 137 | 137 | 0 | | +| `services::discord::recovery_engine::manual_rebind` | `src/services/discord/recovery_engine/manual_rebind/mod.rs` | 1352 | 926 | 426 | | +| `services::discord::recovery_engine::manual_rebind::adoption` | `src/services/discord/recovery_engine/manual_rebind/adoption.rs` | 304 | 95 | 209 | | +| `services::discord::recovery_engine::manual_rebind::codex_tui_replay` | `src/services/discord/recovery_engine/manual_rebind/codex_tui_replay.rs` | 1362 | 363 | 999 | | +| `services::discord::recovery_engine::manual_rebind::episode_handoff` | `src/services/discord/recovery_engine/manual_rebind/episode_handoff.rs` | 153 | 153 | 0 | | +| `services::discord::recovery_engine::manual_rebind::test_barriers` | `src/services/discord/recovery_engine/manual_rebind/test_barriers.rs` | 114 | 114 | 0 | | +| `services::discord::recovery_engine::manual_rebind::watcher_claim` | `src/services/discord/recovery_engine/manual_rebind/watcher_claim.rs` | 33 | 33 | 0 | | +| `services::discord::recovery_engine::manual_rebind_output_path` | `src/services/discord/recovery_engine/manual_rebind_output_path.rs` | 561 | 351 | 210 | | +| `services::discord::recovery_engine::manual_rebind_override` | `src/services/discord/recovery_engine/manual_rebind_override.rs` | 552 | 251 | 301 | | +| `services::discord::recovery_engine::output_path_detect` | `src/services/discord/recovery_engine/output_path_detect.rs` | 177 | 177 | 0 | | +| `services::discord::recovery_engine::phase_policy` | `src/services/discord/recovery_engine/phase_policy.rs` | 370 | 179 | 191 | | +| `services::discord::recovery_engine::rebind_runtime` | `src/services/discord/recovery_engine/rebind_runtime.rs` | 2163 | 978 | 1185 | | +| `services::discord::recovery_engine::rebind_runtime::codex_relay_generation` | `src/services/discord/recovery_engine/rebind_runtime/codex_relay_generation.rs` | 89 | 89 | 0 | | +| `services::discord::recovery_engine::restore_inflight` | `src/services/discord/recovery_engine/restore_inflight.rs` | 2755 | 2359 | 396 | giant-file | +| `services::discord::recovery_engine::restore_persist_outcome` | `src/services/discord/recovery_engine/restore_persist_outcome.rs` | 102 | 102 | 0 | | +| `services::discord::recovery_engine::routing_orphan` | `src/services/discord/recovery_engine/routing_orphan.rs` | 220 | 148 | 72 | | +| `services::discord::recovery_engine::runtime` | `src/services/discord/recovery_engine/runtime.rs` | 914 | 375 | 539 | | +| `services::discord::recovery_engine::state_extractors` | `src/services/discord/recovery_engine/state_extractors.rs` | 282 | 240 | 42 | | +| `services::discord::recovery_engine::status_panel` | `src/services/discord/recovery_engine/status_panel.rs` | 72 | 56 | 16 | | +| `services::discord::recovery_engine::status_panel_completion_producer` | `src/services/discord/recovery_engine/status_panel_completion_producer.rs` | 64 | 64 | 0 | | +| `services::discord::recovery_engine::terminal_text_idempotency` | `src/services/discord/recovery_engine/terminal_text_idempotency.rs` | 1516 | 709 | 807 | | +| `services::discord::recovery_engine::terminal_watcher` | `src/services/discord/recovery_engine/terminal_watcher.rs` | 306 | 168 | 138 | | +| `services::discord::recovery_engine::tmux_probe` | `src/services/discord/recovery_engine/tmux_probe.rs` | 39 | 39 | 0 | | +| `services::discord::recovery_engine::two_message_panel` | `src/services/discord/recovery_engine/two_message_panel.rs` | 684 | 353 | 331 | | +| `services::discord::recovery_engine::unix_journal` | `src/services/discord/recovery_engine/unix_journal.rs` | 115 | 115 | 0 | | +| `services::discord::recovery_known_ids` | `src/services/discord/recovery_known_ids.rs` | 199 | 97 | 102 | | +| `services::discord::recovery_paths` | `src/services/discord/recovery_paths/mod.rs` | 36 | 36 | 0 | | +| `services::discord::recovery_paths::controller_cutover` | `src/services/discord/recovery_paths/controller_cutover.rs` | 659 | 282 | 377 | | +| `services::discord::recovery_paths::restart` | `src/services/discord/recovery_paths/restart.rs` | 1386 | 901 | 485 | | +| `services::discord::recovery_paths::shared` | `src/services/discord/recovery_paths/shared.rs` | 569 | 253 | 316 | | +| `services::discord::relay_coord` | `src/services/discord/relay_coord.rs` | 89 | 89 | 0 | | +| `services::discord::relay_health` | `src/services/discord/relay_health.rs` | 1384 | 587 | 797 | | +| `services::discord::relay_health::frontier` | `src/services/discord/relay_health/frontier.rs` | 183 | 140 | 43 | | +| `services::discord::relay_owner_observability` | `src/services/discord/relay_owner_observability.rs` | 459 | 344 | 115 | | +| `services::discord::relay_recovery` | `src/services/discord/relay_recovery.rs` | 1591 | 948 | 643 | | +| `services::discord::relay_recovery::apply` | `src/services/discord/relay_recovery/apply.rs` | 483 | 483 | 0 | | +| `services::discord::relay_recovery::authority_observation` | `src/services/discord/relay_recovery/authority_observation.rs` | 1388 | 753 | 635 | | +| `services::discord::relay_recovery::cohort` | `src/services/discord/relay_recovery/cohort.rs` | 462 | 162 | 300 | | +| `services::discord::relay_recovery::decision` | `src/services/discord/relay_recovery/decision.rs` | 822 | 572 | 250 | | +| `services::discord::relay_recovery::destructive_warrant` | `src/services/discord/relay_recovery/destructive_warrant.rs` | 330 | 143 | 187 | | +| `services::discord::relay_recovery::idle_tmux` | `src/services/discord/relay_recovery/idle_tmux.rs` | 420 | 420 | 0 | | +| `services::discord::relay_recovery::tests::circuit_breaker_apply` | `src/services/discord/relay_recovery/tests/circuit_breaker_apply.rs` | 431 | 0 | 431 | | +| `services::discord::relay_recovery_auto_heal_apply` | `src/services/discord/relay_recovery_auto_heal_apply.rs` | 1006 | 308 | 698 | | +| `services::discord::relay_recovery_auto_heal_attempts` | `src/services/discord/relay_recovery_auto_heal_attempts.rs` | 462 | 245 | 217 | | +| `services::discord::relay_recovery_auto_heal_confirm` | `src/services/discord/relay_recovery_auto_heal_confirm.rs` | 312 | 167 | 145 | | +| `services::discord::relay_recovery_circuit_alert_producer` | `src/services/discord/relay_recovery_circuit_alert_producer.rs` | 296 | 170 | 126 | | +| `services::discord::relay_recovery_circuit_breaker` | `src/services/discord/relay_recovery_circuit_breaker.rs` | 1771 | 720 | 1051 | | +| `services::discord::relay_recovery_completion_footer` | `src/services/discord/relay_recovery_completion_footer.rs` | 9 | 9 | 0 | | +| `services::discord::relay_recovery_leaked_row_sweep` | `src/services/discord/relay_recovery_leaked_row_sweep.rs` | 109 | 70 | 39 | | +| `services::discord::relay_recovery_reattach_apply` | `src/services/discord/relay_recovery_reattach_apply.rs` | 66 | 66 | 0 | | +| `services::discord::replace_outcome_policy` | `src/services/discord/replace_outcome_policy.rs` | 691 | 371 | 320 | | +| `services::discord::response_sanitizer` | `src/services/discord/response_sanitizer.rs` | 228 | 211 | 17 | | +| `services::discord::restart_ctrl` | `src/services/discord/restart_ctrl.rs` | 102 | 102 | 0 | | +| `services::discord::restart_mode` | `src/services/discord/restart_mode.rs` | 34 | 34 | 0 | | +| `services::discord::restart_mode::protocol_v2` | `src/services/discord/restart_mode/protocol_v2/mod.rs` | 6 | 6 | 0 | | +| `services::discord::restart_mode::protocol_v2::disposition` | `src/services/discord/restart_mode/protocol_v2/disposition.rs` | 42 | 8 | 34 | | +| `services::discord::restart_mode::protocol_v2::fs` | `src/services/discord/restart_mode/protocol_v2/fs.rs` | 639 | 639 | 0 | | +| `services::discord::restart_mode::protocol_v2::fs::unix` | `src/services/discord/restart_mode/protocol_v2/fs/unix.rs` | 1415 | 915 | 500 | | +| `services::discord::restart_mode::protocol_v2::fs::unsupported` | `src/services/discord/restart_mode/protocol_v2/fs/unsupported.rs` | 172 | 56 | 116 | | +| `services::discord::restart_mode::protocol_v2::phase` | `src/services/discord/restart_mode/protocol_v2/phase.rs` | 106 | 106 | 0 | | +| `services::discord::restart_mode::protocol_v2::phase::codec` | `src/services/discord/restart_mode/protocol_v2/phase/codec.rs` | 535 | 338 | 197 | | +| `services::discord::restart_mode::protocol_v2::phase::reducer` | `src/services/discord/restart_mode/protocol_v2/phase/reducer.rs` | 456 | 151 | 305 | | +| `services::discord::restart_mode::protocol_v2::values` | `src/services/discord/restart_mode/protocol_v2/values.rs` | 219 | 98 | 121 | | +| `services::discord::restart_report` | `src/services/discord/restart_report.rs` | 622 | 554 | 68 | | +| `services::discord::role_map` | `src/services/discord/role_map.rs` | 652 | 652 | 0 | | +| `services::discord::role_map_enrichment` | `src/services/discord/role_map_enrichment.rs` | 114 | 114 | 0 | | +| `services::discord::router` | `src/services/discord/router/mod.rs` | 40 | 40 | 0 | | +| `services::discord::router::authorization` | `src/services/discord/router/authorization.rs` | 48 | 48 | 0 | | +| `services::discord::router::dispatch_trigger` | `src/services/discord/router/dispatch_trigger.rs` | 203 | 143 | 60 | | +| `services::discord::router::intake_dispatch` | `src/services/discord/router/intake_dispatch.rs` | 438 | 438 | 0 | | +| `services::discord::router::intake_dispatch::attachment` | `src/services/discord/router/intake_dispatch/attachment.rs` | 158 | 93 | 65 | | +| `services::discord::router::intake_dispatch::notice` | `src/services/discord/router/intake_dispatch/notice.rs` | 115 | 99 | 16 | | +| `services::discord::router::intake_dispatch::queued` | `src/services/discord/router/intake_dispatch/queued.rs` | 314 | 152 | 162 | | +| `services::discord::router::intake_dispatch::skill` | `src/services/discord/router/intake_dispatch/skill.rs` | 55 | 55 | 0 | | +| `services::discord::router::intake_gate` | `src/services/discord/router/intake_gate.rs` | 1800 | 1682 | 118 | giant-file | +| `services::discord::router::intake_gate::busy_duplicate_notice` | `src/services/discord/router/intake_gate/busy_duplicate_notice.rs` | 55 | 27 | 28 | | +| `services::discord::router::intake_gate::component_events` | `src/services/discord/router/intake_gate/component_events.rs` | 41 | 41 | 0 | | +| `services::discord::router::intake_gate::gate` | `src/services/discord/router/intake_gate/gate.rs` | 197 | 123 | 74 | | +| `services::discord::router::intake_gate::queue_effects` | `src/services/discord/router/intake_gate/queue_effects.rs` | 1345 | 870 | 475 | | +| `services::discord::router::intake_gate::stale_turn` | `src/services/discord/router/intake_gate/stale_turn.rs` | 750 | 354 | 396 | | +| `services::discord::router::intake_queue_transaction` | `src/services/discord/router/intake_queue_transaction.rs` | 1170 | 550 | 620 | | +| `services::discord::router::message_handler` | `src/services/discord/router/message_handler.rs` | 290 | 290 | 0 | | +| `services::discord::router::message_handler::attachments` | `src/services/discord/router/message_handler/attachments.rs` | 230 | 154 | 76 | | +| `services::discord::router::message_handler::busy_retry` | `src/services/discord/router/message_handler/busy_retry.rs` | 91 | 91 | 0 | | +| `services::discord::router::message_handler::control` | `src/services/discord/router/message_handler/control.rs` | 89 | 89 | 0 | | +| `services::discord::router::message_handler::goal_lifecycle` | `src/services/discord/router/message_handler/goal_lifecycle.rs` | 314 | 223 | 91 | | +| `services::discord::router::message_handler::headless_turn` | `src/services/discord/router/message_handler/headless_turn.rs` | 1777 | 1295 | 482 | giant-file | +| `services::discord::router::message_handler::headless_turn::routine_metadata` | `src/services/discord/router/message_handler/headless_turn/routine_metadata.rs` | 88 | 88 | 0 | | +| `services::discord::router::message_handler::intake_turn` | `src/services/discord/router/message_handler/intake_turn.rs` | 3061 | 2505 | 556 | giant-file | +| `services::discord::router::message_handler::intake_turn::adk_thread` | `src/services/discord/router/message_handler/intake_turn/adk_thread.rs` | 18 | 18 | 0 | | +| `services::discord::router::message_handler::intake_turn::claim_bootstrap` | `src/services/discord/router/message_handler/intake_turn/claim_bootstrap.rs` | 59 | 59 | 0 | | +| `services::discord::router::message_handler::intake_turn::dispatch_runtime` | `src/services/discord/router/message_handler/intake_turn/dispatch_runtime.rs` | 74 | 74 | 0 | | +| `services::discord::router::message_handler::intake_turn::dispatch_stamp` | `src/services/discord/router/message_handler/intake_turn/dispatch_stamp.rs` | 73 | 73 | 0 | | +| `services::discord::router::message_handler::intake_turn::inflight_create_log` | `src/services/discord/router/message_handler/intake_turn/inflight_create_log.rs` | 48 | 48 | 0 | | +| `services::discord::router::message_handler::intake_turn::intake_dispatch` | `src/services/discord/router/message_handler/intake_turn/intake_dispatch.rs` | 16 | 16 | 0 | | +| `services::discord::router::message_handler::intake_turn::placeholder_handoff` | `src/services/discord/router/message_handler/intake_turn/placeholder_handoff.rs` | 191 | 108 | 83 | | +| `services::discord::router::message_handler::intake_turn::race_loss` | `src/services/discord/router/message_handler/intake_turn/race_loss.rs` | 695 | 695 | 0 | | +| `services::discord::router::message_handler::intake_turn::race_loss::mailbox_reaction` | `src/services/discord/router/message_handler/intake_turn/race_loss/mailbox_reaction.rs` | 88 | 88 | 0 | | +| `services::discord::router::message_handler::intake_turn::race_loss::queued_intake_cause` | `src/services/discord/router/message_handler/intake_turn/race_loss/queued_intake_cause.rs` | 29 | 29 | 0 | | +| `services::discord::router::message_handler::intake_turn::runtime_transition` | `src/services/discord/router/message_handler/intake_turn/runtime_transition.rs` | 78 | 78 | 0 | | +| `services::discord::router::message_handler::intake_turn::stale_dispatch_guard` | `src/services/discord/router/message_handler/intake_turn/stale_dispatch_guard.rs` | 76 | 76 | 0 | | +| `services::discord::router::message_handler::intake_turn::turn_watchdog` | `src/services/discord/router/message_handler/intake_turn/turn_watchdog.rs` | 256 | 256 | 0 | | +| `services::discord::router::message_handler::intake_turn::voice_intake` | `src/services/discord/router/message_handler/intake_turn/voice_intake.rs` | 156 | 156 | 0 | | +| `services::discord::router::message_handler::intake_turn::worker_entry` | `src/services/discord/router/message_handler/intake_turn/worker_entry.rs` | 81 | 81 | 0 | | +| `services::discord::router::message_handler::latency_spans` | `src/services/discord/router/message_handler/latency_spans.rs` | 230 | 158 | 72 | | +| `services::discord::router::message_handler::provider_isolation` | `src/services/discord/router/message_handler/provider_isolation.rs` | 1203 | 811 | 392 | | +| `services::discord::router::message_handler::tui_followup` | `src/services/discord/router/message_handler/tui_followup.rs` | 1213 | 994 | 219 | | +| `services::discord::router::message_handler::turn_lifecycle` | `src/services/discord/router/message_handler/turn_lifecycle.rs` | 183 | 183 | 0 | | +| `services::discord::router::message_handler::typing_indicator` | `src/services/discord/router/message_handler/typing_indicator.rs` | 369 | 124 | 245 | | +| `services::discord::router::message_handler::voice_announcement_route` | `src/services/discord/router/message_handler/voice_announcement_route.rs` | 444 | 106 | 338 | | +| `services::discord::router::message_handler::voice_announcement_scope` | `src/services/discord/router/message_handler/voice_announcement_scope.rs` | 125 | 73 | 52 | | +| `services::discord::router::message_handler::watchdog` | `src/services/discord/router/message_handler/watchdog.rs` | 1301 | 988 | 313 | | +| `services::discord::router::queue_status_presentation` | `src/services/discord/router/queue_status_presentation.rs` | 19 | 7 | 12 | | +| `services::discord::router::response_format` | `src/services/discord/router/response_format.rs` | 468 | 246 | 222 | | +| `services::discord::router::thread_binding` | `src/services/discord/router/thread_binding.rs` | 130 | 130 | 0 | | +| `services::discord::router::turn_start` | `src/services/discord/router/turn_start.rs` | 628 | 628 | 0 | | +| `services::discord::runtime_bootstrap` | `src/services/discord/runtime_bootstrap.rs` | 1066 | 395 | 671 | | +| `services::discord::runtime_bootstrap::deferred_restart` | `src/services/discord/runtime_bootstrap/deferred_restart.rs` | 232 | 232 | 0 | | +| `services::discord::runtime_bootstrap::framework_setup` | `src/services/discord/runtime_bootstrap/framework_setup.rs` | 334 | 320 | 14 | | +| `services::discord::runtime_bootstrap::gateway_lease` | `src/services/discord/runtime_bootstrap/gateway_lease.rs` | 669 | 669 | 0 | | +| `services::discord::runtime_bootstrap::gateway_lease_recovery` | `src/services/discord/runtime_bootstrap/gateway_lease_recovery.rs` | 619 | 619 | 0 | | +| `services::discord::runtime_bootstrap::gateway_runtime` | `src/services/discord/runtime_bootstrap/gateway_runtime.rs` | 148 | 148 | 0 | | +| `services::discord::runtime_bootstrap::intake` | `src/services/discord/runtime_bootstrap/intake.rs` | 83 | 83 | 0 | | +| `services::discord::runtime_bootstrap::intake_delivery_capability` | `src/services/discord/runtime_bootstrap/intake_delivery_capability.rs` | 700 | 352 | 348 | | +| `services::discord::runtime_bootstrap::intake_delivery_capability::cache` | `src/services/discord/runtime_bootstrap/intake_delivery_capability/cache.rs` | 434 | 342 | 92 | | +| `services::discord::runtime_bootstrap::intake_delivery_reconciler` | `src/services/discord/runtime_bootstrap/intake_delivery_reconciler.rs` | 406 | 118 | 288 | | +| `services::discord::runtime_bootstrap::intake_delivery_sweep` | `src/services/discord/runtime_bootstrap/intake_delivery_sweep.rs` | 332 | 332 | 0 | | +| `services::discord::runtime_bootstrap::orphan_recovery` | `src/services/discord/runtime_bootstrap/orphan_recovery.rs` | 336 | 336 | 0 | | +| `services::discord::runtime_bootstrap::queued_placeholders` | `src/services/discord/runtime_bootstrap/queued_placeholders.rs` | 215 | 215 | 0 | | +| `services::discord::runtime_bootstrap::recovery_flush` | `src/services/discord/runtime_bootstrap/recovery_flush.rs` | 423 | 423 | 0 | | +| `services::discord::runtime_bootstrap::restored_state` | `src/services/discord/runtime_bootstrap/restored_state.rs` | 93 | 93 | 0 | | +| `services::discord::runtime_bootstrap::session_gc` | `src/services/discord/runtime_bootstrap/session_gc.rs` | 180 | 102 | 78 | | +| `services::discord::runtime_bootstrap::shared_data` | `src/services/discord/runtime_bootstrap/shared_data.rs` | 272 | 272 | 0 | | +| `services::discord::runtime_bootstrap::shutdown` | `src/services/discord/runtime_bootstrap/shutdown.rs` | 302 | 228 | 74 | | +| `services::discord::runtime_bootstrap::spawns` | `src/services/discord/runtime_bootstrap/spawns.rs` | 480 | 480 | 0 | | +| `services::discord::runtime_bootstrap::startup_doctor` | `src/services/discord/runtime_bootstrap/startup_doctor.rs` | 541 | 400 | 141 | | +| `services::discord::runtime_bootstrap::voice` | `src/services/discord/runtime_bootstrap/voice.rs` | 270 | 197 | 73 | | +| `services::discord::runtime_store` | `src/services/discord/runtime_store.rs` | 1609 | 953 | 656 | | +| `services::discord::semantic_boundaries` | `src/services/discord/semantic_boundaries.rs` | 286 | 286 | 0 | | +| `services::discord::session_banner` | `src/services/discord/session_banner.rs` | 495 | 152 | 343 | | +| `services::discord::session_canonical_identity` | `src/services/discord/session_canonical_identity.rs` | 103 | 34 | 69 | | +| `services::discord::session_identity` | `src/services/discord/session_identity.rs` | 214 | 141 | 73 | | +| `services::discord::session_idle_cleanup` | `src/services/discord/session_idle_cleanup.rs` | 156 | 156 | 0 | | +| `services::discord::session_relay_sink` | `src/services/discord/session_relay_sink.rs` | 5401 | 1498 | 3903 | giant-file | +| `services::discord::session_relay_sink::delivery_commit` | `src/services/discord/session_relay_sink/delivery_commit.rs` | 80 | 80 | 0 | | +| `services::discord::session_relay_sink::delivery_frontier` | `src/services/discord/session_relay_sink/delivery_frontier.rs` | 152 | 152 | 0 | | +| `services::discord::session_relay_sink::delivery_outcome_classify` | `src/services/discord/session_relay_sink/delivery_outcome_classify.rs` | 42 | 21 | 21 | | +| `services::discord::session_relay_sink::idle_jsonl` | `src/services/discord/session_relay_sink/idle_jsonl.rs` | 706 | 456 | 250 | | +| `services::discord::session_relay_sink::journal` | `src/services/discord/session_relay_sink/journal.rs` | 1112 | 722 | 390 | | +| `services::discord::session_relay_sink::journal::controller` | `src/services/discord/session_relay_sink/journal/controller.rs` | 363 | 237 | 126 | | +| `services::discord::session_relay_sink::journal::pg_store` | `src/services/discord/session_relay_sink/journal/pg_store.rs` | 166 | 143 | 23 | | +| `services::discord::session_relay_sink::journal::recovery` | `src/services/discord/session_relay_sink/journal/recovery.rs` | 477 | 328 | 149 | | +| `services::discord::session_relay_sink::journal::watcher` | `src/services/discord/session_relay_sink/journal/watcher.rs` | 463 | 243 | 220 | | +| `services::discord::session_relay_sink::orphan_reclaim` | `src/services/discord/session_relay_sink/orphan_reclaim.rs` | 406 | 128 | 278 | | +| `services::discord::session_relay_sink::relay_format` | `src/services/discord/session_relay_sink/relay_format.rs` | 75 | 75 | 0 | | +| `services::discord::session_relay_sink::short_controller` | `src/services/discord/session_relay_sink/short_controller.rs` | 191 | 191 | 0 | | +| `services::discord::session_relay_sink::task_notification_context` | `src/services/discord/session_relay_sink/task_notification_context.rs` | 953 | 650 | 303 | | +| `services::discord::session_relay_sink::terminal_handoff` | `src/services/discord/session_relay_sink/terminal_handoff.rs` | 117 | 117 | 0 | | +| `services::discord::session_relay_sink::turn_parser` | `src/services/discord/session_relay_sink/turn_parser.rs` | 222 | 222 | 0 | | +| `services::discord::session_runtime` | `src/services/discord/session_runtime.rs` | 1168 | 562 | 606 | | +| `services::discord::session_runtime::channel_routing` | `src/services/discord/session_runtime/channel_routing.rs` | 253 | 240 | 13 | | +| `services::discord::session_runtime::restore_cwd` | `src/services/discord/session_runtime/restore_cwd.rs` | 353 | 353 | 0 | | +| `services::discord::session_runtime::worktree` | `src/services/discord/session_runtime/worktree.rs` | 604 | 604 | 0 | | +| `services::discord::session_status_hook` | `src/services/discord/session_status_hook.rs` | 170 | 170 | 0 | | +| `services::discord::session_transition` | `src/services/discord/session_transition.rs` | 111 | 56 | 55 | | +| `services::discord::settings` | `src/services/discord/settings.rs` | 346 | 346 | 0 | | +| `services::discord::settings::content` | `src/services/discord/settings/content.rs` | 749 | 612 | 137 | | +| `services::discord::settings::memory` | `src/services/discord/settings/memory.rs` | 205 | 153 | 52 | | +| `services::discord::settings::read` | `src/services/discord/settings/read.rs` | 449 | 449 | 0 | | +| `services::discord::settings::validation` | `src/services/discord/settings/validation.rs` | 520 | 258 | 262 | | +| `services::discord::settings::write` | `src/services/discord/settings/write.rs` | 386 | 386 | 0 | | +| `services::discord::shared_memory` | `src/services/discord/shared_memory.rs` | 81 | 81 | 0 | | +| `services::discord::shared_state` | `src/services/discord/shared_state.rs` | 757 | 686 | 71 | | +| `services::discord::sidecar_interaction` | `src/services/discord/sidecar_interaction.rs` | 390 | 390 | 0 | | +| `services::discord::single_message_panel` | `src/services/discord/single_message_panel.rs` | 3260 | 958 | 2302 | | +| `services::discord::skills_scan` | `src/services/discord/skills_scan.rs` | 279 | 279 | 0 | | +| `services::discord::stall_recovery` | `src/services/discord/stall_recovery.rs` | 113 | 113 | 0 | | +| `services::discord::standby_relay` | `src/services/discord/standby_relay.rs` | 1979 | 1012 | 967 | giant-file | +| `services::discord::startup_reclaim` | `src/services/discord/startup_reclaim.rs` | 844 | 485 | 359 | | +| `services::discord::status_panel_orphan_store` | `src/services/discord/status_panel_orphan_store.rs` | 818 | 818 | 0 | | +| `services::discord::status_panel_singleton_store` | `src/services/discord/status_panel_singleton_store.rs` | 348 | 190 | 158 | | +| `services::discord::status_panel_transition_v2` | `src/services/discord/status_panel_transition_v2.rs` | 648 | 235 | 413 | | +| `services::discord::streaming_finalizer` | `src/services/discord/streaming_finalizer.rs` | 250 | 186 | 64 | | +| `services::discord::subagent_notification_card` | `src/services/discord/subagent_notification_card.rs` | 429 | 330 | 99 | | +| `services::discord::synthetic_headless_message_id` | `src/services/discord/synthetic_headless_message_id.rs` | 29 | 14 | 15 | | +| `services::discord::task_notification_delivery` | `src/services/discord/task_notification_delivery/mod.rs` | 998 | 998 | 0 | | +| `services::discord::task_notification_delivery::card_post` | `src/services/discord/task_notification_delivery/card_post.rs` | 109 | 109 | 0 | | +| `services::discord::task_notification_delivery::card_render` | `src/services/discord/task_notification_delivery/card_render.rs` | 36 | 36 | 0 | | +| `services::discord::task_notification_delivery::footer_only_marker` | `src/services/discord/task_notification_delivery/footer_only_marker.rs` | 43 | 43 | 0 | | +| `services::discord::task_notification_delivery::gateway` | `src/services/discord/task_notification_delivery/gateway.rs` | 278 | 264 | 14 | | +| `services::discord::task_notification_delivery::response_chunks` | `src/services/discord/task_notification_delivery/response_chunks.rs` | 635 | 598 | 37 | | +| `services::discord::task_notification_delivery::store` | `src/services/discord/task_notification_delivery/store.rs` | 961 | 961 | 0 | | +| `services::discord::task_notification_delivery::store::card_claim` | `src/services/discord/task_notification_delivery/store/card_claim.rs` | 471 | 471 | 0 | | +| `services::discord::task_notification_delivery::store::missing_card_replacement` | `src/services/discord/task_notification_delivery/store/missing_card_replacement.rs` | 189 | 189 | 0 | | +| `services::discord::task_notification_delivery::store::response_chunks` | `src/services/discord/task_notification_delivery/store/response_chunks.rs` | 569 | 569 | 0 | | +| `services::discord::task_notification_delivery::store::response_fence` | `src/services/discord/task_notification_delivery/store/response_fence.rs` | 999 | 999 | 0 | | +| `services::discord::task_notification_delivery::store::response_identity` | `src/services/discord/task_notification_delivery/store/response_identity.rs` | 132 | 98 | 34 | | +| `services::discord::task_notification_delivery::store::retention` | `src/services/discord/task_notification_delivery/store/retention.rs` | 73 | 73 | 0 | | +| `services::discord::task_notification_delivery::store::terminal_footer` | `src/services/discord/task_notification_delivery/store/terminal_footer.rs` | 65 | 65 | 0 | | +| `services::discord::task_notification_delivery::terminal_identity` | `src/services/discord/task_notification_delivery/terminal_identity.rs` | 161 | 161 | 0 | | +| `services::discord::task_supervisor` | `src/services/discord/task_supervisor.rs` | 183 | 83 | 100 | | +| `services::discord::terminal_coordinate` | `src/services/discord/terminal_coordinate.rs` | 338 | 207 | 131 | | +| `services::discord::terminal_ui_obligation` | `src/services/discord/terminal_ui_obligation.rs` | 654 | 543 | 111 | | +| `services::discord::tmux` | `src/services/discord/tmux.rs` | 2988 | 1708 | 1280 | giant-file | +| `services::discord::tmux_error_detect` | `src/services/discord/tmux_error_detect.rs` | 120 | 100 | 20 | | +| `services::discord::tmux_kill_policy` | `src/services/discord/tmux_kill_policy.rs` | 755 | 599 | 156 | | +| `services::discord::tmux_lifecycle` | `src/services/discord/tmux_lifecycle.rs` | 190 | 190 | 0 | | +| `services::discord::tmux_output_stream` | `src/services/discord/tmux_output_stream.rs` | 1388 | 692 | 696 | | +| `services::discord::tmux_overload_retry` | `src/services/discord/tmux_overload_retry.rs` | 351 | 201 | 150 | | +| `services::discord::tmux_placeholder_suppression` | `src/services/discord/tmux_placeholder_suppression/mod.rs` | 1379 | 348 | 1031 | | +| `services::discord::tmux_placeholder_suppression::evidence` | `src/services/discord/tmux_placeholder_suppression/evidence.rs` | 303 | 260 | 43 | | +| `services::discord::tmux_placeholder_suppression::ops` | `src/services/discord/tmux_placeholder_suppression/ops.rs` | 590 | 590 | 0 | | +| `services::discord::tmux_reaper` | `src/services/discord/tmux_reaper.rs` | 1531 | 925 | 606 | | +| `services::discord::tmux_reattach_offsets` | `src/services/discord/tmux_reattach_offsets.rs` | 82 | 82 | 0 | | +| `services::discord::tmux_restart_handoff` | `src/services/discord/tmux_restart_handoff.rs` | 603 | 480 | 123 | | +| `services::discord::tmux_session_files` | `src/services/discord/tmux_session_files.rs` | 1525 | 929 | 596 | | +| `services::discord::tmux_watcher` | `src/services/discord/tmux_watcher.rs` | 2544 | 2544 | 0 | giant-file | +| `services::discord::tmux_watcher::commit_decisions` | `src/services/discord/tmux_watcher/commit_decisions.rs` | 287 | 165 | 122 | | +| `services::discord::tmux_watcher::committed_placeholder_cleanup` | `src/services/discord/tmux_watcher/committed_placeholder_cleanup.rs` | 107 | 107 | 0 | | +| `services::discord::tmux_watcher::completion_gate` | `src/services/discord/tmux_watcher/completion_gate.rs` | 250 | 250 | 0 | | +| `services::discord::tmux_watcher::completion_producer` | `src/services/discord/tmux_watcher/completion_producer.rs` | 73 | 73 | 0 | | +| `services::discord::tmux_watcher::controller_heartbeat` | `src/services/discord/tmux_watcher/controller_heartbeat.rs` | 34 | 34 | 0 | | +| `services::discord::tmux_watcher::discrete_trigger_marker` | `src/services/discord/tmux_watcher/discrete_trigger_marker.rs` | 216 | 154 | 62 | | +| `services::discord::tmux_watcher::entry` | `src/services/discord/tmux_watcher/entry.rs` | 34 | 34 | 0 | | +| `services::discord::tmux_watcher::jsonl_rotation` | `src/services/discord/tmux_watcher/jsonl_rotation.rs` | 445 | 249 | 196 | | +| `services::discord::tmux_watcher::jsonl_rotation::backstop` | `src/services/discord/tmux_watcher/jsonl_rotation/backstop.rs` | 364 | 364 | 0 | | +| `services::discord::tmux_watcher::jsonl_rotation::idle_gate` | `src/services/discord/tmux_watcher/jsonl_rotation/idle_gate.rs` | 569 | 215 | 354 | | +| `services::discord::tmux_watcher::liveness` | `src/services/discord/tmux_watcher/liveness.rs` | 700 | 522 | 178 | | +| `services::discord::tmux_watcher::loop_poll_prologue` | `src/services/discord/tmux_watcher/loop_poll_prologue.rs` | 681 | 681 | 0 | | +| `services::discord::tmux_watcher::no_result_exits` | `src/services/discord/tmux_watcher/no_result_exits.rs` | 824 | 824 | 0 | | +| `services::discord::tmux_watcher::orphan_status_panel_cleanup` | `src/services/discord/tmux_watcher/orphan_status_panel_cleanup.rs` | 228 | 228 | 0 | | +| `services::discord::tmux_watcher::panel_decisions` | `src/services/discord/tmux_watcher/panel_decisions.rs` | 599 | 574 | 25 | | +| `services::discord::tmux_watcher::placeholder_reclaim` | `src/services/discord/tmux_watcher/placeholder_reclaim.rs` | 349 | 135 | 214 | | +| `services::discord::tmux_watcher::post_stream_exit` | `src/services/discord/tmux_watcher/post_stream_exit.rs` | 402 | 292 | 110 | | +| `services::discord::tmux_watcher::pre_emit_guard` | `src/services/discord/tmux_watcher/pre_emit_guard.rs` | 397 | 397 | 0 | | +| `services::discord::tmux_watcher::prompt_observe` | `src/services/discord/tmux_watcher/prompt_observe.rs` | 109 | 109 | 0 | | +| `services::discord::tmux_watcher::provider_output_guard` | `src/services/discord/tmux_watcher/provider_output_guard.rs` | 200 | 110 | 90 | | +| `services::discord::tmux_watcher::provider_session_persistence` | `src/services/discord/tmux_watcher/provider_session_persistence.rs` | 146 | 100 | 46 | | +| `services::discord::tmux_watcher::session_bound_ack` | `src/services/discord/tmux_watcher/session_bound_ack.rs` | 572 | 572 | 0 | | +| `services::discord::tmux_watcher::single_message_footer` | `src/services/discord/tmux_watcher/single_message_footer.rs` | 533 | 419 | 114 | | +| `services::discord::tmux_watcher::stall_exit` | `src/services/discord/tmux_watcher/stall_exit.rs` | 295 | 110 | 185 | | +| `services::discord::tmux_watcher::streaming_session_banner` | `src/services/discord/tmux_watcher/streaming_session_banner.rs` | 198 | 94 | 104 | | +| `services::discord::tmux_watcher::streaming_status_tick` | `src/services/discord/tmux_watcher/streaming_status_tick.rs` | 973 | 973 | 0 | | +| `services::discord::tmux_watcher::streaming_status_tick::types` | `src/services/discord/tmux_watcher/streaming_status_tick/types.rs` | 77 | 77 | 0 | | +| `services::discord::tmux_watcher::supervisor_relay` | `src/services/discord/tmux_watcher/supervisor_relay.rs` | 669 | 669 | 0 | | +| `services::discord::tmux_watcher::task_response_authority` | `src/services/discord/tmux_watcher/task_response_authority.rs` | 484 | 484 | 0 | | +| `services::discord::tmux_watcher::terminal_abort_exits` | `src/services/discord/tmux_watcher/terminal_abort_exits.rs` | 177 | 177 | 0 | | +| `services::discord::tmux_watcher::terminal_commit_epilogue` | `src/services/discord/tmux_watcher/terminal_commit_epilogue.rs` | 527 | 527 | 0 | | +| `services::discord::tmux_watcher::terminal_delivery_types` | `src/services/discord/tmux_watcher/terminal_delivery_types.rs` | 44 | 44 | 0 | | +| `services::discord::tmux_watcher::terminal_direct_fallback` | `src/services/discord/tmux_watcher/terminal_direct_fallback.rs` | 850 | 846 | 4 | | +| `services::discord::tmux_watcher::terminal_long_chunks` | `src/services/discord/tmux_watcher/terminal_long_chunks.rs` | 625 | 625 | 0 | | +| `services::discord::tmux_watcher::terminal_preflight` | `src/services/discord/tmux_watcher/terminal_preflight.rs` | 701 | 701 | 0 | | +| `services::discord::tmux_watcher::terminal_readiness` | `src/services/discord/tmux_watcher/terminal_readiness.rs` | 684 | 638 | 46 | | +| `services::discord::tmux_watcher::terminal_relay_plan` | `src/services/discord/tmux_watcher/terminal_relay_plan.rs` | 662 | 662 | 0 | | +| `services::discord::tmux_watcher::terminal_send` | `src/services/discord/tmux_watcher/terminal_send.rs` | 735 | 669 | 66 | | +| `services::discord::tmux_watcher::terminal_token_update` | `src/services/discord/tmux_watcher/terminal_token_update.rs` | 155 | 155 | 0 | | +| `services::discord::tmux_watcher::turn_identity` | `src/services/discord/tmux_watcher/turn_identity.rs` | 597 | 597 | 0 | | +| `services::discord::tmux_watcher::turn_identity::soft_terminal_authority` | `src/services/discord/tmux_watcher/turn_identity/soft_terminal_authority.rs` | 188 | 188 | 0 | | +| `services::discord::tmux_watcher::turn_stream_collector` | `src/services/discord/tmux_watcher/turn_stream_collector.rs` | 1148 | 1148 | 0 | giant-file | +| `services::discord::tmux_watcher::two_message_panel` | `src/services/discord/tmux_watcher/two_message_panel.rs` | 472 | 472 | 0 | | +| `services::discord::tmux_watcher::utf8_chunk_decoder` | `src/services/discord/tmux_watcher/utf8_chunk_decoder.rs` | 163 | 140 | 23 | | +| `services::discord::tmux_watcher_registry` | `src/services/discord/tmux_watcher_registry.rs` | 809 | 809 | 0 | | +| `services::discord::tmux_watcher_registry::fences` | `src/services/discord/tmux_watcher_registry/fences.rs` | 489 | 489 | 0 | | +| `services::discord::tui_direct_abort_marker` | `src/services/discord/tui_direct_abort_marker/mod.rs` | 3074 | 789 | 2285 | | +| `services::discord::tui_direct_abort_marker::deferred_claim` | `src/services/discord/tui_direct_abort_marker/deferred_claim.rs` | 680 | 273 | 407 | | +| `services::discord::tui_direct_abort_marker::drain` | `src/services/discord/tui_direct_abort_marker/drain.rs` | 265 | 265 | 0 | | +| `services::discord::tui_direct_abort_marker::store` | `src/services/discord/tui_direct_abort_marker/store.rs` | 453 | 453 | 0 | | +| `services::discord::tui_direct_abort_marker::sweep` | `src/services/discord/tui_direct_abort_marker/sweep.rs` | 177 | 177 | 0 | | +| `services::discord::tui_direct_abort_marker::tombstone` | `src/services/discord/tui_direct_abort_marker/tombstone.rs` | 70 | 70 | 0 | | +| `services::discord::tui_direct_pending_start` | `src/services/discord/tui_direct_pending_start.rs` | 4967 | 1763 | 3204 | giant-file | +| `services::discord::tui_direct_pending_start::watcher_cancel` | `src/services/discord/tui_direct_pending_start/watcher_cancel.rs` | 42 | 42 | 0 | | +| `services::discord::tui_prompt_relay` | `src/services/discord/tui_prompt_relay.rs` | 899 | 899 | 0 | | +| `services::discord::tui_prompt_relay::anchor_completion` | `src/services/discord/tui_prompt_relay/anchor_completion.rs` | 454 | 218 | 236 | | +| `services::discord::tui_prompt_relay::bridge_completion` | `src/services/discord/tui_prompt_relay/bridge_completion.rs` | 152 | 82 | 70 | | +| `services::discord::tui_prompt_relay::bridge_gateway` | `src/services/discord/tui_prompt_relay/bridge_gateway.rs` | 211 | 211 | 0 | | +| `services::discord::tui_prompt_relay::claude_idle_bridge` | `src/services/discord/tui_prompt_relay/claude_idle_bridge.rs` | 680 | 680 | 0 | | +| `services::discord::tui_prompt_relay::claude_idle_runtime` | `src/services/discord/tui_prompt_relay/claude_idle_runtime.rs` | 1159 | 978 | 181 | | +| `services::discord::tui_prompt_relay::claude_idle_tail` | `src/services/discord/tui_prompt_relay/claude_idle_tail.rs` | 480 | 480 | 0 | | +| `services::discord::tui_prompt_relay::codex_idle_rollout` | `src/services/discord/tui_prompt_relay/codex_idle_rollout.rs` | 603 | 603 | 0 | | +| `services::discord::tui_prompt_relay::idle_offset_resolution` | `src/services/discord/tui_prompt_relay/idle_offset_resolution.rs` | 100 | 100 | 0 | | +| `services::discord::tui_prompt_relay::idle_transcript_scan` | `src/services/discord/tui_prompt_relay/idle_transcript_scan.rs` | 569 | 421 | 148 | | +| `services::discord::tui_prompt_relay::injected_prompt_policy` | `src/services/discord/tui_prompt_relay/injected_prompt_policy.rs` | 622 | 489 | 133 | | +| `services::discord::tui_prompt_relay::launch_script` | `src/services/discord/tui_prompt_relay/launch_script.rs` | 129 | 107 | 22 | | +| `services::discord::tui_prompt_relay::local_model_queue_wake_e2e` | `src/services/discord/tui_prompt_relay/local_model_queue_wake_e2e.rs` | 855 | 0 | 855 | | +| `services::discord::tui_prompt_relay::observed_prompt_decision` | `src/services/discord/tui_prompt_relay/observed_prompt_decision.rs` | 61 | 61 | 0 | | +| `services::discord::tui_prompt_relay::rehydration` | `src/services/discord/tui_prompt_relay/rehydration.rs` | 1063 | 862 | 201 | | +| `services::discord::tui_prompt_relay::relay_ownership` | `src/services/discord/tui_prompt_relay/relay_ownership.rs` | 532 | 532 | 0 | | +| `services::discord::tui_prompt_relay::session_rotation_settle` | `src/services/discord/tui_prompt_relay/session_rotation_settle.rs` | 698 | 405 | 293 | | +| `services::discord::tui_prompt_relay::synthetic_orphan_reclaim` | `src/services/discord/tui_prompt_relay/synthetic_orphan_reclaim.rs` | 307 | 127 | 180 | | +| `services::discord::tui_prompt_relay::synthetic_start` | `src/services/discord/tui_prompt_relay/synthetic_start.rs` | 2381 | 1120 | 1261 | giant-file | +| `services::discord::tui_prompt_relay::synthetic_start::stale_reclaim` | `src/services/discord/tui_prompt_relay/synthetic_start/stale_reclaim.rs` | 434 | 434 | 0 | | +| `services::discord::tui_prompt_relay::synthetic_start_wiring` | `src/services/discord/tui_prompt_relay/synthetic_start_wiring.rs` | 412 | 412 | 0 | | +| `services::discord::tui_prompt_relay::task_notification_prompt` | `src/services/discord/tui_prompt_relay/task_notification_prompt.rs` | 261 | 261 | 0 | | +| `services::discord::tui_task_card` | `src/services/discord/tui_task_card.rs` | 1446 | 778 | 668 | | +| `services::discord::turn_bridge` | `src/services/discord/turn_bridge/mod.rs` | 968 | 968 | 0 | | +| `services::discord::turn_bridge::activity_heartbeat` | `src/services/discord/turn_bridge/activity_heartbeat.rs` | 77 | 77 | 0 | | +| `services::discord::turn_bridge::bridge_entry_persist` | `src/services/discord/turn_bridge/bridge_entry_persist.rs` | 823 | 310 | 513 | | +| `services::discord::turn_bridge::bridge_latency_spans` | `src/services/discord/turn_bridge/bridge_latency_spans.rs` | 236 | 142 | 94 | | +| `services::discord::turn_bridge::cancel_finalize_policy` | `src/services/discord/turn_bridge/cancel_finalize_policy.rs` | 599 | 149 | 450 | | +| `services::discord::turn_bridge::chunk_compose` | `src/services/discord/turn_bridge/chunk_compose.rs` | 68 | 68 | 0 | | +| `services::discord::turn_bridge::completion_guard` | `src/services/discord/turn_bridge/completion_guard.rs` | 924 | 866 | 58 | | +| `services::discord::turn_bridge::completion_guard::completion_context` | `src/services/discord/turn_bridge/completion_guard/completion_context.rs` | 449 | 449 | 0 | | +| `services::discord::turn_bridge::completion_guard::completion_postgres` | `src/services/discord/turn_bridge/completion_guard/completion_postgres.rs` | 1411 | 713 | 698 | | +| `services::discord::turn_bridge::completion_postlude` | `src/services/discord/turn_bridge/completion_postlude.rs` | 998 | 998 | 0 | | +| `services::discord::turn_bridge::completion_postlude::channel_episode_scope` | `src/services/discord/turn_bridge/completion_postlude/channel_episode_scope.rs` | 421 | 189 | 232 | | +| `services::discord::turn_bridge::completion_postlude::channel_writeback` | `src/services/discord/turn_bridge/completion_postlude/channel_writeback.rs` | 324 | 164 | 160 | | +| `services::discord::turn_bridge::completion_postlude::contracts` | `src/services/discord/turn_bridge/completion_postlude/contracts.rs` | 75 | 75 | 0 | | +| `services::discord::turn_bridge::context_window` | `src/services/discord/turn_bridge/context_window.rs` | 169 | 100 | 69 | | +| `services::discord::turn_bridge::current_message_anchor` | `src/services/discord/turn_bridge/current_message_anchor.rs` | 424 | 160 | 264 | | +| `services::discord::turn_bridge::early_tui_completion` | `src/services/discord/turn_bridge/early_tui_completion.rs` | 62 | 62 | 0 | | +| `services::discord::turn_bridge::finalize_epilogue` | `src/services/discord/turn_bridge/finalize_epilogue.rs` | 727 | 210 | 517 | | +| `services::discord::turn_bridge::followup_requeue` | `src/services/discord/turn_bridge/followup_requeue.rs` | 732 | 260 | 472 | | +| `services::discord::turn_bridge::guards` | `src/services/discord/turn_bridge/guards.rs` | 259 | 225 | 34 | | +| `services::discord::turn_bridge::headless_delivery` | `src/services/discord/turn_bridge/headless_delivery.rs` | 650 | 495 | 155 | | +| `services::discord::turn_bridge::headless_delivery::durable_outbox` | `src/services/discord/turn_bridge/headless_delivery/durable_outbox.rs` | 284 | 197 | 87 | | +| `services::discord::turn_bridge::headless_delivery::intake_outbox_argument` | `src/services/discord/turn_bridge/headless_delivery/intake_outbox_argument.rs` | 110 | 84 | 26 | | +| `services::discord::turn_bridge::headless_delivery::outcome` | `src/services/discord/turn_bridge/headless_delivery/outcome.rs` | 176 | 64 | 112 | | +| `services::discord::turn_bridge::intake_settlement` | `src/services/discord/turn_bridge/intake_settlement.rs` | 223 | 223 | 0 | | +| `services::discord::turn_bridge::memory_lifecycle` | `src/services/discord/turn_bridge/memory_lifecycle.rs` | 667 | 357 | 310 | | +| `services::discord::turn_bridge::output_lifecycle` | `src/services/discord/turn_bridge/output_lifecycle.rs` | 75 | 28 | 47 | | +| `services::discord::turn_bridge::panel_lifecycle` | `src/services/discord/turn_bridge/panel_lifecycle.rs` | 236 | 236 | 0 | | +| `services::discord::turn_bridge::post_loop_finalize` | `src/services/discord/turn_bridge/post_loop_finalize.rs` | 706 | 706 | 0 | | +| `services::discord::turn_bridge::recall_feedback` | `src/services/discord/turn_bridge/recall_feedback.rs` | 482 | 372 | 110 | | +| `services::discord::turn_bridge::recovery_text` | `src/services/discord/turn_bridge/recovery_text.rs` | 968 | 669 | 299 | | +| `services::discord::turn_bridge::response_delivery` | `src/services/discord/turn_bridge/response_delivery.rs` | 254 | 93 | 161 | | +| `services::discord::turn_bridge::retry_state` | `src/services/discord/turn_bridge/retry_state.rs` | 919 | 425 | 494 | | +| `services::discord::turn_bridge::runtime_handoff_loop` | `src/services/discord/turn_bridge/runtime_handoff_loop.rs` | 886 | 886 | 0 | | +| `services::discord::turn_bridge::runtime_handoff_loop::claude_e` | `src/services/discord/turn_bridge/runtime_handoff_loop/claude_e.rs` | 184 | 42 | 142 | | +| `services::discord::turn_bridge::runtime_handoff_loop::guarded_save` | `src/services/discord/turn_bridge/runtime_handoff_loop/guarded_save.rs` | 349 | 167 | 182 | | +| `services::discord::turn_bridge::runtime_handoff_loop::watcher_handoff` | `src/services/discord/turn_bridge/runtime_handoff_loop/watcher_handoff.rs` | 475 | 475 | 0 | | +| `services::discord::turn_bridge::single_message_footer` | `src/services/discord/turn_bridge/single_message_footer.rs` | 968 | 537 | 431 | | +| `services::discord::turn_bridge::skill_usage` | `src/services/discord/turn_bridge/skill_usage.rs` | 80 | 80 | 0 | | +| `services::discord::turn_bridge::stale_resume` | `src/services/discord/turn_bridge/stale_resume.rs` | 309 | 148 | 161 | | +| `services::discord::turn_bridge::status_panel` | `src/services/discord/turn_bridge/status_panel.rs` | 669 | 669 | 0 | | +| `services::discord::turn_bridge::status_panel::fallback` | `src/services/discord/turn_bridge/status_panel/fallback.rs` | 83 | 83 | 0 | | +| `services::discord::turn_bridge::status_panel::purge` | `src/services/discord/turn_bridge/status_panel/purge.rs` | 35 | 35 | 0 | | +| `services::discord::turn_bridge::status_panel::singleton` | `src/services/discord/turn_bridge/status_panel/singleton.rs` | 33 | 33 | 0 | | +| `services::discord::turn_bridge::stream_loop` | `src/services/discord/turn_bridge/stream_loop.rs` | 979 | 979 | 0 | | +| `services::discord::turn_bridge::stream_loop::content_arms` | `src/services/discord/turn_bridge/stream_loop/content_arms.rs` | 634 | 582 | 52 | | +| `services::discord::turn_bridge::stream_loop::content_arms::provider_error_presentation` | `src/services/discord/turn_bridge/stream_loop/content_arms/provider_error_presentation.rs` | 95 | 42 | 53 | | +| `services::discord::turn_bridge::stream_loop::content_arms::tui_error_classification` | `src/services/discord/turn_bridge/stream_loop/content_arms/tui_error_classification.rs` | 199 | 24 | 175 | | +| `services::discord::turn_bridge::stream_loop::content_arms::types` | `src/services/discord/turn_bridge/stream_loop/content_arms/types.rs` | 106 | 106 | 0 | | +| `services::discord::turn_bridge::stream_loop::exit_reconcile` | `src/services/discord/turn_bridge/stream_loop/exit_reconcile.rs` | 141 | 141 | 0 | | +| `services::discord::turn_bridge::stream_loop::expected_identity` | `src/services/discord/turn_bridge/stream_loop/expected_identity.rs` | 36 | 36 | 0 | | +| `services::discord::turn_bridge::stream_loop::message_conversion` | `src/services/discord/turn_bridge/stream_loop/message_conversion.rs` | 49 | 49 | 0 | | +| `services::discord::turn_bridge::stream_loop::tool_arms` | `src/services/discord/turn_bridge/stream_loop/tool_arms.rs` | 630 | 630 | 0 | | +| `services::discord::turn_bridge::stream_loop::tool_arms::authority` | `src/services/discord/turn_bridge/stream_loop/tool_arms/authority.rs` | 288 | 288 | 0 | | +| `services::discord::turn_bridge::stream_loop::tool_arms::task_notification` | `src/services/discord/turn_bridge/stream_loop/tool_arms/task_notification.rs` | 99 | 99 | 0 | | +| `services::discord::turn_bridge::stream_loop::tool_arms::types` | `src/services/discord/turn_bridge/stream_loop/tool_arms/types.rs` | 96 | 96 | 0 | | +| `services::discord::turn_bridge::stream_loop::types` | `src/services/discord/turn_bridge/stream_loop/types.rs` | 378 | 378 | 0 | | +| `services::discord::turn_bridge::stream_receiver` | `src/services/discord/turn_bridge/stream_receiver.rs` | 109 | 64 | 45 | | +| `services::discord::turn_bridge::stream_tick` | `src/services/discord/turn_bridge/stream_tick.rs` | 1427 | 1116 | 311 | giant-file | +| `services::discord::turn_bridge::stream_tick::guarded_persist` | `src/services/discord/turn_bridge/stream_tick/guarded_persist.rs` | 428 | 428 | 0 | | +| `services::discord::turn_bridge::streaming_edit_text` | `src/services/discord/turn_bridge/streaming_edit_text.rs` | 733 | 317 | 416 | | +| `services::discord::turn_bridge::task_notification_lifecycle` | `src/services/discord/turn_bridge/task_notification_lifecycle.rs` | 221 | 104 | 117 | | +| `services::discord::turn_bridge::terminal_controller_cutover` | `src/services/discord/turn_bridge/terminal_controller_cutover.rs` | 2214 | 998 | 1216 | | +| `services::discord::turn_bridge::terminal_controller_cutover::unix_journal` | `src/services/discord/turn_bridge/terminal_controller_cutover/unix_journal.rs` | 125 | 125 | 0 | | +| `services::discord::turn_bridge::terminal_delivery` | `src/services/discord/turn_bridge/terminal_delivery.rs` | 2440 | 929 | 1511 | | +| `services::discord::turn_bridge::terminal_outcome_delivery` | `src/services/discord/turn_bridge/terminal_outcome_delivery.rs` | 872 | 872 | 0 | | +| `services::discord::turn_bridge::terminal_outcome_delivery::busy_followup_retry` | `src/services/discord/turn_bridge/terminal_outcome_delivery/busy_followup_retry.rs` | 147 | 122 | 25 | | +| `services::discord::turn_bridge::terminal_outcome_delivery::cancel_prompt_replace` | `src/services/discord/turn_bridge/terminal_outcome_delivery/cancel_prompt_replace.rs` | 447 | 447 | 0 | | +| `services::discord::turn_bridge::terminal_outcome_delivery::contracts` | `src/services/discord/turn_bridge/terminal_outcome_delivery/contracts.rs` | 227 | 188 | 39 | | +| `services::discord::turn_bridge::terminal_outcome_delivery::delivery_epilogue` | `src/services/discord/turn_bridge/terminal_outcome_delivery/delivery_epilogue.rs` | 431 | 431 | 0 | | +| `services::discord::turn_bridge::terminal_outcome_delivery::empty_response_recovery` | `src/services/discord/turn_bridge/terminal_outcome_delivery/empty_response_recovery.rs` | 9 | 9 | 0 | | +| `services::discord::turn_bridge::terminal_outcome_delivery::empty_response_recovery::guidance` | `src/services/discord/turn_bridge/terminal_outcome_delivery/empty_response_recovery/guidance.rs` | 34 | 8 | 26 | | +| `services::discord::turn_bridge::terminal_outcome_delivery::empty_response_recovery::handler` | `src/services/discord/turn_bridge/terminal_outcome_delivery/empty_response_recovery/handler.rs` | 499 | 484 | 15 | | +| `services::discord::turn_bridge::terminal_outcome_delivery::prompt_too_long_guidance` | `src/services/discord/turn_bridge/terminal_outcome_delivery/prompt_too_long_guidance.rs` | 190 | 9 | 181 | | +| `services::discord::turn_bridge::terminal_outcome_delivery::queue_retry_silence` | `src/services/discord/turn_bridge/terminal_outcome_delivery/queue_retry_silence.rs` | 42 | 27 | 15 | | +| `services::discord::turn_bridge::terminal_outcome_delivery::recovery_retry` | `src/services/discord/turn_bridge/terminal_outcome_delivery/recovery_retry.rs` | 103 | 103 | 0 | | +| `services::discord::turn_bridge::thinking` | `src/services/discord/turn_bridge/thinking.rs` | 87 | 21 | 66 | | +| `services::discord::turn_bridge::tmux_runtime` | `src/services/discord/turn_bridge/tmux_runtime.rs` | 1085 | 801 | 284 | | +| `services::discord::turn_bridge::tmux_runtime::claude_stop_delivery` | `src/services/discord/turn_bridge/tmux_runtime/claude_stop_delivery.rs` | 1162 | 598 | 564 | | +| `services::discord::turn_bridge::tmux_runtime::interrupt_policy` | `src/services/discord/turn_bridge/tmux_runtime/interrupt_policy.rs` | 380 | 231 | 149 | | +| `services::discord::turn_bridge::tmux_runtime::pid_exit` | `src/services/discord/turn_bridge/tmux_runtime/pid_exit.rs` | 282 | 176 | 106 | | +| `services::discord::turn_bridge::tmux_runtime::process_backend_cancel` | `src/services/discord/turn_bridge/tmux_runtime/process_backend_cancel.rs` | 156 | 156 | 0 | | +| `services::discord::turn_bridge::tmux_runtime::process_table` | `src/services/discord/turn_bridge/tmux_runtime/process_table.rs` | 373 | 373 | 0 | | +| `services::discord::turn_bridge::turn_analytics` | `src/services/discord/turn_bridge/turn_analytics.rs` | 423 | 352 | 71 | | +| `services::discord::turn_bridge::two_message_panel` | `src/services/discord/turn_bridge/two_message_panel.rs` | 1069 | 428 | 641 | | +| `services::discord::turn_bridge::voice_completion` | `src/services/discord/turn_bridge/voice_completion.rs` | 385 | 385 | 0 | | +| `services::discord::turn_bridge::watcher_handoff` | `src/services/discord/turn_bridge/watcher_handoff.rs` | 254 | 153 | 101 | | +| `services::discord::turn_bridge::watcher_orphan_cleanup` | `src/services/discord/turn_bridge/watcher_orphan_cleanup.rs` | 478 | 233 | 245 | | +| `services::discord::turn_completion_events` | `src/services/discord/turn_completion_events.rs` | 146 | 146 | 0 | | +| `services::discord::turn_end_wip_warning` | `src/services/discord/turn_end_wip_warning.rs` | 528 | 259 | 269 | | +| `services::discord::turn_finalizer` | `src/services/discord/turn_finalizer.rs` | 4850 | 860 | 3990 | | +| `services::discord::turn_finalizer::actor_state` | `src/services/discord/turn_finalizer/actor_state.rs` | 99 | 99 | 0 | | +| `services::discord::turn_finalizer::cleanup` | `src/services/discord/turn_finalizer/cleanup.rs` | 2032 | 719 | 1313 | | +| `services::discord::turn_finalizer::completion_admission` | `src/services/discord/turn_finalizer/completion_admission.rs` | 189 | 93 | 96 | | +| `services::discord::turn_finalizer::completion_admission_actor` | `src/services/discord/turn_finalizer/completion_admission_actor.rs` | 483 | 149 | 334 | | +| `services::discord::turn_finalizer::completion_signal` | `src/services/discord/turn_finalizer/completion_signal.rs` | 310 | 54 | 256 | | +| `services::discord::turn_finalizer::delivery_lease` | `src/services/discord/turn_finalizer/delivery_lease.rs` | 514 | 88 | 426 | | +| `services::discord::turn_finalizer::finalize` | `src/services/discord/turn_finalizer/finalize.rs` | 629 | 299 | 330 | | +| `services::discord::turn_finalizer::finalize_context` | `src/services/discord/turn_finalizer/finalize_context.rs` | 179 | 148 | 31 | | +| `services::discord::turn_finalizer::guarded_finish_residue` | `src/services/discord/turn_finalizer/guarded_finish_residue.rs` | 203 | 203 | 0 | | +| `services::discord::turn_finalizer::reconcile` | `src/services/discord/turn_finalizer/reconcile.rs` | 358 | 358 | 0 | | +| `services::discord::turn_finalizer::terminal_handler` | `src/services/discord/turn_finalizer/terminal_handler.rs` | 178 | 178 | 0 | | +| `services::discord::turn_finalizer::watcher_backstop` | `src/services/discord/turn_finalizer/watcher_backstop.rs` | 423 | 231 | 192 | | +| `services::discord::turn_view_reconciler` | `src/services/discord/turn_view_reconciler.rs` | 939 | 939 | 0 | | +| `services::discord::turn_view_reconciler::api` | `src/services/discord/turn_view_reconciler/api.rs` | 526 | 526 | 0 | | +| `services::discord::turn_view_reconciler::apply` | `src/services/discord/turn_view_reconciler/apply.rs` | 235 | 235 | 0 | | +| `services::discord::turn_view_reconciler::orphan_sweep` | `src/services/discord/turn_view_reconciler/orphan_sweep.rs` | 612 | 322 | 290 | | +| `services::discord::turn_view_reconciler::queue_repair` | `src/services/discord/turn_view_reconciler/queue_repair.rs` | 31 | 31 | 0 | | +| `services::discord::turn_view_reconciler::reaction_set` | `src/services/discord/turn_view_reconciler/reaction_set.rs` | 23 | 23 | 0 | | +| `services::discord::turn_view_reconciler::resolution` | `src/services/discord/turn_view_reconciler/resolution.rs` | 297 | 297 | 0 | | +| `services::discord::turn_view_reconciler::store` | `src/services/discord/turn_view_reconciler/store.rs` | 382 | 382 | 0 | | +| `services::discord::voice_acknowledgement` | `src/services/discord/voice_acknowledgement.rs` | 61 | 61 | 0 | | +| `services::discord::voice_background_driver` | `src/services/discord/voice_background_driver.rs` | 234 | 199 | 35 | | +| `services::discord::voice_barge_in` | `src/services/discord/voice_barge_in.rs` | 3276 | 994 | 2282 | | +| `services::discord::voice_barge_in::channel_state` | `src/services/discord/voice_barge_in/channel_state.rs` | 420 | 259 | 161 | | +| `services::discord::voice_barge_in::final_result_playback` | `src/services/discord/voice_barge_in/final_result_playback.rs` | 361 | 361 | 0 | | +| `services::discord::voice_barge_in::foreground_decision` | `src/services/discord/voice_barge_in/foreground_decision.rs` | 242 | 242 | 0 | | +| `services::discord::voice_barge_in::live_cut_playback` | `src/services/discord/voice_barge_in/live_cut_playback.rs` | 171 | 171 | 0 | | +| `services::discord::voice_barge_in::progress_playback` | `src/services/discord/voice_barge_in/progress_playback.rs` | 501 | 501 | 0 | | +| `services::discord::voice_barge_in::receive_hook` | `src/services/discord/voice_barge_in/receive_hook.rs` | 113 | 113 | 0 | | +| `services::discord::voice_barge_in::routing` | `src/services/discord/voice_barge_in/routing.rs` | 521 | 493 | 28 | | +| `services::discord::voice_barge_in::runtime_lifecycle` | `src/services/discord/voice_barge_in/runtime_lifecycle.rs` | 665 | 665 | 0 | | +| `services::discord::voice_barge_in::stt` | `src/services/discord/voice_barge_in/stt.rs` | 326 | 326 | 0 | | +| `services::discord::voice_barge_in::tts_pipeline` | `src/services/discord/voice_barge_in/tts_pipeline.rs` | 86 | 86 | 0 | | +| `services::discord::voice_barge_in::turn_dispatch` | `src/services/discord/voice_barge_in/turn_dispatch.rs` | 905 | 905 | 0 | | +| `services::discord::voice_barge_in::utility` | `src/services/discord/voice_barge_in/utility.rs` | 92 | 92 | 0 | | +| `services::discord::voice_barge_in::utterance_pipeline` | `src/services/discord/voice_barge_in/utterance_pipeline.rs` | 258 | 258 | 0 | | +| `services::discord::voice_config_cache` | `src/services/discord/voice_config_cache.rs` | 79 | 79 | 0 | | +| `services::discord::voice_id_sequences` | `src/services/discord/voice_id_sequences.rs` | 69 | 69 | 0 | | +| `services::discord::voice_lifecycle` | `src/services/discord/voice_lifecycle.rs` | 1140 | 809 | 331 | | +| `services::discord::voice_routing` | `src/services/discord/voice_routing.rs` | 163 | 138 | 25 | | +| `services::discord::voice_sensitivity` | `src/services/discord/voice_sensitivity.rs` | 113 | 113 | 0 | | +| `services::discord::watchers::codex_tui_restore` | `src/services/discord/watchers/codex_tui_restore.rs` | 231 | 199 | 32 | | +| `services::discord::watchers::dispatched_origin_ghost` | `src/services/discord/watchers/dispatched_origin_ghost.rs` | 151 | 151 | 0 | | +| `services::discord::watchers::lifecycle` | `src/services/discord/watchers/lifecycle.rs` | 99 | 99 | 0 | | +| `services::discord::watchers::lifecycle::activity` | `src/services/discord/watchers/lifecycle/activity.rs` | 212 | 212 | 0 | | +| `services::discord::watchers::lifecycle::claims` | `src/services/discord/watchers/lifecycle/claims.rs` | 671 | 671 | 0 | | +| `services::discord::watchers::lifecycle::claude_restore` | `src/services/discord/watchers/lifecycle/claude_restore.rs` | 414 | 137 | 277 | | +| `services::discord::watchers::lifecycle::liveness` | `src/services/discord/watchers/lifecycle/liveness.rs` | 175 | 175 | 0 | | +| `services::discord::watchers::lifecycle::output_policy` | `src/services/discord/watchers/lifecycle/output_policy.rs` | 230 | 94 | 136 | | +| `services::discord::watchers::lifecycle::ready_failure` | `src/services/discord/watchers/lifecycle/ready_failure.rs` | 187 | 187 | 0 | | +| `services::discord::watchers::lifecycle::recovery_markers` | `src/services/discord/watchers/lifecycle/recovery_markers.rs` | 155 | 155 | 0 | | +| `services::discord::watchers::lifecycle::restore` | `src/services/discord/watchers/lifecycle/restore.rs` | 891 | 891 | 0 | | +| `services::discord::watchers::lifecycle::restore_support` | `src/services/discord/watchers/lifecycle/restore_support.rs` | 250 | 250 | 0 | | +| `services::discord::watchers::lifecycle_decision` | `src/services/discord/watchers/lifecycle_decision.rs` | 372 | 212 | 160 | | +| `services::discord::zombie_foreground_release` | `src/services/discord/zombie_foreground_release.rs` | 920 | 422 | 498 | | +| `services::discord_config_audit` | `src/services/discord_config_audit.rs` | 1597 | 1280 | 317 | giant-file | +| `services::discord_dm_reply_store` | `src/services/discord_dm_reply_store.rs` | 207 | 207 | 0 | | +| `services::disk_monitor` | `src/services/disk_monitor.rs` | 234 | 234 | 0 | | +| `services::dispatch_gate` | `src/services/dispatch_gate.rs` | 1440 | 828 | 612 | | +| `services::dispatch_watchdog` | `src/services/dispatch_watchdog.rs` | 259 | 203 | 56 | | +| `services::dispatched_sessions` | `src/services/dispatched_sessions.rs` | 2332 | 1879 | 453 | giant-file | +| `services::dispatched_sessions::canonical_identity` | `src/services/dispatched_sessions/canonical_identity.rs` | 175 | 68 | 107 | | +| `services::dispatches` | `src/services/dispatches/mod.rs` | 169 | 169 | 0 | | +| `services::dispatches::discord_delivery` | `src/services/dispatches/discord_delivery/mod.rs` | 26 | 26 | 0 | | +| `services::dispatches::discord_delivery::guard` | `src/services/dispatches/discord_delivery/guard.rs` | 1624 | 645 | 979 | | +| `services::dispatches::discord_delivery::orchestration` | `src/services/dispatches/discord_delivery/orchestration.rs` | 1523 | 1502 | 21 | giant-file | +| `services::dispatches::discord_delivery::thread_reuse` | `src/services/dispatches/discord_delivery/thread_reuse.rs` | 773 | 773 | 0 | | +| `services::dispatches::discord_delivery::transport` | `src/services/dispatches/discord_delivery/transport.rs` | 1112 | 871 | 241 | | +| `services::dispatches::dtos` | `src/services/dispatches/dtos.rs` | 22 | 22 | 0 | | +| `services::dispatches::outbox_claiming` | `src/services/dispatches/outbox_claiming.rs` | 1394 | 572 | 822 | | +| `services::dispatches::outbox_queue` | `src/services/dispatches/outbox_queue.rs` | 465 | 465 | 0 | | +| `services::dispatches::outbox_route` | `src/services/dispatches/outbox_route.rs` | 1286 | 1178 | 108 | giant-file | +| `services::dispatches::result_header` | `src/services/dispatches/result_header.rs` | 423 | 298 | 125 | | +| `services::dispatches::routing_constraint` | `src/services/dispatches/routing_constraint.rs` | 739 | 493 | 246 | | +| `services::dispatches::thread_reuse` | `src/services/dispatches/thread_reuse.rs` | 408 | 339 | 69 | | +| `services::dispatches::wait_queue` | `src/services/dispatches/wait_queue.rs` | 561 | 376 | 185 | | +| `services::dispatches_followup` | `src/services/dispatches_followup.rs` | 66 | 66 | 0 | | +| `services::escalation_settings` | `src/services/escalation_settings.rs` | 165 | 134 | 31 | | +| `services::gemini` | `src/services/gemini.rs` | 1391 | 1360 | 31 | giant-file | +| `services::git` | `src/services/git/mod.rs` | 33 | 33 | 0 | | +| `services::git::branch_resolver` | `src/services/git/branch_resolver.rs` | 123 | 123 | 0 | | +| `services::git::commit_resolver` | `src/services/git/commit_resolver.rs` | 378 | 357 | 21 | | +| `services::git::remote` | `src/services/git/remote.rs` | 16 | 16 | 0 | | +| `services::git::repo_resolver` | `src/services/git/repo_resolver.rs` | 272 | 240 | 32 | | +| `services::git::runner` | `src/services/git/runner.rs` | 430 | 402 | 28 | | +| `services::git::worktree_resolver` | `src/services/git/worktree_resolver.rs` | 467 | 451 | 16 | | +| `services::github_issue_creation` | `src/services/github_issue_creation.rs` | 682 | 520 | 162 | | +| `services::hang_forensics` | `src/services/hang_forensics.rs` | 1967 | 995 | 972 | | +| `services::health_active_session_audit` | `src/services/health_active_session_audit.rs` | 803 | 405 | 398 | | +| `services::health_diagnostics` | `src/services/health_diagnostics.rs` | 968 | 699 | 269 | | +| `services::issue_announcements` | `src/services/issue_announcements.rs` | 483 | 439 | 44 | | +| `services::kakao` | `src/services/kakao.rs` | 514 | 451 | 63 | | +| `services::kakao_message` | `src/services/kakao_message.rs` | 207 | 146 | 61 | | +| `services::kanban` | `src/services/kanban.rs` | 1 | 1 | 0 | | +| `services::kanban_cards` | `src/services/kanban_cards.rs` | 251 | 251 | 0 | | +| `services::long_turn_watchdog` | `src/services/long_turn_watchdog.rs` | 325 | 237 | 88 | | +| `services::maintenance` | `src/services/maintenance/mod.rs` | 331 | 331 | 0 | | +| `services::maintenance::jobs` | `src/services/maintenance/jobs/mod.rs` | 73 | 73 | 0 | | +| `services::maintenance::jobs::db_retention` | `src/services/maintenance/jobs/db_retention.rs` | 1427 | 716 | 711 | | +| `services::maintenance::jobs::hang_dump_cleanup` | `src/services/maintenance/jobs/hang_dump_cleanup.rs` | 125 | 125 | 0 | | +| `services::maintenance::jobs::memento_consolidation` | `src/services/maintenance/jobs/memento_consolidation.rs` | 301 | 301 | 0 | | +| `services::maintenance::jobs::target_sweep` | `src/services/maintenance/jobs/target_sweep.rs` | 263 | 226 | 37 | | +| `services::maintenance::jobs::tmp_pipeline_sweep` | `src/services/maintenance/jobs/tmp_pipeline_sweep.rs` | 629 | 402 | 227 | | +| `services::maintenance::jobs::voice_cache_sweep` | `src/services/maintenance/jobs/voice_cache_sweep.rs` | 218 | 104 | 114 | | +| `services::maintenance::jobs::worktree_orphan_sweep` | `src/services/maintenance/jobs/worktree_orphan_sweep.rs` | 2175 | 997 | 1178 | | +| `services::mcp_config` | `src/services/mcp_config.rs` | 895 | 793 | 102 | | +| `services::memory` | `src/services/memory/mod.rs` | 229 | 229 | 0 | | +| `services::memory::local` | `src/services/memory/local.rs` | 83 | 45 | 38 | | +| `services::memory::memento` | `src/services/memory/memento.rs` | 1803 | 1511 | 292 | giant-file | +| `services::memory::memento_throttle` | `src/services/memory/memento_throttle.rs` | 561 | 561 | 0 | | +| `services::memory::runtime_state` | `src/services/memory/runtime_state.rs` | 315 | 315 | 0 | | +| `services::message_outbox` | `src/services/message_outbox.rs` | 1455 | 824 | 631 | | +| `services::message_outbox::identity` | `src/services/message_outbox/identity.rs` | 141 | 141 | 0 | | +| `services::message_outbox_circuit_authority` | `src/services/message_outbox_circuit_authority.rs` | 709 | 709 | 0 | | +| `services::message_outbox_recovery` | `src/services/message_outbox_recovery.rs` | 166 | 166 | 0 | | +| `services::message_outbox_recovery_support` | `src/services/message_outbox_recovery_support.rs` | 138 | 138 | 0 | | +| `services::monitoring_store` | `src/services/monitoring_store.rs` | 141 | 141 | 0 | | +| `services::observability` | `src/services/observability/mod.rs` | 631 | 580 | 51 | | +| `services::observability::emit` | `src/services/observability/emit.rs` | 1338 | 826 | 512 | | +| `services::observability::events` | `src/services/observability/events.rs` | 310 | 310 | 0 | | +| `services::observability::helpers` | `src/services/observability/helpers.rs` | 127 | 127 | 0 | | +| `services::observability::metrics` | `src/services/observability/metrics.rs` | 656 | 605 | 51 | | +| `services::observability::pg_io` | `src/services/observability/pg_io.rs` | 970 | 970 | 0 | | +| `services::observability::queries` | `src/services/observability/queries.rs` | 229 | 160 | 69 | | +| `services::observability::recovery_audit` | `src/services/observability/recovery_audit.rs` | 538 | 352 | 186 | | +| `services::observability::relay_signal_alert` | `src/services/observability/relay_signal_alert.rs` | 420 | 248 | 172 | | +| `services::observability::retention` | `src/services/observability/retention.rs` | 99 | 99 | 0 | | +| `services::observability::session_inventory` | `src/services/observability/session_inventory.rs` | 236 | 236 | 0 | | +| `services::observability::turn_lifecycle` | `src/services/observability/turn_lifecycle.rs` | 952 | 486 | 466 | | +| `services::observability::watcher_latency` | `src/services/observability/watcher_latency.rs` | 284 | 284 | 0 | | +| `services::observability::worker` | `src/services/observability/worker.rs` | 321 | 321 | 0 | | +| `services::onboarding` | `src/services/onboarding/mod.rs` | 2932 | 2858 | 74 | giant-file | +| `services::onboarding::channel` | `src/services/onboarding/channel.rs` | 192 | 192 | 0 | | +| `services::onboarding::provider` | `src/services/onboarding/provider.rs` | 181 | 181 | 0 | | +| `services::opencode` | `src/services/opencode.rs` | 3259 | 2807 | 452 | giant-file | +| `services::opencode::streaming_entry` | `src/services/opencode/streaming_entry.rs` | 62 | 62 | 0 | | +| `services::operator_connectors` | `src/services/operator_connectors.rs` | 626 | 386 | 240 | | +| `services::pane_readiness` | `src/services/pane_readiness.rs` | 67 | 30 | 37 | | +| `services::pipeline_override` | `src/services/pipeline_override.rs` | 970 | 333 | 637 | | +| `services::pipeline_routes` | `src/services/pipeline_routes.rs` | 866 | 675 | 191 | | +| `services::platform` | `src/services/platform/mod.rs` | 26 | 26 | 0 | | +| `services::platform::binary_resolver` | `src/services/platform/binary_resolver.rs` | 1914 | 1482 | 432 | giant-file | +| `services::platform::binary_resolver::grok` | `src/services/platform/binary_resolver/grok.rs` | 18 | 18 | 0 | | +| `services::platform::dump_tool` | `src/services/platform/dump_tool.rs` | 97 | 97 | 0 | | +| `services::platform::shell` | `src/services/platform/shell.rs` | 49 | 49 | 0 | | +| `services::platform::tmux` | `src/services/platform/tmux.rs` | 1440 | 999 | 441 | | +| `services::platform::tmux::availability` | `src/services/platform/tmux/availability.rs` | 269 | 136 | 133 | | +| `services::pr_summary` | `src/services/pr_summary.rs` | 542 | 321 | 221 | | +| `services::process` | `src/services/process.rs` | 1252 | 782 | 470 | | +| `services::provider` | `src/services/provider.rs` | 2402 | 1628 | 774 | giant-file | +| `services::provider::cancel_token_claude_interrupt` | `src/services/provider/cancel_token_claude_interrupt.rs` | 366 | 169 | 197 | | +| `services::provider::cancel_token_cleanup` | `src/services/provider/cancel_token_cleanup.rs` | 5 | 5 | 0 | | +| `services::provider::cancel_token_cleanup::authority` | `src/services/provider/cancel_token_cleanup/authority.rs` | 209 | 141 | 68 | | +| `services::provider::cancel_token_cleanup::executor` | `src/services/provider/cancel_token_cleanup/executor.rs` | 527 | 354 | 173 | | +| `services::provider::cancel_token_cleanup::target` | `src/services/provider/cancel_token_cleanup/target.rs` | 17 | 17 | 0 | | +| `services::provider::cancel_watchdog` | `src/services/provider/cancel_watchdog.rs` | 268 | 102 | 166 | | +| `services::provider::registry` | `src/services/provider/registry.rs` | 521 | 521 | 0 | | +| `services::provider_auth` | `src/services/provider_auth.rs` | 645 | 417 | 228 | | +| `services::provider_cli` | `src/services/provider_cli/mod.rs` | 21 | 21 | 0 | | +| `services::provider_cli::canary` | `src/services/provider_cli/canary.rs` | 86 | 86 | 0 | | +| `services::provider_cli::context` | `src/services/provider_cli/context.rs` | 28 | 28 | 0 | | +| `services::provider_cli::diagnostics` | `src/services/provider_cli/diagnostics.rs` | 137 | 137 | 0 | | +| `services::provider_cli::io` | `src/services/provider_cli/io.rs` | 183 | 183 | 0 | | +| `services::provider_cli::orchestration` | `src/services/provider_cli/orchestration.rs` | 228 | 228 | 0 | | +| `services::provider_cli::paths` | `src/services/provider_cli/paths.rs` | 91 | 91 | 0 | | +| `services::provider_cli::registry` | `src/services/provider_cli/registry.rs` | 248 | 248 | 0 | | +| `services::provider_cli::retention` | `src/services/provider_cli/retention.rs` | 91 | 91 | 0 | | +| `services::provider_cli::session_guard` | `src/services/provider_cli/session_guard.rs` | 199 | 199 | 0 | | +| `services::provider_cli::smoke` | `src/services/provider_cli/smoke.rs` | 166 | 166 | 0 | | +| `services::provider_cli::snapshot` | `src/services/provider_cli/snapshot.rs` | 74 | 74 | 0 | | +| `services::provider_cli::upgrade` | `src/services/provider_cli/upgrade.rs` | 637 | 637 | 0 | | +| `services::provider_error_transcript` | `src/services/provider_error_transcript.rs` | 168 | 120 | 48 | | +| `services::provider_exec` | `src/services/provider_exec.rs` | 346 | 346 | 0 | | +| `services::provider_hosting` | `src/services/provider_hosting.rs` | 1101 | 483 | 618 | | +| `services::provider_output_guard` | `src/services/provider_output_guard.rs` | 195 | 195 | 0 | | +| `services::provider_runtime` | `src/services/provider_runtime.rs` | 73 | 73 | 0 | | +| `services::queue` | `src/services/queue.rs` | 979 | 835 | 144 | | +| `services::qwen` | `src/services/qwen.rs` | 1773 | 1724 | 49 | giant-file | +| `services::qwen::fresh_session` | `src/services/qwen/fresh_session.rs` | 90 | 90 | 0 | | +| `services::qwen::session_lifecycle` | `src/services/qwen/session_lifecycle.rs` | 441 | 441 | 0 | | +| `services::qwen_tmux_wrapper` | `src/services/qwen_tmux_wrapper.rs` | 951 | 951 | 0 | | +| `services::release_source` | `src/services/release_source.rs` | 461 | 236 | 225 | | +| `services::remote_stub` | `src/services/remote_stub.rs` | 126 | 58 | 68 | | +| `services::retrospectives` | `src/services/retrospectives.rs` | 565 | 565 | 0 | | +| `services::review_decision` | `src/services/review_decision.rs` | 335 | 335 | 0 | | +| `services::review_decision::accept` | `src/services/review_decision/accept.rs` | 697 | 697 | 0 | | +| `services::review_decision::adapters` | `src/services/review_decision/adapters.rs` | 226 | 226 | 0 | | +| `services::review_decision::dismiss_finalize` | `src/services/review_decision/dismiss_finalize.rs` | 181 | 181 | 0 | | +| `services::review_decision::dispute` | `src/services/review_decision/dispute.rs` | 733 | 733 | 0 | | +| `services::review_decision::pending` | `src/services/review_decision/pending.rs` | 634 | 634 | 0 | | +| `services::review_decision::repo_card` | `src/services/review_decision/repo_card.rs` | 851 | 742 | 109 | | +| `services::review_decision::repo_dispatch` | `src/services/review_decision/repo_dispatch.rs` | 650 | 650 | 0 | | +| `services::review_decision::review_state_repo` | `src/services/review_decision/review_state_repo.rs` | 33 | 33 | 0 | | +| `services::review_decision::tuning_aggregate` | `src/services/review_decision/tuning_aggregate.rs` | 470 | 470 | 0 | | +| `services::review_decision::worktree_stale` | `src/services/review_decision/worktree_stale.rs` | 728 | 553 | 175 | | +| `services::routines` | `src/services/routines/mod.rs` | 52 | 41 | 11 | | +| `services::routines::action` | `src/services/routines/action.rs` | 365 | 237 | 128 | | +| `services::routines::agent_executor` | `src/services/routines/agent_executor.rs` | 2698 | 2134 | 564 | giant-file | +| `services::routines::agent_executor::reliability` | `src/services/routines/agent_executor/reliability.rs` | 272 | 156 | 116 | | +| `services::routines::discord_log` | `src/services/routines/discord_log.rs` | 2104 | 1596 | 508 | giant-file | +| `services::routines::fresh_session_reaper` | `src/services/routines/fresh_session_reaper.rs` | 395 | 215 | 180 | | +| `services::routines::loader` | `src/services/routines/loader.rs` | 3179 | 928 | 2251 | | +| `services::routines::loader::discovery` | `src/services/routines/loader/discovery.rs` | 115 | 115 | 0 | | +| `services::routines::migrated` | `src/services/routines/migrated.rs` | 1257 | 854 | 403 | | +| `services::routines::runtime` | `src/services/routines/runtime.rs` | 1094 | 891 | 203 | | +| `services::routines::runtime_config` | `src/services/routines/runtime_config.rs` | 133 | 64 | 69 | | +| `services::routines::session_control` | `src/services/routines/session_control.rs` | 1065 | 899 | 166 | | +| `services::routines::store` | `src/services/routines/store.rs` | 4251 | 3573 | 678 | giant-file | +| `services::scheduled_messages` | `src/services/scheduled_messages.rs` | 1226 | 911 | 315 | | +| `services::scheduled_messages::context_snapshot` | `src/services/scheduled_messages/context_snapshot.rs` | 863 | 427 | 436 | | +| `services::scheduled_messages::evidence` | `src/services/scheduled_messages/evidence.rs` | 132 | 132 | 0 | | +| `services::scheduled_messages::external_delivery` | `src/services/scheduled_messages/external_delivery.rs` | 400 | 369 | 31 | | +| `services::scheduled_messages::provider_targets` | `src/services/scheduled_messages/provider_targets.rs` | 239 | 170 | 69 | | +| `services::scheduled_messages::push_handoff` | `src/services/scheduled_messages/push_handoff.rs` | 187 | 153 | 34 | | +| `services::scheduled_messages::timing` | `src/services/scheduled_messages/timing.rs` | 53 | 53 | 0 | | +| `services::scheduling` | `src/services/scheduling.rs` | 282 | 192 | 90 | | +| `services::service_error` | `src/services/service_error.rs` | 1 | 1 | 0 | | +| `services::session_activity` | `src/services/session_activity.rs` | 355 | 276 | 79 | | +| `services::session_backend` | `src/services/session_backend.rs` | 1087 | 676 | 411 | | +| `services::session_backend::stream_line` | `src/services/session_backend/stream_line.rs` | 819 | 593 | 226 | | +| `services::session_backend::terminal_usage` | `src/services/session_backend/terminal_usage.rs` | 212 | 106 | 106 | | +| `services::session_forwarding` | `src/services/session_forwarding.rs` | 1728 | 867 | 861 | | +| `services::session_forwarding::trusted_target` | `src/services/session_forwarding/trusted_target.rs` | 804 | 420 | 384 | | +| `services::session_resume` | `src/services/session_resume.rs` | 1469 | 759 | 710 | | +| `services::session_selector_validity` | `src/services/session_selector_validity.rs` | 395 | 149 | 246 | | +| `services::settings` | `src/services/settings.rs` | 1767 | 1112 | 655 | giant-file | +| `services::settings::runtime_config_put` | `src/services/settings/runtime_config_put.rs` | 44 | 44 | 0 | | +| `services::shell_guard` | `src/services/shell_guard.rs` | 419 | 419 | 0 | | +| `services::slo` | `src/services/slo/mod.rs` | 535 | 508 | 27 | | +| `services::stale_turn_reconciler` | `src/services/stale_turn_reconciler.rs` | 2045 | 797 | 1248 | | +| `services::stale_turn_reconciler::test_barriers` | `src/services/stale_turn_reconciler/test_barriers.rs` | 76 | 76 | 0 | | +| `services::stream_json_cli` | `src/services/stream_json_cli/mod.rs` | 29 | 29 | 0 | | +| `services::stream_json_cli::codec` | `src/services/stream_json_cli/codec.rs` | 367 | 271 | 96 | | +| `services::stream_json_cli::dialects` | `src/services/stream_json_cli/dialects/mod.rs` | 27 | 27 | 0 | | +| `services::stream_json_cli::dialects::agy` | `src/services/stream_json_cli/dialects/agy.rs` | 192 | 143 | 49 | | +| `services::stream_json_cli::dialects::grok` | `src/services/stream_json_cli/dialects/grok.rs` | 255 | 189 | 66 | | +| `services::stream_json_cli::policy` | `src/services/stream_json_cli/policy.rs` | 164 | 117 | 47 | | +| `services::stream_json_cli::request` | `src/services/stream_json_cli/request.rs` | 71 | 71 | 0 | | +| `services::stream_json_cli::runner` | `src/services/stream_json_cli/runner.rs` | 252 | 208 | 44 | | +| `services::stream_json_cli::session` | `src/services/stream_json_cli/session.rs` | 46 | 30 | 16 | | +| `services::task_completion_v1` | `src/services/task_completion_v1.rs` | 731 | 411 | 320 | | +| `services::terminal_status_formatting` | `src/services/terminal_status_formatting.rs` | 290 | 199 | 91 | | +| `services::termination_audit` | `src/services/termination_audit.rs` | 195 | 195 | 0 | | +| `services::tmux_common` | `src/services/tmux_common.rs` | 3781 | 2091 | 1690 | giant-file | +| `services::tmux_diagnostics` | `src/services/tmux_diagnostics.rs` | 381 | 370 | 11 | | +| `services::tmux_turn_liveness` | `src/services/tmux_turn_liveness.rs` | 53 | 53 | 0 | | +| `services::tmux_wrapper` | `src/services/tmux_wrapper.rs` | 834 | 736 | 98 | | +| `services::tool_output_guard` | `src/services/tool_output_guard.rs` | 433 | 291 | 142 | | +| `services::tui_prompt_control` | `src/services/tui_prompt_control.rs` | 267 | 229 | 38 | | +| `services::tui_prompt_dedupe` | `src/services/tui_prompt_dedupe.rs` | 291 | 291 | 0 | | +| `services::tui_prompt_dedupe::extract` | `src/services/tui_prompt_dedupe/extract.rs` | 510 | 510 | 0 | | +| `services::tui_prompt_dedupe::observation` | `src/services/tui_prompt_dedupe/observation.rs` | 579 | 579 | 0 | | +| `services::tui_prompt_dedupe::runtime_binding` | `src/services/tui_prompt_dedupe/runtime_binding.rs` | 834 | 834 | 0 | | +| `services::tui_prompt_dedupe::session_rotation` | `src/services/tui_prompt_dedupe/session_rotation.rs` | 439 | 322 | 117 | | +| `services::tui_prompt_dedupe::state` | `src/services/tui_prompt_dedupe/state.rs` | 92 | 92 | 0 | | +| `services::tui_prompt_dedupe::synthetic_prompt` | `src/services/tui_prompt_dedupe/synthetic_prompt.rs` | 34 | 34 | 0 | | +| `services::tui_steering` | `src/services/tui_steering.rs` | 229 | 121 | 108 | | +| `services::tui_turn_state` | `src/services/tui_turn_state.rs` | 2044 | 659 | 1385 | | +| `services::tui_turn_state::completion_scan` | `src/services/tui_turn_state/completion_scan.rs` | 360 | 360 | 0 | | +| `services::turn_cancel_finalizer` | `src/services/turn_cancel_finalizer.rs` | 485 | 150 | 335 | | +| `services::turn_lifecycle` | `src/services/turn_lifecycle.rs` | 730 | 551 | 179 | | +| `services::turn_orchestrator` | `src/services/turn_orchestrator.rs` | 7429 | 3288 | 4141 | giant-file | +| `services::turn_orchestrator::active_source_dedup` | `src/services/turn_orchestrator/active_source_dedup.rs` | 129 | 129 | 0 | | +| `services::turn_orchestrator::dispatch_cleanup` | `src/services/turn_orchestrator/dispatch_cleanup.rs` | 62 | 62 | 0 | | +| `services::turn_orchestrator::dispatch_reservation` | `src/services/turn_orchestrator/dispatch_reservation.rs` | 750 | 482 | 268 | | +| `services::turn_orchestrator::episode_identity` | `src/services/turn_orchestrator/episode_identity.rs` | 275 | 120 | 155 | | +| `services::turn_orchestrator::front_requeue` | `src/services/turn_orchestrator/front_requeue.rs` | 66 | 66 | 0 | | +| `services::turn_orchestrator::overflow` | `src/services/turn_orchestrator/overflow.rs` | 35 | 35 | 0 | | +| `services::turn_orchestrator::pending_queue_persistence` | `src/services/turn_orchestrator/pending_queue_persistence.rs` | 945 | 818 | 127 | | +| `services::turn_orchestrator::queue_cancellation` | `src/services/turn_orchestrator/queue_cancellation.rs` | 170 | 100 | 70 | | +| `services::turn_orchestrator::registry_purge` | `src/services/turn_orchestrator/registry_purge.rs` | 819 | 293 | 526 | | +| `services::turn_orchestrator::source_generation` | `src/services/turn_orchestrator/source_generation.rs` | 28 | 28 | 0 | | +| `services::turn_orchestrator::turn_finished_signal` | `src/services/turn_orchestrator/turn_finished_signal.rs` | 72 | 72 | 0 | | +| `services::writer_protocol` | `src/services/writer_protocol.rs` | 557 | 327 | 230 | | +| `services::writer_protocol::authority` | `src/services/writer_protocol/authority.rs` | 734 | 385 | 349 | | +| `services::writer_protocol::namespace` | `src/services/writer_protocol/namespace.rs` | 3 | 3 | 0 | | +| `services::writer_protocol::namespace::lexical` | `src/services/writer_protocol/namespace/lexical.rs` | 238 | 157 | 81 | | +| `supervisor` | `src/supervisor/mod.rs` | 1045 | 916 | 129 | | +| `ui` | `src/ui/mod.rs` | 1 | 1 | 0 | | +| `ui::ai_screen` | `src/ui/ai_screen.rs` | 155 | 100 | 55 | | +| `utils` | `src/utils/mod.rs` | 11 | 11 | 0 | | +| `utils::api` | `src/utils/api.rs` | 55 | 33 | 22 | | +| `utils::async_bridge` | `src/utils/async_bridge.rs` | 288 | 213 | 75 | | +| `utils::auth` | `src/utils/auth.rs` | 39 | 19 | 20 | | +| `utils::discord` | `src/utils/discord.rs` | 87 | 41 | 46 | | +| `utils::format` | `src/utils/format.rs` | 121 | 121 | 0 | | +| `utils::github_links` | `src/utils/github_links.rs` | 154 | 109 | 45 | | +| `utils::loopback_url` | `src/utils/loopback_url.rs` | 58 | 28 | 30 | | +| `utils::redact` | `src/utils/redact.rs` | 1165 | 514 | 651 | | +| `utils::secret_file` | `src/utils/secret_file.rs` | 208 | 134 | 74 | | +| `utils::wip_detect` | `src/utils/wip_detect.rs` | 237 | 106 | 131 | | +| `voice` | `src/voice/mod.rs` | 20 | 20 | 0 | | +| `voice::announce_meta` | `src/voice/announce_meta.rs` | 1389 | 411 | 978 | | +| `voice::announce_meta::durable` | `src/voice/announce_meta/durable.rs` | 594 | 594 | 0 | | +| `voice::barge_in` | `src/voice/barge_in.rs` | 995 | 598 | 397 | | +| `voice::cancel_tombstone` | `src/voice/cancel_tombstone.rs` | 274 | 147 | 127 | | +| `voice::commands` | `src/voice/commands.rs` | 854 | 542 | 312 | | +| `voice::config` | `src/voice/config.rs` | 616 | 389 | 227 | | +| `voice::flight` | `src/voice/flight.rs` | 252 | 138 | 114 | | +| `voice::metrics` | `src/voice/metrics.rs` | 455 | 353 | 102 | | +| `voice::progress` | `src/voice/progress.rs` | 472 | 365 | 107 | | +| `voice::prompt` | `src/voice/prompt.rs` | 825 | 542 | 283 | | +| `voice::receiver` | `src/voice/receiver.rs` | 1379 | 895 | 484 | | +| `voice::receiver::recording` | `src/voice/receiver/recording.rs` | 217 | 217 | 0 | | +| `voice::runtime_boundary` | `src/voice/runtime_boundary.rs` | 281 | 212 | 69 | | +| `voice::sanitizer` | `src/voice/sanitizer.rs` | 419 | 298 | 121 | | +| `voice::stt` | `src/voice/stt.rs` | 1387 | 991 | 396 | | +| `voice::stt_streaming` | `src/voice/stt_streaming.rs` | 335 | 185 | 150 | | +| `voice::tts` | `src/voice/tts/mod.rs` | 939 | 557 | 382 | | +| `voice::tts::chunks` | `src/voice/tts/chunks.rs` | 387 | 270 | 117 | | +| `voice::tts::edge` | `src/voice/tts/edge.rs` | 439 | 235 | 204 | | +| `voice::tts::playback` | `src/voice/tts/playback.rs` | 433 | 382 | 51 | | +| `voice::turn_link` | `src/voice/turn_link.rs` | 1607 | 664 | 943 | | +| `voice::utils` | `src/voice/utils.rs` | 77 | 28 | 49 | | diff --git a/scripts/giant_file_closed_issue_transition_list.txt b/scripts/giant_file_closed_issue_transition_list.txt index 95dc448ae..6773118ba 100644 --- a/scripts/giant_file_closed_issue_transition_list.txt +++ b/scripts/giant_file_closed_issue_transition_list.txt @@ -36,7 +36,6 @@ src/server/routes/kanban.rs src/server/routes/meetings.rs src/server/routes/resume.rs src/server/routes/v1.rs -src/server/worker_registry.rs src/services/claude.rs src/services/claude_tui/input.rs src/services/codex.rs @@ -85,7 +84,6 @@ src/services/discord/commands/text_commands.rs src/services/discord/health/recovery.rs src/services/discord/mod.rs src/services/discord/outbound/delivery_record.rs -src/services/discord/outbound/turn_output_controller.rs src/services/discord/recovery_engine/restore_inflight.rs src/services/discord/router/intake_gate.rs src/services/discord/router/message_handler/headless_turn.rs @@ -97,6 +95,5 @@ src/services/discord/tmux_watcher/turn_stream_collector.rs src/services/discord/tui_direct_pending_start.rs src/services/discord/tui_prompt_relay/synthetic_start.rs src/services/discord/turn_bridge/stream_tick.rs -src/services/discord/turn_finalizer.rs src/services/discord_config_audit.rs src/services/tmux_common.rs diff --git a/scripts/giant_file_issue_metadata.json b/scripts/giant_file_issue_metadata.json index 1db725592..b43be0609 100644 --- a/scripts/giant_file_issue_metadata.json +++ b/scripts/giant_file_issue_metadata.json @@ -2,8 +2,8 @@ "schema_version": 2, "refreshed_at": "2026-09-02T11:41:35Z", "ratchets": { - "closed_deadline_entries": 79, - "transition_list_entries": 79 + "closed_deadline_entries": 76, + "transition_list_entries": 76 }, "issues": [ { diff --git a/scripts/giant_file_registry.toml b/scripts/giant_file_registry.toml index 890c470dc..5bbcce597 100644 --- a/scripts/giant_file_registry.toml +++ b/scripts/giant_file_registry.toml @@ -747,7 +747,7 @@ decompose_issue = "#4712" # Active relay-dedup surface; decompose the idle-relay loop out once stabilized. file = "src/services/discord/session_relay_sink.rs" owner = "discord-relay" -deadline = "2026-08-31" +deadline = "2027-01-31" decompose_issue = "#4712" # NOTE: src/services/discord/relay_recovery.rs previously had an [[entry]] here; @@ -804,7 +804,7 @@ decompose_issue = "#4712" # Tracked for splitting under the relay-decomposition program. file = "src/services/discord/tui_direct_pending_start.rs" owner = "discord-relay" -deadline = "2026-08-31" +deadline = "2027-01-31" decompose_issue = "#4712" [[entry]]