Skip to content

refactor(acp-nats): route the byte-stream boundary through the SDK dispatch enums#478

Merged
yordis merged 6 commits into
mainfrom
yordis/acp-nats-rust-improvements
Jul 9, 2026
Merged

refactor(acp-nats): route the byte-stream boundary through the SDK dispatch enums#478
yordis merged 6 commits into
mainfrom
yordis/acp-nats-rust-improvements

Conversation

@yordis

@yordis yordis commented Jul 9, 2026

Copy link
Copy Markdown
Member
  • The upstream SDK already maintains the ACP method table on its ClientRequest/ClientNotification enums; re-enumerating it per method at the byte-stream boundary meant every new spec method had to be wired in three places instead of two, and a forgotten registration was silently unreachable rather than answering method_not_found.
  • The byte-stream boundary is where methods actually flow as JSON-RPC on a wire, so the SDK's canonical method table is the right dispatcher there. The NATS leg is untouched: its method identity is the subject token (one identity for routing, decode context, telemetry, and ACLs), per ADR 0003/0004.
  • A method-vocabulary rename on the NATS leg was implemented and then reverted within this PR once its justification was re-examined; ADR 0022 records the rejection rationale so the proposal does not resurface without new evidence.

yordis added 2 commits July 9, 2026 00:39
…tream boundary

The SDK's ClientRequest/ClientNotification enums already carry the method
table, so the per-method shim functions and registrations only added a
third place to forget when the spec grows. ADR 0020 amended.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Three private naming dialects made telemetry and conformance checks speak
a language the spec does not, and blocked SDK enum decoding. The labels
are never serialized onto the NATS wire, so peers upgrade independently.

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

cursor Bot commented Jul 9, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Touches the WebSocket/HTTP/stdio ACP boundary dispatch path; behavior change for unregistered methods (method_not_found) is intentional but affects all inbound client RPC at those edges.

Overview
Replaces per-method SDK registrations in connect_agent_boundary with one on_receive_dispatch handler that matches ClientRequest / ClientNotification and delegates to AgentHandler. Unhandled request variants now return method_not_found instead of being silently unreachable. respond_in_task serializes typed handler results to serde_json::Value for the enum’s response type.

ADR 0020 is amended to describe this dispatch shape; acp-conformance’s upgrade ritual now says new methods add a boundary match arm (not a separate registration). ADR 0022 records the rejection of renaming NATS subject tokens to spec-canonical method names—the NATS leg keeps subject-token identity; canonical names stay on JSON-RPC byte-stream boundaries only.

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

@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

Simplifies ACP-over-NATS by consolidating per-method inbound boundary registrations into a single on_receive_dispatch handler, adopting canonical slash-style ACP wire-method names with an underscore extension prefix, updating agent/client handler call sites and tests accordingly, and adding PLAN.md plus ADR 0022 documentation.

Changes

ACP-over-NATS wire method and dispatch consolidation

Layer / File(s) Summary
Planning notes and ADR documentation
PLAN.md, docs/adr/0020-acp-sdk-1x-boundary-and-bridge-traits.md, docs/adr/0022-canonical-acp-wire-methods-on-nats.md, docs/architecture/acp-conformance.md
Adds a plan document for consolidating ACP-over-NATS, amends ADR 0020 for the single-dispatch inbound adapter, adds ADR 0022 defining canonical wire-method names, and updates conformance docs.
Single dispatch handler for inbound boundary
rsworkspace/crates/acp-nats/src/boundary/connect_agent_boundary.rs, rsworkspace/crates/acp-nats-agent/src/connection/tests.rs
Replaces per-method registration chains with a centralized handle_client_dispatch matching Dispatch<ClientRequest, ClientNotification>, updates respond_in_task/notification handling, and updates test helpers to treat "session/cancel" as the notification method.
Canonical wire_method naming
rsworkspace/crates/acp-nats/src/nats/parsing.rs, rsworkspace/crates/acp-nats/src/nats/parsing/tests.rs
Changes GlobalAgentMethod, SessionAgentMethod, and ClientMethod wire_method() outputs to slash-style canonical names and underscore-prefixed extension names, with updated tests.
Agent handler call sites
rsworkspace/crates/acp-nats/src/agent/list_sessions.rs, .../new_session.rs, .../providers_disable.rs, .../providers_list.rs, .../providers_set.rs, .../ext_method.rs
Replaces hardcoded RPC method strings with values derived from GlobalAgentMethod::wire_method().
Client-side extension subject renaming
rsworkspace/crates/acp-nats/src/client/ext.rs, .../client/ext/tests.rs, .../client/ext_session_prompt_response.rs, .../client/ext_session_prompt_response/tests.rs
Updates extension request/notification wire subjects and decoding paths to the underscore-prefixed format, with matching test updates.

Estimated code review effort: 3 (Moderate) | ~30 minutes

Sequence Diagram(s)

sequenceDiagram
  participant SDK
  participant OnReceiveDispatch
  participant handle_client_dispatch
  participant AgentHandler
  SDK->>OnReceiveDispatch: Dispatch<ClientRequest, ClientNotification>
  OnReceiveDispatch->>handle_client_dispatch: forward dispatch
  handle_client_dispatch->>AgentHandler: matched request variant via respond_in_task
  AgentHandler-->>handle_client_dispatch: serialized result
  handle_client_dispatch-->>SDK: response or method_not_found
Loading

Possibly related PRs

  • TrogonStack/trogonai#12: Both PRs touch new_session.rs wiring, with the main PR converting jsonrpc_call method construction to canonical GlobalAgentMethod::SessionNew.wire_method().
  • TrogonStack/trogonai#48: Both PRs change underscore-prefixed extension wire-subject/method handling on the same ext dispatch and wiring points.
  • TrogonStack/trogonai#68: Main PR's canonicalization changes in nats/parsing.rs build directly on the GlobalAgentMethod/SessionAgentMethod split introduced in the related PR.

Poem

A rabbit hops through wires and code,
One dispatch handler, one tidy road. 🐇
Slashes replace the dots of old,
"_ext" now where "ext." was told.
Hop, hop—canonical names align,
The burrow's tidy, the tests all shine!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main refactor: routing the byte-stream boundary through SDK dispatch enums.
Description check ✅ Passed The description is directly related to the boundary refactor and NATS method handling changes.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch yordis/acp-nats-rust-improvements

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

badge

Code Coverage Summary

Details
Filename                                                                                  Stmts    Miss  Cover    Missing
--------------------------------------------------------------------------------------  -------  ------  -------  ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
crates/a2a-nats/src/push/push_notification_config.rs                                          6       0  100.00%
crates/a2a-nats/src/push/dlq_dedup.rs                                                        51       1  98.04%   79
crates/a2a-nats/src/push/idempotency_key_header.rs                                           16       0  100.00%
crates/a2a-nats/src/push/dlq.rs                                                              56       0  100.00%
crates/a2a-nats/src/push/push_delivery_semantics_registry.rs                                 17       0  100.00%
crates/a2a-nats/src/push/target.rs                                                           19       0  100.00%
crates/a2a-nats/src/push/caller_id.rs                                                        41       0  100.00%
crates/a2a-nats/src/push/delivery_semantics.rs                                               98       0  100.00%
crates/a2a-nats/src/push/push_payload.rs                                                     18       0  100.00%
crates/a2a-nats/src/push/dispatch_error.rs                                                   24       0  100.00%
crates/a2a-nats/src/push/push_notification_config_id.rs                                      17       0  100.00%
crates/a2a-nats/src/push/nats_push_subject.rs                                                12       0  100.00%
crates/a2a-nats/src/push/terminal_push_task_state.rs                                         17       0  100.00%
crates/a2a-nats/src/push/status_transition_id.rs                                             15       0  100.00%
crates/a2a-nats/src/push/push_notification_target.rs                                         32       0  100.00%
crates/a2a-nats/src/push/push_idempotency_key.rs                                             43       0  100.00%
crates/a2a-nats/src/push/authentication_header.rs                                            31       0  100.00%
crates/trogon-gateway/src/source/standard_webhooks.rs                                       138       0  100.00%
crates/trogon-scheduler-domain/src/subject.rs                                                26       0  100.00%
crates/a2a-nats-http/src/sse.rs                                                              44      27  38.64%   15-51, 61-62, 65-68
crates/a2a-nats-http/src/headers.rs                                                         129       1  99.22%   159
crates/a2a-nats-http/src/main.rs                                                              1       0  100.00%
crates/a2a-nats-http/src/rest.rs                                                            316       8  97.47%   123-126, 282-285
crates/a2a-nats-http/src/router.rs                                                           55      13  76.36%   60-63, 69-79
crates/a2a-nats-http/src/runtime.rs                                                           8       8  0.00%    60-130
crates/a2a-nats/src/client/error.rs                                                          14       0  100.00%
crates/a2a-nats/src/client/streaming.rs                                                      73       0  100.00%
crates/a2a-nats/src/client/resubscribe.rs                                                    28       0  100.00%
crates/a2a-nats/src/client/wire.rs                                                           13       0  100.00%
crates/a2a-nats/src/client/event_stream.rs                                                   76       0  100.00%
crates/a2a-nats/src/client/gateway_headers.rs                                                19       0  100.00%
crates/a2a-nats/src/client/unary.rs                                                          39       1  97.44%   57
crates/a2a-nats/src/client/handle.rs                                                        218       0  100.00%
crates/acp-nats-stdio/src/main.rs                                                            56       8  85.71%   69, 112-119, 131
crates/acp-nats-stdio/src/config.rs                                                          15       0  100.00%
crates/acp-nats/src/agent/fork_session.rs                                                    16       0  100.00%
crates/acp-nats/src/agent/logout.rs                                                           5       0  100.00%
crates/acp-nats/src/agent/new_session.rs                                                      5       0  100.00%
crates/acp-nats/src/agent/bridge.rs                                                         138       4  97.10%   119-122
crates/acp-nats/src/agent/js_request.rs                                                      73       6  91.78%   84-89
crates/acp-nats/src/agent/set_session_config_option.rs                                       16       0  100.00%
crates/acp-nats/src/agent/load_session.rs                                                    16       0  100.00%
crates/acp-nats/src/agent/set_session_mode.rs                                                16       0  100.00%
crates/acp-nats/src/agent/cancel.rs                                                          12       0  100.00%
crates/acp-nats/src/agent/ext_notification.rs                                                12       0  100.00%
crates/acp-nats/src/agent/delete_session.rs                                                  16       0  100.00%
crates/acp-nats/src/agent/list_sessions.rs                                                    5       0  100.00%
crates/acp-nats/src/agent/providers_list.rs                                                   5       0  100.00%
crates/acp-nats/src/agent/authenticate.rs                                                     5       0  100.00%
crates/acp-nats/src/agent/providers_disable.rs                                                5       0  100.00%
crates/acp-nats/src/agent/providers_set.rs                                                    5       0  100.00%
crates/acp-nats/src/agent/resume_session.rs                                                  16       0  100.00%
crates/acp-nats/src/agent/rpc_call.rs                                                        23       0  100.00%
crates/acp-nats/src/agent/ext_method.rs                                                      12       0  100.00%
crates/acp-nats/src/agent/close_session.rs                                                   16       0  100.00%
crates/acp-nats/src/agent/prompt.rs                                                         156       7  95.51%   202-208
crates/acp-nats/src/agent/test_support.rs                                                   194       0  100.00%
crates/acp-nats/src/agent/initialize.rs                                                       6       0  100.00%
crates/ard-nats/src/catalog_index.rs                                                         82       2  97.56%   37, 104
crates/ard-nats/src/catalog_subject.rs                                                       14       3  78.57%   19-21
crates/ard-nats/src/memory_catalog_store.rs                                                  32       0  100.00%
crates/ard-nats/src/catalog_event.rs                                                         71       0  100.00%
crates/ard-nats/src/store.rs                                                                  3       0  100.00%
crates/a2a-nats/src/nats/subjects/agents/tasks/cancel.rs                                     15       0  100.00%
crates/a2a-nats/src/nats/subjects/agents/tasks/get.rs                                        15       0  100.00%
crates/a2a-nats/src/nats/subjects/agents/tasks/list.rs                                       15       0  100.00%
crates/a2a-nats/src/nats/subjects/agents/tasks/resubscribe.rs                                15       0  100.00%
crates/a2a-pack/src/agent_card_schema.rs                                                     40       0  100.00%
crates/a2a-pack/src/resource_tuples.rs                                                      152       0  100.00%
crates/a2a-pack/src/agent_card_read.rs                                                       23       0  100.00%
crates/mcp-nats-server/src/config.rs                                                         58       0  100.00%
crates/mcp-nats-server/src/runtime.rs                                                       268      86  67.91%   146-164, 200-202, 220-221, 232, 265-269, 273-282, 311-319, 324-359, 385-396
crates/mcp-nats-server/src/allowed_host.rs                                                   52       0  100.00%
crates/mcp-nats-server/src/main.rs                                                            1       1  0.00%    67
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_payload_decode.rs                   3       0  100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_envelope_encode_error.rs            3       0  100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_envelope_decode_error.rs            6       0  100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_encode_error.rs                    16       0  100.00%
crates/trogon-decider-runtime/src/snapshot/codec/encoded_snapshot.rs                         44       0  100.00%
crates/trogon-decider-runtime/src/snapshot/codec/snapshot_decode_error.rs                    19       0  100.00%
crates/a2a-gateway/src/gw_pull_backpressure.rs                                              209       3  98.56%   504, 704, 717
crates/a2a-gateway/src/gw_ingress_stream.rs                                                 144       4  97.22%   319-321, 536
crates/a2a-gateway/src/runtime.rs                                                            11       0  100.00%
crates/a2a-gateway/src/lib.rs                                                                 3       0  100.00%
crates/a2a-gateway/src/main.rs                                                                1       0  100.00%
crates/a2a-gateway/src/config.rs                                                             57       0  100.00%
crates/a2a-gateway/src/push_dlq_mirror.rs                                                   133      16  87.97%   162-166, 218, 223-226, 236, 261, 382-389
crates/a2a-gateway/src/aauth.rs                                                             285       0  100.00%
crates/a2a-gateway/src/agent_card_surface.rs                                                  3       0  100.00%
crates/a2a-gateway/src/audit_ingress.rs                                                     110       0  100.00%
crates/a2a-gateway/src/jwt_caller_identity.rs                                               151       4  97.35%   165-169, 182-186
crates/trogon-gateway/src/source/incidentio/incidentio_signing_secret.rs                     22       0  100.00%
crates/trogon-gateway/src/source/incidentio/server.rs                                        72       0  100.00%
crates/trogon-gateway/src/source/incidentio/incidentio_event_type.rs                         20       0  100.00%
crates/trogon-gateway/src/source/incidentio/signature.rs                                      8       0  100.00%
crates/trogon-jwks-publisher/src/provider.rs                                                118       0  100.00%
crates/trogon-jwks-publisher/src/publisher.rs                                                92       0  100.00%
crates/trogon-scheduler/src/telemetry/metrics.rs                                             27       0  100.00%
crates/trogon-scheduler/src/telemetry/trace.rs                                               20       0  100.00%
crates/trogon-scheduler/src/projections/schedules/twin.rs                                    53       0  100.00%
crates/trogon-scheduler/src/projections/schedules/mod.rs                                    175       3  98.29%   708-710
crates/trogon-scheduler/src/projections/schedules/storage.rs                                  3       0  100.00%
crates/trogon-scheduler/src/mocks.rs                                                        401      51  87.28%   79, 119-122, 271, 288-291, 333-335, 349-353, 362, 406-410, 462-463, 467, 485-489, 506-509, 552-572
crates/trogon-scheduler/src/config.rs                                                        27       0  100.00%
crates/trogon-scheduler/src/error.rs                                                         83      12  85.54%   131-133, 152-154, 159-161, 176-180
crates/trogon-scheduler/src/nats.rs                                                          11       0  100.00%
crates/acp-nats/src/nats/subjects/responses/ext_ready.rs                                     12       0  100.00%
crates/acp-nats/src/nats/subjects/responses/prompt_response.rs                               20       0  100.00%
crates/acp-nats/src/nats/subjects/responses/cancelled.rs                                     15       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                                        20       0  100.00%
crates/trogon-gateway/src/source/notion/notion_verification_token.rs                          9       0  100.00%
crates/trogon-gateway/src/source/notion/verification_token.rs                                46       0  100.00%
crates/trogon-gateway/src/source/notion/notion_event_type.rs                                 20       0  100.00%
crates/trogon-gateway/src/source/notion/server.rs                                           120       4  96.67%   116-117, 136-137
crates/trogon-gateway/src/source/notion/signature.rs                                          9       0  100.00%
crates/trogon-gateway/src/source/datadog/datadog_webhook_token.rs                             9       0  100.00%
crates/trogon-gateway/src/source/datadog/datadog_event_type.rs                               20       0  100.00%
crates/trogon-gateway/src/source/datadog/server.rs                                          108       0  100.00%
crates/trogon-gateway/src/source/datadog/signature.rs                                         7       0  100.00%
crates/a2a-redaction/src/bin/sign-bundle.rs                                                   1       1  0.00%    163
crates/a2a-nats/src/catalog/import_gate/spicedb/mod.rs                                      108       0  100.00%
crates/a2a-nats/src/catalog/import_gate/spicedb/config.rs                                    70       0  100.00%
crates/a2a-nats/src/catalog/import_gate/spicedb/cache.rs                                     36       0  100.00%
crates/a2a-nats/src/catalog/import_gate/spicedb/client.rs                                    29      15  48.28%   43-69, 97-99, 108-117
crates/acp-nats/src/nats/extensions.rs                                                        3       0  100.00%
crates/acp-nats/src/nats/jsonrpc.rs                                                          51      11  78.43%   46, 54-55, 57-63, 81-83
crates/acp-nats/src/nats/mod.rs                                                              61      13  78.69%   22-33, 75
crates/acp-nats/src/nats/parsing.rs                                                         123       0  100.00%
crates/trogon-aauth-person/src/mint.rs                                                       59       0  100.00%
crates/trogon-aauth-person/src/mission.rs                                                    65       0  100.00%
crates/trogon-aauth-person/src/interaction.rs                                                 2       0  100.00%
crates/trogon-aauth-person/src/pending.rs                                                    73       0  100.00%
crates/trogon-aauth-person/src/store.rs                                                      21       0  100.00%
crates/trogon-aauth-person/src/agent.rs                                                      84       0  100.00%
crates/trogon-aauth-person/src/server.rs                                                    353       0  100.00%
crates/trogon-aauth-person/src/error.rs                                                      48       0  100.00%
crates/trogon-aauth-person/src/login.rs                                                       3       0  100.00%
crates/trogon-aauth-person/src/subagent.rs                                                   10       0  100.00%
crates/trogon-decider-guest-macros/src/lib.rs                                               121      16  86.78%   14-19, 95-98, 413-422, 426
crates/a2a-redaction/src/skill_manifest.rs                                                  310      14  95.48%   139, 169-171, 177, 184-188, 358-360, 452
crates/a2a-redaction/src/wasm_bundle_path.rs                                                 18       0  100.00%
crates/a2a-redaction/src/a2a_method.rs                                                       41       0  100.00%
crates/a2a-redaction/src/tier3_sentinel.rs                                                   12       0  100.00%
crates/a2a-redaction/src/skill_id.rs                                                         26       0  100.00%
crates/a2a-redaction/src/redactor.rs                                                         32       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       0  100.00%
crates/trogon-decider-runtime/src/headers/header_value.rs                                    34       0  100.00%
crates/acp-nats/src/nats/subjects/global/providers_disable.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/session_list.rs                                      6       0  100.00%
crates/acp-nats/src/nats/subjects/global/initialize.rs                                        6       0  100.00%
crates/acp-nats/src/nats/subjects/global/providers_set.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/authenticate.rs                                      6       0  100.00%
crates/acp-nats/src/nats/subjects/global/logout.rs                                            6       0  100.00%
crates/acp-nats/src/nats/subjects/global/providers_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/client_ops/terminal_wait_for_exit.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/terminal_create.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/elicitation_create.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/fs_write_text_file.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/session_request_permission.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/elicitation_complete.rs                         12       0  100.00%
crates/a2a-auth-callout/src/wire/bridge_adapter.rs                                           73       0  100.00%
crates/a2a-auth-callout/src/wire/xkey_public.rs                                              23       0  100.00%
crates/a2a-auth-callout/src/wire/server_auth_request_envelope.rs                             68       1  98.53%   64
crates/a2a-auth-callout/src/wire/nkey_seed.rs                                                20       0  100.00%
crates/a2a-auth-callout/src/wire/nkey_public.rs                                              83       3  96.39%   102, 118-119
crates/a2a-auth-callout/src/wire/wire_codec.rs                                               58       0  100.00%
crates/a2a-auth-callout/src/wire/callout_auth_response_claims.rs                             54       3  94.44%   70-72
crates/a2a-auth-callout/src/wire/test_encode.rs                                              59       0  100.00%
crates/a2a-auth-callout/src/wire/server_auth_request_claims.rs                              100       4  96.00%   24-26, 127
crates/a2a-nats/src/jetstream/streams.rs                                                      9       0  100.00%
crates/a2a-nats/src/jetstream/consumers.rs                                                   50       0  100.00%
crates/a2a-nats/src/jetstream/provision.rs                                                   16       0  100.00%
crates/a2a-nats/src/jetstream/stream_options.rs                                              50       0  100.00%
crates/trogon-scheduler/src/processor/execution/execution_schedules/mod.rs                   82       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/subscribe_resource.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/list_prompts.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/initialize.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/prompt_list_changed.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/resource_updated.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/unsubscribe_resource.rs                             12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/complete.rs                                         12       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/cancel_task.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/get_task_result.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/resource_list_changed.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_tools.rs                                       12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/list_resources.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/cancelled.rs                                        12       0  100.00%
crates/mcp-nats/src/nats/subjects/server/logging_message.rs                                  12       0  100.00%
crates/a2a-gateway/src/runtime/env.rs                                                        55       0  100.00%
crates/a2a-gateway/src/runtime/reply.rs                                                       5       0  100.00%
crates/a2a-gateway/src/runtime/aauth_env.rs                                                 162       0  100.00%
crates/a2a-gateway/src/runtime/streaming.rs                                                  35       0  100.00%
crates/a2a-gateway/src/runtime/audit_publish.rs                                              16       0  100.00%
crates/a2a-gateway/src/runtime/tier1_denial.rs                                               34       1  97.06%   60
crates/a2a-gateway/src/runtime/tier1.rs                                                      30       0  100.00%
crates/a2a-gateway/src/runtime/policy_stack.rs                                               78      31  60.26%   84, 91, 103-112, 119-120, 135-145, 154-170, 175
crates/trogon-aauth-as/src/http.rs                                                           82       0  100.00%
crates/trogon-aauth-as/src/server.rs                                                        139       0  100.00%
crates/trogon-aauth-as/src/subagent.rs                                                       10       0  100.00%
crates/trogon-aauth-as/src/verify.rs                                                         96       0  100.00%
crates/trogon-aauth-as/src/pending.rs                                                        26       0  100.00%
crates/trogon-aauth-as/src/policy.rs                                                         38       0  100.00%
crates/trogon-aauth-as/src/mint.rs                                                           56       0  100.00%
crates/trogon-aauth-as/src/test_support.rs                                                  122       0  100.00%
crates/trogon-aauth-as/src/trust.rs                                                          60       0  100.00%
crates/a2a-bridge/src/auth/callout_mint.rs                                                   49       1  97.96%   94
crates/a2a-auth-callout/src/credentials/oidc.rs                                             188       4  97.87%   212-215
crates/a2a-auth-callout/src/credentials/api_key.rs                                           46       1  97.83%   33
crates/a2a-auth-callout/src/credentials/mtls.rs                                             153      13  91.50%   71-72, 168-169, 209-213, 216-219
crates/a2a-gateway/src/policy/tier2_cel/bundle.rs                                           120      26  78.33%   70-72, 74-76, 86, 92, 111-113, 123-127, 158, 162-164, 166-168, 171, 178, 181
crates/a2a-gateway/src/policy/tier2_cel/evaluator.rs                                        138       0  100.00%
crates/a2a-gateway/src/policy/tier2_cel/compiler.rs                                          25       3  88.00%   61-63
crates/a2a-auth-callout/src/jwt/user_jwt_subject.rs                                          12       0  100.00%
crates/a2a-auth-callout/src/jwt/nats_user_jwt.rs                                            187       1  99.47%   131
crates/a2a-auth-callout/src/jwt/mod.rs                                                      232       0  100.00%
crates/a2a-auth-callout/src/jwt/nats_permission_claims.rs                                    10       0  100.00%
crates/trogon-aauth-sdk/src/capabilities.rs                                                   7       0  100.00%
crates/trogon-aauth-sdk/src/delegation.rs                                                    15       0  100.00%
crates/trogon-aauth-sdk/src/signer.rs                                                        91       0  100.00%
crates/trogon-aauth-sdk/src/subagent.rs                                                      34       0  100.00%
crates/trogon-aauth-sdk/src/lib.rs                                                            3       0  100.00%
crates/trogon-aauth-sdk/src/verify_response.rs                                               70       0  100.00%
crates/trogon-gateway/src/source/telegram/registration.rs                                    82       0  100.00%
crates/trogon-gateway/src/source/telegram/signature.rs                                        7       0  100.00%
crates/trogon-gateway/src/source/telegram/config.rs                                          42       0  100.00%
crates/trogon-gateway/src/source/telegram/server.rs                                          53       0  100.00%
crates/trogon-std/src/env/system.rs                                                          12       0  100.00%
crates/trogon-std/src/env/enumerate_env.rs                                                    6       0  100.00%
crates/trogon-std/src/env/read_env.rs                                                         3       0  100.00%
crates/trogon-std/src/env/in_memory.rs                                                       30       0  100.00%
crates/trogon-gateway/src/source/gitlab/gitlab_signing_token.rs                              30       0  100.00%
crates/trogon-gateway/src/source/gitlab/server.rs                                            78       0  100.00%
crates/trogon-gateway/src/source/gitlab/signature.rs                                         13       0  100.00%
crates/trogon-std/src/fs/mem.rs                                                              85       0  100.00%
crates/trogon-std/src/fs/system.rs                                                           15       0  100.00%
crates/jsonrpc-nats/src/id.rs                                                                62      20  67.74%   44-61, 81-82, 84-85, 91-92, 98-99, 112
crates/jsonrpc-nats/src/message.rs                                                           11       3  72.73%   37-39
crates/jsonrpc-nats/src/transport.rs                                                         92       1  98.91%   106
crates/a2a-nats/src/server/tasks_list.rs                                                     12       0  100.00%
crates/a2a-nats/src/server/test_support.rs                                                   81      25  69.14%   134-159
crates/a2a-nats/src/server/agent_card.rs                                                     16       0  100.00%
crates/a2a-nats/src/server/bridge.rs                                                         65       0  100.00%
crates/a2a-nats/src/server/push_delete.rs                                                    12       0  100.00%
crates/a2a-nats/src/server/dispatch.rs                                                       33       0  100.00%
crates/a2a-nats/src/server/tasks_resubscribe.rs                                              12       0  100.00%
crates/a2a-nats/src/server/handler.rs                                                        39       0  100.00%
crates/a2a-nats/src/server/wire.rs                                                           34       4  88.24%   21-23, 30
crates/a2a-nats/src/server/tasks_get.rs                                                      12       0  100.00%
crates/a2a-nats/src/server/tasks_cancel.rs                                                   12       0  100.00%
crates/a2a-nats/src/server/message_send.rs                                                   15       0  100.00%
crates/a2a-nats/src/server/push_set.rs                                                       12       0  100.00%
crates/a2a-nats/src/server/message_stream.rs                                                 56       6  89.29%   155-157, 165-167
crates/a2a-nats/src/server/push_list.rs                                                      12       0  100.00%
crates/a2a-nats/src/server/push_get.rs                                                       12       0  100.00%
crates/trogon-gateway/src/source/twitter/signature.rs                                        16       0  100.00%
crates/trogon-gateway/src/source/twitter/config.rs                                            9       0  100.00%
crates/trogon-gateway/src/source/twitter/server.rs                                          144       0  100.00%
crates/a2a-nats/src/nats/subjects/tasks/events.rs                                            17       0  100.00%
crates/trogon-scheduler/src/commands/domain/schedule_occurrence_sequence.rs                  16       0  100.00%
crates/trogon-scheduler/src/commands/domain/recurrence.rs                                    78       1  98.72%   99
crates/trogon-scheduler/src/processor/execution/reconciliation/rrule_wakeup_payload.rs       35       0  100.00%
crates/trogon-scheduler/src/processor/execution/reconciliation/reconcile.rs                 303      13  95.71%   251-260, 325-327
crates/trogon-scheduler/src/processor/execution/reconciliation/go_duration.rs                40       0  100.00%
crates/trogon-scheduler/src/processor/execution/reconciliation/request.rs                   230       2  99.13%   285, 290
crates/trogon-scheduler/src/processor/execution/reconciliation/recorded_events.rs           241      12  95.02%   200-205, 242, 250, 271, 291, 297, 303, 336, 346, 364, 448
crates/trogon-scheduler/src/processor/execution/reconciliation/schedule_key.rs               27       0  100.00%
crates/trogon-scheduler/src/processor/execution/reconciliation/schedule_subject.rs           31       0  100.00%
crates/trogon-nats/src/lease/renew.rs                                                        82      19  76.83%   23-29, 48-59
crates/trogon-nats/src/lease/lease_bucket.rs                                                 19       0  100.00%
crates/trogon-nats/src/lease/lease_key.rs                                                    19       0  100.00%
crates/trogon-nats/src/lease/acquire.rs                                                       5       5  0.00%    9-14
crates/trogon-nats/src/lease/lease_timing.rs                                                 15       0  100.00%
crates/trogon-nats/src/lease/provision.rs                                                    83      10  87.95%   82-92
crates/trogon-nats/src/lease/release.rs                                                       5       5  0.00%    8-12
crates/trogon-nats/src/lease/nats_kv_lease_config.rs                                         26       0  100.00%
crates/trogon-nats/src/lease/ttl.rs                                                          27       0  100.00%
crates/trogon-nats/src/lease/renew_interval.rs                                               25       0  100.00%
crates/trogon-nats/src/lease/mod.rs                                                         107      13  87.85%   113-126
crates/trogon-decider-runtime/src/event/event_id.rs                                          32       0  100.00%
crates/trogon-decider-runtime/src/event/event_identity.rs                                     3       0  100.00%
crates/trogon-decider-runtime/src/event/stream_event.rs                                       8       0  100.00%
crates/trogon-decider-runtime/src/stream/append_stream.rs                                     5       0  100.00%
crates/trogon-decider-runtime/src/stream/read_stream.rs                                       7       0  100.00%
crates/trogon-decider-runtime/src/stream/stream_position.rs                                  26       0  100.00%
crates/trogon-scheduler/src/processor/execution/checkpoints/codec/twin.rs                    96       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_client.rs                                 9       0  100.00%
crates/mcp-nats/src/nats/subjects/subscriptions/one_server.rs                                 9       0  100.00%
crates/mcp-nats/src/nats/subjects/subscriptions/all_client.rs                                 6       0  100.00%
crates/trogon-nats/src/telemetry/messaging.rs                                                37       0  100.00%
crates/acp-nats/src/telemetry/metrics.rs                                                     22       0  100.00%
crates/a2a-auth-callout/src/signing_key_source/env.rs                                        40       0  100.00%
crates/a2a-auth-callout/src/signing_key_source/key_version.rs                                16       0  100.00%
crates/a2a-auth-callout/src/signing_key_source/loader.rs                                     23       0  100.00%
crates/a2a-auth-callout/src/signing_key_source/static_source.rs                              25       0  100.00%
crates/a2a-auth-callout/src/signing_key_source/file.rs                                       38       6  84.21%   40-42, 61-63
crates/a2a-auth-callout/src/signing_key_source/minting_material.rs                           18       0  100.00%
crates/a2a-auth-callout/src/signing_key_source/vault.rs                                       3       0  100.00%
crates/a2a-auth-callout/src/signing_key_source/signing_key_handle.rs                         15       0  100.00%
crates/trogon-gateway/src/source/sentry/sentry_client_secret.rs                               9       0  100.00%
crates/trogon-gateway/src/source/sentry/server.rs                                            69       0  100.00%
crates/trogon-gateway/src/source/sentry/signature.rs                                          6       0  100.00%
crates/trogon-decider-sim/src/fixture.rs                                                     18       2  88.89%   30-32
crates/trogon-decider-sim/src/host.rs                                                        35       0  100.00%
crates/trogon-decider-sim/src/session.rs                                                     15       0  100.00%
crates/trogon-decider-sim/src/import_check.rs                                                52       4  92.31%   68-70, 90
crates/trogon-decider-sim/src/scenario.rs                                                   142       4  97.18%   152-154, 258
crates/trogon-aauth-verify/src/jwks_http.rs                                                 144       0  100.00%
crates/trogon-aauth-verify/src/jwks_cache.rs                                                 39       0  100.00%
crates/trogon-aauth-verify/src/jwks.rs                                                       15       0  100.00%
crates/trogon-aauth-verify/src/nats_pop.rs                                                  125       1  99.20%   337
crates/trogon-aauth-verify/src/challenge.rs                                                  77       0  100.00%
crates/trogon-aauth-verify/src/jkt.rs                                                        33       0  100.00%
crates/trogon-aauth-verify/src/delegation.rs                                                 53       0  100.00%
crates/trogon-aauth-verify/src/mission.rs                                                    33       0  100.00%
crates/trogon-aauth-verify/src/token.rs                                                     184       1  99.46%   181
crates/trogon-aauth-verify/src/replay.rs                                                     26       0  100.00%
crates/trogon-aauth-verify/src/http_pop.rs                                                  268       0  100.00%
crates/trogon-aauth-verify/src/test_support.rs                                               86       0  100.00%
crates/trogon-aauth-verify/src/time_source.rs                                                10       0  100.00%
crates/trogon-aauth-verify/src/upstream.rs                                                   20       0  100.00%
crates/trogon-scheduler/src/commands/record_schedule_occurrence.rs                          113       1  99.12%   182
crates/trogon-scheduler/src/commands/schedule_next_occurrence.rs                             74       0  100.00%
crates/a2a-nats/src/catalog/import_gate/allow_all.rs                                          2       0  100.00%
crates/a2a-nats/src/catalog/import_gate/principal.rs                                          9       0  100.00%
crates/a2a-gateway/src/policy/tier1_declarative/loader.rs                                    85       9  89.41%   95-97, 99-101, 126-128
crates/a2a-gateway/src/policy/tier1_declarative/time_predicate.rs                           118       2  98.31%   103, 125
crates/a2a-gateway/src/policy/tier1_declarative/bundle.rs                                    57       0  100.00%
crates/a2a-gateway/src/policy/tier1_declarative/evaluator.rs                                158      13  91.77%   24-26, 147, 196-198, 268-272, 295
crates/trogon-scheduler/src/queries/read_model/schedule.rs                                   15       0  100.00%
crates/trogon-scheduler/src/queries/read_model/message.rs                                    77       0  100.00%
crates/trogon-std/src/http.rs                                                                 8       0  100.00%
crates/trogon-std/src/uuid.rs                                                                 3       0  100.00%
crates/trogon-std/src/duration.rs                                                            15       0  100.00%
crates/trogon-std/src/json.rs                                                                23       0  100.00%
crates/trogon-std/src/args.rs                                                                12       9  25.00%   11-28
crates/trogon-std/src/secret_string.rs                                                       13       0  100.00%
crates/trogon-std/src/signal.rs                                                              22      12  45.45%   6-11, 18-25, 34
crates/trogon-scheduler/src/processor/execution/checkpoints/failure.rs                       27       0  100.00%
crates/trogon-scheduler/src/processor/execution/checkpoints/record.rs                         6       0  100.00%
crates/trogon-scheduler/src/processor/execution/checkpoints/codec.rs                        318      17  94.65%   340-341, 361-362, 373-377, 405-406, 412-413, 442-443, 480, 485-487
crates/trogon-scheduler/src/processor/execution/checkpoints/store.rs                        145      16  88.97%   103, 121, 125, 132, 224-230, 279-283
crates/mcp-nats-stdio/src/config.rs                                                          26       0  100.00%
crates/mcp-nats-stdio/src/main.rs                                                            36       0  100.00%
crates/ard-registry/src/facet_field.rs                                                       13       0  100.00%
crates/ard-registry/src/lexical_rank.rs                                                      55       2  96.36%   15, 64
crates/ard-registry/src/search_filters.rs                                                    28       0  100.00%
crates/ard-registry/src/search_request.rs                                                    32       1  96.88%   43
crates/ard-registry/src/source_url.rs                                                        26       1  96.15%   30
crates/ard-registry/src/explore_request.rs                                                   30       0  100.00%
crates/ard-registry/src/list_agents_request.rs                                               21       0  100.00%
crates/ard-registry/src/page_token.rs                                                        14       0  100.00%
crates/ard-registry/src/registry_config.rs                                                   16       0  100.00%
crates/ard-registry/src/registry.rs                                                         134       3  97.76%   78, 174, 183
crates/ard-registry/src/extract.rs                                                           12       0  100.00%
crates/ard-registry/src/http_error.rs                                                        17       0  100.00%
crates/ard-registry/src/router.rs                                                            33       0  100.00%
crates/ard-registry/src/filters.rs                                                           31       0  100.00%
crates/trogon-std/src/time/system.rs                                                          9       0  100.00%
crates/trogon-std/src/time/mock.rs                                                           32       0  100.00%
crates/mcp-nats/src/telemetry/transport.rs                                                    6       0  100.00%
crates/jsonrpc-nats/src/codec/encode.rs                                                      31       0  100.00%
crates/jsonrpc-nats/src/codec/reconstruct.rs                                                 90       5  94.44%   56-59, 91
crates/jsonrpc-nats/src/codec/decode.rs                                                      57       0  100.00%
crates/a2a-nats/src/nats/subjects/agents/card.rs                                             12       0  100.00%
crates/a2a-nats/src/nats/subjects/agents/message_send.rs                                     15       0  100.00%
crates/a2a-nats/src/nats/subjects/agents/message_stream.rs                                   15       0  100.00%
crates/a2a-nats/src/catalog/watch.rs                                                         18       0  100.00%
crates/a2a-nats/src/catalog/spicedb_permission.rs                                           178      17  90.45%   151-156, 175, 340-344, 373-374, 385-387, 394-396
crates/a2a-nats/src/catalog/agent_view.rs                                                    47       0  100.00%
crates/a2a-nats/src/catalog/store.rs                                                        117       0  100.00%
crates/a2a-nats/src/catalog/registrar.rs                                                     56       0  100.00%
crates/a2a-nats/src/catalog/nats_kv.rs                                                        8       0  100.00%
crates/trogon-scheduler/src/processor/execution/wakeup.rs                                    91       1  98.90%   127
crates/a2a-redaction/src/wasm/mod.rs                                                        110       9  91.82%   132-134, 147-149, 162-164
crates/a2a-redaction/src/wasm/engine.rs                                                      62      11  82.26%   46-48, 80-81, 93-95, 99-101
crates/trogon-telemetry/src/metric.rs                                                        18       1  94.44%   30
crates/trogon-telemetry/src/lib.rs                                                          135      23  82.96%   119, 124, 129, 139-140, 146-164, 200, 203, 206, 212
crates/trogon-telemetry/src/resource_attribute.rs                                            13       0  100.00%
crates/trogon-telemetry/src/log.rs                                                           36       0  100.00%
crates/trogon-telemetry/src/service_name.rs                                                  17       0  100.00%
crates/trogon-telemetry/src/trace.rs                                                         15       1  93.33%   24
crates/a2a-nats/src/jsonrpc.rs                                                               27       0  100.00%
crates/a2a-nats/src/req_id.rs                                                                21       0  100.00%
crates/a2a-nats/src/a2a_prefix.rs                                                            16       0  100.00%
crates/a2a-nats/src/gateway_ingress.rs                                                      153      21  86.27%   165-168, 172, 186, 194-200, 233, 248-254
crates/a2a-nats/src/context_id.rs                                                            22       0  100.00%
crates/a2a-nats/src/task_id.rs                                                               22       0  100.00%
crates/a2a-nats/src/wire.rs                                                                  59       2  96.61%   85, 98
crates/a2a-nats/src/config.rs                                                               114       0  100.00%
crates/a2a-nats/src/agent_id.rs                                                              21       0  100.00%
crates/acp-nats/src/jetstream/streams.rs                                                     18       0  100.00%
crates/acp-nats/src/jetstream/consumers.rs                                                   41       0  100.00%
crates/acp-nats/src/jetstream/ext_policy.rs                                                   3       0  100.00%
crates/acp-nats/src/jetstream/provision.rs                                                   13       0  100.00%
crates/acp-nats/src/boundary/connect_agent_boundary.rs                                      101       0  100.00%
crates/acp-nats/src/boundary/abort_on_drop.rs                                                16       0  100.00%
crates/acp-nats/src/boundary/connection_client.rs                                            29       0  100.00%
crates/acp-nats/src/boundary/eof_signal_reader.rs                                            20       0  100.00%
crates/trogon-decider-wit/src/lib.rs                                                         53       1  98.11%   4
crates/trogon-decider/src/testing.rs                                                        274       0  100.00%
crates/trogon-decider/src/decision.rs                                                        27       0  100.00%
crates/trogon-decider/src/act.rs                                                             62       0  100.00%
crates/trogon-decider/src/lib.rs                                                              4       0  100.00%
crates/trogon-decider/src/events.rs                                                          49       0  100.00%
crates/a2a-nats/src/nats/subjects/stream.rs                                                  50       0  100.00%
crates/trogon-scheduler-domain/src/commands/state.rs                                         82       0  100.00%
crates/trogon-scheduler-domain/src/commands/resume_schedule.rs                               34       0  100.00%
crates/trogon-scheduler-domain/src/commands/remove_schedule.rs                               30       0  100.00%
crates/trogon-scheduler-domain/src/commands/create_schedule.rs                               32       0  100.00%
crates/trogon-scheduler-domain/src/commands/pause_schedule.rs                                31       0  100.00%
crates/trogon-scheduler-domain/src/commands/proto_wire.rs                                   138       1  99.28%   231
crates/a2a-auth-callout/src/test_support.rs                                                  20      20  0.00%    16-36
crates/a2a-auth-callout/src/denial_reason.rs                                                 15       0  100.00%
crates/a2a-auth-callout/src/account_resolver.rs                                              31       0  100.00%
crates/a2a-auth-callout/src/dispatcher.rs                                                    34      13  61.76%   83-112
crates/a2a-auth-callout/src/caller_jwt_header.rs                                             20       0  100.00%
crates/a2a-auth-callout/src/main.rs                                                           1       1  0.00%    226
crates/a2a-auth-callout/src/permissions.rs                                                   85       0  100.00%
crates/a2a-auth-callout/src/denial_claims.rs                                                 68       0  100.00%
crates/a2a-auth-callout/src/denial_category.rs                                               29       0  100.00%
crates/a2a-auth-callout/src/error.rs                                                          3       0  100.00%
crates/a2a-auth-callout/src/subscriber.rs                                                    96      96  0.00%    27-178
crates/acp-nats-agent/src/connection.rs                                                     482       1  99.79%   726
crates/acp-nats/src/client_handler.rs                                                        22       0  100.00%
crates/acp-nats/src/agent_handler.rs                                                         28       0  100.00%
crates/acp-nats/src/client_proxy.rs                                                          67       1  98.51%   57
crates/acp-nats/src/pending_prompt_waiters.rs                                                68       0  100.00%
crates/acp-nats/src/session_id.rs                                                            21       0  100.00%
crates/acp-nats/src/wire.rs                                                                  80      14  82.50%   38, 46-60, 103
crates/acp-nats/src/config.rs                                                                84       0  100.00%
crates/acp-nats/src/error.rs                                                                 31       0  100.00%
crates/acp-nats/src/req_id.rs                                                                21       0  100.00%
crates/acp-nats/src/ext_method_name.rs                                                       18       0  100.00%
crates/acp-nats/src/in_flight_slot_guard.rs                                                   7       0  100.00%
crates/acp-nats/src/lib.rs                                                                   11       0  100.00%
crates/acp-nats/src/acp_prefix.rs                                                            13       0  100.00%
crates/trogon-aauth-sdk/src/exchange/client.rs                                              283       0  100.00%
crates/trogon-aauth-sdk/src/exchange/mod.rs                                                  17       0  100.00%
crates/trogon-aauth-sdk/src/exchange/core.rs                                                138       0  100.00%
crates/trogon-aauth-sdk/src/exchange/challenge.rs                                            50       0  100.00%
crates/ard-registry/src/bin/ard-registry-demo/main.rs                                        64      20  68.75%   13-35
crates/acp-nats/src/client/elicitation_complete.rs                                            8       0  100.00%
crates/acp-nats/src/client/mod.rs                                                           101       1  99.01%   60
crates/acp-nats/src/client/terminal_output.rs                                                29       0  100.00%
crates/acp-nats/src/client/request_permission.rs                                             40       0  100.00%
crates/acp-nats/src/client/session_update.rs                                                  8       0  100.00%
crates/acp-nats/src/client/terminal_wait_for_exit.rs                                         55       0  100.00%
crates/acp-nats/src/client/fs_read_text_file.rs                                              27       0  100.00%
crates/acp-nats/src/client/rpc_reply.rs                                                     107      43  59.81%   45-47, 61-63, 80-120
crates/acp-nats/src/client/elicitation_create.rs                                             41       0  100.00%
crates/acp-nats/src/client/test_support.rs                                                   17       0  100.00%
crates/acp-nats/src/client/terminal_kill.rs                                                  41       0  100.00%
crates/acp-nats/src/client/ext.rs                                                            62       0  100.00%
crates/acp-nats/src/client/terminal_release.rs                                               35       0  100.00%
crates/acp-nats/src/client/ext_session_prompt_response.rs                                    22       0  100.00%
crates/acp-nats/src/client/terminal_create.rs                                                41       0  100.00%
crates/acp-nats/src/client/fs_write_text_file.rs                                             43       0  100.00%
crates/trogon-decider-runtime/src/execution.rs                                              379       0  100.00%
crates/a2a-nats/src/push/dispatcher/composite.rs                                             15       0  100.00%
crates/a2a-nats/src/push/dispatcher/jetstream.rs                                             45       0  100.00%
crates/a2a-nats/src/push/dispatcher/nats.rs                                                  37       0  100.00%
crates/a2a-nats/src/push/dispatcher/http.rs                                                  19       0  100.00%
crates/a2a-nats/src/push/dispatcher/mod.rs                                                   16       0  100.00%
crates/trogon-gateway/src/config.rs                                                        1172      32  97.27%   82, 689, 856, 1003, 1006, 1015, 1101-1108, 1186, 1189, 1198, 1257, 1260, 1344, 1347, 1356, 1421, 1424, 1501, 1504, 1513, 1589, 1592, 1606, 1665, 1668, 1978-1980
crates/trogon-gateway/src/main.rs                                                            26       0  100.00%
crates/trogon-gateway/src/source_plugin.rs                                                  288       3  98.96%   83, 140-141
crates/trogon-gateway/src/source_status.rs                                                   12       0  100.00%
crates/trogon-gateway/src/http.rs                                                            13       0  100.00%
crates/trogon-gateway/src/streams.rs                                                          7       0  100.00%
crates/trogon-gateway/src/source_integration_id.rs                                           28       2  92.86%   58, 60
crates/trogon-gateway/src/source/github/server.rs                                            50       0  100.00%
crates/trogon-gateway/src/source/github/config.rs                                             9       0  100.00%
crates/trogon-gateway/src/source/github/signature.rs                                          9       0  100.00%
crates/trogon-gateway/src/source/slack/signature.rs                                          17       0  100.00%
crates/trogon-gateway/src/source/slack/server.rs                                            272       0  100.00%
crates/trogon-gateway/src/source/slack/socket_mode.rs                                       139       0  100.00%
crates/trogon-gateway/src/source/slack/config.rs                                             32       0  100.00%
crates/trogon-identity-types/src/act_chain.rs                                                13       0  100.00%
crates/a2a-nats-server/src/main.rs                                                            1       0  100.00%
crates/a2a-nats-server/src/runtime.rs                                                        17       0  100.00%
crates/a2a-nats-server/src/noop_handler.rs                                                   22       0  100.00%
crates/trogon-scheduler/src/queries/get_schedule.rs                                           3       0  100.00%
crates/trogon-scheduler/src/queries/schedule_id.rs                                           28       0  100.00%
crates/trogon-scheduler/src/queries/decode.rs                                                95       0  100.00%
crates/a2a-gateway/src/policy/tier3_redaction/context.rs                                     40       0  100.00%
crates/a2a-gateway/src/policy/tier3_redaction/mod.rs                                         33       2  93.94%   54, 58
crates/a2a-gateway/src/policy/tier3_redaction/gate.rs                                         3       0  100.00%
crates/a2a-gateway/src/policy/tier3_redaction/decision.rs                                    22       0  100.00%
crates/a2a-gateway/src/policy/tier3_redaction/manifest.rs                                    69       3  95.65%   112, 121, 132
crates/a2a-gateway/src/policy/tier3_redaction/rewrite.rs                                     49       0  100.00%
crates/a2a-gateway/src/policy/tier3_redaction/json_path.rs                                   84       5  94.05%   37, 49, 85, 104, 115
crates/a2a-gateway/src/policy/tier3_redaction/real_gate.rs                                  138      33  76.09%   18-26, 42-44, 67, 76-80, 119, 148-152, 155-159, 170-174, 192, 265
crates/trogon-aauth-person/src/http/mod.rs                                                  213       0  100.00%
crates/trogon-decider-runtime/src/snapshot/snapshot_type.rs                                  42       0  100.00%
crates/trogon-decider-runtime/src/snapshot/mod.rs                                             3       0  100.00%
crates/trogon-decider-runtime/src/snapshot/read_snapshot.rs                                   3       0  100.00%
crates/a2a-gateway/src/policy/tier2/mod.rs                                                   46       0  100.00%
crates/a2a-gateway/src/policy/tier2/rule_name.rs                                             19       0  100.00%
crates/trogon-gateway/src/source/linear/server.rs                                            83       0  100.00%
crates/trogon-gateway/src/source/linear/config.rs                                             9       0  100.00%
crates/trogon-gateway/src/source/linear/signature.rs                                          8       1  87.50%   16
crates/mcp-nats/src/nats/subjects/client/list_roots.rs                                       12       0  100.00%
crates/mcp-nats/src/nats/subjects/client/create_elicitation.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/initialized.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/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/a2a-identity-types/src/principal.rs                                                   16       0  100.00%
crates/a2a-identity-types/src/jwt.rs                                                         71       0  100.00%
crates/a2a-identity-types/src/caller.rs                                                      24       0  100.00%
crates/trogon-gateway/src/source/microsoft_graph/server.rs                                   73       0  100.00%
crates/trogon-gateway/src/source/microsoft_graph/client_state.rs                             14       0  100.00%
crates/trogon-std/src/dirs/fixed.rs                                                          32       0  100.00%
crates/trogon-std/src/dirs/system.rs                                                         39       0  100.00%
crates/acp-nats-server/src/config.rs                                                         39       0  100.00%
crates/acp-nats-server/src/acp_connection_id.rs                                              14       0  100.00%
crates/acp-nats-server/src/transport.rs                                                    1018     101  90.08%   245, 293-295, 530, 548, 575, 629, 634, 654, 673, 716-729, 818, 841-843, 895, 912-915, 1011-1014, 1082, 1085, 1088, 1097, 1101, 1104, 1107-1110, 1139, 1172-1175, 1183-1188, 1200-1204, 1208-1217, 1229-1230, 1248-1249, 1259, 1275-1279, 1307-1313, 1333-1335, 1340-1344, 1357, 1368, 1450-1451, 1463-1464, 1484-1485
crates/acp-nats-server/src/main.rs                                                           68       1  98.53%   109
crates/acp-nats-server/src/connection.rs                                                    102      22  78.43%   83-90, 102, 113-115, 124-125, 130, 134, 138, 141, 149, 153, 156, 159-163
crates/trogon-decider/src/event/codec/event_payload_error.rs                                  5       0  100.00%
crates/trogon-decider/src/event/codec/event_decode.rs                                        13       0  100.00%
crates/acp-nats/src/nats/subjects/commands/fork.rs                                           15       0  100.00%
crates/acp-nats/src/nats/subjects/commands/set_mode.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/set_config_option.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/load.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/delete.rs                                         15       0  100.00%
crates/acp-nats/src/nats/subjects/commands/resume.rs                                         15       0  100.00%
crates/acp-nats/src/nats/subjects/stream.rs                                                  56       0  100.00%
crates/trogon-scheduler/src/processor/execution/worker/dispatcher.rs                        280       1  99.64%   200
crates/trogon-scheduler/src/processor/execution/worker/processor.rs                         303      12  96.04%   279, 339, 437-438, 444, 499-501, 533-536
crates/trogon-scheduler/src/processor/execution/worker/consumer.rs                           77       0  100.00%
crates/trogon-scheduler/src/processor/execution/worker/testkit.rs                           311       4  98.71%   458, 489-490, 495
crates/a2a-redaction/src/signed_bundle/public_key.rs                                         36       2  94.44%   44-45
crates/a2a-redaction/src/signed_bundle/digest.rs                                             26       0  100.00%
crates/a2a-redaction/src/signed_bundle/verify.rs                                             64       2  96.88%   90-91
crates/a2a-redaction/src/signed_bundle/manifest.rs                                           56       1  98.21%   83
crates/a2a-redaction/src/signed_bundle/signature.rs                                          30       3  90.00%   37-39
crates/a2a-nats-stdio/src/main.rs                                                             1       0  100.00%
crates/a2a-nats-stdio/src/runtime.rs                                                         21       0  100.00%
crates/a2a-nats-stdio/src/io_loop.rs                                                         49       0  100.00%
crates/a2a-nats-stdio/src/wire.rs                                                            22       0  100.00%
crates/a2a-nats-stdio/src/dispatch.rs                                                       212       8  96.23%   121, 124-126, 234, 237-239
crates/mcp-nats/src/nats/parsing.rs                                                          98       0  100.00%
crates/mcp-nats/src/nats/mod.rs                                                              23       0  100.00%
crates/trogon-identity-types/src/aauth/mission.rs                                            33       0  100.00%
crates/trogon-identity-types/src/aauth/mod.rs                                                69       0  100.00%
crates/trogon-identity-types/src/aauth/person_server.rs                                      23       0  100.00%
crates/trogon-identity-types/src/aauth/error.rs                                              14       0  100.00%
crates/trogon-identity-types/src/aauth/headers.rs                                            47       0  100.00%
crates/trogon-identity-types/src/aauth/login.rs                                              78       0  100.00%
crates/trogon-service-config/src/lib.rs                                                      38       0  100.00%
crates/trogon-std/src/telemetry/http.rs                                                      58       0  100.00%
crates/a2a-bridge/src/nats_transport_harness.rs                                              42       0  100.00%
crates/a2a-bridge/src/identity.rs                                                            63       0  100.00%
crates/a2a-bridge/src/inbound.rs                                                            326      91  72.09%   115-119, 142-144, 191-231, 292-417, 469-471, 482, 580, 631-646, 687-692
crates/a2a-bridge/src/main.rs                                                                 1       1  0.00%    199
crates/a2a-bridge/src/outbound.rs                                                            70       7  90.00%   126, 197-209
crates/a2a-bridge/src/auth.rs                                                                47      15  68.09%   78-99, 148
crates/trogon-nats/src/jetstream/claim_check.rs                                             104       3  97.12%   46-48
crates/trogon-nats/src/jetstream/traits.rs                                                   46      40  13.04%   181-251
crates/trogon-nats/src/jetstream/mocks.rs                                                   941       1  99.89%   507
crates/trogon-nats/src/jetstream/create_conflicts.rs                                         14       0  100.00%
crates/trogon-nats/src/jetstream/publish.rs                                                  30       0  100.00%
crates/trogon-nats/src/jetstream/stream_max_age.rs                                            8       0  100.00%
crates/trogon-decider-nats/src/stream_store.rs                                              267      18  93.26%   70-72, 245, 273-274, 277, 293-297, 464-465, 506, 519-523
crates/trogon-decider-nats/src/store.rs                                                      73      45  38.36%   50-54, 101-167
crates/trogon-decider-nats/src/snapshot_store.rs                                            446      27  93.95%   208-210, 248-250, 361-367, 449, 585, 590, 686-688, 694-696, 730-731, 741-742, 761, 789-790
crates/trogon-decider-wasm-runtime/src/engine.rs                                             43       0  100.00%
crates/trogon-decider-wasm-runtime/src/test_fixture.rs                                        7       0  100.00%
crates/trogon-decider-wasm-runtime/src/command_type.rs                                       31       0  100.00%
crates/trogon-decider-wasm-runtime/src/module.rs                                             64       0  100.00%
crates/trogon-decider-wasm-runtime/src/module_version.rs                                     34       0  100.00%
crates/trogon-decider-wasm-runtime/src/opaque_snapshot.rs                                    18       0  100.00%
crates/trogon-decider-wasm-runtime/src/command_spec.rs                                       12       0  100.00%
crates/trogon-decider-wasm-runtime/src/domain_error_detail.rs                                 6       0  100.00%
crates/trogon-decider-wasm-runtime/src/execution.rs                                         363       0  100.00%
crates/trogon-decider-wasm-runtime/src/registry.rs                                           28       0  100.00%
crates/trogon-decider-wasm-runtime/src/module_name.rs                                        34       0  100.00%
crates/trogon-decider-wasm-runtime/src/snapshot_id.rs                                        15       0  100.00%
crates/trogon-scheduler-domain/src/commands/domain/schedule_event_sampling_source.rs         11       0  100.00%
crates/trogon-scheduler-domain/src/commands/domain/schedule_id.rs                            37       0  100.00%
crates/trogon-scheduler-domain/src/commands/domain/schedule_event_delivery.rs                14       0  100.00%
crates/trogon-scheduler-domain/src/commands/domain/schedule_event_schedule.rs                35       0  100.00%
crates/trogon-scheduler-domain/src/commands/domain/schedule.rs                              383       5  98.69%   326, 334, 349-351
crates/trogon-scheduler-domain/src/commands/domain/message.rs                               139       0  100.00%
crates/trogon-scheduler-domain/src/commands/domain/schedule_event_status.rs                   6       0  100.00%
crates/a2a-nats-http/src/handlers/mod.rs                                                    185      12  93.51%   68, 88-91, 121, 155, 169-172, 185
crates/trogon-nats/src/token.rs                                                               6       0  100.00%
crates/trogon-nats/src/messaging.rs                                                         168       2  98.81%   146, 156
crates/trogon-nats/src/auth.rs                                                               45       0  100.00%
crates/trogon-nats/src/nats_token.rs                                                         56       0  100.00%
crates/trogon-nats/src/client.rs                                                             22      22  0.00%    50-86
crates/trogon-nats/src/server_info.rs                                                        21       3  85.71%   19-21
crates/trogon-nats/src/connect.rs                                                            26       6  76.92%   42-47
crates/trogon-nats/src/mocks.rs                                                             224       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/one_client.rs                                15       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/all_session.rs                                9       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/one_agent.rs                                 15       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/all_agent_ext.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/prompt_wildcard.rs                            9       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/all_client.rs                                 9       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/all_agent.rs                                  9       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/one_session.rs                               12       0  100.00%
crates/trogon-gateway/src/source/discord/config.rs                                           45       0  100.00%
crates/trogon-gateway/src/source/discord/gateway.rs                                         116       1  99.14%   137
crates/trogonai-proto/src/convert.rs                                                         53       0  100.00%
crates/trogonai-proto/src/codec.rs                                                           16       0  100.00%
crates/trogonai-proto/src/lib.rs                                                             18       0  100.00%
crates/a2a-nats/src/nats/subjects/agents/push/delete.rs                                      15       0  100.00%
crates/a2a-nats/src/nats/subjects/agents/push/get.rs                                         12       0  100.00%
crates/a2a-nats/src/nats/subjects/agents/push/set.rs                                         12       0  100.00%
crates/a2a-nats/src/nats/subjects/agents/push/list.rs                                        15       0  100.00%
crates/a2a-nats/src/nats/subjects/subscriptions/agent_all.rs                                 12       0  100.00%
crates/a2a-nats/src/nats/subjects/subscriptions/task_one_events.rs                           12       0  100.00%
crates/a2a-nats/src/nats/subjects/subscriptions/task_all_events.rs                            9       0  100.00%
crates/ard-catalog/src/ard_identifier.rs                                                     54       0  100.00%
crates/ard-catalog/src/ard_storage_key.rs                                                    10       0  100.00%
crates/ard-catalog/src/catalog_manifest.rs                                                   44       0  100.00%
crates/ard-catalog/src/catalog_manifest_schema.rs                                            65       4  93.85%   109-110, 112-113
crates/ard-catalog/src/catalog_host.rs                                                       26       0  100.00%
crates/ard-catalog/src/media_type.rs                                                         20       0  100.00%
crates/ard-catalog/src/registry_error_wire.rs                                                 8       0  100.00%
crates/ard-catalog/src/catalog_manifest_wire.rs                                               3       0  100.00%
crates/ard-catalog/src/trust_manifest.rs                                                     45       1  97.78%   35
crates/ard-catalog/src/catalog_host_wire.rs                                                   6       0  100.00%
crates/ard-catalog/src/metadata.rs                                                           14       0  100.00%
crates/ard-catalog/src/catalog_entry.rs                                                     107       0  100.00%
crates/ard-catalog/src/catalog_entry_wire.rs                                                  3       0  100.00%
crates/ard-catalog/src/representative_queries.rs                                             18       0  100.00%
crates/ard-catalog/src/url_or_data.rs                                                        20       0  100.00%
crates/ard-catalog/src/display_name.rs                                                       13       0  100.00%
crates/ard-catalog/src/federation_mode.rs                                                     3       0  100.00%
crates/mcp-nats/src/mcp_prefix.rs                                                            15       0  100.00%
crates/mcp-nats/src/wire.rs                                                                  18       0  100.00%
crates/mcp-nats/src/config.rs                                                                59       0  100.00%
crates/mcp-nats/src/transport.rs                                                            263      10  96.20%   244, 256-258, 376-379, 388-389
crates/mcp-nats/src/jsonrpc.rs                                                                5       0  100.00%
crates/mcp-nats/src/mcp_peer_id.rs                                                           15       0  100.00%
crates/mcp-nats/src/client.rs                                                                12       0  100.00%
crates/mcp-nats/src/server.rs                                                                12       0  100.00%
crates/a2a-nats/src/audit/envelope.rs                                                        57       0  100.00%
crates/a2a-nats/src/audit/emitter.rs                                                         58       0  100.00%
crates/a2a-nats/src/audit/task_lifecycle.rs                                                  17       0  100.00%
crates/trogonai-proto/src/scheduler/schedules/codec.rs                                       57       0  100.00%
crates/a2a-gateway/src/policy/wasmtime_substrate.rs                                          31       0  100.00%
crates/a2a-gateway/src/policy/per_skill.rs                                                   87       0  100.00%
crates/a2a-gateway/src/policy/spicedb_tier1.rs                                              157      13  91.72%   226-228, 381, 451, 453-461
crates/a2a-gateway/src/policy/error.rs                                                       16       0  100.00%
TOTAL                                                                                     37121    1546  95.84%

Diff against main

Filename                                                  Stmts    Miss  Cover
------------------------------------------------------  -------  ------  --------
crates/acp-nats/src/boundary/connect_agent_boundary.rs      -98       0  +100.00%
TOTAL                                                       -98       0  -0.01%

Results for commit: d318e9a

Minimum allowed coverage is 95%

♻️ This comment has been updated with latest results

@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.

🧹 Nitpick comments (2)
rsworkspace/crates/acp-nats/src/agent/ext_method.rs (1)

34-34: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use GlobalAgentMethod::Ext instead of duplicating the wire-method format.

All other handler files in this PR derive their wire method from GlobalAgentMethod::wire_method(), but this file manually reconstructs the same format!("_{}", ...) pattern that GlobalAgentMethod::Ext(name) already encapsulates in parsing.rs. If the extension wire-method format ever changes, this becomes a second update site.

♻️ Proposed refactor for DRY consistency
+use crate::nats::{GlobalAgentMethod, RequestClient, global};
     let subject = global::ExtSubject::new(bridge.config.acp_prefix_ref(), &method_name);
-    let wire_method = format!("_{}", method_name.as_str());
+    let wire_method = GlobalAgentMethod::Ext(method_name.clone()).wire_method();
🤖 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/acp-nats/src/agent/ext_method.rs` at line 34, The
wire-method string is being rebuilt manually in ext_method.rs instead of using
the shared GlobalAgentMethod::wire_method() path. Update the ext method handler
to construct or reuse GlobalAgentMethod::Ext and call wire_method() so the
formatting logic stays centralized in parsing.rs and matches the other handler
files.

Source: Coding guidelines

rsworkspace/crates/acp-nats/src/client/ext_session_prompt_response.rs (1)

45-45: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider sourcing the wire-method string from ClientMethod::ExtSessionPromptResponse.wire_method().

The hardcoded "_session/prompt_response" duplicates the value already defined by ClientMethod::ExtSessionPromptResponse in parsing.rs. The agent-side handlers in this PR were updated to use GlobalAgentMethod::wire_method() for the same reason. This is a lower priority since it's a single static literal rather than a format pattern, but it would keep a single source of truth for the wire-method name.

♻️ Optional refactor
-        match decode_notification_params::<PromptResponse>("_session/prompt_response", headers, payload) {
+        match decode_notification_params::<PromptResponse>(
+            &ClientMethod::ExtSessionPromptResponse.wire_method(),
+            headers,
+            payload,
+        ) {
🤖 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/acp-nats/src/client/ext_session_prompt_response.rs` at
line 45, The `decode_notification_params` call in
`ext_session_prompt_response.rs` hardcodes the wire-method string, duplicating
the value already owned by `ClientMethod::ExtSessionPromptResponse`. Update this
path to source the method name from
`ClientMethod::ExtSessionPromptResponse.wire_method()` instead of the literal,
mirroring the `GlobalAgentMethod::wire_method()` refactor used elsewhere, so the
`decode_notification_params` usage stays aligned with the single source of truth
in `parsing.rs`.

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.

Nitpick comments:
In `@rsworkspace/crates/acp-nats/src/agent/ext_method.rs`:
- Line 34: The wire-method string is being rebuilt manually in ext_method.rs
instead of using the shared GlobalAgentMethod::wire_method() path. Update the
ext method handler to construct or reuse GlobalAgentMethod::Ext and call
wire_method() so the formatting logic stays centralized in parsing.rs and
matches the other handler files.

In `@rsworkspace/crates/acp-nats/src/client/ext_session_prompt_response.rs`:
- Line 45: The `decode_notification_params` call in
`ext_session_prompt_response.rs` hardcodes the wire-method string, duplicating
the value already owned by `ClientMethod::ExtSessionPromptResponse`. Update this
path to source the method name from
`ClientMethod::ExtSessionPromptResponse.wire_method()` instead of the literal,
mirroring the `GlobalAgentMethod::wire_method()` refactor used elsewhere, so the
`decode_notification_params` usage stays aligned with the single source of truth
in `parsing.rs`.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 18fcd487-b101-4ab2-879b-cb78a883f988

📥 Commits

Reviewing files that changed from the base of the PR and between 0814798 and 03ade27.

📒 Files selected for processing (18)
  • PLAN.md
  • docs/adr/0020-acp-sdk-1x-boundary-and-bridge-traits.md
  • docs/adr/0022-canonical-acp-wire-methods-on-nats.md
  • docs/architecture/acp-conformance.md
  • rsworkspace/crates/acp-nats-agent/src/connection/tests.rs
  • rsworkspace/crates/acp-nats/src/agent/ext_method.rs
  • rsworkspace/crates/acp-nats/src/agent/list_sessions.rs
  • rsworkspace/crates/acp-nats/src/agent/new_session.rs
  • rsworkspace/crates/acp-nats/src/agent/providers_disable.rs
  • rsworkspace/crates/acp-nats/src/agent/providers_list.rs
  • rsworkspace/crates/acp-nats/src/agent/providers_set.rs
  • rsworkspace/crates/acp-nats/src/boundary/connect_agent_boundary.rs
  • rsworkspace/crates/acp-nats/src/client/ext.rs
  • rsworkspace/crates/acp-nats/src/client/ext/tests.rs
  • rsworkspace/crates/acp-nats/src/client/ext_session_prompt_response.rs
  • rsworkspace/crates/acp-nats/src/client/ext_session_prompt_response/tests.rs
  • rsworkspace/crates/acp-nats/src/nats/parsing.rs
  • rsworkspace/crates/acp-nats/src/nats/parsing/tests.rs

yordis added 4 commits July 9, 2026 01:09
…0022

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
The rename's justifications did not survive scrutiny: the method is never
serialized on the NATS wire, enum decode was skipped, and the token-to-name
mapping exists either way. Splitting wire_method() from the subject suffix
traded a NATS-native invariant (one identity for routing, decode, telemetry,
ACLs) for vocabulary aesthetics. ADR 0022 is recorded as rejected.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis yordis changed the title refactor(acp-nats): lean on SDK dispatch enums and adopt the spec's method vocabulary refactor(acp-nats): route the byte-stream boundary through the SDK dispatch enums Jul 9, 2026
@yordis yordis merged commit a079507 into main Jul 9, 2026
10 of 11 checks passed
@yordis yordis deleted the yordis/acp-nats-rust-improvements branch July 9, 2026 05:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant