Skip to content

fix(decider-runtime): preserve no-stream append semantics#212

Merged
yordis merged 1 commit into
mainfrom
yordis/chore-create-pr-v9
Jun 10, 2026
Merged

fix(decider-runtime): preserve no-stream append semantics#212
yordis merged 1 commit into
mainfrom
yordis/chore-create-pr-v9

Conversation

@yordis

@yordis yordis commented Jun 10, 2026

Copy link
Copy Markdown
Member
  • No-stream commands need append-time conflict detection so existing streams are rejected without replaying stale state.
  • Snapshot-enabled executions need the same precondition semantics to avoid read-before-append drift.

@cursor

cursor Bot commented Jun 10, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Changes core command execution ordering for create-style commands; wrong behavior could allow double-create or reject valid writes, but scope is narrow and well-covered by new tests.

Overview
Commands with WritePrecondition::NoStream now skip stream and snapshot reads and decide from initial_state(), appending with StreamWritePrecondition::NoStream so an existing stream fails at append instead of after replaying history (or via a misleading domain error).

The snapshot execution path uses the same fast path and still runs snapshot policy after a successful append via shared helpers (maybe_take_snapshot, ensure_snapshot_not_ahead). Tests and FakeRuntime append now enforce write preconditions to lock in this semantics.

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

@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

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

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

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

⌛ How to resolve this issue?

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

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

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

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

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: dc2e93e3-7433-40d8-a09e-a0fd515fff7f

📥 Commits

Reviewing files that changed from the base of the PR and between 2aa1a87 and b40cd01.

📒 Files selected for processing (1)
  • rsworkspace/crates/trogon-decider-runtime/src/execution.rs

Walkthrough

The runtime short-circuits execution for commands with WritePrecondition::NoStream: both snapshot-less and snapshot-aware paths skip stream/snapshot reads, evaluate the decider from initial state, append with current_position=None, and (for snapshots) run the snapshot policy to optionally schedule a snapshot.

Changes

No-stream command execution optimization

Layer / File(s) Summary
Helper and snapshot-less no-stream path
rsworkspace/crates/trogon-decider-runtime/src/execution.rs
Add has_no_stream_write_precondition::<C>() and an early branch in the WithoutSnapshots flow to skip stream reads/replay, evaluate from C::initial_state(), and append with current_position = None.
Snapshot-aware no-stream path
rsworkspace/crates/trogon-decider-runtime/src/execution.rs
Add an early branch in the Snapshots flow to skip snapshot loading and stream replay, evaluate from C::initial_state(), append with current_position = None, then run snapshot policy with snapshot_position: None and replayed_event_count: 0, scheduling a snapshot only if the policy returns Take.
Snapshot helpers and centralized validation
rsworkspace/crates/trogon-decider-runtime/src/execution.rs
Refactor snapshot-path: extract ensure_snapshot_not_ahead(...) for ordering validation and maybe_take_snapshot(...) to run snapshot policy and schedule snapshot writes when SnapshotDecision::Take.
Test types and append precondition enforcement
rsworkspace/crates/trogon-decider-runtime/src/execution.rs
Set RequiredRegisterCommand snapshot policy to NoSnapshot; update FakeRuntime::append_stream to validate stream_write_precondition matches current_position and fail on mismatches.
Tests for no-stream and snapshot interactions
rsworkspace/crates/trogon-decider-runtime/src/execution.rs
Add/update tests: assert NoStream append fails when stream state exists without reading history, StreamExists allows append when position present, and no-stream + snapshots path skips loads while optionally scheduling a snapshot when policy returns Take.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • TrogonStack/trogonai#171: Also modifies CommandExecution::execute and StreamWritePrecondition handling around append and replay flows.
  • TrogonStack/trogonai#179: Related snapshot-policy and DecideSnapshot context refactors used by the no-stream snapshot path.

Poem

I’m a rabbit in the runtime den,
I skip the stream and hop again,
From initial state I take my cue,
Append with None — no past to view,
If snapshots ask, I nibble through. 🐇

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: fixing no-stream append semantics in the decider runtime, which matches the core objective of the PR.
Description check ✅ Passed The description directly relates to the changeset, explaining the rationale for no-stream command conflict detection and snapshot semantics preservation.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch yordis/chore-create-pr-v9

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 and usage tips.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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

Fix All in Cursor

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

Reviewed by Cursor Bugbot for commit 28e1fe8. Configure here.

Comment thread rsworkspace/crates/trogon-decider-runtime/src/execution.rs
@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown

badge

Code Coverage Summary

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

Diff against main

Filename                                          Stmts    Miss  Cover
----------------------------------------------  -------  ------  --------
crates/trogon-decider-runtime/src/execution.rs     +128       0  +100.00%
TOTAL                                              +128       0  +0.00%

Results for commit: b40cd01

Minimum allowed coverage is 95%

♻️ This comment has been updated with latest results

@yordis yordis force-pushed the yordis/chore-create-pr-v9 branch 6 times, most recently from e924773 to 2aa1a87 Compare June 10, 2026 22:46
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis yordis force-pushed the yordis/chore-create-pr-v9 branch from 2aa1a87 to b40cd01 Compare June 10, 2026 23:03
@yordis yordis merged commit 56c614a into main Jun 10, 2026
7 checks passed
@yordis yordis deleted the yordis/chore-create-pr-v9 branch June 10, 2026 23:10
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