Skip to content

chore(docs): record architecture taxonomy decisions - #207

Merged
yordis merged 1 commit into
mainfrom
yordis/services-and-crates
Jun 8, 2026
Merged

chore(docs): record architecture taxonomy decisions#207
yordis merged 1 commit into
mainfrom
yordis/services-and-crates

Conversation

@yordis

@yordis yordis commented Jun 8, 2026

Copy link
Copy Markdown
Member
  • Preserve stable architecture vocabulary before future package and runtime moves create inconsistent boundaries.
  • Reduce ambiguity around services, crates, transports, and SDK names during upcoming implementation work.

@cursor

cursor Bot commented Jun 8, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Documentation and docs-build wiring only; no runtime or production code paths change.

Overview
Adds nine accepted ADRs under docs/adr/ that define stable vocabulary for crates vs services vs apps, Rust package boundaries and SDK naming, MCP/ACP transport and layering, polyglot workspace layout, helpers naming, TOML config precedence, OpenTelemetry defaults, and Protocol Buffers for wire contracts.

Docs site: VitePress config becomes async and loads ADRs via new helpers.ts (gray-matter + zod), with nav/sidebar ADRs links and build-time checks for frontmatter, filename shape, unique numbers, and H1 titles. docs/package.json adds gray-matter and zod.

Repo policy: AGENTS.md instructs following ADRs in implementation and review; experiments/README.md defines relaxed rules for speculative code and graduation paths out of experiments/.

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

@yordis
yordis force-pushed the yordis/services-and-crates branch from 65c096a to ddf36eb Compare June 8, 2026 04:05
@coderabbitai

coderabbitai Bot commented Jun 8, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

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

More reviews will be available in 2 minutes and 23 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: 16fe93dd-8944-4c34-bd45-c95046df3670

📥 Commits

Reviewing files that changed from the base of the PR and between 5d491bc and 0b6bfcb.

⛔ Files ignored due to path filters (2)
  • brand/yolo@500x500.png is excluded by !**/*.png
  • docs/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (15)
  • AGENTS.md
  • docs/.vitepress/config.mts
  • docs/.vitepress/helpers.ts
  • docs/adr/0001-workspace-runtime-taxonomy.md
  • docs/adr/0002-rust-crate-boundaries.md
  • docs/adr/0003-ai-protocol-transport-taxonomy.md
  • docs/adr/0004-protocol-and-transport-layering.md
  • docs/adr/0005-polyglot-workspace-layout.md
  • docs/adr/0006-helpers-naming.md
  • docs/adr/0007-configuration-sources.md
  • docs/adr/0008-opentelemetry-observability.md
  • docs/adr/0009-protocol-buffers-wire-contracts.md
  • docs/adr/index.md
  • docs/package.json
  • experiments/README.md

Walkthrough

Establishes ADR infrastructure for documenting architectural decisions: VitePress integration with dynamic sidebar generation, five foundational ADRs addressing workspace organization and design patterns, and governance rules for the experiments directory enabling speculative work.

Changes

Architecture Decision Records System

Layer / File(s) Summary
ADR Infrastructure: Helpers, Config, and Dependencies
docs/.vitepress/helpers.ts, docs/.vitepress/config.mts, docs/package.json
ADR helpers module defines Zod schema for frontmatter validation, implements glob-based file reading with gray-matter parsing, validates filename-frontmatter consistency, extracts H1 titles, and converts records to sidebar items. VitePress config refactored to async function that calls helpers at build time to dynamically populate sidebar. Dependencies updated with fast-glob, gray-matter, and zod.
Foundational Architecture Decision Records
docs/adr/0001-workspace-runtime-taxonomy.md, docs/adr/0002-rust-crate-boundaries.md, docs/adr/0003-ai-protocol-transport-taxonomy.md, docs/adr/0004-protocol-and-transport-layering.md, docs/adr/0005-polyglot-workspace-layout.md, docs/adr/index.md
Five ADRs establish workspace taxonomy, Rust packaging boundaries and naming rules, protocol-transport terminology and package rules, protocol-transport layering and composition patterns, and polyglot workspace layout across languages. Index page lists all records with navigation links.
Experiments Directory Governance
experiments/README.md
Documents rules and graduation workflow for speculative code in experiments/ directory, prohibiting production dependencies, permitting incomplete work, and defining process for moving experimental code into standard workspace locations.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • TrogonStack/trogonai#180: Introduced initial VitePress documentation site setup; this PR extends it with dynamic ADR sidebar generation and foundational architectural documentation.

Poem

🐰 The archives grow wise, decisions now bright,
Five foundational pillars guide workspaces right,
From Rust to TypeScript, from Python to Go,
Where experiments play and the boundaries flow,
A rabbit's delight—where all roads are clear!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.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 accurately summarizes the main change: adding Architecture Decision Records to document taxonomy decisions for services, crates, transports, and SDKs.
Description check ✅ Passed The description is directly related to the changeset, explaining the purpose of recording architecture taxonomy decisions to preserve vocabulary and reduce ambiguity.
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/services-and-crates

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.

@yordis
yordis force-pushed the yordis/services-and-crates branch from ddf36eb to c2f5fbc Compare June 8, 2026 04:11
Comment thread scripts/start_adr.sh Outdated
Comment thread docs/.vitepress/config.mts Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

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

Inline comments:
In `@docs/.vitepress/config.mts`:
- Line 7: Replace the URL-to-path usage when calling readAdrRecords: instead of
passing new URL("..", import.meta.url).pathname to readAdrRecords (which can
produce percent-encoded or non-native paths), import and use fileURLToPath to
convert import.meta.url to a real filesystem path and pass that into
readAdrRecords; update the call site where const adrRecords = await
readAdrRecords(...) is invoked to use fileURLToPath(new URL("..",
import.meta.url)) so readAdrRecords receives a proper platform-native path.

In `@scripts/start_adr.sh`:
- Around line 15-18: After normalizing title into the slug variable in
start_adr.sh (the slug="$(printf '%s' "$title" | tr ... | sed -E
's/[^a-z0-9]+/-/g; s/^-+//; s/-+$//')" line), add a validation step that checks
whether slug is non-empty; if empty, either exit with a clear error message
(using echo or logger and non-zero exit) or generate a safe fallback (e.g.,
"untitled" + timestamp) before proceeding to write the ADR filename—ensure this
check runs after the sed normalization and is applied similarly where slug is
created again at the other location mentioned.
- Around line 19-23: The script attempts to compute last_number by running find
on adr_dir before ensuring the directory exists, which causes failures on first
run; update the startup sequence to create the ADR directory (use mkdir -p on
the variable adr_dir) before any use of find or other scans (affecting the
last_number assignment and the similar block around line 33), so ensure adr_dir
is created prior to running the find "$adr_dir" ... pipeline that sets
last_number.
- Line 36: The Perl one-liner interpolates raw $slug/$title into s/// which
treats characters like & specially; change the call to pass slug/title as
environment variables and use Perl's \Q...\E (quotemeta) in the replacement so
values are treated literally. Concretely, set TITLE="$title" SLUG="$slug" before
invoking perl and replace the inline s/.../$slug/g and s/.../$title/g with
s/<!-- ADR title -->/\Q$ENV{TITLE}\E/g and s/<!-- ADR slug -->/\Q$ENV{SLUG}\E/g
(keep the other substitutions for ADR number/padded/date as-is).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 62f1910f-3207-41a1-aa24-bf268b3b247d

📥 Commits

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

⛔ Files ignored due to path filters (1)
  • docs/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (11)
  • docs/.vitepress/config.mts
  • docs/.vitepress/helpers.ts
  • docs/adr/0001-workspace-runtime-taxonomy.md
  • docs/adr/0002-rust-crate-boundaries.md
  • docs/adr/0003-ai-protocol-transport-taxonomy.md
  • docs/adr/0004-protocol-and-transport-layering.md
  • docs/adr/0005-polyglot-workspace-layout.md
  • docs/adr/index.md
  • docs/package.json
  • scripts/start_adr.sh
  • templates/adr.md

Comment thread docs/.vitepress/config.mts Outdated
Comment thread scripts/start_adr.sh Outdated
Comment thread scripts/start_adr.sh Outdated
Comment thread scripts/start_adr.sh Outdated
@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown

badge

Code Coverage Summary

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

Diff against main

Filename      Stmts    Miss  Cover
----------  -------  ------  --------
TOTAL             0       0  +100.00%

Results for commit: 032bdab

Minimum allowed coverage is 95%

♻️ This comment has been updated with latest results

@yordis
yordis force-pushed the yordis/services-and-crates branch 3 times, most recently from 032bdab to 85f4a46 Compare June 8, 2026 19:18

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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

Fix All in Cursor

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

Reviewed by Cursor Bugbot for commit 85f4a46. Configure here.

Comment thread docs/.vitepress/helpers.ts Outdated
@yordis
yordis force-pushed the yordis/services-and-crates branch from 85f4a46 to 414c8a4 Compare June 8, 2026 19:22
Establish workspace architecture ADRs covering taxonomy, polyglot
boundaries, record discovery, wire contracts, and internal contract
governance to reduce ambiguity before package and runtime moves.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis force-pushed the yordis/services-and-crates branch from 414c8a4 to 0b6bfcb Compare June 8, 2026 19:40
@yordis
yordis merged commit 88d6ef5 into main Jun 8, 2026
4 checks passed
@yordis
yordis deleted the yordis/services-and-crates branch June 8, 2026 19:45
mariorha added a commit that referenced this pull request Jun 9, 2026
Brings in #207 (ADR taxonomy docs), #208 (derive error implementations
via thiserror), #210 (testcontainers ADR).

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

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

Verified: cargo build --workspace, all workspace tests compile, affected
crate tests pass, cargo clippy --workspace clean.
mariorha added a commit that referenced this pull request Jun 10, 2026
Design/implementation plan for selecting any model from any runner provider
(acp/xai/openrouter) as the context-compaction model in CLI and IDE, defaulting
to the session model. Covers the catalog keystone (S1), wire/selection/reactive
strategy (M1–M4), and the architecture-ADR conventions (PR #207).
mariorha added a commit that referenced this pull request Jun 20, 2026
Allow selecting any model from any provider (acp/xai/openrouter, of which a
credential exists) as the context-compaction model, in CLI and IDE, defaulting
to the session model.

- S1: NATS-backed model catalog (trogonai-catalog service + trogonai-catalog-client
  with the shared pure predicate [type+capacity+credential filters] and the
  provider-qualified codec); proxy provider introspection (trogon.proxy.providers).
- M1: protobuf compactor wire (compactor_provider, fallback_model); routes by provider.
- M2: acp-runner participates (compactor_provider in build_compact_payload + 2 call sites).
- M3: provider-qualified selection from the shared predicate (CLI /compact-model with
  autocomplete, IDE dropdown); Gap C resolved via runner config + catalog/codec
  (registry untouched).
- M3b: embedded trogon-acp builds the cross-provider option from the cached catalog.
- M4: reactive fallback to the session model on any compaction error.
- Persistence (ADR 0009): ACP session as protobuf SessionRecord; xai/openrouter
  compaction override as a separate protobuf CompactionConfig record (the console-
  shared SESSIONS JSON bucket is left untouched, ADR 0009 interop exception).

Contracts/telemetry/config/naming follow the architecture ADRs (PR #207):
protobuf wire & persistence (.proto under proto/, *-proto crates), with the
ACP-owned surfaces kept in ACP format.
yordis added a commit that referenced this pull request Jun 22, 2026
Brings in #207 (ADR taxonomy docs), #208 (derive error implementations
via thiserror), #210 (testcontainers ADR).

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

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

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

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 22, 2026
Capture the architecture-taxonomy ADRs (PR #207) against the codex
parity work: Phase 0.5 passes ADR 0004 (protocol/transport layering)
and the codex JSON-RPC wire is an explicit ADR 0009 exception. Crate
naming / env-var prefix / tracing-vs-OTel are pre-existing workspace-wide
deviations (renaming out of scope). Flags the one forward action:
Phase 5/6 KV persistence must use a versioned protobuf contract or carry
the documented ADR 0009 migrate-when-touched exception.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 22, 2026
Allow selecting any model from any provider (acp/xai/openrouter, of which a
credential exists) as the context-compaction model, in CLI and IDE, defaulting
to the session model.

- S1: NATS-backed model catalog (trogonai-catalog service + trogonai-catalog-client
  with the shared pure predicate [type+capacity+credential filters] and the
  provider-qualified codec); proxy provider introspection (trogon.proxy.providers).
- M1: protobuf compactor wire (compactor_provider, fallback_model); routes by provider.
- M2: acp-runner participates (compactor_provider in build_compact_payload + 2 call sites).
- M3: provider-qualified selection from the shared predicate (CLI /compact-model with
  autocomplete, IDE dropdown); Gap C resolved via runner config + catalog/codec
  (registry untouched).
- M3b: embedded trogon-acp builds the cross-provider option from the cached catalog.
- M4: reactive fallback to the session model on any compaction error.
- Persistence (ADR 0009): ACP session as protobuf SessionRecord; xai/openrouter
  compaction override as a separate protobuf CompactionConfig record (the console-
  shared SESSIONS JSON bucket is left untouched, ADR 0009 interop exception).

Contracts/telemetry/config/naming follow the architecture ADRs (PR #207):
protobuf wire & persistence (.proto under proto/, *-proto crates), with the
ACP-owned surfaces kept in ACP format.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
yordis added a commit that referenced this pull request Jun 22, 2026
Design/implementation plan for selecting any model from any runner provider
(acp/xai/openrouter) as the context-compaction model in CLI and IDE, defaulting
to the session model. Covers the catalog keystone (S1), wire/selection/reactive
strategy (M1–M4), and the architecture-ADR conventions (PR #207).

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant