Skip to content

chore(rsworkspace): derive error implementations - #208

Merged
yordis merged 5 commits into
mainfrom
yordis/kathmandu-v1
Jun 8, 2026
Merged

chore(rsworkspace): derive error implementations#208
yordis merged 5 commits into
mainfrom
yordis/kathmandu-v1

Conversation

@yordis

@yordis yordis commented Jun 8, 2026

Copy link
Copy Markdown
Member
  • Reduce the maintenance burden of hand-rolled error plumbing across Rust crates.
  • Keep error reporting consistent as the workspace grows.

@cursor

cursor Bot commented Jun 8, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Mostly mechanical refactors with equivalent messages and preserved #[source] chains; risk is limited to subtle differences in error display or propagation at binary boundaries.

Overview
Adds anyhow and thiserror as pinned workspace dependencies and wires them through ACP/MCP NATS crates, trogon-gateway, trogon-nats, decider stacks, and related binaries.

Library errors drop hand-written Display / std::error::Error impls in favor of #[derive(thiserror::Error)], with #[error(...)] messages and #[source] for nested causes. Several validation errors that wrapped SubjectTokenViolation in a newtype are now explicit enums with From conversions (e.g. AcpPrefixError, session/ext method IDs, MCP peer/prefix). JetStream ProvisionError is now a struct carrying stream name plus a typed source instead of a flattened string.

Binaries and top-level flows use anyhow::Result (and .context() / bail! in gateway) instead of Box<dyn Error> or ad hoc format! error strings—e.g. ACP server WebSocket shutdown returns ConnectionShutdownError with join/IO sources. Gateway ConfigValidationError gains clearer variants (including dedicated zero-field cases) and aggregates via ValidationErrors for multi-error display.

Tests and docs are updated for new error shapes and thiserror in examples; behavior should stay the same aside from richer error chains in logs.

Reviewed by Cursor Bugbot for commit 39b4631. Bugbot is set up for automated code reviews on this repo. Configure here.

@yordis
yordis force-pushed the yordis/kathmandu-v1 branch from 85925c5 to a60b5c5 Compare June 8, 2026 18:18
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis force-pushed the yordis/kathmandu-v1 branch from a60b5c5 to 276ef57 Compare June 8, 2026 18:20
@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown

badge

Code Coverage Summary

Details
Filename                                                                              Stmts    Miss  Cover    Missing
----------------------------------------------------------------------------------  -------  ------  -------  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
crates/mcp-nats/src/nats/mod.rs                                                          99       0  100.00%
crates/mcp-nats/src/nats/parsing.rs                                                     191       0  100.00%
crates/trogon-nats/src/jetstream/stream_max_age.rs                                       18       0  100.00%
crates/trogon-nats/src/jetstream/traits.rs                                               40      40  0.00%    181-251
crates/trogon-nats/src/jetstream/claim_check.rs                                         405      10  97.53%   45-47, 116-122
crates/trogon-nats/src/jetstream/create_conflicts.rs                                     24       0  100.00%
crates/trogon-nats/src/jetstream/mocks.rs                                              1637       7  99.57%   450, 824-826, 1003-1005
crates/trogon-nats/src/jetstream/publish.rs                                              64       0  100.00%
crates/trogon-decider-runtime/src/event/codec/event_decode.rs                            29       0  100.00%
crates/trogon-decider-runtime/src/event/codec/event_payload_error.rs                     36       0  100.00%
crates/trogon-gateway/src/source_integration_id.rs                                       55       2  96.36%   58, 60
crates/trogon-gateway/src/http.rs                                                       145       0  100.00%
crates/trogon-gateway/src/source_status.rs                                               24       0  100.00%
crates/trogon-gateway/src/config.rs                                                    2591      42  98.38%   84, 668, 671, 831, 888, 971, 974, 977, 981, 1065-1072, 1149, 1152, 1155, 1160, 1218, 1221, 1224, 1303, 1306, 1309, 1313, 1377, 1380, 1383, 1446, 1449, 1452, 1457, 1532, 1535, 1538, 1543, 1601, 1604, 1607, 1820-1822
crates/trogon-gateway/src/main.rs                                                       111       0  100.00%
crates/trogon-gateway/src/source_plugin.rs                                              269       3  98.88%   82, 141-142
crates/trogon-gateway/src/streams.rs                                                    129       0  100.00%
crates/trogon-gateway/src/source/gitlab/signature.rs                                    165       0  100.00%
crates/trogon-gateway/src/source/gitlab/server.rs                                       460       0  100.00%
crates/trogon-gateway/src/source/gitlab/gitlab_signing_token.rs                          61       0  100.00%
crates/trogon-decider-runtime/src/event/stream_event.rs                                   8       0  100.00%
crates/trogon-decider-runtime/src/event/mod.rs                                          170       0  100.00%
crates/trogon-decider-runtime/src/event/event_identity.rs                                 3       0  100.00%
crates/trogon-decider-runtime/src/event/event_id.rs                                      32       0  100.00%
crates/acp-nats-stdio/src/config.rs                                                      66       0  100.00%
crates/acp-nats-stdio/src/main.rs                                                       135      25  81.48%   65, 113-120, 126-128, 145, 174-193
crates/trogon-nats/src/lease/lease_bucket.rs                                             19       0  100.00%
crates/trogon-nats/src/lease/nats_kv_lease_config.rs                                     26       0  100.00%
crates/trogon-nats/src/lease/renew.rs                                                   246      19  92.28%   23-29, 48-59
crates/trogon-nats/src/lease/ttl.rs                                                      68       0  100.00%
crates/trogon-nats/src/lease/lease_timing.rs                                             15       0  100.00%
crates/trogon-nats/src/lease/acquire.rs                                                   5       5  0.00%    9-14
crates/trogon-nats/src/lease/mod.rs                                                     523      13  97.51%   113-126
crates/trogon-nats/src/lease/lease_key.rs                                                19       0  100.00%
crates/trogon-nats/src/lease/release.rs                                                   5       5  0.00%    8-12
crates/trogon-nats/src/lease/renew_interval.rs                                           57       0  100.00%
crates/trogon-nats/src/lease/provision.rs                                               187      10  94.65%   82-92
crates/trogon-nats/src/telemetry/messaging.rs                                            82       0  100.00%
crates/trogon-std/src/env/in_memory.rs                                                   73       0  100.00%
crates/trogon-std/src/env/system.rs                                                      17       0  100.00%
crates/trogon-std/src/telemetry/http.rs                                                 217       0  100.00%
crates/trogon-nats/src/auth.rs                                                          114       0  100.00%
crates/trogon-nats/src/subject_token_violation.rs                                        11       0  100.00%
crates/trogon-nats/src/client.rs                                                         22      22  0.00%    50-86
crates/trogon-nats/src/messaging.rs                                                     534       2  99.63%   144, 154
crates/trogon-nats/src/token.rs                                                           6       0  100.00%
crates/trogon-nats/src/connect.rs                                                        82       6  92.68%   41-46
crates/trogon-nats/src/mocks.rs                                                         314       0  100.00%
crates/trogon-nats/src/nats_token.rs                                                    157       0  100.00%
crates/trogon-gateway/src/source/incidentio/incidentio_event_type.rs                     62       0  100.00%
crates/trogon-gateway/src/source/incidentio/incidentio_signing_secret.rs                 56       0  100.00%
crates/trogon-gateway/src/source/incidentio/server.rs                                   343       0  100.00%
crates/trogon-gateway/src/source/incidentio/config.rs                                    16       0  100.00%
crates/trogon-gateway/src/source/incidentio/signature.rs                                206       0  100.00%
crates/acp-nats/src/nats/subjects/responses/cancelled.rs                                 15       0  100.00%
crates/acp-nats/src/nats/subjects/responses/ext_ready.rs                                 12       0  100.00%
crates/acp-nats/src/nats/subjects/responses/response.rs                                  20       0  100.00%
crates/acp-nats/src/nats/subjects/responses/update.rs                                    27       0  100.00%
crates/acp-nats/src/nats/subjects/responses/prompt_response.rs                           27       0  100.00%
crates/trogonai-proto/src/scheduler/schedules/codec.rs                                  248       0  100.00%
crates/acp-nats/src/nats/subjects/mod.rs                                                362       0  100.00%
crates/acp-nats/src/nats/subjects/stream.rs                                              56       0  100.00%
crates/trogon-telemetry/src/metric.rs                                                    26       1  96.15%   30
crates/trogon-telemetry/src/lib.rs                                                      208      24  88.46%   54, 118, 123, 128, 138-139, 145-163, 199, 202, 205, 211
crates/trogon-telemetry/src/resource_attribute.rs                                        23       0  100.00%
crates/trogon-telemetry/src/log.rs                                                       70       1  98.57%   35
crates/trogon-telemetry/src/service_name.rs                                              44       0  100.00%
crates/trogon-telemetry/src/trace.rs                                                     23       1  95.65%   24
crates/acp-nats/src/nats/subjects/subscriptions/one_agent.rs                             15       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/all_client.rs                             9       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/one_client.rs                            15       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/one_session.rs                           12       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/all_agent.rs                              9       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/all_session.rs                            9       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/prompt_wildcard.rs                        9       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/global_all.rs                             9       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/all_agent_ext.rs                          9       0  100.00%
crates/trogon-scheduler/src/commands/domain/schedule_id.rs                               81       0  100.00%
crates/trogon-scheduler/src/commands/domain/schedule_event_delivery.rs                   25       0  100.00%
crates/trogon-scheduler/src/commands/domain/message.rs                                  219       0  100.00%
crates/trogon-scheduler/src/commands/domain/schedule_event_sampling_source.rs            20       0  100.00%
crates/trogon-scheduler/src/commands/domain/schedule.rs                                 638       0  100.00%
crates/trogon-scheduler/src/commands/domain/schedule_event_schedule.rs                   83       0  100.00%
crates/trogon-scheduler/src/commands/domain/schedule_event_status.rs                     10       0  100.00%
crates/acp-nats/src/acp_prefix.rs                                                        46       0  100.00%
crates/acp-nats/src/client_proxy.rs                                                     181       0  100.00%
crates/acp-nats/src/config.rs                                                           203       0  100.00%
crates/acp-nats/src/in_flight_slot_guard.rs                                              32       0  100.00%
crates/acp-nats/src/jsonrpc.rs                                                            6       0  100.00%
crates/acp-nats/src/lib.rs                                                               69       0  100.00%
crates/acp-nats/src/req_id.rs                                                            39       0  100.00%
crates/acp-nats/src/ext_method_name.rs                                                   65       0  100.00%
crates/acp-nats/src/pending_prompt_waiters.rs                                           131       0  100.00%
crates/acp-nats/src/session_id.rs                                                        68       0  100.00%
crates/acp-nats/src/error.rs                                                             82       0  100.00%
crates/trogon-decider-runtime/src/snapshot/read_snapshot.rs                              11       0  100.00%
crates/trogon-decider-runtime/src/snapshot/mod.rs                                         3       0  100.00%
crates/trogon-decider-runtime/src/snapshot/snapshot_type.rs                              73       0  100.00%
crates/trogonai-proto/src/codec.rs                                                       16       0  100.00%
crates/trogonai-proto/src/convert.rs                                                     47       0  100.00%
crates/trogon-gateway/src/source/notion/notion_event_type.rs                             46       3  93.48%   50-52
crates/trogon-gateway/src/source/notion/server.rs                                       310       4  98.71%   115-116, 135-136
crates/trogon-gateway/src/source/notion/signature.rs                                     45       0  100.00%
crates/trogon-gateway/src/source/notion/notion_verification_token.rs                     17       0  100.00%
crates/trogon-gateway/src/source/notion/verification_token.rs                           220       0  100.00%
crates/acp-nats/src/client/ext.rs                                                       296       8  97.30%   146-155, 172-181
crates/acp-nats/src/client/terminal_kill.rs                                             278       0  100.00%
crates/acp-nats/src/client/mod.rs                                                      2851       0  100.00%
crates/acp-nats/src/client/rpc_reply.rs                                                  64       0  100.00%
crates/acp-nats/src/client/request_permission.rs                                        298       0  100.00%
crates/acp-nats/src/client/ext_session_prompt_response.rs                               135       0  100.00%
crates/acp-nats/src/client/session_update.rs                                             55       0  100.00%
crates/acp-nats/src/client/fs_read_text_file.rs                                         346       0  100.00%
crates/acp-nats/src/client/terminal_create.rs                                           264       0  100.00%
crates/acp-nats/src/client/terminal_output.rs                                           206       0  100.00%
crates/acp-nats/src/client/terminal_wait_for_exit.rs                                    364       0  100.00%
crates/acp-nats/src/client/terminal_release.rs                                          335       0  100.00%
crates/acp-nats/src/client/fs_write_text_file.rs                                        408       0  100.00%
crates/acp-nats/src/nats/subjects/commands/resume.rs                                     15       0  100.00%
crates/acp-nats/src/nats/subjects/commands/set_model.rs                                  15       0  100.00%
crates/acp-nats/src/nats/subjects/commands/prompt.rs                                     15       0  100.00%
crates/acp-nats/src/nats/subjects/commands/close.rs                                      15       0  100.00%
crates/acp-nats/src/nats/subjects/commands/load.rs                                       15       0  100.00%
crates/acp-nats/src/nats/subjects/commands/fork.rs                                       15       0  100.00%
crates/acp-nats/src/nats/subjects/commands/cancel.rs                                     15       0  100.00%
crates/acp-nats/src/nats/subjects/commands/set_config_option.rs                          15       0  100.00%
crates/acp-nats/src/nats/subjects/commands/set_mode.rs                                   15       0  100.00%
crates/mcp-nats/src/nats/subjects/server/tool_list_changed.rs                            12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/set_logging_level.rs                            12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/ping.rs                                          9       0  100.00%
crates/mcp-nats/src/nats/subjects/server/list_resources.rs                               12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/prompt_list_changed.rs                          12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/cancelled.rs                                    12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/get_task_result.rs                              12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/list_tools.rs                                   12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/logging_message.rs                              12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/read_resource.rs                                12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/list_prompts.rs                                 12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/get_prompt.rs                                   12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/list_tasks.rs                                   12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/resource_updated.rs                             12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/subscribe_resource.rs                           12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/list_resource_templates.rs                      12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/initialize.rs                                   12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/unsubscribe_resource.rs                         12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/elicitation_completed.rs                        12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/cancel_task.rs                                  12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/call_tool.rs                                    12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/progress.rs                                     12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/get_task.rs                                     12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/resource_list_changed.rs                        12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/complete.rs                                     12       0  100.00%
crates/trogon-gateway/src/source/twitter/signature.rs                                    58       0  100.00%
crates/trogon-gateway/src/source/twitter/config.rs                                       17       0  100.00%
crates/trogon-gateway/src/source/twitter/server.rs                                      525       0  100.00%
crates/trogon-service-config/src/lib.rs                                                  92       0  100.00%
crates/mcp-nats/src/nats/subjects/mod.rs                                                 89       0  100.00%
crates/trogon-decider-runtime/src/stream/append_stream.rs                                 5       0  100.00%
crates/trogon-decider-runtime/src/stream/stream_position.rs                              26       0  100.00%
crates/trogon-decider-runtime/src/stream/mod.rs                                          38       0  100.00%
crates/trogon-decider-runtime/src/stream/read_stream.rs                                   7       0  100.00%
crates/trogon-std/src/fs/mem.rs                                                         216      10  95.37%   61-63, 77-79, 132-134, 157
crates/trogon-std/src/fs/system.rs                                                       92       0  100.00%
crates/acp-nats/src/jetstream/provision.rs                                               52       0  100.00%
crates/acp-nats/src/jetstream/streams.rs                                                163       4  97.55%   206-208, 218
crates/acp-nats/src/jetstream/consumers.rs                                               91       0  100.00%
crates/acp-nats/src/jetstream/ext_policy.rs                                              26       0  100.00%
crates/trogon-std/src/secret_string.rs                                                   32       0  100.00%
crates/trogon-std/src/signal.rs                                                          26      12  53.85%   6-11, 18-25, 34
crates/trogon-std/src/json.rs                                                            30       0  100.00%
crates/trogon-std/src/duration.rs                                                        42       0  100.00%
crates/trogon-std/src/uuid.rs                                                             7       0  100.00%
crates/trogon-std/src/http.rs                                                            19       0  100.00%
crates/trogon-std/src/args.rs                                                            19       9  52.63%   11-28
crates/trogon-decider-runtime/src/execution.rs                                         1304       0  100.00%
crates/trogon-gateway/src/source/discord/config.rs                                      105       0  100.00%
crates/trogon-gateway/src/source/discord/gateway.rs                                     426       1  99.77%   137
crates/acp-nats/src/nats/subjects/client_ops/terminal_wait_for_exit.rs                   12       0  100.00%
crates/acp-nats/src/nats/subjects/client_ops/terminal_kill.rs                            12       0  100.00%
crates/acp-nats/src/nats/subjects/client_ops/terminal_output.rs                          12       0  100.00%
crates/acp-nats/src/nats/subjects/client_ops/fs_write_text_file.rs                       12       0  100.00%
crates/acp-nats/src/nats/subjects/client_ops/terminal_release.rs                         12       0  100.00%
crates/acp-nats/src/nats/subjects/client_ops/fs_read_text_file.rs                        12       0  100.00%
crates/acp-nats/src/nats/subjects/client_ops/terminal_create.rs                          12       0  100.00%
crates/acp-nats/src/nats/subjects/client_ops/session_update.rs                           12       0  100.00%
crates/acp-nats/src/nats/subjects/client_ops/session_request_permission.rs               12       0  100.00%
crates/trogon-scheduler/src/commands/resume_schedule.rs                                 165       0  100.00%
crates/trogon-scheduler/src/commands/snapshot.rs                                          4       0  100.00%
crates/trogon-scheduler/src/commands/state.rs                                           188       0  100.00%
crates/trogon-scheduler/src/commands/pause_schedule.rs                                  158       0  100.00%
crates/trogon-scheduler/src/commands/create_schedule.rs                                 182       0  100.00%
crates/trogon-scheduler/src/commands/remove_schedule.rs                                 169       0  100.00%
crates/trogon-std/src/dirs/system.rs                                                     71       0  100.00%
crates/trogon-std/src/dirs/fixed.rs                                                      80       0  100.00%
crates/acp-nats/src/agent/list_sessions.rs                                               47       0  100.00%
crates/acp-nats/src/agent/js_request.rs                                                 283       0  100.00%
crates/acp-nats/src/agent/fork_session.rs                                                94       0  100.00%
crates/acp-nats/src/agent/set_session_model.rs                                           67       0  100.00%
crates/acp-nats/src/agent/ext_method.rs                                                  82       0  100.00%
crates/acp-nats/src/agent/close_session.rs                                               63       0  100.00%
crates/acp-nats/src/agent/mod.rs                                                         65       0  100.00%
crates/acp-nats/src/agent/authenticate.rs                                                49       0  100.00%
crates/acp-nats/src/agent/logout.rs                                                      49       0  100.00%
crates/acp-nats/src/agent/bridge.rs                                                     123       4  96.75%   108-111
crates/acp-nats/src/agent/resume_session.rs                                              90       0  100.00%
crates/acp-nats/src/agent/set_session_config_option.rs                                   67       0  100.00%
crates/acp-nats/src/agent/test_support.rs                                               267       0  100.00%
crates/acp-nats/src/agent/set_session_mode.rs                                            67       0  100.00%
crates/acp-nats/src/agent/cancel.rs                                                     101       0  100.00%
crates/acp-nats/src/agent/ext_notification.rs                                            82       0  100.00%
crates/acp-nats/src/agent/initialize.rs                                                  79       0  100.00%
crates/acp-nats/src/agent/load_session.rs                                                89       0  100.00%
crates/acp-nats/src/agent/new_session.rs                                                 82       0  100.00%
crates/acp-nats/src/agent/prompt.rs                                                     471       0  100.00%
crates/acp-nats-agent/src/connection.rs                                                1260       1  99.92%   590
crates/trogon-gateway/src/source/slack/socket_mode.rs                                   716       0  100.00%
crates/trogon-gateway/src/source/slack/signature.rs                                      66       0  100.00%
crates/trogon-gateway/src/source/slack/config.rs                                         58       0  100.00%
crates/trogon-gateway/src/source/slack/server.rs                                        854       0  100.00%
crates/acp-nats/src/nats/subjects/global/session_list.rs                                  6       0  100.00%
crates/acp-nats/src/nats/subjects/global/session_new.rs                                   6       0  100.00%
crates/acp-nats/src/nats/subjects/global/ext.rs                                           9       0  100.00%
crates/acp-nats/src/nats/subjects/global/authenticate.rs                                  6       0  100.00%
crates/acp-nats/src/nats/subjects/global/ext_notify.rs                                    9       0  100.00%
crates/acp-nats/src/nats/subjects/global/initialize.rs                                    6       0  100.00%
crates/acp-nats/src/nats/subjects/global/logout.rs                                        6       0  100.00%
crates/mcp-nats/src/nats/subjects/subscriptions/all_client.rs                             6       0  100.00%
crates/mcp-nats/src/nats/subjects/subscriptions/one_client.rs                             9       0  100.00%
crates/mcp-nats/src/nats/subjects/subscriptions/all_server.rs                             6       0  100.00%
crates/mcp-nats/src/nats/subjects/subscriptions/one_server.rs                             9       0  100.00%
crates/trogon-decider/src/act.rs                                                         62       0  100.00%
crates/trogon-decider/src/decision.rs                                                    27       0  100.00%
crates/trogon-decider/src/testing.rs                                                    654       0  100.00%
crates/trogon-decider/src/events.rs                                                      49       0  100.00%
crates/trogon-decider/src/lib.rs                                                        138       0  100.00%
crates/trogon-std/src/time/mock.rs                                                      125       0  100.00%
crates/trogon-std/src/time/system.rs                                                     31       0  100.00%
crates/trogon-gateway/src/source/standard_webhooks.rs                                   138       0  100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_envelope_encode_error.rs       14       0  100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_payload_decode.rs               3       0  100.00%
crates/trogon-decider-runtime/src/snapshot/codec/encoded_snapshot.rs                    117       0  100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_decode_error.rs                49       0  100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_envelope_decode_error.rs       28       0  100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_encode_error.rs                36       0  100.00%
crates/trogon-gateway/src/source/microsoft_graph/client_state.rs                         30       0  100.00%
crates/trogon-gateway/src/source/microsoft_graph/server.rs                              325       0  100.00%
crates/trogon-decider-nats/src/snapshot_store.rs                                        861      27  96.86%   208-210, 248-250, 361-367, 449, 585, 590, 686-688, 694-696, 730-731, 741-742, 761, 789-790
crates/trogon-decider-nats/src/stream_store.rs                                          659      18  97.27%   70-72, 245, 273-274, 277, 293-297, 463-464, 505, 518-522
crates/trogon-decider-nats/src/store.rs                                                 127      47  62.99%   33-158
crates/mcp-nats/src/nats/subjects/client/create_elicitation.rs                           12       0  100.00%
crates/mcp-nats/src/nats/subjects/client/initialized.rs                                  12       0  100.00%
crates/mcp-nats/src/nats/subjects/client/progress.rs                                     12       0  100.00%
crates/mcp-nats/src/nats/subjects/client/ping.rs                                          9       0  100.00%
crates/mcp-nats/src/nats/subjects/client/create_message.rs                               12       0  100.00%
crates/mcp-nats/src/nats/subjects/client/cancelled.rs                                    12       0  100.00%
crates/mcp-nats/src/nats/subjects/client/roots_list_changed.rs                           12       0  100.00%
crates/mcp-nats/src/nats/subjects/client/list_roots.rs                                   12       0  100.00%
crates/mcp-nats/src/telemetry/transport.rs                                                6       0  100.00%
crates/acp-nats-server/src/config.rs                                                    126       3  97.62%   41-43
crates/acp-nats-server/src/transport.rs                                                1915     106  94.46%   253, 512, 530, 557, 611, 616, 635, 647, 766, 789-791, 843, 860-863, 958-961, 1035, 1038, 1041, 1050, 1054, 1057, 1060-1063, 1082, 1114-1117, 1125-1130, 1142-1146, 1150-1159, 1171-1172, 1190-1191, 1201, 1217-1221, 1249-1255, 1275-1277, 1282-1286, 1289-1294, 1311, 1313-1314, 1396-1397, 1409-1410, 1430-1431, 1483-1499, 2204, 2248, 2301, 2357, 2370
crates/acp-nats-server/src/connection.rs                                                182      36  80.22%   95-102, 107-122, 138, 140-141, 146, 155-156, 161, 165, 169, 172, 180, 184, 187, 190-194, 232
crates/acp-nats-server/src/acp_connection_id.rs                                          37       0  100.00%
crates/acp-nats-server/src/main.rs                                                      896      10  98.88%   100, 231-238, 437
crates/trogon-gateway/src/source/sentry/signature.rs                                     42       0  100.00%
crates/trogon-gateway/src/source/sentry/sentry_client_secret.rs                          17       0  100.00%
crates/trogon-gateway/src/source/sentry/server.rs                                       308       0  100.00%
crates/mcp-nats-server/src/main.rs                                                      357     127  64.43%   149-166, 202-204, 214, 220-221, 228-231, 255-257, 261-270, 292-305, 310-358, 489, 492, 500-542
crates/mcp-nats-server/src/allowed_host.rs                                               87       0  100.00%
crates/mcp-nats-server/src/config.rs                                                    257       0  100.00%
crates/trogon-gateway/src/source/linear/signature.rs                                     54       1  98.15%   16
crates/trogon-gateway/src/source/linear/server.rs                                       386       0  100.00%
crates/trogon-gateway/src/source/linear/config.rs                                        17       0  100.00%
crates/trogon-gateway/src/source/telegram/signature.rs                                   27       0  100.00%
crates/trogon-gateway/src/source/telegram/config.rs                                      89       0  100.00%
crates/trogon-gateway/src/source/telegram/registration.rs                               313       0  100.00%
crates/trogon-gateway/src/source/telegram/server.rs                                     339       0  100.00%
crates/trogon-decider-runtime/src/headers/mod.rs                                         74       0  100.00%
crates/trogon-decider-runtime/src/headers/header_name.rs                                 28       0  100.00%
crates/trogon-decider-runtime/src/headers/header_map.rs                                  54       3  94.44%   20-22
crates/trogon-decider-runtime/src/headers/header_value.rs                                34       0  100.00%
crates/acp-nats/src/telemetry/metrics.rs                                                 53       0  100.00%
crates/acp-nats/src/nats/parsing.rs                                                     278       1  99.64%   151
crates/acp-nats/src/nats/mod.rs                                                          23       0  100.00%
crates/acp-nats/src/nats/extensions.rs                                                    3       0  100.00%
crates/mcp-nats-stdio/src/config.rs                                                     149       0  100.00%
crates/mcp-nats-stdio/src/main.rs                                                       204       0  100.00%
crates/trogon-gateway/src/source/github/server.rs                                       328       0  100.00%
crates/trogon-gateway/src/source/github/config.rs                                        17       0  100.00%
crates/trogon-gateway/src/source/github/signature.rs                                     50       0  100.00%
crates/mcp-nats/src/client.rs                                                            31       0  100.00%
crates/mcp-nats/src/mcp_peer_id.rs                                                       31       0  100.00%
crates/mcp-nats/src/mcp_prefix.rs                                                        34       0  100.00%
crates/mcp-nats/src/transport.rs                                                        698       0  100.00%
crates/mcp-nats/src/config.rs                                                           110       0  100.00%
crates/mcp-nats/src/server.rs                                                            31       0  100.00%
crates/mcp-nats/src/jsonrpc.rs                                                           22       0  100.00%
TOTAL                                                                                 42078     673  98.40%

Diff against main

Filename                                                                              Stmts    Miss  Cover
----------------------------------------------------------------------------------  -------  ------  --------
crates/trogon-gateway/src/source_integration_id.rs                                       -6      -1  +1.28%
crates/trogon-gateway/src/source_status.rs                                               -4       0  +100.00%
crates/trogon-gateway/src/config.rs                                                     -43      -4  +0.13%
crates/trogon-gateway/src/main.rs                                                        -5       0  +100.00%
crates/trogon-gateway/src/source/gitlab/gitlab_signing_token.rs                         -13       0  +100.00%
crates/trogon-nats/src/lease/ttl.rs                                                      -5       0  +100.00%
crates/trogon-nats/src/lease/mod.rs                                                     -38       0  -0.17%
crates/trogon-nats/src/lease/renew_interval.rs                                           -4       0  +100.00%
crates/trogon-nats/src/subject_token_violation.rs                                        -6       0  +100.00%
crates/trogon-nats/src/messaging.rs                                                     -27       0  -0.02%
crates/trogon-nats/src/connect.rs                                                       -12      -3  +2.26%
crates/trogon-nats/src/mocks.rs                                                          -3       0  +100.00%
crates/trogon-gateway/src/source/incidentio/incidentio_signing_secret.rs                -11       0  +100.00%
crates/trogonai-proto/src/scheduler/schedules/codec.rs                                   -6       0  +100.00%
crates/trogon-telemetry/src/lib.rs                                                      +11      +1  +0.14%
crates/trogon-telemetry/src/log.rs                                                       +2       0  +0.04%
crates/trogon-scheduler/src/commands/domain/schedule_id.rs                              -10       0  +100.00%
crates/trogon-scheduler/src/commands/domain/message.rs                                   -5       0  +100.00%
crates/trogon-scheduler/src/commands/domain/schedule.rs                                 -98       0  +100.00%
crates/acp-nats/src/acp_prefix.rs                                                        -4       0  +100.00%
crates/acp-nats/src/ext_method_name.rs                                                   -3       0  +100.00%
crates/acp-nats/src/pending_prompt_waiters.rs                                            -3       0  +100.00%
crates/acp-nats/src/session_id.rs                                                        -3       0  +100.00%
crates/trogon-decider-runtime/src/snapshot/snapshot_type.rs                              -5       0  +100.00%
crates/trogonai-proto/src/convert.rs                                                     -4       0  +100.00%
crates/trogon-gateway/src/source/notion/server.rs                                        -8      -4  +1.23%
crates/trogon-gateway/src/source/notion/signature.rs                                    -11      -1  +1.79%
crates/trogon-gateway/src/source/notion/verification_token.rs                           -20       0  +100.00%
crates/acp-nats/src/client/ext.rs                                                       -12       0  -0.11%
crates/acp-nats/src/client/terminal_kill.rs                                             -12       0  +100.00%
crates/acp-nats/src/client/request_permission.rs                                        -10       0  +100.00%
crates/acp-nats/src/client/fs_read_text_file.rs                                         -10       0  +100.00%
crates/acp-nats/src/client/terminal_create.rs                                           -10       0  +100.00%
crates/acp-nats/src/client/terminal_wait_for_exit.rs                                    -14       0  +100.00%
crates/acp-nats/src/client/terminal_release.rs                                          -12       0  +100.00%
crates/acp-nats/src/client/fs_write_text_file.rs                                        -10       0  +100.00%
crates/trogon-gateway/src/source/twitter/signature.rs                                   -11       0  +100.00%
crates/trogon-decider-runtime/src/stream/stream_position.rs                              -3       0  +100.00%
crates/trogon-decider-runtime/src/stream/read_stream.rs                                  -3       0  +100.00%
crates/acp-nats/src/jetstream/provision.rs                                               -1       0  +100.00%
crates/trogon-std/src/secret_string.rs                                                   -3       0  +100.00%
crates/trogon-std/src/duration.rs                                                        -3       0  +100.00%
crates/trogon-decider-runtime/src/execution.rs                                          -37       0  +100.00%
crates/trogon-gateway/src/source/discord/config.rs                                       -3       0  +100.00%
crates/trogon-scheduler/src/commands/resume_schedule.rs                                  -8       0  +100.00%
crates/trogon-scheduler/src/commands/state.rs                                            -6       0  +100.00%
crates/trogon-scheduler/src/commands/pause_schedule.rs                                   -8       0  +100.00%
crates/trogon-scheduler/src/commands/create_schedule.rs                                 -13       0  +100.00%
crates/trogon-scheduler/src/commands/remove_schedule.rs                                  -7       0  +100.00%
crates/acp-nats-agent/src/connection.rs                                                 -10       0  -0.00%
crates/trogon-gateway/src/source/slack/socket_mode.rs                                   -15       0  +100.00%
crates/trogon-gateway/src/source/slack/signature.rs                                     -11       0  +100.00%
crates/trogon-gateway/src/source/slack/config.rs                                        -10       0  +100.00%
crates/trogon-decider/src/decision.rs                                                   -10       0  +100.00%
crates/trogon-decider/src/testing.rs                                                     -6       0  +100.00%
crates/trogon-decider/src/lib.rs                                                         -5       0  +100.00%
crates/trogon-gateway/src/source/standard_webhooks.rs                                   -34       0  +100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_envelope_encode_error.rs       -6       0  +100.00%
crates/trogon-decider-runtime/src/snapshot/codec/encoded_snapshot.rs                     -3       0  +100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_decode_error.rs               -16       0  +100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_envelope_decode_error.rs      -10       0  +100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_encode_error.rs               -13       0  +100.00%
crates/trogon-decider-nats/src/snapshot_store.rs                                       -108     -90  +8.94%
crates/trogon-decider-nats/src/stream_store.rs                                          -66     -66  +8.85%
crates/trogon-decider-nats/src/store.rs                                                 -18     -18  +7.82%
crates/acp-nats-server/src/config.rs                                                    -11      -6  +4.19%
crates/acp-nats-server/src/transport.rs                                                 -30       0  -0.09%
crates/acp-nats-server/src/connection.rs                                                +11      +4  -1.07%
crates/acp-nats-server/src/acp_connection_id.rs                                          -8       0  +100.00%
crates/trogon-gateway/src/source/sentry/signature.rs                                    -12       0  +100.00%
crates/trogon-gateway/src/source/sentry/server.rs                                        -3       0  +100.00%
crates/mcp-nats-server/src/allowed_host.rs                                               -3       0  +100.00%
crates/mcp-nats-server/src/config.rs                                                    -19       0  +100.00%
crates/trogon-gateway/src/source/telegram/signature.rs                                   -5       0  +100.00%
crates/trogon-gateway/src/source/telegram/config.rs                                     -20       0  +100.00%
crates/trogon-gateway/src/source/telegram/registration.rs                               -14       0  +100.00%
crates/trogon-decider-runtime/src/headers/header_name.rs                                 -5       0  +100.00%
crates/trogon-decider-runtime/src/headers/header_value.rs                                -3       0  +100.00%
crates/mcp-nats-stdio/src/config.rs                                                     -11       0  +100.00%
crates/mcp-nats-stdio/src/main.rs                                                        -8       0  +100.00%
crates/trogon-gateway/src/source/github/signature.rs                                    -11       0  +100.00%
crates/mcp-nats/src/mcp_peer_id.rs                                                       -2       0  +100.00%
crates/mcp-nats/src/mcp_prefix.rs                                                        -2       0  +100.00%
crates/mcp-nats/src/transport.rs                                                        -24       0  +100.00%
TOTAL                                                                                 -1061    -188  +0.40%

Results for commit: 39b4631

Minimum allowed coverage is 95%

♻️ This comment has been updated with latest results

yordis added 2 commits June 8, 2026 14:42
Replace ad-hoc String formatting in connection and telemetry shutdown paths with structured error types so sources chain correctly in logs and display output.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@coderabbitai

coderabbitai Bot commented Jun 8, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@yordis, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 37 minutes and 34 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 95ee99ed-22a2-46b5-9385-833a9689bdd6

📥 Commits

Reviewing files that changed from the base of the PR and between 25dd712 and 39b4631.

📒 Files selected for processing (3)
  • rsworkspace/crates/acp-nats-server/src/connection.rs
  • rsworkspace/crates/acp-nats/src/jetstream/provision.rs
  • rsworkspace/crates/trogon-gateway/src/main.rs

Walkthrough

Workspace dependencies add anyhow and thiserror, and many crates replace manual error formatting/source plumbing with thiserror-derived enums. Several binaries also switch from boxed dynamic errors to anyhow::Result, with tests updated for the new error variants and messages.

Changes

Workspace-wide error handling refactor

Layer / File(s) Summary
Workspace and crate dependency wiring
rsworkspace/Cargo.toml, rsworkspace/crates/*/Cargo.toml
Workspace pins and crate manifests add anyhow and thiserror where the refactor needs them.
ACP and MCP core error types
rsworkspace/crates/acp-nats/src/*, rsworkspace/crates/mcp-nats/src/*, rsworkspace/crates/mcp-nats-server/src/allowed_host.rs
ACP/MCP validation and transport errors move to thiserror enums, with conversion helpers and tests updated for the new variants.
ACP server and stdio entrypoints
rsworkspace/crates/acp-nats-server/src/*, rsworkspace/crates/acp-nats-stdio/src/*
ACP server and stdio binaries adopt typed shutdown errors and anyhow::Result, and structured logging/error propagation is updated.
Gateway config and command entrypoints
rsworkspace/crates/trogon-gateway/src/config.rs, rsworkspace/crates/trogon-gateway/src/main.rs
Gateway config validation and top-level commands switch to derived errors, ValidationErrors, and anyhow-based entrypoints.
Gateway source error types
rsworkspace/crates/trogon-gateway/src/source/*
Gateway source-specific validation, signature, webhook, and registration errors are rewritten with thiserror and source annotations.
Decider runtime, NATS, and shared error types
rsworkspace/crates/trogon-decider-runtime/src/*, rsworkspace/crates/trogon-decider-nats/src/*, rsworkspace/crates/trogon-nats/src/*, rsworkspace/crates/trogon-scheduler/src/*, rsworkspace/crates/trogon-std/src/*
Runtime, NATS, scheduler, and shared utility errors move from manual trait impls to derived error types across the workspace.
Decider docs, telemetry, and proto error plumbing
rsworkspace/crates/trogon-decider/src/*, rsworkspace/crates/trogon-telemetry/src/*, rsworkspace/crates/trogonai-proto/src/*
Decider examples/tests, telemetry shutdown handling, and proto conversion errors switch to typed error structures and anyhow/thiserror usage.

Sequence Diagram(s)

Rabbit note: no sequence diagram needed for this refactor-heavy PR.

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~90+ minutes

Possibly related PRs

  • TrogonStack/trogonai#192 — Both PRs touch scheduler create-schedule error handling, including CreateScheduleDecideError.
  • TrogonStack/trogonai#21 — Both PRs involve the ACP NATS value-object error types now converted to thiserror enums.
  • TrogonStack/trogonai#173 — Both PRs modify trogon-decider-nats error enums in snapshot_store.rs, store.rs, and stream_store.rs.

Suggested labels

rust:coverage-baseline-reset

Poem

🐰 I hopped through errors old and new,
and spun their strings to something true.
With thiserror stitched and anyhow bright,
the burrow’s paths are clearer tonight.
Thump-thump, the logs now softly gleam!

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch yordis/kathmandu-v1

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 25dd712. Configure here.

Comment thread rsworkspace/crates/acp-nats-server/src/connection.rs
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis yordis added the rust:coverage-baseline-reset Relax Rust coverage gate to establish a new baseline label Jun 8, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
rsworkspace/crates/trogon-nats/src/messaging.rs (1)

317-319: ⚖️ Poor tradeoff

Consider preserving typed error context in PublishOperationError.

PublishOperationError(pub String) discards the original typed error. The usages at lines 287 and 306 call .to_string() on async_nats::PublishError and async_nats::FlushError, losing the error chain. Consider wrapping a typed error or using Box<dyn std::error::Error + Send + Sync> to preserve context.

This is outside the immediate scope of this derive-migration PR but would align better with the coding guideline: "Never discard error context by converting a typed error into a string."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@rsworkspace/crates/trogon-nats/src/messaging.rs` around lines 317 - 319,
PublishOperationError currently stores a plain String which drops typed error
context; change its inner type to a boxed error (e.g., PublishOperationError(pub
Box<dyn std::error::Error + Send + Sync>)) and update the error construction
sites (where async_nats::PublishError and async_nats::FlushError are converted
via .to_string() around the PublishOperationError instantiation) to wrap the
original errors with Box::new(err) instead of calling to_string(); ensure the
error derives/impls (thiserror::Error/Display) delegate to the boxed source so
the error chain is preserved and consider adding From impls or constructors for
ergonomic conversion from async_nats errors.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@rsworkspace/crates/acp-nats/src/jetstream/provision.rs`:
- Around line 6-8: ProvisionError currently stores a flattened String; change it
to a typed error that preserves the underlying JetStream SDK error and stream
id—replace the tuple-struct ProvisionError(pub String) with a struct or enum
variant like ProvisionError { stream: String, #[source] source: Box<dyn
std::error::Error + Send + Sync> } (or the concrete SDK error type if available)
and update the code that constructs it (the site using format! on the source) to
supply the stream and the original error in the source field instead of
formatting to a String so source() chaining is preserved.

In `@rsworkspace/crates/trogon-gateway/src/main.rs`:
- Line 47: The current alias SourceResult = (&'static str, Result<(), String>)
and usages that call map_err(|e| e.to_string()) or format!(...) discard error
types and their source chains; change SourceResult to hold a preserved error
type (e.g., Result<(), Box<dyn std::error::Error + Send + Sync>> or a concrete
typed error enum) and update all places that convert errors to String to instead
wrap or propagate the original error (replace map_err(|e| e.to_string()) with
map_err(|e| Box::new(e)) or return the typed error variant), and update any code
handling SourceResult to account for the boxed/typed error so root-cause context
is preserved (apply this to the three occurrences you noted plus any other
map_err/format! sites).

---

Nitpick comments:
In `@rsworkspace/crates/trogon-nats/src/messaging.rs`:
- Around line 317-319: PublishOperationError currently stores a plain String
which drops typed error context; change its inner type to a boxed error (e.g.,
PublishOperationError(pub Box<dyn std::error::Error + Send + Sync>)) and update
the error construction sites (where async_nats::PublishError and
async_nats::FlushError are converted via .to_string() around the
PublishOperationError instantiation) to wrap the original errors with
Box::new(err) instead of calling to_string(); ensure the error derives/impls
(thiserror::Error/Display) delegate to the boxed source so the error chain is
preserved and consider adding From impls or constructors for ergonomic
conversion from async_nats errors.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e433a74f-3f30-4fc2-a62c-a494236baba0

📥 Commits

Reviewing files that changed from the base of the PR and between ddbd203 and 25dd712.

⛔ Files ignored due to path filters (1)
  • rsworkspace/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (113)
  • rsworkspace/Cargo.toml
  • rsworkspace/crates/acp-nats-agent/Cargo.toml
  • rsworkspace/crates/acp-nats-agent/src/connection.rs
  • rsworkspace/crates/acp-nats-server/Cargo.toml
  • rsworkspace/crates/acp-nats-server/src/acp_connection_id.rs
  • rsworkspace/crates/acp-nats-server/src/config.rs
  • rsworkspace/crates/acp-nats-server/src/connection.rs
  • rsworkspace/crates/acp-nats-server/src/main.rs
  • rsworkspace/crates/acp-nats-server/src/transport.rs
  • rsworkspace/crates/acp-nats-stdio/Cargo.toml
  • rsworkspace/crates/acp-nats-stdio/src/main.rs
  • rsworkspace/crates/acp-nats/Cargo.toml
  • rsworkspace/crates/acp-nats/src/acp_prefix.rs
  • rsworkspace/crates/acp-nats/src/client/ext.rs
  • rsworkspace/crates/acp-nats/src/client/fs_read_text_file.rs
  • rsworkspace/crates/acp-nats/src/client/fs_write_text_file.rs
  • rsworkspace/crates/acp-nats/src/client/request_permission.rs
  • rsworkspace/crates/acp-nats/src/client/terminal_create.rs
  • rsworkspace/crates/acp-nats/src/client/terminal_kill.rs
  • rsworkspace/crates/acp-nats/src/client/terminal_release.rs
  • rsworkspace/crates/acp-nats/src/client/terminal_wait_for_exit.rs
  • rsworkspace/crates/acp-nats/src/ext_method_name.rs
  • rsworkspace/crates/acp-nats/src/jetstream/provision.rs
  • rsworkspace/crates/acp-nats/src/pending_prompt_waiters.rs
  • rsworkspace/crates/acp-nats/src/session_id.rs
  • rsworkspace/crates/mcp-nats-server/Cargo.toml
  • rsworkspace/crates/mcp-nats-server/src/allowed_host.rs
  • rsworkspace/crates/mcp-nats-server/src/config.rs
  • rsworkspace/crates/mcp-nats-server/src/main.rs
  • rsworkspace/crates/mcp-nats-stdio/Cargo.toml
  • rsworkspace/crates/mcp-nats-stdio/src/config.rs
  • rsworkspace/crates/mcp-nats-stdio/src/main.rs
  • rsworkspace/crates/mcp-nats/Cargo.toml
  • rsworkspace/crates/mcp-nats/src/mcp_peer_id.rs
  • rsworkspace/crates/mcp-nats/src/mcp_prefix.rs
  • rsworkspace/crates/mcp-nats/src/transport.rs
  • rsworkspace/crates/trogon-decider-nats/Cargo.toml
  • rsworkspace/crates/trogon-decider-nats/src/snapshot_store.rs
  • rsworkspace/crates/trogon-decider-nats/src/store.rs
  • rsworkspace/crates/trogon-decider-nats/src/stream_store.rs
  • rsworkspace/crates/trogon-decider-runtime/Cargo.toml
  • rsworkspace/crates/trogon-decider-runtime/src/execution.rs
  • rsworkspace/crates/trogon-decider-runtime/src/headers/from_entries_error.rs
  • rsworkspace/crates/trogon-decider-runtime/src/headers/header_name.rs
  • rsworkspace/crates/trogon-decider-runtime/src/headers/header_value.rs
  • rsworkspace/crates/trogon-decider-runtime/src/snapshot/codec/encoded_snapshot.rs
  • rsworkspace/crates/trogon-decider-runtime/src/snapshot/codec/snapshot_decode_error.rs
  • rsworkspace/crates/trogon-decider-runtime/src/snapshot/codec/snapshot_encode_error.rs
  • rsworkspace/crates/trogon-decider-runtime/src/snapshot/codec/snapshot_envelope_decode_error.rs
  • rsworkspace/crates/trogon-decider-runtime/src/snapshot/codec/snapshot_envelope_encode_error.rs
  • rsworkspace/crates/trogon-decider-runtime/src/snapshot/snapshot_type.rs
  • rsworkspace/crates/trogon-decider-runtime/src/stream/read_stream.rs
  • rsworkspace/crates/trogon-decider-runtime/src/stream/stream_position.rs
  • rsworkspace/crates/trogon-decider/Cargo.toml
  • rsworkspace/crates/trogon-decider/src/decision.rs
  • rsworkspace/crates/trogon-decider/src/lib.rs
  • rsworkspace/crates/trogon-decider/src/testing.rs
  • rsworkspace/crates/trogon-decider/tests/ui/common.rs
  • rsworkspace/crates/trogon-decider/tests/ui/pass/double_given.rs
  • rsworkspace/crates/trogon-gateway/Cargo.toml
  • rsworkspace/crates/trogon-gateway/src/config.rs
  • rsworkspace/crates/trogon-gateway/src/main.rs
  • rsworkspace/crates/trogon-gateway/src/source/discord/config.rs
  • rsworkspace/crates/trogon-gateway/src/source/github/signature.rs
  • rsworkspace/crates/trogon-gateway/src/source/gitlab/gitlab_signing_token.rs
  • rsworkspace/crates/trogon-gateway/src/source/incidentio/incidentio_event_type.rs
  • rsworkspace/crates/trogon-gateway/src/source/incidentio/incidentio_signing_secret.rs
  • rsworkspace/crates/trogon-gateway/src/source/notion/notion_event_type.rs
  • rsworkspace/crates/trogon-gateway/src/source/notion/server.rs
  • rsworkspace/crates/trogon-gateway/src/source/notion/signature.rs
  • rsworkspace/crates/trogon-gateway/src/source/notion/verification_token.rs
  • rsworkspace/crates/trogon-gateway/src/source/sentry/server.rs
  • rsworkspace/crates/trogon-gateway/src/source/sentry/signature.rs
  • rsworkspace/crates/trogon-gateway/src/source/slack/config.rs
  • rsworkspace/crates/trogon-gateway/src/source/slack/signature.rs
  • rsworkspace/crates/trogon-gateway/src/source/slack/socket_mode.rs
  • rsworkspace/crates/trogon-gateway/src/source/standard_webhooks.rs
  • rsworkspace/crates/trogon-gateway/src/source/telegram/config.rs
  • rsworkspace/crates/trogon-gateway/src/source/telegram/registration.rs
  • rsworkspace/crates/trogon-gateway/src/source/telegram/signature.rs
  • rsworkspace/crates/trogon-gateway/src/source/twitter/signature.rs
  • rsworkspace/crates/trogon-gateway/src/source_integration_id.rs
  • rsworkspace/crates/trogon-gateway/src/source_status.rs
  • rsworkspace/crates/trogon-nats/Cargo.toml
  • rsworkspace/crates/trogon-nats/src/connect.rs
  • rsworkspace/crates/trogon-nats/src/jetstream/object_store.rs
  • rsworkspace/crates/trogon-nats/src/lease/lease_config_error.rs
  • rsworkspace/crates/trogon-nats/src/lease/mod.rs
  • rsworkspace/crates/trogon-nats/src/lease/renew_interval.rs
  • rsworkspace/crates/trogon-nats/src/lease/ttl.rs
  • rsworkspace/crates/trogon-nats/src/messaging.rs
  • rsworkspace/crates/trogon-nats/src/mocks.rs
  • rsworkspace/crates/trogon-nats/src/subject_token_violation.rs
  • rsworkspace/crates/trogon-scheduler/Cargo.toml
  • rsworkspace/crates/trogon-scheduler/src/commands/create_schedule.rs
  • rsworkspace/crates/trogon-scheduler/src/commands/domain/message.rs
  • rsworkspace/crates/trogon-scheduler/src/commands/domain/schedule.rs
  • rsworkspace/crates/trogon-scheduler/src/commands/domain/schedule_id.rs
  • rsworkspace/crates/trogon-scheduler/src/commands/pause_schedule.rs
  • rsworkspace/crates/trogon-scheduler/src/commands/remove_schedule.rs
  • rsworkspace/crates/trogon-scheduler/src/commands/resume_schedule.rs
  • rsworkspace/crates/trogon-scheduler/src/commands/state.rs
  • rsworkspace/crates/trogon-std/Cargo.toml
  • rsworkspace/crates/trogon-std/src/duration.rs
  • rsworkspace/crates/trogon-std/src/secret_string.rs
  • rsworkspace/crates/trogon-telemetry/Cargo.toml
  • rsworkspace/crates/trogon-telemetry/src/lib.rs
  • rsworkspace/crates/trogon-telemetry/src/log.rs
  • rsworkspace/crates/trogon-telemetry/src/metric.rs
  • rsworkspace/crates/trogon-telemetry/src/trace.rs
  • rsworkspace/crates/trogonai-proto/Cargo.toml
  • rsworkspace/crates/trogonai-proto/src/convert.rs
  • rsworkspace/crates/trogonai-proto/src/scheduler/schedules/codec.rs

Comment thread rsworkspace/crates/acp-nats/src/jetstream/provision.rs Outdated
Comment thread rsworkspace/crates/trogon-gateway/src/main.rs Outdated
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis merged commit d57fc1c into main Jun 8, 2026
7 checks passed
@yordis
yordis deleted the yordis/kathmandu-v1 branch June 8, 2026 19:13
mariorha added a commit that referenced this pull request Jun 9, 2026
Brings in #207 (ADR taxonomy docs), #208 (derive error implementations
via thiserror), #210 (testcontainers ADR).

Conflict resolutions (converge to main's thiserror direction, keep
platform functionality):
- connect.rs: thiserror derive + keep AuthorizationViolation variant and
  platform's richer connect logic; MAX_RECONNECT_DELAY from crate::constants
- lease_config_error.rs: thiserror derive, keep platform tests
- verification_token.rs: thiserror derive; keep #[allow(dead_code)] on
  latest (lib/bin split makes it dead in the lib crate)
- provision.rs: typed ProvisionError { source: Box<dyn Error> }, keep
  platform's create-and-update behavior

Collateral fixes:
- trogon-wasm-runtime: anyhow pin =1.0.98 -> workspace (=1.0.102)
- acp-nats config.rs tests: AcpPrefixError is now an enum, match the variant

Verified: cargo build --workspace, all workspace tests compile, affected
crate tests pass, cargo clippy --workspace clean.
jramirezhdez02 added a commit that referenced this pull request Jun 19, 2026
PR #208's derive refactor re-added #[cfg(not(coverage))] to the
ProvisionObjectStoreError enum, but NatsObjectStore::provision (only
coverage(off), so still compiled under coverage) returns it — so the
coverage build failed with E0425/E0433 'cannot find type'. Type defs
aren't instrumented, so the enum needs no cfg gate; remove it, restoring
the state established in d6fdd10. Fixes the 'Run tests with coverage' step.
yordis added a commit that referenced this pull request Jun 22, 2026
Brings in #207 (ADR taxonomy docs), #208 (derive error implementations
via thiserror), #210 (testcontainers ADR).

Conflict resolutions (converge to main's thiserror direction, keep
platform functionality):
- connect.rs: thiserror derive + keep AuthorizationViolation variant and
  platform's richer connect logic; MAX_RECONNECT_DELAY from crate::constants
- lease_config_error.rs: thiserror derive, keep platform tests
- verification_token.rs: thiserror derive; keep #[allow(dead_code)] on
  latest (lib/bin split makes it dead in the lib crate)
- provision.rs: typed ProvisionError { source: Box<dyn Error> }, keep
  platform's create-and-update behavior

Collateral fixes:
- trogon-wasm-runtime: anyhow pin =1.0.98 -> workspace (=1.0.102)
- acp-nats config.rs tests: AcpPrefixError is now an enum, match the variant

Verified: cargo build --workspace, all workspace tests compile, affected
crate tests pass, cargo clippy --workspace clean.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 22, 2026
PR #208's derive refactor re-added #[cfg(not(coverage))] to the
ProvisionObjectStoreError enum, but NatsObjectStore::provision (only
coverage(off), so still compiled under coverage) returns it — so the
coverage build failed with E0425/E0433 'cannot find type'. Type defs
aren't instrumented, so the enum needs no cfg gate; remove it, restoring
the state established in d6fdd10. Fixes the 'Run tests with coverage' step.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

rust:coverage-baseline-reset Relax Rust coverage gate to establish a new baseline

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant