Skip to content

feat(wit): prevent protobuf and WIT schema drift#498

Merged
yordis merged 12 commits into
mainfrom
yordis/protobuf-wit-mapping
Jul 22, 2026
Merged

feat(wit): prevent protobuf and WIT schema drift#498
yordis merged 12 commits into
mainfrom
yordis/protobuf-wit-mapping

Conversation

@yordis

@yordis yordis commented Jul 22, 2026

Copy link
Copy Markdown
Member
  • Reduce schema drift between protobuf contracts and component-model consumers.
  • Preserve protobuf presence and alternatives across WASM component boundaries.
  • Keep contract evolution deterministic and reviewable against scheduler schemas.

Copilot AI review requested due to automatic review settings July 22, 2026 18:20
@cursor

cursor Bot commented Jul 22, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
New contract-generation surface for WASM/component boundaries with strict schema rules; risk is mitigated by extensive snapshot tests and wasm-tools checks rather than live runtime changes.

Overview
Introduces a goworkspace with protoc-gen-wit, a Buf/protobuf plugin that emits deterministic WIT (messages.wit per package) so component-model types stay tied to protobuf contracts instead of drifting by hand.

Generation maps messages to records, oneofs to variants (with option<variant> on the parent), and optional / proto3-optional / Edition 2024 presence to option<T>; same-package references are pulled in transitively. Unsupported shapes fail the whole request with explicit errors (enums, maps, services, cross-package message refs, recursive message graphs, name collisions after normalization, and similar).

CI and tooling: Go 1.26.5 via mise, aggregate build:go / check:go (gofmt, tests, vet, wasm-tools validation of snapshot WIT), test:go:race, and a path-filtered ci-go workflow including scheduler schedule protos. Broad snapshot tests plus a scheduler-events golden file lock expected WIT for real repo protos.

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

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

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

Next review available in: 24 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

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.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 134cf3bb-68f3-46bc-86ed-63e53843eb4c

📥 Commits

Reviewing files that changed from the base of the PR and between 6ba4bc5 and f54154a.

📒 Files selected for processing (5)
  • .config/mise/tasks/check/go
  • .github/workflows/ci-go.yml
  • goworkspace/go.mod
  • goworkspace/internal/protowit/generate.go
  • goworkspace/internal/protowit/generate_test.go

Walkthrough

Adds a Go-based protobuf-to-WIT protoc generator with deterministic naming, schema validation, edition support, WIT rendering, extensive snapshots, and Go workspace CI integration.

Changes

Protobuf-to-WIT generator

Layer / File(s) Summary
Go tooling and CI
.mise.toml, .github/workflows/ci-go.yml, .config/mise/tasks/check/go, goworkspace/go.mod
Adds Go tooling, workspace build/check tasks, module dependencies, and CI execution for formatting, tests, vetting, race detection, and builds.
Protoc plugin runtime
goworkspace/cmd/protoc-gen-wit/main.go, goworkspace/internal/protowit/run.go
Adds the protoc plugin entrypoint and deterministic request/response handling with Edition 2024 capabilities.
Schema errors and identifiers
goworkspace/internal/protowit/errors.go, goworkspace/internal/protowit/names.go
Adds structured schema errors and canonical WIT package and identifier encoding.
Descriptor conversion and rendering
goworkspace/internal/protowit/generate.go, goworkspace/internal/protowit/render.go
Converts protobuf files into WIT records and variants, validates unsupported structures and cycles, and renders package output.
Generator tests and WIT snapshots
goworkspace/internal/protowit/generate_test.go, goworkspace/internal/protowit/testdata/snapshots/*
Adds deterministic, validation, edition, oneof, reference, collision, recursion, and snapshot coverage.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant protoc
  participant protowit.Run
  participant generateFiles
  participant render
  participant Response
  protoc->>protowit.Run: CodeGeneratorRequest
  protowit.Run->>generateFiles: generate request
  generateFiles->>render: render witSchema
  render-->>generateFiles: WIT content
  generateFiles-->>protowit.Run: generated files
  protowit.Run->>Response: deterministic CodeGeneratorResponse
Loading

Suggested reviewers: copilot

Poem

A rabbit hops through Go’s new gate,
Turning protobuf shapes into WIT’s estate.
Records bloom and variants play,
Tests guard each name along the way,
While CI checks the trail each day.

🚥 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 clearly summarizes the main change: reducing drift between protobuf contracts and WIT schema mappings.
Description check ✅ Passed The description is directly related to the changeset and matches the pull request objectives.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch yordis/protobuf-wit-mapping

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.

Copilot AI 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.

Pull request overview

Adds a Go-based protoc plugin that renders protobuf message schemas into deterministic WIT interface messages definitions, along with snapshot-based tests/fixtures and CI/mise wiring to prevent schema drift between protobuf contracts and WIT consumers.

Changes:

  • Introduce internal/protowit generator (schema building, name normalization, rendering, and typed schema errors) and protoc-gen-wit entrypoint.
  • Add extensive snapshot fixtures + generator tests covering scalars, oneofs, presence, multi-package ordering, and scheduler event protos.
  • Add Go workspace + CI/mise tasks to format/test/vet and validate generated WIT via wasm-tools.

Reviewed changes

Copilot reviewed 26 out of 27 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
goworkspace/internal/protowit/run.go Protoc plugin I/O wrapper with deterministic response encoding and edition features.
goworkspace/internal/protowit/render.go Renders witSchema into WIT source text.
goworkspace/internal/protowit/names.go Normalizes protobuf identifiers/packages into WIT-safe identifiers and paths.
goworkspace/internal/protowit/generate.go Core schema extraction + WIT type mapping + determinism/cycle checks.
goworkspace/internal/protowit/errors.go Typed schema errors and user-facing error strings for unsupported shapes.
goworkspace/internal/protowit/generate_test.go Snapshot + property tests for determinism, presence, oneofs, imports, and scheduler fixtures.
goworkspace/internal/protowit/testdata/snapshots/scalars/example/events-v1/messages.wit Snapshot fixture for scalar field mapping.
goworkspace/internal/protowit/testdata/snapshots/scalar-oneof/example/events-v1/messages.wit Snapshot fixture for scalar oneof → variant mapping.
goworkspace/internal/protowit/testdata/snapshots/message-oneof/example/events-v1/messages.wit Snapshot fixture for message oneof → variant + empty records.
goworkspace/internal/protowit/testdata/snapshots/multiple-oneofs/example/events-v1/messages.wit Snapshot fixture for multiple oneofs determinism and naming.
goworkspace/internal/protowit/testdata/snapshots/oneof-import/example/events-v1/messages.wit Snapshot fixture for oneof cases that reference imported same-package messages.
goworkspace/internal/protowit/testdata/snapshots/referenced-import-inclusion/example/events-v1/messages.wit Snapshot fixture ensuring referenced same-package imports are included transitively.
goworkspace/internal/protowit/testdata/snapshots/imported-file-exclusion/example/events-v1/messages.wit Snapshot fixture ensuring unreferenced imported files are excluded.
goworkspace/internal/protowit/testdata/snapshots/same-package/example/events-v1/messages.wit Snapshot fixture for aggregating multiple files in the same proto package.
goworkspace/internal/protowit/testdata/snapshots/nested-messages/example/events-v1/messages.wit Snapshot fixture for nested messages and references.
goworkspace/internal/protowit/testdata/snapshots/nested-required/example/events-v1/messages.wit Snapshot fixture for required nested message handling.
goworkspace/internal/protowit/testdata/snapshots/proto3-optional/example/events-v1/messages.wit Snapshot fixture for proto3 optional presence → option<>.
goworkspace/internal/protowit/testdata/snapshots/edition-2024-presence/example/events-v1/messages.wit Snapshot fixture for edition-2024 presence semantics.
goworkspace/internal/protowit/testdata/snapshots/duplicate-input-paths/example/events-v1/messages.wit Snapshot fixture for idempotent duplicate FileToGenerate inputs.
goworkspace/internal/protowit/testdata/snapshots/multiple-packages/alpha/messages-v1/messages.wit Snapshot fixture for deterministic multi-package path ordering (alpha).
goworkspace/internal/protowit/testdata/snapshots/multiple-packages/omega/messages-v1/messages.wit Snapshot fixture for deterministic multi-package path ordering (omega).
goworkspace/internal/protowit/testdata/snapshots/scheduler-events/trogonai/scheduler-schedules-v1/messages.wit Snapshot fixture for real scheduler schedule event protos.
goworkspace/cmd/protoc-gen-wit/main.go protoc-gen-wit binary entrypoint.
goworkspace/go.mod Go module definition for the new Go workspace.
goworkspace/go.sum Go dependency checksums for new workspace dependencies.
.mise.toml Adds Go tool + Go build/check tasks; validates snapshot WIT with wasm-tools.
.github/workflows/ci-go.yml New workflow running Go checks/tests/build (including race tests) on relevant changes.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread goworkspace/internal/protowit/names.go

@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: 1

🤖 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 `@goworkspace/internal/protowit/render.go`:
- Around line 14-24: Update the render flow around record.fields so records with
no fields are not emitted as WIT declarations. Adjust the generator or message
model to omit unreachable empty message records, while preserving rendering of
records containing fields and their existing formatting.
🪄 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: a4face1f-ab52-4363-b108-f985aceb5472

📥 Commits

Reviewing files that changed from the base of the PR and between 36e207e and 6513fd3.

⛔ Files ignored due to path filters (1)
  • goworkspace/go.sum is excluded by !**/*.sum
📒 Files selected for processing (26)
  • .github/workflows/ci-go.yml
  • .mise.toml
  • goworkspace/cmd/protoc-gen-wit/main.go
  • goworkspace/go.mod
  • goworkspace/internal/protowit/errors.go
  • goworkspace/internal/protowit/generate.go
  • goworkspace/internal/protowit/generate_test.go
  • goworkspace/internal/protowit/names.go
  • goworkspace/internal/protowit/render.go
  • goworkspace/internal/protowit/run.go
  • goworkspace/internal/protowit/testdata/snapshots/duplicate-input-paths/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/edition-2024-presence/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/imported-file-exclusion/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/message-oneof/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/multiple-oneofs/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/multiple-packages/alpha/messages-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/multiple-packages/omega/messages-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/nested-messages/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/nested-required/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/oneof-import/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/proto3-optional/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/referenced-import-inclusion/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/same-package/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/scalar-oneof/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/scalars/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/scheduler-events/trogonai/scheduler-schedules-v1/messages.wit

Comment thread goworkspace/internal/protowit/render.go
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Copilot AI review requested due to automatic review settings July 22, 2026 18:30
@yordis
yordis force-pushed the yordis/protobuf-wit-mapping branch from 6513fd3 to fff36e0 Compare July 22, 2026 18:30

Copilot AI 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.

Pull request overview

Copilot reviewed 26 out of 27 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

goworkspace/internal/protowit/names.go:83

  • normalizeIdentifier repeatedly calls output.String() inside the hot loop to inspect the last written byte. That incurs extra work (and can allocate depending on Go version) and makes this function slower when processing many identifiers.

Track the last written byte explicitly instead of rebuilding the string each time.

	for index := 0; index < len(input); index++ {
		current := input[index]
		if current == '_' || current == '-' || current == '.' {
			if output.Len() > 0 && output.String()[output.Len()-1] != '-' {
				output.WriteByte('-')
			}

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Copilot AI review requested due to automatic review settings July 22, 2026 18:43
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis force-pushed the yordis/protobuf-wit-mapping branch from 894e805 to e737c3c Compare July 22, 2026 18:44

Copilot AI 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.

Pull request overview

Copilot reviewed 27 out of 28 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

goworkspace/internal/protowit/names.go:84

  • normalizeIdentifier calls output.String() inside the per-byte loop to inspect the last written character. This allocates repeatedly and can devolve to O(n²) behavior for long identifiers. Track the last written byte instead to keep normalization linear-time.
		if current == '_' || current == '-' || current == '.' {
			if output.Len() > 0 && output.String()[output.Len()-1] != '-' {
				output.WriteByte('-')
			}
			continue

Comment thread .config/mise/tasks/check/go Outdated
Copilot AI review requested due to automatic review settings July 22, 2026 18:46
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Comment thread .config/mise/tasks/check/go Outdated

Copilot AI 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.

Pull request overview

Copilot reviewed 27 out of 28 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

goworkspace/internal/protowit/names.go:81

  • normalizeIdentifier calls output.String() inside the per-byte loop to inspect the last written byte. strings.Builder.String() allocates a new string each time, which makes this loop O(n²) and adds avoidable allocations for longer identifiers.

Track whether the last emitted byte was a dash (or track the last byte) instead of materializing the builder repeatedly.

	var output strings.Builder
	for index := 0; index < len(input); index++ {
		current := input[index]
		if current == '_' || current == '-' || current == '.' {
			if output.Len() > 0 && output.String()[output.Len()-1] != '-' {

yordis added 2 commits July 22, 2026 15:05
Empty WIT records are rejected by component tooling, so empty messages now map to payload-less variant cases and the snapshot gate encodes packages to actually validate them.

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

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Copilot AI review requested due to automatic review settings July 22, 2026 19:05

Copilot AI 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.

Pull request overview

Copilot reviewed 27 out of 28 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

.config/mise/tasks/check/go:20

  • xargs -n1 is redundant when used with -I{} (GNU xargs will ignore -n and may emit a warning). Dropping -n1 avoids noisy output and keeps the script portable.

Also consider -r to avoid running wasm-tools with no arguments if the snapshot directory is empty.

find internal/protowit/testdata/snapshots -name '*.wit' -exec dirname {} \; \
  | sort -u \
  | xargs -n1 -I{} wasm-tools component wit {} --wasm -o /dev/null

Comment thread .github/workflows/ci-go.yml
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Copilot AI review requested due to automatic review settings July 22, 2026 19:12

Copilot AI 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.

Pull request overview

Copilot reviewed 27 out of 28 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

.config/mise/tasks/check/go:20

  • The snapshot validation pipeline will invoke wasm-tools once even if find produces no directories (xargs default behavior), which can make mise run check:go fail unexpectedly if snapshots are absent/cleaned. Using a while read loop avoids the empty-input edge case and also handles paths with spaces more safely.
find internal/protowit/testdata/snapshots -name '*.wit' -exec dirname {} \; \
  | sort -u \
  | xargs -n1 -I{} wasm-tools component wit {} --wasm -o /dev/null

Comment thread goworkspace/internal/protowit/errors.go Outdated
@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown

badge

Code Coverage Summary

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

Diff against main

Filename                                                                          Stmts    Miss  Cover
------------------------------------------------------------------------------  -------  ------  -------
crates/scheduler/trogon-scheduler/src/processor/execution/worker/dispatcher.rs        0      -2  +0.71%
TOTAL                                                                                 0      -2  +0.01%

Results for commit: f54154a

Minimum allowed coverage is 95%

♻️ This comment has been updated with latest results

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Copilot AI review requested due to automatic review settings July 22, 2026 19:33

@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 6ba4bc5. Configure here.

Comment thread goworkspace/internal/protowit/generate.go

Copilot AI 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.

Pull request overview

Copilot reviewed 27 out of 28 changed files in this pull request and generated 2 comments.

Comment thread goworkspace/go.mod
Comment thread .github/workflows/ci-go.yml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
.config/mise/tasks/check/go (1)

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

Remove the redundant -n1 from xargs.

-n1 and -I{} select mutually exclusive batching modes; GNU xargs warns and ignores -n1, while other implementations may differ. -I{} already processes one input line per invocation. (man7.org)

Proposed fix
-  | xargs -n1 -I{} wasm-tools component wit {} --wasm -o /dev/null
+  | xargs -I{} wasm-tools component wit {} --wasm -o /dev/null
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.config/mise/tasks/check/go around lines 18 - 20, Remove the redundant -n1
option from the xargs invocation in the snapshot validation command, keeping
-I{} so each input directory is processed in a separate wasm-tools invocation.
goworkspace/internal/protowit/generate_test.go (1)

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

Consider skipping instead of failing when buf is unavailable.

require.NoError on exec.LookPath("buf") fails the test outright if buf isn't on PATH, rather than skipping it. A t.Skip with the same message would make go test ./... runs outside mise cleaner without losing the guidance.

♻️ Proposed change
 	bufPath, err := exec.LookPath("buf")
-	require.NoError(
-		t,
-		err,
-		"buf is required to compile repository protobuf fixtures; run tests through mise: mise exec -- go -C goworkspace test ./...",
-	)
+	if err != nil {
+		t.Skip("buf is required to compile repository protobuf fixtures; run tests through mise: mise exec -- go -C goworkspace test ./...")
+	}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@goworkspace/internal/protowit/generate_test.go` around lines 699 - 706,
Update schedulerEventRequest to skip the test when exec.LookPath("buf") cannot
find buf, replacing the require.NoError failure while preserving the existing
guidance message. Keep the resolved buf path available for the subsequent
fixture-compilation logic.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.config/mise/tasks/check/go:
- Around line 18-20: Remove the redundant -n1 option from the xargs invocation
in the snapshot validation command, keeping -I{} so each input directory is
processed in a separate wasm-tools invocation.

In `@goworkspace/internal/protowit/generate_test.go`:
- Around line 699-706: Update schedulerEventRequest to skip the test when
exec.LookPath("buf") cannot find buf, replacing the require.NoError failure
while preserving the existing guidance message. Keep the resolved buf path
available for the subsequent fixture-compilation logic.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ed31a130-5bd5-41f0-b208-7c4b2430d828

📥 Commits

Reviewing files that changed from the base of the PR and between 6513fd3 and 6ba4bc5.

⛔ Files ignored due to path filters (1)
  • goworkspace/go.sum is excluded by !**/*.sum
📒 Files selected for processing (27)
  • .config/mise/tasks/check/go
  • .github/workflows/ci-go.yml
  • .mise.toml
  • goworkspace/cmd/protoc-gen-wit/main.go
  • goworkspace/go.mod
  • goworkspace/internal/protowit/errors.go
  • goworkspace/internal/protowit/generate.go
  • goworkspace/internal/protowit/generate_test.go
  • goworkspace/internal/protowit/names.go
  • goworkspace/internal/protowit/render.go
  • goworkspace/internal/protowit/run.go
  • goworkspace/internal/protowit/testdata/snapshots/duplicate-input-paths/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/edition-2024-presence/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/imported-file-exclusion/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/message-oneof/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/multiple-oneofs/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/multiple-packages/alpha/messages-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/multiple-packages/omega/messages-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/nested-messages/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/nested-required/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/oneof-import/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/proto3-optional/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/referenced-import-inclusion/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/same-package/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/scalar-oneof/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/scalars/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/scheduler-events/trogonai/scheduler-schedules-v1/messages.wit
🚧 Files skipped from review as they are similar to previous changes (22)
  • goworkspace/internal/protowit/testdata/snapshots/proto3-optional/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/multiple-packages/omega/messages-v1/messages.wit
  • goworkspace/go.mod
  • goworkspace/internal/protowit/testdata/snapshots/duplicate-input-paths/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/nested-messages/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/scalars/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/oneof-import/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/edition-2024-presence/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/same-package/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/multiple-packages/alpha/messages-v1/messages.wit
  • goworkspace/cmd/protoc-gen-wit/main.go
  • goworkspace/internal/protowit/testdata/snapshots/nested-required/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/referenced-import-inclusion/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/imported-file-exclusion/example/events-v1/messages.wit
  • .github/workflows/ci-go.yml
  • goworkspace/internal/protowit/render.go
  • goworkspace/internal/protowit/testdata/snapshots/scheduler-events/trogonai/scheduler-schedules-v1/messages.wit
  • goworkspace/internal/protowit/errors.go
  • goworkspace/internal/protowit/testdata/snapshots/scalar-oneof/example/events-v1/messages.wit
  • goworkspace/internal/protowit/testdata/snapshots/multiple-oneofs/example/events-v1/messages.wit
  • goworkspace/internal/protowit/names.go
  • goworkspace/internal/protowit/generate.go

yordis added 3 commits July 22, 2026 15:42
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Copilot AI review requested due to automatic review settings July 22, 2026 19:42

Copilot AI 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.

Pull request overview

Copilot reviewed 27 out of 28 changed files in this pull request and generated no new comments.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Copilot AI review requested due to automatic review settings July 22, 2026 20:08

Copilot AI 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.

Pull request overview

Copilot reviewed 27 out of 28 changed files in this pull request and generated no new comments.

@yordis
yordis merged commit a1a24a4 into main Jul 22, 2026
13 checks passed
@yordis
yordis deleted the yordis/protobuf-wit-mapping branch July 22, 2026 20:34
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.

2 participants