Skip to content

feat(trogon-std): expose uuid v7 generator#133

Merged
yordis merged 1 commit intomainfrom
yordis/pr-current-changes
Apr 23, 2026
Merged

feat(trogon-std): expose uuid v7 generator#133
yordis merged 1 commit intomainfrom
yordis/pr-current-changes

Conversation

@yordis
Copy link
Copy Markdown
Member

@yordis yordis commented Apr 23, 2026

  • provide a shared seam for time-ordered UUID generation so callers can depend on injectable IDs instead of duplicating ad hoc wrappers
  • keep the workspace guidance aligned with stricter domain-boundary rules to reduce invalid edge modeling and persistence of untrusted input

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

cursor Bot commented Apr 23, 2026

PR Summary

Low Risk
Low risk: adds a small, feature-gated UUIDv7 generation trait/type and updates workspace guidance/docs without touching existing runtime logic unless the new uuid feature is enabled.

Overview
Adds an optional uuid feature to trogon-std that exposes a simple, injectable UUIDv7 generator (NowV7 + UuidV7Generator) behind #[cfg(feature = "uuid")], with a basic test ensuring v7 output.

Updates workspace guidance (AGENTS.md) to discourage boolean edge modeling and to tighten rules around converting and persisting untrusted input types; Cargo.lock is updated to include the uuid dependency.

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

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 23, 2026

Caution

Review failed

Pull request was closed or merged during review

Walkthrough

This PR adds feature-gated UUID v7 support to the trogon-std crate via a new NowV7 trait and UuidV7Generator implementation, updates Cargo feature declarations, and introduces architectural guidelines for enum usage and untrusted data boundary handling.

Changes

Cohort / File(s) Summary
Documentation & Guidelines
rsworkspace/AGENTS.md, rsworkspace/crates/AGENTS.md
Added guidelines directing use of enum types over boolean flags for interface boundaries and established constraints for untrusted data handling (separation, single conversion, permanent validity of domain types).
UUID Feature Implementation
rsworkspace/crates/trogon-std/Cargo.toml, rsworkspace/crates/trogon-std/src/lib.rs, rsworkspace/crates/trogon-std/src/uuid.rs
Introduced optional uuid feature with NowV7 trait and UuidV7Generator struct; feature-gated module exports in lib.rs; includes unit test validating UUID v7 version number.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~15 minutes

Possibly related PRs

Poem

🐰 A rabbit hops with UUID in sight,
V7 generators shining bright!
Boundaries clear, enums reign supreme,
Untrusted data finds its scheme—
Now we generate, forever true! 🎲✨

🚥 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 pull request title accurately reflects the main change: introducing a UUID v7 generator feature in trogon-std.
Description check ✅ Passed The description clearly relates to the changeset, explaining the rationale for exposing UUID generation and updating workspace guidance on domain boundaries.
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 docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch yordis/pr-current-changes

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.

@github-actions
Copy link
Copy Markdown

badge

Code Coverage Summary

Details
Filename                                                                      Stmts    Miss  Cover    Missing
--------------------------------------------------------------------------  -------  ------  -------  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
crates/acp-nats-agent/src/connection.rs                                        1270       1  99.92%   607
crates/trogon-nats/src/client.rs                                                 22      22  0.00%    50-86
crates/trogon-nats/src/subject_token_violation.rs                                17       0  100.00%
crates/trogon-nats/src/connect.rs                                                94       9  90.43%   22-23, 33, 60-65
crates/trogon-nats/src/messaging.rs                                             561       2  99.64%   144, 154
crates/trogon-nats/src/mocks.rs                                                 284       0  100.00%
crates/trogon-nats/src/token.rs                                                   6       0  100.00%
crates/trogon-nats/src/nats_token.rs                                            157       0  100.00%
crates/trogon-nats/src/auth.rs                                                  114       0  100.00%
crates/trogon-source-linear/src/config.rs                                        17       0  100.00%
crates/trogon-source-linear/src/server.rs                                       386       0  100.00%
crates/trogon-source-linear/src/signature.rs                                     54       1  98.15%   16
crates/trogon-source-sentry/src/server.rs                                       311       0  100.00%
crates/trogon-source-sentry/src/signature.rs                                     54       0  100.00%
crates/trogon-source-sentry/src/sentry_client_secret.rs                          17       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/all_agent.rs                      9       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/all_session.rs                    9       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/prompt_wildcard.rs                9       0  100.00%
crates/acp-nats/src/nats/subjects/subscriptions/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/global_all.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/one_client.rs                    15       0  100.00%
crates/trogon-nats/src/telemetry/messaging.rs                                    82       0  100.00%
crates/acp-nats-stdio/src/main.rs                                               135      25  81.48%   56, 104-111, 117-119, 136, 165-184
crates/acp-nats-stdio/src/config.rs                                              66       0  100.00%
crates/acp-nats/src/pending_prompt_waiters.rs                                   134       0  100.00%
crates/acp-nats/src/jsonrpc.rs                                                    6       0  100.00%
crates/acp-nats/src/in_flight_slot_guard.rs                                      32       0  100.00%
crates/acp-nats/src/lib.rs                                                       69       0  100.00%
crates/acp-nats/src/ext_method_name.rs                                           68       0  100.00%
crates/acp-nats/src/req_id.rs                                                    39       0  100.00%
crates/acp-nats/src/acp_prefix.rs                                                50       0  100.00%
crates/acp-nats/src/config.rs                                                   203       0  100.00%
crates/acp-nats/src/error.rs                                                     82       0  100.00%
crates/acp-nats/src/client_proxy.rs                                             186       0  100.00%
crates/acp-nats/src/session_id.rs                                                71       0  100.00%
crates/trogon-nats/src/lease/lease_timing.rs                                     15       0  100.00%
crates/trogon-nats/src/lease/renew.rs                                           234       7  97.01%   24-30
crates/trogon-nats/src/lease/release.rs                                           5       5  0.00%    8-12
crates/trogon-nats/src/lease/renew_interval.rs                                   61       0  100.00%
crates/trogon-nats/src/lease/mod.rs                                             561      13  97.68%   180-193
crates/trogon-nats/src/lease/lease_config_error.rs                               11       0  100.00%
crates/trogon-nats/src/lease/lease_key.rs                                        19       0  100.00%
crates/trogon-nats/src/lease/nats_kv_lease_config.rs                             26       0  100.00%
crates/trogon-nats/src/lease/lease_bucket.rs                                     19       0  100.00%
crates/trogon-nats/src/lease/provision.rs                                       177       0  100.00%
crates/trogon-nats/src/lease/acquire.rs                                           5       5  0.00%    9-14
crates/trogon-nats/src/lease/ttl.rs                                              73       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_kill.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_wait_for_exit.rs           12       0  100.00%
crates/acp-nats/src/nats/subjects/client_ops/terminal_output.rs                  12       0  100.00%
crates/acp-nats/src/nats/subjects/client_ops/fs_read_text_file.rs                12       0  100.00%
crates/acp-nats/src/nats/subjects/client_ops/terminal_release.rs                 12       0  100.00%
crates/acp-nats/src/nats/subjects/client_ops/fs_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/stream.rs                                      56       0  100.00%
crates/acp-nats/src/nats/subjects/mod.rs                                        362       0  100.00%
crates/acp-nats/src/telemetry/metrics.rs                                         53       0  100.00%
crates/trogon-gateway/src/main.rs                                                 4       0  100.00%
crates/trogon-gateway/src/streams.rs                                            138       0  100.00%
crates/trogon-gateway/src/http.rs                                               110       0  100.00%
crates/trogon-gateway/src/source_status.rs                                       28       0  100.00%
crates/trogon-gateway/src/config.rs                                            1639       0  100.00%
crates/trogon-std/src/fs/mem.rs                                                 216      10  95.37%   61-63, 77-79, 132-134, 157
crates/trogon-std/src/fs/system.rs                                               92       0  100.00%
crates/acp-nats/src/jetstream/provision.rs                                       53       0  100.00%
crates/acp-nats/src/jetstream/consumers.rs                                       91       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/trogon-std/src/telemetry/http.rs                                         217       0  100.00%
crates/trogon-nats/src/jetstream/stream_max_age.rs                               18       0  100.00%
crates/trogon-nats/src/jetstream/create_conflicts.rs                             24       0  100.00%
crates/trogon-nats/src/jetstream/claim_check.rs                                 346       0  100.00%
crates/trogon-nats/src/jetstream/mocks.rs                                       670      32  95.22%   364-378, 384-392, 407-413, 427-430, 494-496
crates/trogon-nats/src/jetstream/publish.rs                                      64       0  100.00%
crates/trogon-source-discord/src/config.rs                                      108       0  100.00%
crates/trogon-source-discord/src/gateway.rs                                     426       1  99.77%   137
crates/trogon-source-telegram/src/server.rs                                     338       0  100.00%
crates/trogon-source-telegram/src/signature.rs                                   32       0  100.00%
crates/trogon-source-telegram/src/config.rs                                      17       0  100.00%
crates/trogon-source-slack/src/config.rs                                         17       0  100.00%
crates/trogon-source-slack/src/signature.rs                                      77       0  100.00%
crates/trogon-source-slack/src/server.rs                                        863       0  100.00%
crates/trogon-std/src/uuid.rs                                                     7       0  100.00%
crates/trogon-std/src/args.rs                                                    10       0  100.00%
crates/trogon-std/src/json.rs                                                    30       0  100.00%
crates/trogon-std/src/duration.rs                                                45       0  100.00%
crates/trogon-std/src/http.rs                                                    19       0  100.00%
crates/trogon-std/src/secret_string.rs                                           35       0  100.00%
crates/trogon-std/src/time/mock.rs                                              125       0  100.00%
crates/trogon-std/src/time/system.rs                                             31       0  100.00%
crates/trogon-source-notion/src/notion_event_type.rs                             46       3  93.48%   47-49
crates/trogon-source-notion/src/notion_verification_token.rs                     17       0  100.00%
crates/trogon-source-notion/src/signature.rs                                     56       1  98.21%   32
crates/trogon-source-notion/src/server.rs                                       318       8  97.48%   92-96, 129-130, 149-150
crates/trogon-std/src/env/system.rs                                              17       0  100.00%
crates/trogon-std/src/env/in_memory.rs                                           73       0  100.00%
crates/acp-telemetry/src/service_name.rs                                         38       0  100.00%
crates/acp-telemetry/src/trace.rs                                                30       3  90.00%   21-22, 30
crates/acp-telemetry/src/lib.rs                                                 165      28  83.03%   28-34, 56-59, 94, 99, 104, 118-133, 170, 173, 176, 182
crates/acp-telemetry/src/signal.rs                                                7       1  85.71%   43
crates/acp-telemetry/src/log.rs                                                  67       1  98.51%   41
crates/acp-telemetry/src/metric.rs                                               33       3  90.91%   28-29, 37
crates/trogon-source-gitlab/src/server.rs                                       397       0  100.00%
crates/trogon-source-gitlab/src/signature.rs                                     28       0  100.00%
crates/trogon-source-gitlab/src/config.rs                                        17       0  100.00%
crates/trogon-std/src/dirs/system.rs                                             71       0  100.00%
crates/trogon-std/src/dirs/fixed.rs                                              80       0  100.00%
crates/acp-nats/src/nats/subjects/commands/close.rs                              15       0  100.00%
crates/acp-nats/src/nats/subjects/commands/load.rs                               15       0  100.00%
crates/acp-nats/src/nats/subjects/commands/prompt.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/set_config_option.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/cancel.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/resume.rs                             15       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/authenticate.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/initialize.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/session_list.rs                          6       0  100.00%
crates/acp-nats/src/agent/resume_session.rs                                      90       0  100.00%
crates/acp-nats/src/agent/list_sessions.rs                                       47       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/acp-nats/src/agent/ext_method.rs                                          82       0  100.00%
crates/acp-nats/src/agent/mod.rs                                                 65       0  100.00%
crates/acp-nats/src/agent/set_session_model.rs                                   67       0  100.00%
crates/acp-nats/src/agent/load_session.rs                                        89       0  100.00%
crates/acp-nats/src/agent/prompt.rs                                             471       0  100.00%
crates/acp-nats/src/agent/close_session.rs                                       63       0  100.00%
crates/acp-nats/src/agent/set_session_config_option.rs                           67       0  100.00%
crates/acp-nats/src/agent/authenticate.rs                                        49       0  100.00%
crates/acp-nats/src/agent/set_session_mode.rs                                    67       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/new_session.rs                                         82       0  100.00%
crates/acp-nats/src/agent/ext_notification.rs                                    82       0  100.00%
crates/acp-nats/src/agent/cancel.rs                                             101       0  100.00%
crates/acp-nats/src/agent/initialize.rs                                          79       0  100.00%
crates/acp-nats/src/agent/bridge.rs                                             123       4  96.75%   108-111
crates/acp-nats/src/nats/subjects/responses/prompt_response.rs                   27       0  100.00%
crates/acp-nats/src/nats/subjects/responses/ext_ready.rs                         12       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                            27       0  100.00%
crates/acp-nats/src/nats/parsing.rs                                             278       1  99.64%   151
crates/acp-nats/src/nats/extensions.rs                                            3       0  100.00%
crates/acp-nats/src/nats/mod.rs                                                  23       0  100.00%
crates/trogon-service-config/src/lib.rs                                          92       0  100.00%
crates/trogon-source-github/src/config.rs                                        17       0  100.00%
crates/trogon-source-github/src/server.rs                                       328       0  100.00%
crates/trogon-source-github/src/signature.rs                                     61       0  100.00%
crates/acp-nats/src/client/fs_read_text_file.rs                                 356       0  100.00%
crates/acp-nats/src/client/request_permission.rs                                308       0  100.00%
crates/acp-nats/src/client/rpc_reply.rs                                          64       0  100.00%
crates/acp-nats/src/client/ext_session_prompt_response.rs                       135       0  100.00%
crates/acp-nats/src/client/terminal_kill.rs                                     290       0  100.00%
crates/acp-nats/src/client/terminal_output.rs                                   206       0  100.00%
crates/acp-nats/src/client/terminal_create.rs                                   274       0  100.00%
crates/acp-nats/src/client/mod.rs                                              2851       0  100.00%
crates/acp-nats/src/client/session_update.rs                                     55       0  100.00%
crates/acp-nats/src/client/terminal_release.rs                                  347       0  100.00%
crates/acp-nats/src/client/terminal_wait_for_exit.rs                            378       0  100.00%
crates/acp-nats/src/client/ext.rs                                               308       8  97.40%   163-172, 189-198
crates/acp-nats/src/client/fs_write_text_file.rs                                418       0  100.00%
crates/trogon-source-twitter/src/signature.rs                                    69       0  100.00%
crates/trogon-source-twitter/src/server.rs                                      525       0  100.00%
crates/trogon-source-twitter/src/config.rs                                       17       0  100.00%
crates/trogon-source-incidentio/src/config.rs                                    16       0  100.00%
crates/trogon-source-incidentio/src/signature.rs                                369       0  100.00%
crates/trogon-source-incidentio/src/incidentio_event_type.rs                     62       0  100.00%
crates/trogon-source-incidentio/src/incidentio_signing_secret.rs                 67       0  100.00%
crates/trogon-source-incidentio/src/server.rs                                   343       0  100.00%
crates/acp-nats-server/src/transport.rs                                        2001     140  93.00%   216-221, 294, 477-478, 512, 546-547, 556-557, 569-575, 596-597, 608-611, 662, 681, 686, 705, 717, 847, 865, 888-890, 942, 959-962, 1172, 1175, 1178, 1187, 1191, 1194, 1197-1200, 1218, 1247-1250, 1261-1266, 1284-1288, 1297-1306, 1315-1334, 1344-1345, 1355, 1384, 1394, 1415, 1436-1442, 1445-1449, 1452-1457, 1467-1469, 1478, 1480-1481, 1563-1564, 1576-1577, 1599-1600, 1652-1668, 1707, 1984, 2022, 2053, 2427, 2470, 2523, 2591, 2603
crates/acp-nats-server/src/config.rs                                            137       9  93.43%   41, 50-61
crates/acp-nats-server/src/acp_connection_id.rs                                  45       0  100.00%
crates/acp-nats-server/src/connection.rs                                        171      32  81.29%   76-83, 88-99, 115, 117-118, 123, 132-133, 138, 142, 146, 149, 157, 161, 164, 167-171, 207
crates/acp-nats-server/src/main.rs                                              791      10  98.74%   96, 226-233, 387
TOTAL                                                                         28013     389  98.61%

Diff against main

Filename                         Stmts    Miss  Cover
-----------------------------  -------  ------  --------
crates/trogon-std/src/uuid.rs       +7       0  +100.00%
TOTAL                               +7       0  +0.00%

Results for commit: ce09eb5

Minimum allowed coverage is 95%

♻️ This comment has been updated with latest results

@yordis yordis merged commit ea6ffa6 into main Apr 23, 2026
6 of 7 checks passed
@yordis yordis deleted the yordis/pr-current-changes branch April 23, 2026 07:02
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