Skip to content

feat(agents): introduce agent provisioning domain and proto#480

Open
yordis wants to merge 1 commit into
mainfrom
yordis/audit-agent-context-doc
Open

feat(agents): introduce agent provisioning domain and proto#480
yordis wants to merge 1 commit into
mainfrom
yordis/audit-agent-context-doc

Conversation

@yordis

@yordis yordis commented Jul 13, 2026

Copy link
Copy Markdown
Member
  • Establishes provisioning as the first independently reviewable Agent boundary so initial configuration and provenance can settle before proposal and revision workflows expand the domain.
  • Aligns the implementation with accepted stream-topology and annotation-lifetime decisions, preventing the rejected single-stream lifecycle model from becoming a wire contract.

@cursor

cursor Bot commented Jul 13, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Large new wire contract and event-sourced decider semantics (retry identity, genesis revision) will be hard to change once consumers exist; changes are additive with no existing agent paths modified yet.

Overview
Introduces the Agent registry wire contract and the first Wasm-clean provisioning slice: ProvisionAgent command, AgentProvisioned genesis event (implicit revision 1), and decider state that holds only fields needed to classify retries.

Protos define Charter (runtime, model, tool/delegate declarations), labels/annotations, RevisionRef, and separate persistent vs transient annotation lifetimes on the event. State omits provisioned_by and transient metadata so retries compare definition + content_digest only.

trogonai-agents-domain implements typed validation (Kubernetes label/annotation syntax, canonical sha256: digests, disjoint tool/delegate selectors) and a ProvisionAgent Decider: first command emits AgentProvisioned; replays with the same identity return AlreadyProvisionedIdentical, differing payloads return AlreadyProvisionedConflict. trogonai-proto gains an agents feature with AgentEvent encode/decode and generated bindings.

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

@yordis
yordis force-pushed the yordis/audit-agent-context-doc branch from af1cb66 to f0a0d07 Compare July 13, 2026 16:17
@coderabbitai

coderabbitai Bot commented Jul 13, 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: 40 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: fe0a71d9-93dd-48a3-acbe-9dd0982ba171

📥 Commits

Reviewing files that changed from the base of the PR and between e5c8969 and 8496fa8.

⛔ Files ignored due to path filters (1)
  • rsworkspace/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (5)
  • proto/trogonai/agents/agents/state/v1/provision_agent_state.proto
  • proto/trogonai/agents/agents/v1/agent.proto
  • proto/trogonai/agents/agents/v1/agent_provisioned.proto
  • proto/trogonai/agents/agents/v1/events.proto
  • proto/trogonai/agents/agents/v1/provision_agent.proto

Walkthrough

This PR introduces protobuf contracts for agent metadata, provisioning commands, genesis events, and persisted state, along with a new trogonai-agents-domain Rust crate implementing validated domain value types, an AgentDefinition/AgentCharter composite, protobuf wire conversion, and a ProvisionAgent Decider. The trogonai-proto crate gains an agents feature with codec and JSON-decoding support.

Changes

Agent Provisioning Foundation

Layer / File(s) Summary
Protobuf contracts
proto/trogonai/agents/agents/v1/agent.proto, provision_agent.proto, agent_provisioned.proto, events.proto, proto/trogonai/agents/agents/state/v1/provision_agent_state.proto
Defines Charter, Model, Label, RevisionRef, dependency messages, ProvisionAgent command, AgentProvisioned genesis event, AgentEvent envelope, and ProvisionAgentState/ProvisionedAgent snapshot.
Validated domain value types
rsworkspace/crates/trogonai-agents-domain/Cargo.toml, .../domain/agent_id*.rs, agent_name*.rs, parent_ref*.rs, principal*.rs, content_digest*.rs, revision_number*.rs, runtime_id*.rs, model_id*.rs, model_parameters*.rs, annotations*.rs, labels*.rs, tool_selectors*.rs, delegate_selectors*.rs, kubernetes_syntax.rs, nonblank.rs
Introduces newtype wrappers with parse/validation logic, error enums, standard trait impls, and unit tests for each identifier/metadata concept.
AgentCharter/AgentDefinition composites
.../domain/agent_charter*.rs, agent_definition*.rs, domain/mod.rs
Bundles runtime/model/tool/delegate charter data and agent identity/metadata, and re-exports the domain public API.
Wire conversion
.../commands/proto_wire.rs, proto_wire/tests.rs
Converts ProvisionAgent/AgentProvisioned/state protobuf messages to/from validated domain types via CommandWireError.
ProvisionAgent Decider
.../commands/event_fold*.rs, provision_agent*.rs, test_support.rs, mod.rs, src/lib.rs
Implements the provisioning Decider (evolve/decide), retry classification (identical/conflict), and deterministic test fixtures.
Proto crate codec and feature wiring
rsworkspace/crates/trogonai-proto/Cargo.toml, src/lib.rs, src/tests.rs, src/agents/mod.rs, src/agents/agents/mod.rs, src/agents/agents/codec*.rs
Adds an agents feature, AgentEvent codec (EventEncode/EventDecode/EventType), wrapper modules, and JSON-decoding registration/tests.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

  • TrogonStack/trogonai#165: The main PR adds trogon-decider's test-support dev-dependency and uses its TestCase/Then* chain-style API in provisioning tests, directly depending on the decider given-when-then test support introduced in that PR.
  • TrogonStack/trogonai#187: The main PR extends trogonai-proto/src/lib.rs feature-gating/registration (moving from schedules-only to schedules+agents), building directly on the scheduler-proto codec and schedules gating introduced there.

Suggested reviewers: copilot

Poem

A little rabbit hops with glee,
New charters, digests, IDs to see 🥕
Provision events, decided true,
Wired from proto through and through,
Hop hop — the agent domain is new!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 43.88% 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
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly matches the main change: introducing the agent provisioning domain and proto contract.
Description check ✅ Passed The description is directly related to the provisioning-domain and wire-contract work in this PR.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch yordis/audit-agent-context-doc

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.

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

🧹 Nitpick comments (9)
rsworkspace/crates/trogonai-agents-domain/src/commands/archive_agent.rs (1)

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

Duplicate lifecycle() helper across deciders. Both files define a byte-for-byte identical helper (state lookup → as_known() fallback → UNSPECIFIED rejection), differing only in the generated proto type names; the shared root cause is the lack of a common lifecycle-extraction abstraction for state_v1::*::Lifecycle enums.

  • rsworkspace/crates/trogonai-agents-domain/src/commands/archive_agent.rs#L127-L145: extract this logic into a shared generic helper (e.g. a small macro or trait over the state/Lifecycle type) in event_fold.rs and delegate to it here.
  • rsworkspace/crates/trogonai-agents-domain/src/commands/activate_revision.rs#L241-L259: delegate to the same shared helper instead of re-defining an identical function.

This pattern likely recurs in the other decider files in this PR (provision_agent.rs, stage_revision.rs, record_revision_verdict.rs, rollback_revision.rs), which aren't in the current review batch — worth confirming and extending the extraction to those as well.

♻️ Example extraction sketch
// event_fold.rs
pub(crate) fn known_lifecycle<L>(
    lifecycle: &Option<buffa::EnumValue<L>>,
) -> Result<L, AgentEventFoldError>
where
    L: Copy + PartialEq + buffa::EnumFullName, // adjust bound to whatever buffa exposes
{
    let value = lifecycle.as_ref().ok_or(AgentEventFoldError::MissingStateField("lifecycle"))?;
    let known = value.as_known().ok_or(AgentEventFoldError::UnknownStateValue {
        field: "lifecycle",
        value: value.to_i32(),
    })?;
    Ok(known)
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@rsworkspace/crates/trogonai-agents-domain/src/commands/archive_agent.rs`
around lines 127 - 145, The lifecycle extraction logic is duplicated across
deciders; add a shared generic helper in
rsworkspace/crates/trogonai-agents-domain/src/event_fold.rs and preserve
missing-field, unknown-value, and UNSPECIFIED rejection behavior. Update
lifecycle() in
rsworkspace/crates/trogonai-agents-domain/src/commands/archive_agent.rs (lines
127-145) and
rsworkspace/crates/trogonai-agents-domain/src/commands/activate_revision.rs
(lines 241-259) to delegate to it, and inspect provision_agent.rs,
stage_revision.rs, record_revision_verdict.rs, and rollback_revision.rs for the
same pattern, extending the shared helper usage where present.
rsworkspace/crates/trogonai-agents-domain/src/commands/stage_revision/tests.rs (1)

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

Consider adding a test for change-class overstatement.

The existing test covers understatement (declared LearnedLayer but required Charter). The decide function rejects both directions via the same != check, but a test for the overstatement direction (declared Charter but required LearnedLayer) would document that explicitly.

🧪 Suggested overstatement test
+
+#[test]
+fn rejects_a_change_class_that_overstates_the_change() {
+    let mut command = stage_command(revision_two(), ChangeClass::LearnedLayer);
+    command.change_class = ChangeClass::Charter;
+
+    TestCase::<StageRevision>::new()
+        .given([provisioned_event()])
+        .when(command)
+        .then_error(StageRevisionError::ChangeClassMismatch {
+            declared: ChangeClass::Charter,
+            required: ChangeClass::LearnedLayer,
+        });
+}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/stage_revision/tests.rs`
around lines 59 - 71, Add a test alongside
rejects_a_change_class_that_understates_the_change covering overstatement: use a
revision requiring ChangeClass::LearnedLayer, declare ChangeClass::Charter, and
assert StageRevisionError::ChangeClassMismatch with declared Charter and
required LearnedLayer.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors/tests.rs (1)

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

Add tests for InvalidRequired and InvalidOptional error variants.

The test covers the happy path and Overlap, but ToolSelectorsError::InvalidRequired and ToolSelectorsError::InvalidOptional (blank/untrimmed selectors) are untested.

✅ Suggested additional test cases
 #[test]
 fn validates_ordered_disjoint_tool_selectors() {
     let selectors = ToolSelectors::new(
         BTreeSet::from(["bash".to_string()]),
         BTreeSet::from(["web_search".to_string()]),
     )
     .unwrap();
     assert!(selectors.required().contains("bash"));
     assert!(matches!(
         ToolSelectors::new(
             BTreeSet::from(["bash".to_string()]),
             BTreeSet::from(["bash".to_string()])
         ),
         Err(ToolSelectorsError::Overlap { .. })
     ));
 }
+
+#[test]
+fn rejects_blank_required_selector() {
+    assert!(matches!(
+        ToolSelectors::new(
+            BTreeSet::from(["".to_string()]),
+            BTreeSet::new(),
+        ),
+        Err(ToolSelectorsError::InvalidRequired { .. })
+    ));
+}
+
+#[test]
+fn rejects_blank_optional_selector() {
+    assert!(matches!(
+        ToolSelectors::new(
+            BTreeSet::new(),
+            BTreeSet::from(["".to_string()]),
+        ),
+        Err(ToolSelectorsError::InvalidOptional { .. })
+    ));
+}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors/tests.rs`
around lines 3 - 18, Add test cases in validates_ordered_disjoint_tool_selectors
for ToolSelectors::new returning ToolSelectorsError::InvalidRequired when a
required selector is blank or untrimmed, and InvalidOptional for the
corresponding optional selector inputs. Assert the specific error variants while
preserving the existing valid and Overlap coverage.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors.rs (1)

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

Extract a ToolSelector value object to align with domain modeling guidelines.

ToolSelectors stores individual selector names as bare String primitives and validates nonblank/trimmed at the aggregate level. The coding guidelines require preferring domain-specific value objects over primitives and validating per-type, not per-aggregate. A ToolSelector value object would move the nonblank/trimmed check to its own new constructor, leaving ToolSelectors::new responsible only for the overlap constraint. This also eliminates InvalidRequired/InvalidOptional from ToolSelectorsError and preserves the original NonblankError context instead of discarding it via .is_err().

As per coding guidelines: "Prefer domain-specific value objects over primitives (e.g., AcpPrefix instead of String)" and "Validate per-type, not per-aggregate: avoid validating unrelated fields together in a single constructor."

♻️ Proposed refactor sketch
 use std::collections::BTreeSet;
 
-use super::nonblank::validate_nonblank;
+use super::nonblank::validate_nonblank;
+
+#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
+pub struct ToolSelector(String);
+
+#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
+pub enum ToolSelectorError {
+    #[error("tool selector '{selector}' must be nonblank and trimmed")]
+    Invalid { selector: String },
+}
+
+impl ToolSelector {
+    pub fn new(selector: String) -> Result<Self, ToolSelectorError> {
+        validate_nonblank(&selector).map_err(|_| ToolSelectorError::Invalid { selector })?;
+        Ok(Self(selector))
+    }
+
+    pub fn as_str(&self) -> &str {
+        &self.0
+    }
+}

 #[derive(Debug, Clone, PartialEq, Eq, Default)]
 pub struct ToolSelectors {
-    required: BTreeSet<String>,
-    optional: BTreeSet<String>,
+    required: BTreeSet<ToolSelector>,
+    optional: BTreeSet<ToolSelector>,
 }
 
 #[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
 pub enum ToolSelectorsError {
-    #[error("required tool selector '{selector}' must be nonblank and trimmed")]
-    InvalidRequired { selector: String },
-    #[error("optional tool selector '{selector}' must be nonblank and trimmed")]
-    InvalidOptional { selector: String },
     #[error("tool selector '{selector}' cannot be both required and optional")]
-    Overlap { selector: String },
+    Overlap { selector: ToolSelector },
 }
 
 impl ToolSelectors {
-    pub fn new(required: BTreeSet<String>, optional: BTreeSet<String>) -> Result<Self, ToolSelectorsError> {
-        for selector in &required {
-            if validate_nonblank(selector).is_err() {
-                return Err(ToolSelectorsError::InvalidRequired {
-                    selector: selector.clone(),
-                });
-            }
-        }
-        for selector in &optional {
-            if validate_nonblank(selector).is_err() {
-                return Err(ToolSelectorsError::InvalidOptional {
-                    selector: selector.clone(),
-                });
-            }
-        }
+    pub fn new(required: BTreeSet<ToolSelector>, optional: BTreeSet<ToolSelector>) -> Result<Self, ToolSelectorsError> {
         if let Some(selector) = required.intersection(&optional).next() {
             return Err(ToolSelectorsError::Overlap {
                 selector: selector.clone(),
             });
         }
         Ok(Self { required, optional })
     }
 
-    pub fn required(&self) -> &BTreeSet<String> {
+    pub fn required(&self) -> &BTreeSet<ToolSelector> {
         &self.required
     }
 
-    pub fn optional(&self) -> &BTreeSet<String> {
+    pub fn optional(&self) -> &BTreeSet<ToolSelector> {
         &self.optional
     }
 }

Also applies to: 22-43

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

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors.rs`
around lines 5 - 8, Introduce a domain-specific ToolSelector value object with a
new constructor that validates and preserves the existing NonblankError for
nonblank, trimmed selector names. Update ToolSelectors.required and optional to
store ToolSelector values, and adjust construction/accessors as needed. Make
ToolSelectors::new enforce only the required/optional overlap constraint,
removing InvalidRequired and InvalidOptional from ToolSelectorsError and
propagating ToolSelector construction errors unchanged.

Source: Coding guidelines

rsworkspace/crates/trogonai-agents-domain/src/commands/domain/delegate_selectors.rs (1)

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

Use a selector value object instead of raw String
nonblank.rs only provides validate_nonblank, so DelegateSelectors and ToolSelectors still validate individual strings themselves. A dedicated selector type would make invalid selectors unrepresentable and leave these aggregates to enforce only overlap.

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

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/delegate_selectors.rs`
around lines 5 - 9, Introduce a dedicated selector value object validated
through the existing nonblank validation, and replace the raw String element
types in DelegateSelectors’ required and optional BTreeSets with that type.
Update ToolSelectors and related construction/access paths consistently so
individual selector validation is centralized in the value object, while the
aggregate types enforce only required/optional overlap rules.

Source: Coding guidelines

rsworkspace/crates/trogonai-agents-domain/src/commands/domain/rollback_reason.rs (1)

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

Consider dedicated value types for metric/window/delta instead of raw String.

Each field is independently validated for nonblank inside a single shared constructor rather than owning its own factory/type. As per coding guidelines: "Prefer domain-specific value objects over primitives (e.g., AcpPrefix instead of String)" and "Validate per-type, not per-aggregate: avoid validating unrelated fields together in a single constructor." Other value objects in this PR (SkillRef, TemplateId, TenantId) follow the per-type pattern; RollbackReason currently doesn't.

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

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/rollback_reason.rs`
around lines 3 - 32, Introduce dedicated domain value types for the metric,
window, and delta fields, each owning its nonblank-and-trimmed validation and
exposing its own constructor or factory. Update RollbackReason and its
constructor to accept and store those value types, removing the per-field
primitive validation from RollbackReason while preserving the existing
InvalidMetric, InvalidWindow, and InvalidDelta error behavior through the
respective type boundaries.

Source: Coding guidelines

rsworkspace/crates/trogonai-agents-domain/src/commands/domain/verdict_reasons.rs (1)

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

Consider including the raw input in VerdictReasonsError for diagnostic parity.

TenantIdError captures the raw input (raw: String) for better error messages, but VerdictReasonsError only stores the NonBlankViolation. Adding the raw value would make error messages more actionable and maintain consistency across domain error types.

♻️ Proposed refactor to include raw input
 #[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
-#[error("verdict reasons are invalid: {violation}")]
+#[error("verdict reasons '{raw}' are invalid: {violation}")]
 pub struct VerdictReasonsError {
+    raw: String,
     violation: NonBlankViolation,
 }

Then update the parse method:

     pub fn parse(raw: &str) -> Result<Self, VerdictReasonsError> {
-        validate_nonblank(raw).map_err(|violation| VerdictReasonsError { violation })?;
+        validate_nonblank(raw).map_err(|violation| VerdictReasonsError {
+            raw: raw.to_string(),
+            violation,
+        })?;
         Ok(Self(raw.to_string()))
     }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/verdict_reasons.rs`
around lines 9 - 13, Update VerdictReasonsError and the VerdictReasons::parse
flow to retain the original raw input alongside NonBlankViolation, following the
TenantIdError pattern. Include the raw value in the error display while
preserving the existing validation behavior and violation details.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/evidence/tests.rs (2)

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

Consider asserting outcome_refs ordering alongside session_refs.

The test verifies session_refs are deterministically ordered but doesn't assert outcome_refs content or ordering, leaving that path unverified.

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

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/evidence/tests.rs`
around lines 22 - 40, Extend stores_references_deterministically to also inspect
evidence.outcome_refs(), mapping each OutcomeRef with as_str and asserting the
collected values equal the expected deterministic order, such as ["outcome-1"].

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

Consider adding test cases for whitespace violation and both-invalid scenario.

The test covers the empty-rationale and empty-refs cases separately, but doesn't test:

  • SurroundingWhitespace violation (e.g., " reason " should also return InvalidRationale).
  • The both-invalid case (empty refs + empty rationale) to document which error takes priority.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/evidence/tests.rs`
around lines 5 - 19, Extend
requires_nonblank_rationale_and_at_least_one_typed_ref to assert that
whitespace-surrounded rationale such as " reason " returns
EvidenceError::InvalidRationale, and add a case with both empty references and
empty rationale to document the constructor’s error precedence. Use
Evidence::new and the existing error variants, preserving the current separate
validation cases.
🤖 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
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/archive_reason.rs`:
- Around line 9-18: Update ArchiveReasonError and ArchiveReason::parse to retain
the invalid raw input as a String and include it in the error display, matching
the raw-capturing behavior of ModelIdError, SessionRefError, and AgentIdError
while preserving the existing violation details.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/changed_fields.rs`:
- Around line 17-39: Move the immutable-field validation from classify() into
new(), returning ChangedFieldsError::ImmutableFields for any immutable entries
after the empty-set check. Make classify() infallible while preserving its
Charter versus LearnedLayer classification, and update changed_fields tests so
construction asserts the immutable error and classification calls no longer
unwrap a Result.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/changed_fields/tests.rs`:
- Around line 21-32: Update the test around ChangedFields::new to assert that
construction directly returns Err(ChangedFieldsError::ImmutableFields { fields:
BTreeSet::from([ChangedField::Name, ChangedField::Runtime]) }). Remove the
unwrap and classify() error assertion, while preserving the existing
immutable-field set.

In `@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/nonblank.rs`:
- Around line 3-7: Add a std::error::Error implementation for the
NonBlankViolation enum in nonblank.rs, preserving its existing Display behavior
and variants.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/rubric_result/tests.rs`:
- Around line 5-13: Update the RubricResult construction test to assert the
baseline score through result.baseline().get(), expecting 0.7, alongside the
existing rubric, candidate, and trials assertions.

In `@rsworkspace/crates/trogonai-proto/src/agents/agents/codec/tests.rs`:
- Around line 183-199: The test
event_decode_dispatches_all_lifecycle_event_types overstates coverage. Either
rename it to reflect that it only dispatches AgentProvisioned and AgentArchived,
or extend its EventDecode::decode assertions to include RevisionStaged,
RevisionVerdictRecorded, RevisionActivated, and RevisionRolledBack, preserving
the existing variant-matching style.

---

Nitpick comments:
In `@rsworkspace/crates/trogonai-agents-domain/src/commands/archive_agent.rs`:
- Around line 127-145: The lifecycle extraction logic is duplicated across
deciders; add a shared generic helper in
rsworkspace/crates/trogonai-agents-domain/src/event_fold.rs and preserve
missing-field, unknown-value, and UNSPECIFIED rejection behavior. Update
lifecycle() in
rsworkspace/crates/trogonai-agents-domain/src/commands/archive_agent.rs (lines
127-145) and
rsworkspace/crates/trogonai-agents-domain/src/commands/activate_revision.rs
(lines 241-259) to delegate to it, and inspect provision_agent.rs,
stage_revision.rs, record_revision_verdict.rs, and rollback_revision.rs for the
same pattern, extending the shared helper usage where present.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/delegate_selectors.rs`:
- Around line 5-9: Introduce a dedicated selector value object validated through
the existing nonblank validation, and replace the raw String element types in
DelegateSelectors’ required and optional BTreeSets with that type. Update
ToolSelectors and related construction/access paths consistently so individual
selector validation is centralized in the value object, while the aggregate
types enforce only required/optional overlap rules.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/evidence/tests.rs`:
- Around line 22-40: Extend stores_references_deterministically to also inspect
evidence.outcome_refs(), mapping each OutcomeRef with as_str and asserting the
collected values equal the expected deterministic order, such as ["outcome-1"].
- Around line 5-19: Extend
requires_nonblank_rationale_and_at_least_one_typed_ref to assert that
whitespace-surrounded rationale such as " reason " returns
EvidenceError::InvalidRationale, and add a case with both empty references and
empty rationale to document the constructor’s error precedence. Use
Evidence::new and the existing error variants, preserving the current separate
validation cases.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/rollback_reason.rs`:
- Around line 3-32: Introduce dedicated domain value types for the metric,
window, and delta fields, each owning its nonblank-and-trimmed validation and
exposing its own constructor or factory. Update RollbackReason and its
constructor to accept and store those value types, removing the per-field
primitive validation from RollbackReason while preserving the existing
InvalidMetric, InvalidWindow, and InvalidDelta error behavior through the
respective type boundaries.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors.rs`:
- Around line 5-8: Introduce a domain-specific ToolSelector value object with a
new constructor that validates and preserves the existing NonblankError for
nonblank, trimmed selector names. Update ToolSelectors.required and optional to
store ToolSelector values, and adjust construction/accessors as needed. Make
ToolSelectors::new enforce only the required/optional overlap constraint,
removing InvalidRequired and InvalidOptional from ToolSelectorsError and
propagating ToolSelector construction errors unchanged.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors/tests.rs`:
- Around line 3-18: Add test cases in validates_ordered_disjoint_tool_selectors
for ToolSelectors::new returning ToolSelectorsError::InvalidRequired when a
required selector is blank or untrimmed, and InvalidOptional for the
corresponding optional selector inputs. Assert the specific error variants while
preserving the existing valid and Overlap coverage.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/domain/verdict_reasons.rs`:
- Around line 9-13: Update VerdictReasonsError and the VerdictReasons::parse
flow to retain the original raw input alongside NonBlankViolation, following the
TenantIdError pattern. Include the raw value in the error display while
preserving the existing validation behavior and violation details.

In
`@rsworkspace/crates/trogonai-agents-domain/src/commands/stage_revision/tests.rs`:
- Around line 59-71: Add a test alongside
rejects_a_change_class_that_understates_the_change covering overstatement: use a
revision requiring ChangeClass::LearnedLayer, declare ChangeClass::Charter, and
assert StageRevisionError::ChangeClassMismatch with declared Charter and
required LearnedLayer.
🪄 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: f267a30d-9645-43ae-8f8f-17c80be9afad

📥 Commits

Reviewing files that changed from the base of the PR and between 8f100c9 and e80608a.

⛔ Files ignored due to path filters (46)
  • rsworkspace/Cargo.lock is excluded by !**/*.lock
  • rsworkspace/crates/trogonai-proto/src/gen/mod.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.activate_revision_state.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.activate_revision_state.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.archive_agent_state.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.archive_agent_state.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.mod.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.provision_agent_state.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.provision_agent_state.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.record_revision_verdict_state.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.record_revision_verdict_state.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.rollback_revision_state.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.rollback_revision_state.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.stage_revision_state.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.stage_revision_state.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.activate_revision.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.activate_revision.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.agent.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.agent.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.agent_archived.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.agent_archived.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.agent_provisioned.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.agent_provisioned.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.archive_agent.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.archive_agent.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.events.__oneof.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.events.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.events.__view_oneof.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.events.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.mod.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.provision_agent.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.provision_agent.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.record_revision_verdict.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.record_revision_verdict.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.revision_activated.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.revision_activated.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.revision_rolled_back.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.revision_rolled_back.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.revision_staged.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.revision_staged.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.revision_verdict_recorded.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.revision_verdict_recorded.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.rollback_revision.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.rollback_revision.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.stage_revision.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.stage_revision.rs is excluded by !**/gen/**
📒 Files selected for processing (137)
  • docs/architecture/agent-platform/research/decision-record.md
  • docs/architecture/agent-platform/research/index.md
  • docs/architecture/agent-platform/research/products/adk-a2a.md
  • docs/architecture/agent-platform/research/products/bedrock-agentcore.md
  • docs/architecture/agent-platform/research/products/claude-code-agent-sdk.md
  • docs/architecture/agent-platform/research/products/claude-managed-agents.md
  • docs/architecture/agent-platform/research/products/cloudflare-agents.md
  • docs/architecture/agent-platform/research/products/crewai.md
  • docs/architecture/agent-platform/research/products/devin.md
  • docs/architecture/agent-platform/research/products/hermes-agent.md
  • docs/architecture/agent-platform/research/products/jido.md
  • docs/architecture/agent-platform/research/products/langgraph-platform.md
  • docs/architecture/agent-platform/research/products/netclaw.md
  • docs/architecture/agent-platform/research/products/openai-agents-sdk.md
  • docs/architecture/agent-platform/research/products/openclaw.md
  • docs/architecture/agent-platform/research/products/opencomputer.md
  • docs/architecture/agent-platform/research/products/vercel.md
  • docs/architecture/agent-platform/research/synthesis.md
  • proto/trogonai/agents/agents/state/v1/activate_revision_state.proto
  • proto/trogonai/agents/agents/state/v1/archive_agent_state.proto
  • proto/trogonai/agents/agents/state/v1/provision_agent_state.proto
  • proto/trogonai/agents/agents/state/v1/record_revision_verdict_state.proto
  • proto/trogonai/agents/agents/state/v1/rollback_revision_state.proto
  • proto/trogonai/agents/agents/state/v1/stage_revision_state.proto
  • proto/trogonai/agents/agents/v1/activate_revision.proto
  • proto/trogonai/agents/agents/v1/agent.proto
  • proto/trogonai/agents/agents/v1/agent_archived.proto
  • proto/trogonai/agents/agents/v1/agent_provisioned.proto
  • proto/trogonai/agents/agents/v1/archive_agent.proto
  • proto/trogonai/agents/agents/v1/events.proto
  • proto/trogonai/agents/agents/v1/provision_agent.proto
  • proto/trogonai/agents/agents/v1/record_revision_verdict.proto
  • proto/trogonai/agents/agents/v1/revision_activated.proto
  • proto/trogonai/agents/agents/v1/revision_rolled_back.proto
  • proto/trogonai/agents/agents/v1/revision_staged.proto
  • proto/trogonai/agents/agents/v1/revision_verdict_recorded.proto
  • proto/trogonai/agents/agents/v1/rollback_revision.proto
  • proto/trogonai/agents/agents/v1/stage_revision.proto
  • rsworkspace/crates/trogon-decider-sim/Cargo.toml
  • rsworkspace/crates/trogon-decider-sim/src/fixture.rs
  • rsworkspace/crates/trogon-decider-sim/tests/agents.rs
  • rsworkspace/crates/trogonai-agents-domain/Cargo.toml
  • rsworkspace/crates/trogonai-agents-domain/src/commands/activate_revision.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/activate_revision/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/archive_agent.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/archive_agent/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_charter.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_charter/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_definition.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_definition/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_id.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_id/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_name.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_name/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/annotations.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/annotations/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/archive_reason.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/archive_reason/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/change_class.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/change_class/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/change_summary.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/change_summary/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/changed_field.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/changed_field/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/changed_fields.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/changed_fields/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/content_digest.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/content_digest/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/delegate_selectors.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/delegate_selectors/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/evidence.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/evidence/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/kubernetes_syntax.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/labels.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/labels/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/mod.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_id.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_id/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_parameters.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_parameters/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/nonblank.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/outcome_ref.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/outcome_ref/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/parent_ref.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/parent_ref/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/principal.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/principal/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/revision_number.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/revision_number/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/rollback_reason.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/rollback_reason/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/rubric_ref.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/rubric_ref/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/rubric_result.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/rubric_result/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/rubric_score.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/rubric_score/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/runtime_id.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/runtime_id/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/session_ref.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/session_ref/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/skill_ref.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/skill_ref/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/template_id.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/template_id/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tenant_id.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tenant_id/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/trial_count.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/trial_count/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/verdict.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/verdict/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/verdict_reasons.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/verdict_reasons/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/event_fold.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/lifecycle_tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/mod.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/proto_wire.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/proto_wire/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/provision_agent.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/provision_agent/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/record_revision_verdict.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/record_revision_verdict/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/rollback_revision.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/rollback_revision/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/stage_revision.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/stage_revision/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/test_support.rs
  • rsworkspace/crates/trogonai-agents-domain/src/lib.rs
  • rsworkspace/crates/trogonai-proto/Cargo.toml
  • rsworkspace/crates/trogonai-proto/src/agents/agents/codec.rs
  • rsworkspace/crates/trogonai-proto/src/agents/agents/codec/tests.rs
  • rsworkspace/crates/trogonai-proto/src/agents/agents/mod.rs
  • rsworkspace/crates/trogonai-proto/src/agents/mod.rs
  • rsworkspace/crates/trogonai-proto/src/lib.rs
  • rsworkspace/crates/trogonai-proto/src/tests.rs

Comment thread rsworkspace/crates/trogonai-agents-domain/src/commands/domain/archive_reason.rs Outdated
Comment thread rsworkspace/crates/trogonai-agents-domain/src/commands/domain/changed_fields.rs Outdated
Comment thread rsworkspace/crates/trogonai-agents-domain/src/commands/domain/nonblank.rs Outdated
Comment thread rsworkspace/crates/trogonai-proto/src/agents/agents/codec/tests.rs Outdated
Comment thread docs/architecture/agent-platform/research/decision-record.md Outdated
@yordis
yordis force-pushed the yordis/audit-agent-context-doc branch from c2797f1 to 91eea77 Compare July 18, 2026 22:50
Comment thread rsworkspace/crates/trogonai-agents-domain/src/commands/activate_revision.rs Outdated
Comment thread rsworkspace/crates/trogon-decider-sim/tests/agents.rs Outdated
@yordis
yordis force-pushed the yordis/audit-agent-context-doc branch from a745f80 to 2273e40 Compare July 19, 2026 20:01
Comment thread rsworkspace/crates/trogonai-agents-domain/src/commands/activate_revision.rs Outdated
Comment thread rsworkspace/crates/trogonai-agents-domain/src/commands/activate_revision.rs Outdated
@github-actions

github-actions Bot commented Jul 19, 2026

Copy link
Copy Markdown

badge

Code Coverage Summary

Details
Filename                                                                                            Stmts    Miss  Cover    Missing
------------------------------------------------------------------------------------------------  -------  ------  -------  ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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/acp/acp-nats/src/nats/subjects/responses/cancelled.rs                                           15       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/prompt_response.rs                                     20       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-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/router.rs                                                                 55      13  76.36%   60-63, 69-79
crates/a2a/a2a-nats-http/src/runtime.rs                                                                 8       8  0.00%    60-130
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/main.rs                                                                   1       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/a2a/a2a-auth-callout/src/wire/callout_auth_response_claims.rs                                   54       3  94.44%   70-72
crates/a2a/a2a-auth-callout/src/wire/test_encode.rs                                                    59       0  100.00%
crates/a2a/a2a-auth-callout/src/wire/nkey_seed.rs                                                      20       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/bridge_adapter.rs                                                 73       0  100.00%
crates/a2a/a2a-auth-callout/src/wire/wire_codec.rs                                                     58       0  100.00%
crates/a2a/a2a-auth-callout/src/wire/xkey_public.rs                                                    23       0  100.00%
crates/a2a/a2a-auth-callout/src/wire/nkey_public.rs                                                    83       3  96.39%   102, 118-119
crates/a2a/a2a-auth-callout/src/wire/server_auth_request_claims.rs                                    100       4  96.00%   24-26, 127
crates/platform/trogon-gateway/src/source/incidentio/server.rs                                         72       0  100.00%
crates/platform/trogon-gateway/src/source/incidentio/incidentio_event_type.rs                          20       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/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/socket_mode.rs                                        139       0  100.00%
crates/platform/trogon-gateway/src/source/slack/signature.rs                                           17       0  100.00%
crates/platform/trogon-gateway/src/source/telegram/config.rs                                           42       0  100.00%
crates/platform/trogon-gateway/src/source/telegram/signature.rs                                         7       0  100.00%
crates/platform/trogon-gateway/src/source/telegram/registration.rs                                     82       0  100.00%
crates/platform/trogon-gateway/src/source/telegram/server.rs                                           53       0  100.00%
crates/platform/trogon-nats/src/test_support.rs                                                        26       0  100.00%
crates/platform/trogon-nats/src/messaging.rs                                                          168       2  98.81%   146, 156
crates/platform/trogon-nats/src/mocks.rs                                                              224       0  100.00%
crates/platform/trogon-nats/src/token.rs                                                                6       0  100.00%
crates/platform/trogon-nats/src/nats_token.rs                                                          56       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/client.rs                                                              22      22  0.00%    50-86
crates/platform/trogon-nats/src/auth.rs                                                                45       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-telemetry/src/lib.rs                                                           135      23  82.96%   119, 124, 129, 139-140, 146-164, 200, 203, 206, 212
crates/platform/trogon-telemetry/src/trace.rs                                                          15       1  93.33%   24
crates/platform/trogon-telemetry/src/service_name.rs                                                   17       0  100.00%
crates/platform/trogon-telemetry/src/metric.rs                                                         18       1  94.44%   30
crates/platform/trogon-telemetry/src/resource_attribute.rs                                             13       0  100.00%
crates/platform/trogon-telemetry/src/log.rs                                                            36       0  100.00%
crates/mcp/mcp-nats/src/mcp_peer_id.rs                                                                 15       0  100.00%
crates/mcp/mcp-nats/src/mcp_prefix.rs                                                                  15       0  100.00%
crates/mcp/mcp-nats/src/wire.rs                                                                        18       0  100.00%
crates/mcp/mcp-nats/src/transport.rs                                                                  263      10  96.20%   244, 256-258, 376-379, 388-389
crates/mcp/mcp-nats/src/config.rs                                                                      59       0  100.00%
crates/mcp/mcp-nats/src/client.rs                                                                      12       0  100.00%
crates/mcp/mcp-nats/src/jsonrpc.rs                                                                      5       0  100.00%
crates/mcp/mcp-nats/src/server.rs                                                                      12       0  100.00%
crates/ard/ard-registry/src/facet_field.rs                                                             13       0  100.00%
crates/ard/ard-registry/src/registry_config.rs                                                         16       0  100.00%
crates/ard/ard-registry/src/filters.rs                                                                 31       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/router.rs                                                                  33       0  100.00%
crates/ard/ard-registry/src/http_error.rs                                                              17       0  100.00%
crates/ard/ard-registry/src/list_agents_request.rs                                                     21       0  100.00%
crates/ard/ard-registry/src/search_request.rs                                                          32       1  96.88%   43
crates/ard/ard-registry/src/explore_request.rs                                                         30       0  100.00%
crates/ard/ard-registry/src/registry.rs                                                               134       3  97.76%   78, 174, 183
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/page_token.rs                                                              14       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-nats/src/push/dispatcher/composite.rs                                                   15       0  100.00%
crates/a2a/a2a-nats/src/push/dispatcher/nats.rs                                                        37       0  100.00%
crates/a2a/a2a-nats/src/push/dispatcher/jetstream.rs                                                   45       0  100.00%
crates/platform/trogon-gateway/src/source/datadog/server.rs                                           108       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/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/src/push/dlq_dedup.rs                                                              51       1  98.04%   79
crates/a2a/a2a-nats/src/push/push_notification_target.rs                                               32       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_id.rs                                            17       0  100.00%
crates/a2a/a2a-nats/src/push/target.rs                                                                 19       0  100.00%
crates/a2a/a2a-nats/src/push/push_notification_config.rs                                                6       0  100.00%
crates/a2a/a2a-nats/src/push/caller_id.rs                                                              41       0  100.00%
crates/a2a/a2a-nats/src/push/push_delivery_semantics_registry.rs                                       17       0  100.00%
crates/a2a/a2a-nats/src/push/terminal_push_task_state.rs                                               17       0  100.00%
crates/a2a/a2a-nats/src/push/dispatch_error.rs                                                         24       0  100.00%
crates/a2a/a2a-nats/src/push/status_transition_id.rs                                                   15       0  100.00%
crates/a2a/a2a-nats/src/push/push_payload.rs                                                           18       0  100.00%
crates/a2a/a2a-nats/src/push/push_idempotency_key.rs                                                   43       0  100.00%
crates/a2a/a2a-nats/src/push/idempotency_key_header.rs                                                 16       0  100.00%
crates/a2a/a2a-nats/src/push/dlq.rs                                                                    56       0  100.00%
crates/a2a/a2a-nats/src/push/authentication_header.rs                                                  31       0  100.00%
crates/a2a/a2a-nats/src/push/nats_push_subject.rs                                                      12       0  100.00%
crates/scheduler/trogon-scheduler/src/nats.rs                                                          11       0  100.00%
crates/scheduler/trogon-scheduler/src/config.rs                                                        27       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/error.rs                                                         83      12  85.54%   131-133, 152-154, 159-161, 176-180
crates/a2a/a2a-gateway/src/runtime/reply.rs                                                             5       0  100.00%
crates/a2a/a2a-gateway/src/runtime/aauth_env.rs                                                       162       0  100.00%
crates/a2a/a2a-gateway/src/runtime/env.rs                                                              55       0  100.00%
crates/a2a/a2a-gateway/src/runtime/streaming.rs                                                        35       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/policy_stack.rs                                                     78      31  60.26%   84, 91, 103-112, 119-120, 135-145, 154-170, 175
crates/a2a/a2a-gateway/src/runtime/audit_publish.rs                                                    16       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/agent/close_session.rs                                                         16       0  100.00%
crates/acp/acp-nats/src/agent/providers_set.rs                                                          5       0  100.00%
crates/acp/acp-nats/src/agent/providers_disable.rs                                                      5       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_notification.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/cancel.rs                                                                12       0  100.00%
crates/acp/acp-nats/src/agent/ext_method.rs                                                            12       0  100.00%
crates/acp/acp-nats/src/agent/prompt.rs                                                               156       7  95.51%   202-208
crates/acp/acp-nats/src/agent/delete_session.rs                                                        16       0  100.00%
crates/acp/acp-nats/src/agent/fork_session.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/list_sessions.rs                                                          5       0  100.00%
crates/acp/acp-nats/src/agent/resume_session.rs                                                        16       0  100.00%
crates/acp/acp-nats/src/agent/rpc_call.rs                                                              23       0  100.00%
crates/acp/acp-nats/src/agent/test_support.rs                                                         194       0  100.00%
crates/acp/acp-nats/src/agent/set_session_mode.rs                                                      16       0  100.00%
crates/acp/acp-nats/src/agent/logout.rs                                                                 5       0  100.00%
crates/acp/acp-nats/src/agent/initialize.rs                                                             6       0  100.00%
crates/acp/acp-nats/src/agent/authenticate.rs                                                           5       0  100.00%
crates/acp/acp-nats/src/agent/load_session.rs                                                          16       0  100.00%
crates/acp/acp-nats/src/agent/providers_list.rs                                                         5       0  100.00%
crates/acp/acp-nats/src/agent/new_session.rs                                                            5       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/acp/acp-nats/src/jetstream/streams.rs                                                           18       0  100.00%
crates/acp/acp-nats/src/jetstream/consumers.rs                                                         41       0  100.00%
crates/decider/trogon-decider-wit/src/lib.rs                                                           53       1  98.11%   40
crates/a2a/a2a-gateway/src/aauth.rs                                                                   285       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/gw_ingress_stream.rs                                                       144       4  97.22%   319-321, 536
crates/a2a/a2a-gateway/src/agent_card_surface.rs                                                        3       0  100.00%
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/runtime.rs                                                                  11       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/audit_ingress.rs                                                           110       0  100.00%
crates/a2a/a2a-gateway/src/main.rs                                                                      1       0  100.00%
crates/a2a/a2a-gateway/src/gw_pull_backpressure.rs                                                    209       3  98.56%   504, 704, 717
crates/aauth/trogon-aauth-person/src/store.rs                                                          21       0  100.00%
crates/aauth/trogon-aauth-person/src/agent.rs                                                          84       0  100.00%
crates/aauth/trogon-aauth-person/src/subagent.rs                                                       10       0  100.00%
crates/aauth/trogon-aauth-person/src/error.rs                                                          48       0  100.00%
crates/aauth/trogon-aauth-person/src/interaction.rs                                                     2       0  100.00%
crates/aauth/trogon-aauth-person/src/mission.rs                                                        65       0  100.00%
crates/aauth/trogon-aauth-person/src/pending.rs                                                        73       0  100.00%
crates/aauth/trogon-aauth-person/src/server.rs                                                        353       0  100.00%
crates/aauth/trogon-aauth-person/src/login.rs                                                           3       0  100.00%
crates/aauth/trogon-aauth-person/src/mint.rs                                                           59       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/platform/trogon-gateway/src/source/twitter/signature.rs                                         16       0  100.00%
crates/platform/trogon-service-config/src/lib.rs                                                       38       0  100.00%
crates/mcp/mcp-nats-server/src/main.rs                                                                  1       1  0.00%    67
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/mcp/mcp-nats-server/src/config.rs                                                               58       0  100.00%
crates/mcp/mcp-nats-server/src/allowed_host.rs                                                         52       0  100.00%
crates/platform/trogon-gateway/src/source_integration_id.rs                                            28       2  92.86%   58, 60
crates/platform/trogon-gateway/src/streams.rs                                                           7       0  100.00%
crates/platform/trogon-gateway/src/source_status.rs                                                    12       0  100.00%
crates/platform/trogon-gateway/src/source_plugin.rs                                                   288       3  98.96%   83, 140-141
crates/platform/trogon-gateway/src/http.rs                                                             13       0  100.00%
crates/platform/trogon-gateway/src/main.rs                                                             26       0  100.00%
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/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/platform/trogon-std/src/time/system.rs                                                           9       0  100.00%
crates/platform/trogon-std/src/time/mock.rs                                                            32       0  100.00%
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/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/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/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-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_envelope_encode_error.rs              3       0  100.00%
crates/decider/trogon-decider-runtime/src/snapshot/codec/snapshot_envelope_decode_error.rs              6       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_decode_error.rs                      19       0  100.00%
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/a2a/a2a-pack/src/agent_card_read.rs                                                             23       0  100.00%
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/platform/trogonai-proto/src/codec.rs                                                            16       0  100.00%
crates/platform/trogonai-proto/src/convert.rs                                                          53       0  100.00%
crates/platform/trogonai-proto/src/lib.rs                                                              19       0  100.00%
crates/scheduler/trogon-scheduler/src/queries/read_model/message.rs                                    77       0  100.00%
crates/scheduler/trogon-scheduler/src/queries/read_model/schedule.rs                                   15       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/progress.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/complete.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/list_tools.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/initialize.rs                                             12       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/get_task.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/prompt_list_changed.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/list_resource_templates.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/read_resource.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/subscribe_resource.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/tool_list_changed.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/unsubscribe_resource.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/cancelled.rs                                              12       0  100.00%
crates/mcp/mcp-nats/src/nats/subjects/server/elicitation_completed.rs                                  12       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/verification_token.rs                                 46       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/signature.rs                                           9       0  100.00%
crates/platform/trogon-gateway/src/source/notion/notion_verification_token.rs                           9       0  100.00%
crates/platform/trogonai-proto/src/scheduler/schedules/codec.rs                                        57       0  100.00%
crates/platform/trogon-identity-types/src/act_chain.rs                                                 13       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/platform/trogon-gateway/src/source/linear/config.rs                                              9       0  100.00%
crates/platform/trogon-gateway/src/source/linear/signature.rs                                           8       1  87.50%   16
crates/platform/trogon-gateway/src/source/linear/server.rs                                             83       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/list.rs                                              15       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/set.rs                                               12       0  100.00%
crates/acp/acp-nats-agent/src/connection.rs                                                           482       1  99.79%   726
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/mod.rs                                                                    61      13  78.69%   22-33, 75
crates/acp/acp-nats/src/nats/parsing.rs                                                               123       0  100.00%
crates/acp/acp-nats/src/nats/extensions.rs                                                              3       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/decider/trogon-decider-runtime/src/headers/header_map.rs                                        54       0  100.00%
crates/platform/trogon-std/src/fs/system.rs                                                            15       0  100.00%
crates/platform/trogon-std/src/fs/mem.rs                                                               85       0  100.00%
crates/a2a/a2a-bridge/src/identity.rs                                                                  63       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/main.rs                                                                       1       1  0.00%    199
crates/a2a/a2a-bridge/src/nats_transport_harness.rs                                                    42       0  100.00%
crates/a2a/a2a-bridge/src/auth.rs                                                                      47      15  68.09%   78-99, 148
crates/a2a/a2a-bridge/src/outbound.rs                                                                  70       7  90.00%   126, 197-209
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/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/mcp/mcp-nats-stdio/src/config.rs                                                                26       0  100.00%
crates/mcp/mcp-nats-stdio/src/main.rs                                                                  36       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/mcp/mcp-nats/src/nats/subjects/subscriptions/one_client.rs                                       9       0  100.00%
crates/mcp/mcp-nats/src/nats/subjects/subscriptions/all_client.rs                                       6       0  100.00%
crates/aauth/trogon-aauth-as/src/server.rs                                                            139       0  100.00%
crates/aauth/trogon-aauth-as/src/policy.rs                                                             38       0  100.00%
crates/aauth/trogon-aauth-as/src/subagent.rs                                                           10       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/verify.rs                                                             96       0  100.00%
crates/aauth/trogon-aauth-as/src/pending.rs                                                            26       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/pending_prompt_waiters.rs                                                      68       0  100.00%
crates/acp/acp-nats/src/agent_handler.rs                                                               28       0  100.00%
crates/acp/acp-nats/src/client_proxy.rs                                                                67       1  98.51%   57
crates/acp/acp-nats/src/wire.rs                                                                        80      14  82.50%   38, 46-60, 103
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/lib.rs                                                                         11       0  100.00%
crates/acp/acp-nats/src/error.rs                                                                       31       0  100.00%
crates/acp/acp-nats/src/acp_prefix.rs                                                                  13       0  100.00%
crates/acp/acp-nats/src/in_flight_slot_guard.rs                                                         7       0  100.00%
crates/acp/acp-nats/src/client_handler.rs                                                              22       0  100.00%
crates/acp/acp-nats/src/config.rs                                                                      84       0  100.00%
crates/acp/acp-nats/src/ext_method_name.rs                                                             18       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-nats-http/src/handlers/mod.rs                                                          185      12  93.51%   68, 88-91, 121, 155, 169-172, 185
crates/aauth/trogon-aauth-sdk/src/delegation.rs                                                        15       0  100.00%
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/signer.rs                                                            91       0  100.00%
crates/aauth/trogon-aauth-sdk/src/subagent.rs                                                          34       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_event_sampling_source.rs         11       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.rs                              383       5  98.69%   326, 334, 349-351
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_delivery.rs                14       0  100.00%
crates/scheduler/trogon-scheduler-domain/src/commands/domain/schedule_id.rs                            37       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/content_digest.rs                             27       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/annotations.rs                                19       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/parent_ref.rs                                 19       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/tool_selectors.rs                             26       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/principal.rs                                  36       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/labels.rs                                     25       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/agent_name.rs                                 19       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/runtime_id.rs                                 19       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/nonblank.rs                                    9       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/kubernetes_syntax.rs                          45       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/model_parameters.rs                           10       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/agent_definition.rs                           35       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/delegate_selectors.rs                         26       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/agent_id.rs                                   27       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/agent_charter.rs                              30       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/model_id.rs                                   19       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/revision_number.rs                            12       0  100.00%
crates/scheduler/trogon-scheduler/src/processor/execution/wakeup.rs                                    91       1  98.90%   127
crates/decider/trogon-decider-runtime/src/snapshot/mod.rs                                               3       0  100.00%
crates/decider/trogon-decider-runtime/src/snapshot/read_snapshot.rs                                     3       0  100.00%
crates/decider/trogon-decider-runtime/src/snapshot/snapshot_type.rs                                    42       0  100.00%
crates/a2a/a2a-bridge/src/auth/callout_mint.rs                                                         49       1  97.96%   94
crates/ard/ard-nats/src/memory_catalog_store.rs                                                        32       0  100.00%
crates/ard/ard-nats/src/store.rs                                                                        3       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/catalog_event.rs                                                               71       0  100.00%
crates/platform/trogon-gateway/src/source/github/server.rs                                             50       0  100.00%
crates/platform/trogon-gateway/src/source/github/config.rs                                              9       0  100.00%
crates/platform/trogon-gateway/src/source/github/signature.rs                                           9       0  100.00%
crates/a2a/a2a-redaction/src/wasm_bundle_path.rs                                                       18       0  100.00%
crates/a2a/a2a-redaction/src/a2a_method.rs                                                             41       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/tier3_sentinel.rs                                                         12       0  100.00%
crates/a2a/a2a-redaction/src/redactor.rs                                                               32       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/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/token.rs                                                         184       1  99.46%   181
crates/aauth/trogon-aauth-verify/src/jkt.rs                                                            33       0  100.00%
crates/aauth/trogon-aauth-verify/src/upstream.rs                                                       20       0  100.00%
crates/aauth/trogon-aauth-verify/src/challenge.rs                                                      77       0  100.00%
crates/aauth/trogon-aauth-verify/src/jwks_http.rs                                                     144       0  100.00%
crates/aauth/trogon-aauth-verify/src/mission.rs                                                        33       0  100.00%
crates/aauth/trogon-aauth-verify/src/jwks_cache.rs                                                     39       0  100.00%
crates/aauth/trogon-aauth-verify/src/nats_pop.rs                                                      125       1  99.20%   337
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/acp/acp-nats/src/nats/subjects/global/logout.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/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/acp/acp-nats/src/nats/subjects/global/providers_list.rs                                          6       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/initialize.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/session_list.rs                                            6       0  100.00%
crates/ard/ard-registry/src/bin/ard-registry-demo/main.rs                                              64      20  68.75%   13-35
crates/mcp/mcp-nats/src/telemetry/transport.rs                                                          6       0  100.00%
crates/platform/trogon-std/src/env/in_memory.rs                                                        30       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/agents/trogonai-agents-domain/src/commands/test_support.rs                                      74       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/proto_wire.rs                                       187       0  100.00%
crates/agents/trogonai-agents-domain/src/commands/provision_agent.rs                                   48       1  97.92%   52
crates/agents/trogonai-agents-domain/src/commands/event_fold.rs                                        14       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/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/processor/execution/worker/processor.rs                         303      12  96.04%   279, 339, 437-438, 444, 499-501, 533-536
crates/platform/trogon-gateway/src/source/microsoft_graph/server.rs                                    73       0  100.00%
crates/platform/trogon-gateway/src/source/microsoft_graph/client_state.rs                              14       0  100.00%
crates/a2a/a2a-nats/src/catalog/registrar.rs                                                           56       0  100.00%
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/agent_view.rs                                                          47       0  100.00%
crates/a2a/a2a-nats/src/catalog/watch.rs                                                               18       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/platform/trogon-std/src/dirs/system.rs                                                          39       0  100.00%
crates/platform/trogon-std/src/dirs/fixed.rs                                                           32       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/mcp/mcp-nats/src/nats/subjects/client/roots_list_changed.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/cancelled.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/create_message.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/create_elicitation.rs                                     12       0  100.00%
crates/mcp/mcp-nats/src/nats/subjects/client/list_roots.rs                                             12       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-nats/src/catalog/import_gate/spicedb/config.rs                                          70       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/key_version.rs                                      16       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/static_source.rs                                    25       0  100.00%
crates/a2a/a2a-auth-callout/src/signing_key_source/loader.rs                                           23       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/signing_key_handle.rs                               15       0  100.00%
crates/a2a/a2a-auth-callout/src/signing_key_source/vault.rs                                             3       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_session.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/all_agent.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/one_agent.rs                                       15       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/prompt_wildcard.rs                                  9       0  100.00%
crates/acp/acp-nats/src/nats/subjects/subscriptions/one_client.rs                                      15       0  100.00%
crates/decider/trogon-decider-wasm-runtime/src/engine.rs                                              145       0  100.00%
crates/decider/trogon-decider-wasm-runtime/src/module.rs                                               71       0  100.00%
crates/decider/trogon-decider-wasm-runtime/src/snapshot_id.rs                                          18       0  100.00%
crates/decider/trogon-decider-wasm-runtime/src/module_name.rs                                          34       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/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_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/registry.rs                                             94       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/command_type.rs                                         31       0  100.00%
crates/decider/trogon-decider-wasm-runtime/src/command_spec.rs                                         12       0  100.00%
crates/decider/trogon-decider-wasm-runtime/src/test_fixture.rs                                          7       0  100.00%
crates/a2a/a2a-gateway/src/policy/error.rs                                                             16       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/wasmtime_substrate.rs                                                31       0  100.00%
crates/a2a/a2a-gateway/src/policy/per_skill.rs                                                         87       0  100.00%
crates/a2a/a2a-auth-callout/src/caller_jwt_header.rs                                                   20       0  100.00%
crates/a2a/a2a-auth-callout/src/denial_claims.rs                                                       68       0  100.00%
crates/a2a/a2a-auth-callout/src/main.rs                                                                 1       1  0.00%    226
crates/a2a/a2a-auth-callout/src/denial_category.rs                                                     29       0  100.00%
crates/a2a/a2a-auth-callout/src/denial_reason.rs                                                       15       0  100.00%
crates/a2a/a2a-auth-callout/src/error.rs                                                                3       0  100.00%
crates/a2a/a2a-auth-callout/src/permissions.rs                                                         85       0  100.00%
crates/a2a/a2a-auth-callout/src/subscriber.rs                                                          96      96  0.00%    27-178
crates/a2a/a2a-auth-callout/src/test_support.rs                                                        20      20  0.00%    16-36
crates/a2a/a2a-auth-callout/src/account_resolver.rs                                                    31       0  100.00%
crates/a2a/a2a-auth-callout/src/dispatcher.rs                                                          34      13  61.76%   83-112
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/projector.rs                                                    88       3  96.59%   57-59
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/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/store.rs                                                        73      45  38.36%   100-104, 151-217
crates/a2a/a2a-redaction/src/bin/sign-bundle.rs                                                         1       1  0.00%    163
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-auth-callout/src/credentials/oidc.rs                                                   188       4  97.87%   212-215
crates/a2a/a2a-auth-callout/src/credentials/mtls.rs                                                   153      13  91.50%   71-72, 168-169, 209-213, 216-219
crates/a2a/a2a-auth-callout/src/credentials/api_key.rs                                                 46       1  97.83%   33
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/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/acquire.rs                                                        5       5  0.00%    9-14
crates/platform/trogon-nats/src/lease/renew.rs                                                         82      19  76.83%   23-29, 48-59
crates/platform/trogon-nats/src/lease/renew_interval.rs                                                25       0  100.00%
crates/platform/trogon-nats/src/lease/provision.rs                                                     83      10  87.95%   82-92
crates/platform/trogon-nats/src/lease/lease_timing.rs                                                  15       0  100.00%
crates/platform/trogon-nats/src/lease/lease_bucket.rs                                                  19       0  100.00%
crates/platform/trogon-nats/src/lease/mod.rs                                                          107      13  87.85%   113-126
crates/acp/acp-nats/src/client/terminal_kill.rs                                                        41       0  100.00%
crates/acp/acp-nats/src/client/fs_write_text_file.rs                                                   43       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/test_support.rs                                                         17       0  100.00%
crates/acp/acp-nats/src/client/terminal_wait_for_exit.rs                                               55       0  100.00%
crates/acp/acp-nats/src/client/fs_read_text_file.rs                                                    27       0  100.00%
crates/acp/acp-nats/src/client/elicitation_complete.rs                                                  8       0  100.00%
crates/acp/acp-nats/src/client/elicitation_create.rs                                                   41       0  100.00%
crates/acp/acp-nats/src/client/terminal_release.rs                                                     35       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/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_create.rs                                                      41       0  100.00%
crates/acp/acp-nats/src/client/terminal_output.rs                                                      29       0  100.00%
crates/scheduler/trogon-scheduler/src/processor/execution/execution_schedules/mod.rs                   82       0  100.00%
crates/scheduler/trogon-scheduler/src/processor/execution/reconciliation/schedule_key.rs               27       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/schedule_subject.rs           31       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/go_duration.rs                40       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/reconcile.rs                 303      13  95.71%   251-260, 325-327
crates/ard/ard-catalog/src/registry_error_wire.rs                                                       8       0  100.00%
crates/ard/ard-catalog/src/ard_storage_key.rs                                                          10       0  100.00%
crates/ard/ard-catalog/src/url_or_data.rs                                                              20       0  100.00%
crates/ard/ard-catalog/src/catalog_entry_wire.rs                                                        3       0  100.00%
crates/ard/ard-catalog/src/catalog_host.rs                                                             26       0  100.00%
crates/ard/ard-catalog/src/catalog_manifest_wire.rs                                                     3       0  100.00%
crates/ard/ard-catalog/src/representative_queries.rs                                                   18       0  100.00%
crates/ard/ard-catalog/src/catalog_entry.rs                                                           107       0  100.00%
crates/ard/ard-catalog/src/metadata.rs                                                                 14       0  100.00%
crates/ard/ard-catalog/src/federation_mode.rs                                                           3       0  100.00%
crates/ard/ard-catalog/src/catalog_host_wire.rs                                                         6       0  100.00%
crates/ard/ard-catalog/src/trust_manifest.rs                                                           45       1  97.78%   35
crates/ard/ard-catalog/src/catalog_manifest.rs                                                         44       0  100.00%
crates/ard/ard-catalog/src/media_type.rs                                                               20       0  100.00%
crates/ard/ard-catalog/src/display_name.rs                                                             13       0  100.00%
crates/ard/ard-catalog/src/ard_identifier.rs                                                           54       0  100.00%
crates/ard/ard-catalog/src/catalog_manifest_schema.rs                                                  65       4  93.85%   109-110, 112-113
crates/platform/trogon-nats/src/telemetry/messaging.rs                                                 37       0  100.00%
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/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/jsonrpc-nats/src/codec/decode.rs                                                       57       0  100.00%
crates/scheduler/trogon-scheduler/src/commands/domain/schedule_occurrence_sequence.rs                  16       0  100.00%
crates/scheduler/trogon-scheduler/src/commands/domain/recurrence.rs                                    78       1  98.72%   99
crates/decider/trogon-decider/src/event/codec/event_decode.rs                                          13       0  100.00%
crates/decider/trogon-decider/src/event/codec/event_payload_error.rs                                    5       0  100.00%
crates/platform/jsonrpc-nats/src/id.rs                                                                 62      20  67.74%   44-61, 81-82, 84-85, 91-92, 98-99, 112
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/trogon-gateway/src/source/standard_webhooks.rs                                        138       0  100.00%
crates/platform/trogon-std/src/json.rs                                                                 23       0  100.00%
crates/platform/trogon-std/src/duration.rs                                                             15       0  100.00%
crates/platform/trogon-std/src/uuid.rs                                                                  3       0  100.00%
crates/platform/trogon-std/src/signal.rs                                                               22      12  45.45%   6-11, 18-25, 34
crates/platform/trogon-std/src/secret_string.rs                                                        13       0  100.00%
crates/platform/trogon-std/src/http.rs                                                                  8       0  100.00%
crates/platform/trogon-std/src/args.rs                                                                 12       9  25.00%   11-28
crates/scheduler/trogon-scheduler-domain/src/subject.rs                                                26       0  100.00%
crates/decider/trogon-decider-runtime/src/event/event_identity.rs                                       3       0  100.00%
crates/decider/trogon-decider-runtime/src/event/stream_event.rs                                         8       0  100.00%
crates/decider/trogon-decider-runtime/src/event/event_id.rs                                            32       0  100.00%
crates/platform/trogon-gateway/src/source/sentry/signature.rs                                           6       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/server.rs                                             69       0  100.00%
crates/platform/trogonai-proto/src/agents/agents/codec.rs                                              30       0  100.00%
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/src/testing/codec.rs                                                     14       0  100.00%
crates/decider/trogon-decider-runtime/src/replay_limit.rs                                              26       0  100.00%
crates/decider/trogon-decider-runtime/src/memory.rs                                                   104       5  95.19%   77-82
crates/decider/trogon-decider-runtime/src/execution.rs                                                627       3  99.52%   74, 188-189
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/agent_id.rs                                                                    21       0  100.00%
crates/a2a/a2a-nats/src/task_id.rs                                                                     22       0  100.00%
crates/a2a/a2a-nats/src/a2a_prefix.rs                                                                  16       0  100.00%
crates/a2a/a2a-nats/src/jsonrpc.rs                                                                     27       0  100.00%
crates/a2a/a2a-nats/src/context_id.rs                                                                  22       0  100.00%
crates/a2a/a2a-nats/src/req_id.rs                                                                      21       0  100.00%
crates/a2a/a2a-nats/src/wire.rs                                                                        59       2  96.61%   85, 98
crates/a2a/a2a-nats/src/config.rs                                                                     114       0  100.00%
crates/acp/acp-nats/src/nats/subjects/stream.rs                                                        56       0  100.00%
crates/a2a/a2a-nats/src/nats/subjects/stream.rs                                                        50       0  100.00%
crates/aauth/trogon-aauth-sdk/src/exchange/client.rs                                                  283       0  100.00%
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/a2a/a2a-auth-callout/src/jwt/mod.rs                                                            232       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/a2a/a2a-auth-callout/src/jwt/user_jwt_subject.rs                                                12       0  100.00%
crates/acp/acp-nats-stdio/src/main.rs                                                                  56       8  85.71%   69, 112-119, 131
crates/acp/acp-nats-stdio/src/config.rs                                                                15       0  100.00%
crates/platform/trogon-identity-types/src/aauth/error.rs                                               14       0  100.00%
crates/platform/trogon-identity-types/src/aauth/mod.rs                                                 69       0  100.00%
crates/platform/trogon-identity-types/src/aauth/headers.rs                                             47       0  100.00%
crates/platform/trogon-identity-types/src/aauth/person_server.rs                                       23       0  100.00%
crates/platform/trogon-identity-types/src/aauth/login.rs                                               78       0  100.00%
crates/platform/trogon-identity-types/src/aauth/mission.rs                                             33       0  100.00%
crates/a2a/a2a-nats/src/client/streaming.rs                                                            73       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/wire.rs                                                                 13       0  100.00%
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/handle.rs                                                              218       0  100.00%
crates/a2a/a2a-nats/src/client/event_stream.rs                                                         76       0  100.00%
crates/a2a/a2a-nats/src/nats/subjects/tasks/events.rs                                                  17       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/cancel.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/close.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/fork.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/load.rs                                                 15       0  100.00%
crates/acp/acp-nats/src/nats/subjects/commands/set_config_option.rs                                    15       0  100.00%
crates/aauth/trogon-aauth-person/src/http/mod.rs                                                      213       0  100.00%
crates/a2a/a2a-nats/src/server/agent_card.rs                                                           16       0  100.00%
crates/a2a/a2a-nats/src/server/bridge.rs                                                               65       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/tasks_list.rs                                                           12       0  100.00%
crates/a2a/a2a-nats/src/server/push_set.rs                                                             12       0  100.00%
crates/a2a/a2a-nats/src/server/push_delete.rs                                                          12       0  100.00%
crates/a2a/a2a-nats/src/server/dispatch.rs                                                             33       0  100.00%
crates/a2a/a2a-nats/src/server/tasks_cancel.rs                                                         12       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/message_send.rs                                                         15       0  100.00%
crates/a2a/a2a-nats/src/server/tasks_resubscribe.rs                                                    12       0  100.00%
crates/a2a/a2a-nats/src/server/push_get.rs                                                             12       0  100.00%
crates/a2a/a2a-nats/src/server/test_support.rs                                                         81      25  69.14%   134-159
crates/a2a/a2a-nats/src/server/wire.rs                                                                 34       4  88.24%   21-23, 30
crates/platform/trogon-std/src/telemetry/http.rs                                                       58       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/digest.rs                                                   26       0  100.00%
crates/a2a/a2a-redaction/src/signed_bundle/public_key.rs                                               36       2  94.44%   44-45
crates/a2a/a2a-redaction/src/signed_bundle/manifest.rs                                                 56       1  98.21%   83
crates/a2a/a2a-redaction/src/signed_bundle/verify.rs                                                   64       2  96.88%   90-91
crates/decider/trogon-decider-guest-macros/src/lib.rs                                                 136      28  79.41%   14-19, 29-40, 116-119, 437-446, 450
crates/scheduler/trogon-scheduler-domain/src/commands/pause_schedule.rs                                31       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/proto_wire.rs                                   138       1  99.28%   231
crates/scheduler/trogon-scheduler-domain/src/commands/resume_schedule.rs                               34       0  100.00%
crates/scheduler/trogon-scheduler-domain/src/commands/state.rs                                         82       0  100.00%
crates/scheduler/trogon-scheduler/src/telemetry/metrics.rs                                             27       0  100.00%
crates/scheduler/trogon-scheduler/src/telemetry/trace.rs                                               20       0  100.00%
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/time_predicate.rs                                 118       2  98.31%   103, 125
crates/a2a/a2a-gateway/src/policy/tier1_declarative/bundle.rs                                          57       0  100.00%
crates/a2a/a2a-gateway/src/policy/tier1_declarative/loader.rs                                          85       9  89.41%   95-97, 99-101, 126-128
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/session_request_permission.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/session_update.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/elicitation_create.rs                                 12       0  100.00%
crates/acp/acp-nats/src/nats/subjects/client_ops/terminal_kill.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/terminal_release.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_wait_for_exit.rs                             12       0  100.00%
crates/a2a/a2a-nats/src/audit/task_lifecycle.rs                                                        17       0  100.00%
crates/a2a/a2a-nats/src/audit/envelope.rs                                                              57       0  100.00%
crates/a2a/a2a-nats/src/audit/emitter.rs                                                               58       0  100.00%
crates/platform/trogon-gateway/src/source/gitlab/signature.rs                                          13       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/server.rs                                             78       0  100.00%
crates/decider/trogon-decider/src/decision.rs                                                          27       0  100.00%
crates/decider/trogon-decider/src/events.rs                                                            49       0  100.00%
crates/decider/trogon-decider/src/testing.rs                                                          284       0  100.00%
crates/decider/trogon-decider/src/act.rs                                                               62       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/main.rs                                                                 68       1  98.53%   109
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/acp_connection_id.rs                                                    14       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/cancel.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/list.rs                                             15       0  100.00%
crates/platform/trogon-nats/src/jetstream/traits.rs                                                    46      34  26.09%   181-239
crates/platform/trogon-nats/src/jetstream/publish.rs                                                   30       0  100.00%
crates/platform/trogon-nats/src/jetstream/claim_check.rs                                              104       3  97.12%   46-48
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/stream_max_age.rs                                             8       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/streams.rs                                                            9       0  100.00%
crates/a2a/a2a-nats/src/jetstream/provision.rs                                                         16       0  100.00%
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/a2a/a2a-gateway/src/policy/tier3_redaction/mod.rs                                               33       2  93.94%   54, 58
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/context.rs                                           40       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/decision.rs                                          22       0  100.00%
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-nats/src/nats/subjects/subscriptions/task_one_events.rs                                 12       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-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/a2a/a2a-nats/src/nats/subjects/agents/message_stream.rs                                         15       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/acp/acp-nats/src/telemetry/metrics.rs                                                           22       0  100.00%
crates/decider/trogon-decider-sim/src/native.rs                                                        81       2  97.53%   196, 214
crates/decider/trogon-decider-sim/src/host.rs                                                          69       0  100.00%
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/fixture.rs                                                       18       2  88.89%   33-35
crates/decider/trogon-decider-sim/src/session.rs                                                       23       4  82.61%   47-55
crates/decider/trogon-decider-sim/src/import_check.rs                                                  52       4  92.31%   81-83, 103
crates/decider/trogon-decider-sim/src/scenario.rs                                                     189      12  93.65%   352-354, 366-374, 504
crates/decider/trogon-decider-sim/src/parity.rs                                                        66       6  90.91%   91-93, 95-97
crates/scheduler/trogon-scheduler/src/processor/execution/checkpoints/codec/twin.rs                    96       0  100.00%
TOTAL                                                                                               39749    1701  95.72%

Diff against main

Filename                                                                                            Stmts    Miss  Cover
------------------------------------------------------------------------------------------------  -------  ------  --------
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/acp/acp-nats/src/nats/subjects/responses/cancelled.rs                                          +15       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/prompt_response.rs                                    +20       0  +100.00%
crates/a2a/a2a-redaction/src/wasm/engine.rs                                                           +62     +11  +82.26%
crates/a2a/a2a-redaction/src/wasm/mod.rs                                                             +110      +9  +91.82%
crates/a2a/a2a-nats-http/src/sse.rs                                                                   +44     +27  +38.64%
crates/a2a/a2a-nats-http/src/main.rs                                                                   +1       0  +100.00%
crates/a2a/a2a-nats-http/src/headers.rs                                                              +129      +1  +99.22%
crates/a2a/a2a-nats-http/src/rest.rs                                                                 +316      +8  +97.47%
crates/a2a/a2a-nats-http/src/router.rs                                                                +55     +13  +76.36%
crates/a2a/a2a-nats-http/src/runtime.rs                                                                +8      +8  +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/main.rs                                                                  +1       0  +100.00%
crates/a2a/a2a-nats-stdio/src/dispatch.rs                                                            +212      +8  +96.23%
crates/a2a/a2a-nats-stdio/src/wire.rs                                                                 +22       0  +100.00%
crates/a2a/a2a-auth-callout/src/wire/callout_auth_response_claims.rs                                  +54      +3  +94.44%
crates/a2a/a2a-auth-callout/src/wire/test_encode.rs                                                   +59       0  +100.00%
crates/a2a/a2a-auth-callout/src/wire/nkey_seed.rs                                                     +20       0  +100.00%
crates/a2a/a2a-auth-callout/src/wire/server_auth_request_envelope.rs                                  +68      +1  +98.53%
crates/a2a/a2a-auth-callout/src/wire/bridge_adapter.rs                                                +73       0  +100.00%
crates/a2a/a2a-auth-callout/src/wire/wire_codec.rs                                                    +58       0  +100.00%
crates/a2a/a2a-auth-callout/src/wire/xkey_public.rs                                                   +23       0  +100.00%
crates/a2a/a2a-auth-callout/src/wire/nkey_public.rs                                                   +83      +3  +96.39%
crates/a2a/a2a-auth-callout/src/wire/server_auth_request_claims.rs                                   +100      +4  +96.00%
crates/platform/trogon-gateway/src/source/incidentio/server.rs                                        +72       0  +100.00%
crates/platform/trogon-gateway/src/source/incidentio/incidentio_event_type.rs                         +20       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/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/socket_mode.rs                                       +139       0  +100.00%
crates/platform/trogon-gateway/src/source/slack/signature.rs                                          +17       0  +100.00%
crates/platform/trogon-gateway/src/source/telegram/config.rs                                          +42       0  +100.00%
crates/platform/trogon-gateway/src/source/telegram/signature.rs                                        +7       0  +100.00%
crates/platform/trogon-gateway/src/source/telegram/registration.rs                                    +82       0  +100.00%
crates/platform/trogon-gateway/src/source/telegram/server.rs                                          +53       0  +100.00%
crates/platform/trogon-nats/src/test_support.rs                                                       +26       0  +100.00%
crates/platform/trogon-nats/src/messaging.rs                                                         +168      +2  +98.81%
crates/platform/trogon-nats/src/mocks.rs                                                             +224       0  +100.00%
crates/platform/trogon-nats/src/token.rs                                                               +6       0  +100.00%
crates/platform/trogon-nats/src/nats_token.rs                                                         +56       0  +100.00%
crates/platform/trogon-nats/src/server_info.rs                                                        +21      +3  +85.71%
crates/platform/trogon-nats/src/connect.rs                                                            +26      +6  +76.92%
crates/platform/trogon-nats/src/client.rs                                                             +22     +22  +100.00%
crates/platform/trogon-nats/src/auth.rs                                                               +45       0  +100.00%
crates/scheduler/trogon-scheduler/src/commands/record_schedule_occurrence.rs                         +113      +1  +99.12%
crates/scheduler/trogon-scheduler/src/commands/schedule_next_occurrence.rs                            +74       0  +100.00%
crates/platform/trogon-telemetry/src/lib.rs                                                          +135     +23  +82.96%
crates/platform/trogon-telemetry/src/trace.rs                                                         +15      +1  +93.33%
crates/platform/trogon-telemetry/src/service_name.rs                                                  +17       0  +100.00%
crates/platform/trogon-telemetry/src/metric.rs                                                        +18      +1  +94.44%
crates/platform/trogon-telemetry/src/resource_attribute.rs                                            +13       0  +100.00%
crates/platform/trogon-telemetry/src/log.rs                                                           +36       0  +100.00%
crates/mcp/mcp-nats/src/mcp_peer_id.rs                                                                +15       0  +100.00%
crates/mcp/mcp-nats/src/mcp_prefix.rs                                                                 +15       0  +100.00%
crates/mcp/mcp-nats/src/wire.rs                                                                       +18       0  +100.00%
crates/mcp/mcp-nats/src/transport.rs                                                                 +263     +10  +96.20%
crates/mcp/mcp-nats/src/config.rs                                                                     +59       0  +100.00%
crates/mcp/mcp-nats/src/client.rs                                                                     +12       0  +100.00%
crates/mcp/mcp-nats/src/jsonrpc.rs                                                                     +5       0  +100.00%
crates/mcp/mcp-nats/src/server.rs                                                                     +12       0  +100.00%
crates/ard/ard-registry/src/facet_field.rs                                                            +13       0  +100.00%
crates/ard/ard-registry/src/registry_config.rs                                                        +16       0  +100.00%
crates/ard/ard-registry/src/filters.rs                                                                +31       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%
crates/ard/ard-registry/src/router.rs                                                                 +33       0  +100.00%
crates/ard/ard-registry/src/http_error.rs                                                             +17       0  +100.00%
crates/ard/ard-registry/src/list_agents_request.rs                                                    +21       0  +100.00%
crates/ard/ard-registry/src/search_request.rs                                                         +32      +1  +96.88%
crates/ard/ard-registry/src/explore_request.rs                                                        +30       0  +100.00%
crates/ard/ard-registry/src/registry.rs                                                              +134      +3  +97.76%
crates/ard/ard-registry/src/extract.rs                                                                +12       0  +100.00%
crates/ard/ard-registry/src/lexical_rank.rs                                                           +55      +2  +96.36%
crates/ard/ard-registry/src/page_token.rs                                                             +14       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-nats/src/push/dispatcher/composite.rs                                                  +15       0  +100.00%
crates/a2a/a2a-nats/src/push/dispatcher/nats.rs                                                       +37       0  +100.00%
crates/a2a/a2a-nats/src/push/dispatcher/jetstream.rs                                                  +45       0  +100.00%
crates/platform/trogon-gateway/src/source/datadog/server.rs                                          +108       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/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/src/push/dlq_dedup.rs                                                             +51      +1  +98.04%
crates/a2a/a2a-nats/src/push/push_notification_target.rs                                              +32       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_id.rs                                           +17       0  +100.00%
crates/a2a/a2a-nats/src/push/target.rs                                                                +19       0  +100.00%
crates/a2a/a2a-nats/src/push/push_notification_config.rs                                               +6       0  +100.00%
crates/a2a/a2a-nats/src/push/caller_id.rs                                                             +41       0  +100.00%
crates/a2a/a2a-nats/src/push/push_delivery_semantics_registry.rs                                      +17       0  +100.00%
crates/a2a/a2a-nats/src/push/terminal_push_task_state.rs                                              +17       0  +100.00%
crates/a2a/a2a-nats/src/push/dispatch_error.rs                                                        +24       0  +100.00%
crates/a2a/a2a-nats/src/push/status_transition_id.rs                                                  +15       0  +100.00%
crates/a2a/a2a-nats/src/push/push_payload.rs                                                          +18       0  +100.00%
crates/a2a/a2a-nats/src/push/push_idempotency_key.rs                                                  +43       0  +100.00%
crates/a2a/a2a-nats/src/push/idempotency_key_header.rs                                                +16       0  +100.00%
crates/a2a/a2a-nats/src/push/dlq.rs                                                                   +56       0  +100.00%
crates/a2a/a2a-nats/src/push/authentication_header.rs                                                 +31       0  +100.00%
crates/a2a/a2a-nats/src/push/nats_push_subject.rs                                                     +12       0  +100.00%
crates/scheduler/trogon-scheduler/src/nats.rs                                                         +11       0  +100.00%
crates/scheduler/trogon-scheduler/src/config.rs                                                       +27       0  +100.00%
crates/scheduler/trogon-scheduler/src/mocks.rs                                                       +401     +51  +87.28%
crates/scheduler/trogon-scheduler/src/error.rs                                                        +83     +12  +85.54%
crates/a2a/a2a-gateway/src/runtime/reply.rs                                                            +5       0  +100.00%
crates/a2a/a2a-gateway/src/runtime/aauth_env.rs                                                      +162       0  +100.00%
crates/a2a/a2a-gateway/src/runtime/env.rs                                                             +55       0  +100.00%
crates/a2a/a2a-gateway/src/runtime/streaming.rs                                                       +35       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%
crates/a2a/a2a-gateway/src/runtime/policy_stack.rs                                                    +78     +31  +60.26%
crates/a2a/a2a-gateway/src/runtime/audit_publish.rs                                                   +16       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/agent/close_session.rs                                                        +16       0  +100.00%
crates/acp/acp-nats/src/agent/providers_set.rs                                                         +5       0  +100.00%
crates/acp/acp-nats/src/agent/providers_disable.rs                                                     +5       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_notification.rs                                                     +12       0  +100.00%
crates/acp/acp-nats/src/agent/js_request.rs                                                           +73      +6  +91.78%
crates/acp/acp-nats/src/agent/cancel.rs                                                               +12       0  +100.00%
crates/acp/acp-nats/src/agent/ext_method.rs                                                           +12       0  +100.00%
crates/acp/acp-nats/src/agent/prompt.rs                                                              +156      +7  +95.51%
crates/acp/acp-nats/src/agent/delete_session.rs                                                       +16       0  +100.00%
crates/acp/acp-nats/src/agent/fork_session.rs                                                         +16       0  +100.00%
crates/acp/acp-nats/src/agent/bridge.rs                                                              +138      +4  +97.10%
crates/acp/acp-nats/src/agent/list_sessions.rs                                                         +5       0  +100.00%
crates/acp/acp-nats/src/agent/resume_session.rs                                                       +16       0  +100.00%
crates/acp/acp-nats/src/agent/rpc_call.rs                                                             +23       0  +100.00%
crates/acp/acp-nats/src/agent/test_support.rs                                                        +194       0  +100.00%
crates/acp/acp-nats/src/agent/set_session_mode.rs                                                     +16       0  +100.00%
crates/acp/acp-nats/src/agent/logout.rs                                                                +5       0  +100.00%
crates/acp/acp-nats/src/agent/initialize.rs                                                            +6       0  +100.00%
crates/acp/acp-nats/src/agent/authenticate.rs                                                          +5       0  +100.00%
crates/acp/acp-nats/src/agent/load_session.rs                                                         +16       0  +100.00%
crates/acp/acp-nats/src/agent/providers_list.rs                                                        +5       0  +100.00%
crates/acp/acp-nats/src/agent/new_session.rs                                                           +5       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/acp/acp-nats/src/jetstream/streams.rs                                                          +18       0  +100.00%
crates/acp/acp-nats/src/jetstream/consumers.rs                                                        +41       0  +100.00%
crates/decider/trogon-decider-wit/src/lib.rs                                                          +53      +1  +98.11%
crates/a2a/a2a-gateway/src/aauth.rs                                                                  +285       0  +100.00%
crates/a2a/a2a-gateway/src/push_dlq_mirror.rs                                                        +133     +16  +87.97%
crates/a2a/a2a-gateway/src/gw_ingress_stream.rs                                                      +144      +4  +97.22%
crates/a2a/a2a-gateway/src/agent_card_surface.rs                                                       +3       0  +100.00%
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/runtime.rs                                                                 +11       0  +100.00%
crates/a2a/a2a-gateway/src/jwt_caller_identity.rs                                                    +151      +4  +97.35%
crates/a2a/a2a-gateway/src/audit_ingress.rs                                                          +110       0  +100.00%
crates/a2a/a2a-gateway/src/main.rs                                                                     +1       0  +100.00%
crates/a2a/a2a-gateway/src/gw_pull_backpressure.rs                                                   +209      +3  +98.56%
crates/aauth/trogon-aauth-person/src/store.rs                                                         +21       0  +100.00%
crates/aauth/trogon-aauth-person/src/agent.rs                                                         +84       0  +100.00%
crates/aauth/trogon-aauth-person/src/subagent.rs                                                      +10       0  +100.00%
crates/aauth/trogon-aauth-person/src/error.rs                                                         +48       0  +100.00%
crates/aauth/trogon-aauth-person/src/interaction.rs                                                    +2       0  +100.00%
crates/aauth/trogon-aauth-person/src/mission.rs                                                       +65       0  +100.00%
crates/aauth/trogon-aauth-person/src/pending.rs                                                       +73       0  +100.00%
crates/aauth/trogon-aauth-person/src/server.rs                                                       +353       0  +100.00%
crates/aauth/trogon-aauth-person/src/login.rs                                                          +3       0  +100.00%
crates/aauth/trogon-aauth-person/src/mint.rs                                                          +59       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/platform/trogon-gateway/src/source/twitter/signature.rs                                        +16       0  +100.00%
crates/platform/trogon-service-config/src/lib.rs                                                      +38       0  +100.00%
crates/mcp/mcp-nats-server/src/main.rs                                                                 +1      +1  +100.00%
crates/mcp/mcp-nats-server/src/runtime.rs                                                            +268     +86  +67.91%
crates/mcp/mcp-nats-server/src/config.rs                                                              +58       0  +100.00%
crates/mcp/mcp-nats-server/src/allowed_host.rs                                                        +52       0  +100.00%
crates/platform/trogon-gateway/src/source_integration_id.rs                                           +28      +2  +92.86%
crates/platform/trogon-gateway/src/streams.rs                                                          +7       0  +100.00%
crates/platform/trogon-gateway/src/source_status.rs                                                   +12       0  +100.00%
crates/platform/trogon-gateway/src/source_plugin.rs                                                  +288      +3  +98.96%
crates/platform/trogon-gateway/src/http.rs                                                            +13       0  +100.00%
crates/platform/trogon-gateway/src/main.rs                                                            +26       0  +100.00%
crates/platform/trogon-gateway/src/config.rs                                                        +1172     +32  +97.27%
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/platform/trogon-std/src/time/system.rs                                                          +9       0  +100.00%
crates/platform/trogon-std/src/time/mock.rs                                                           +32       0  +100.00%
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%
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/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/scheduler/trogon-scheduler/src/projections/schedules/mod.rs                                   +175      +3  +98.29%
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-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_envelope_encode_error.rs             +3       0  +100.00%
crates/decider/trogon-decider-runtime/src/snapshot/codec/snapshot_envelope_decode_error.rs             +6       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_decode_error.rs                     +19       0  +100.00%
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/a2a/a2a-pack/src/agent_card_read.rs                                                            +23       0  +100.00%
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/platform/trogonai-proto/src/codec.rs                                                           +16       0  +100.00%
crates/platform/trogonai-proto/src/convert.rs                                                         +53       0  +100.00%
crates/platform/trogonai-proto/src/lib.rs                                                             +19       0  +100.00%
crates/scheduler/trogon-scheduler/src/queries/read_model/message.rs                                   +77       0  +100.00%
crates/scheduler/trogon-scheduler/src/queries/read_model/schedule.rs                                  +15       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/progress.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/complete.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/list_tools.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/initialize.rs                                            +12       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/get_task.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/prompt_list_changed.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/list_resource_templates.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/read_resource.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/subscribe_resource.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/tool_list_changed.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/unsubscribe_resource.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/cancelled.rs                                             +12       0  +100.00%
crates/mcp/mcp-nats/src/nats/subjects/server/elicitation_completed.rs                                 +12       0  +100.00%
crates/platform/trogon-gateway/src/source/notion/server.rs                                           +120      +4  +96.67%
crates/platform/trogon-gateway/src/source/notion/verification_token.rs                                +46       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/signature.rs                                          +9       0  +100.00%
crates/platform/trogon-gateway/src/source/notion/notion_verification_token.rs                          +9       0  +100.00%
crates/platform/trogonai-proto/src/scheduler/schedules/codec.rs                                       +57       0  +100.00%
crates/platform/trogon-identity-types/src/act_chain.rs                                                +13       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/platform/trogon-gateway/src/source/linear/config.rs                                             +9       0  +100.00%
crates/platform/trogon-gateway/src/source/linear/signature.rs                                          +8      +1  +87.50%
crates/platform/trogon-gateway/src/source/linear/server.rs                                            +83       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/list.rs                                             +15       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/set.rs                                              +12       0  +100.00%
crates/acp/acp-nats-agent/src/connection.rs                                                          +482      +1  +99.79%
crates/acp/acp-nats/src/nats/jsonrpc.rs                                                               +51     +11  +78.43%
crates/acp/acp-nats/src/nats/mod.rs                                                                   +61     +13  +78.69%
crates/acp/acp-nats/src/nats/parsing.rs                                                              +123       0  +100.00%
crates/acp/acp-nats/src/nats/extensions.rs                                                             +3       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/decider/trogon-decider-runtime/src/headers/header_map.rs                                       +54       0  +100.00%
crates/platform/trogon-std/src/fs/system.rs                                                           +15       0  +100.00%
crates/platform/trogon-std/src/fs/mem.rs                                                              +85       0  +100.00%
crates/a2a/a2a-bridge/src/identity.rs                                                                 +63       0  +100.00%
crates/a2a/a2a-bridge/src/inbound.rs                                                                 +326     +91  +72.09%
crates/a2a/a2a-bridge/src/main.rs                                                                      +1      +1  +100.00%
crates/a2a/a2a-bridge/src/nats_transport_harness.rs                                                   +42       0  +100.00%
crates/a2a/a2a-bridge/src/auth.rs                                                                     +47     +15  +68.09%
crates/a2a/a2a-bridge/src/outbound.rs                                                                 +70      +7  +90.00%
crates/scheduler/trogon-scheduler/src/processor/execution/checkpoints/codec.rs                       +318     +17  +94.65%
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%
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/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/mcp/mcp-nats/src/nats/subjects/subscriptions/one_client.rs                                      +9       0  +100.00%
crates/mcp/mcp-nats/src/nats/subjects/subscriptions/all_client.rs                                      +6       0  +100.00%
crates/aauth/trogon-aauth-as/src/server.rs                                                           +139       0  +100.00%
crates/aauth/trogon-aauth-as/src/policy.rs                                                            +38       0  +100.00%
crates/aauth/trogon-aauth-as/src/subagent.rs                                                          +10       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/verify.rs                                                            +96       0  +100.00%
crates/aauth/trogon-aauth-as/src/pending.rs                                                           +26       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/pending_prompt_waiters.rs                                                     +68       0  +100.00%
crates/acp/acp-nats/src/agent_handler.rs                                                              +28       0  +100.00%
crates/acp/acp-nats/src/client_proxy.rs                                                               +67      +1  +98.51%
crates/acp/acp-nats/src/wire.rs                                                                       +80     +14  +82.50%
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/lib.rs                                                                        +11       0  +100.00%
crates/acp/acp-nats/src/error.rs                                                                      +31       0  +100.00%
crates/acp/acp-nats/src/acp_prefix.rs                                                                 +13       0  +100.00%
crates/acp/acp-nats/src/in_flight_slot_guard.rs                                                        +7       0  +100.00%
crates/acp/acp-nats/src/client_handler.rs                                                             +22       0  +100.00%
crates/acp/acp-nats/src/config.rs                                                                     +84       0  +100.00%
crates/acp/acp-nats/src/ext_method_name.rs                                                            +18       0  +100.00%
crates/decider/trogon-decider-nats/src/stream_store/replay.rs                                        +135     +10  +92.59%
crates/a2a/a2a-nats-http/src/handlers/mod.rs                                                         +185     +12  +93.51%
crates/aauth/trogon-aauth-sdk/src/delegation.rs                                                       +15       0  +100.00%
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/signer.rs                                                           +91       0  +100.00%
crates/aauth/trogon-aauth-sdk/src/subagent.rs                                                         +34       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_event_sampling_source.rs        +11       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.rs                             +383      +5  +98.69%
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_delivery.rs               +14       0  +100.00%
crates/scheduler/trogon-scheduler-domain/src/commands/domain/schedule_id.rs                           +37       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/content_digest.rs                            +27       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/annotations.rs                               +19       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/parent_ref.rs                                +19       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/tool_selectors.rs                            +26       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/principal.rs                                 +36       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/labels.rs                                    +25       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/agent_name.rs                                +19       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/runtime_id.rs                                +19       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/nonblank.rs                                   +9       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/kubernetes_syntax.rs                         +45       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/model_parameters.rs                          +10       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/agent_definition.rs                          +35       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/delegate_selectors.rs                        +26       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/agent_id.rs                                  +27       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/agent_charter.rs                             +30       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/model_id.rs                                  +19       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/domain/revision_number.rs                           +12       0  +100.00%
crates/scheduler/trogon-scheduler/src/processor/execution/wakeup.rs                                   +91      +1  +98.90%
crates/decider/trogon-decider-runtime/src/snapshot/mod.rs                                              +3       0  +100.00%
crates/decider/trogon-decider-runtime/src/snapshot/read_snapshot.rs                                    +3       0  +100.00%
crates/decider/trogon-decider-runtime/src/snapshot/snapshot_type.rs                                   +42       0  +100.00%
crates/a2a/a2a-bridge/src/auth/callout_mint.rs                                                        +49      +1  +97.96%
crates/ard/ard-nats/src/memory_catalog_store.rs                                                       +32       0  +100.00%
crates/ard/ard-nats/src/store.rs                                                                       +3       0  +100.00%
crates/ard/ard-nats/src/catalog_index.rs                                                              +82      +2  +97.56%
crates/ard/ard-nats/src/catalog_subject.rs                                                            +14      +3  +78.57%
crates/ard/ard-nats/src/catalog_event.rs                                                              +71       0  +100.00%
crates/platform/trogon-gateway/src/source/github/server.rs                                            +50       0  +100.00%
crates/platform/trogon-gateway/src/source/github/config.rs                                             +9       0  +100.00%
crates/platform/trogon-gateway/src/source/github/signature.rs                                          +9       0  +100.00%
crates/a2a/a2a-redaction/src/wasm_bundle_path.rs                                                      +18       0  +100.00%
crates/a2a/a2a-redaction/src/a2a_method.rs                                                            +41       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%
crates/a2a/a2a-redaction/src/tier3_sentinel.rs                                                        +12       0  +100.00%
crates/a2a/a2a-redaction/src/redactor.rs                                                              +32       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/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/token.rs                                                        +184      +1  +99.46%
crates/aauth/trogon-aauth-verify/src/jkt.rs                                                           +33       0  +100.00%
crates/aauth/trogon-aauth-verify/src/upstream.rs                                                      +20       0  +100.00%
crates/aauth/trogon-aauth-verify/src/challenge.rs                                                     +77       0  +100.00%
crates/aauth/trogon-aauth-verify/src/jwks_http.rs                                                    +144       0  +100.00%
crates/aauth/trogon-aauth-verify/src/mission.rs                                                       +33       0  +100.00%
crates/aauth/trogon-aauth-verify/src/jwks_cache.rs                                                    +39       0  +100.00%
crates/aauth/trogon-aauth-verify/src/nats_pop.rs                                                     +125      +1  +99.20%
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/acp/acp-nats/src/nats/subjects/global/logout.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/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/acp/acp-nats/src/nats/subjects/global/providers_list.rs                                         +6       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/initialize.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/session_list.rs                                           +6       0  +100.00%
crates/ard/ard-registry/src/bin/ard-registry-demo/main.rs                                             +64     +20  +68.75%
crates/mcp/mcp-nats/src/telemetry/transport.rs                                                         +6       0  +100.00%
crates/platform/trogon-std/src/env/in_memory.rs                                                       +30       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/agents/trogonai-agents-domain/src/commands/test_support.rs                                     +74       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/proto_wire.rs                                      +187       0  +100.00%
crates/agents/trogonai-agents-domain/src/commands/provision_agent.rs                                  +48      +1  +97.92%
crates/agents/trogonai-agents-domain/src/commands/event_fold.rs                                       +14       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/testkit.rs                          +311      +4  +98.71%
crates/scheduler/trogon-scheduler/src/processor/execution/worker/dispatcher.rs                       +280      +1  +99.64%
crates/scheduler/trogon-scheduler/src/processor/execution/worker/processor.rs                        +303     +12  +96.04%
crates/platform/trogon-gateway/src/source/microsoft_graph/server.rs                                   +73       0  +100.00%
crates/platform/trogon-gateway/src/source/microsoft_graph/client_state.rs                             +14       0  +100.00%
crates/a2a/a2a-nats/src/catalog/registrar.rs                                                          +56       0  +100.00%
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/agent_view.rs                                                         +47       0  +100.00%
crates/a2a/a2a-nats/src/catalog/watch.rs                                                              +18       0  +100.00%
crates/a2a/a2a-nats/src/catalog/spicedb_permission.rs                                                +178     +17  +90.45%
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/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/mcp/mcp-nats/src/nats/subjects/client/roots_list_changed.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/cancelled.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/create_message.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/create_elicitation.rs                                    +12       0  +100.00%
crates/mcp/mcp-nats/src/nats/subjects/client/list_roots.rs                                            +12       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%
crates/a2a/a2a-nats/src/catalog/import_gate/spicedb/config.rs                                         +70       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/key_version.rs                                     +16       0  +100.00%
crates/a2a/a2a-auth-callout/src/signing_key_source/file.rs                                            +38      +6  +84.21%
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/loader.rs                                          +23       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/signing_key_handle.rs                              +15       0  +100.00%
crates/a2a/a2a-auth-callout/src/signing_key_source/vault.rs                                            +3       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_session.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/all_agent.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/one_agent.rs                                      +15       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/prompt_wildcard.rs                                 +9       0  +100.00%
crates/acp/acp-nats/src/nats/subjects/subscriptions/one_client.rs                                     +15       0  +100.00%
crates/decider/trogon-decider-wasm-runtime/src/engine.rs                                             +145       0  +100.00%
crates/decider/trogon-decider-wasm-runtime/src/module.rs                                              +71       0  +100.00%
crates/decider/trogon-decider-wasm-runtime/src/snapshot_id.rs                                         +18       0  +100.00%
crates/decider/trogon-decider-wasm-runtime/src/module_name.rs                                         +34       0  +100.00%
crates/decider/trogon-decider-wasm-runtime/src/test_doubles.rs                                        +73      +5  +93.15%
crates/decider/trogon-decider-wasm-runtime/src/execution.rs                                          +756     +31  +95.90%
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/registry.rs                                            +94       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/command_type.rs                                        +31       0  +100.00%
crates/decider/trogon-decider-wasm-runtime/src/command_spec.rs                                        +12       0  +100.00%
crates/decider/trogon-decider-wasm-runtime/src/test_fixture.rs                                         +7       0  +100.00%
crates/a2a/a2a-gateway/src/policy/error.rs                                                            +16       0  +100.00%
crates/a2a/a2a-gateway/src/policy/spicedb_tier1.rs                                                   +157     +13  +91.72%
crates/a2a/a2a-gateway/src/policy/wasmtime_substrate.rs                                               +31       0  +100.00%
crates/a2a/a2a-gateway/src/policy/per_skill.rs                                                        +87       0  +100.00%
crates/a2a/a2a-auth-callout/src/caller_jwt_header.rs                                                  +20       0  +100.00%
crates/a2a/a2a-auth-callout/src/denial_claims.rs                                                      +68       0  +100.00%
crates/a2a/a2a-auth-callout/src/main.rs                                                                +1      +1  +100.00%
crates/a2a/a2a-auth-callout/src/denial_category.rs                                                    +29       0  +100.00%
crates/a2a/a2a-auth-callout/src/denial_reason.rs                                                      +15       0  +100.00%
crates/a2a/a2a-auth-callout/src/error.rs                                                               +3       0  +100.00%
crates/a2a/a2a-auth-callout/src/permissions.rs                                                        +85       0  +100.00%
crates/a2a/a2a-auth-callout/src/subscriber.rs                                                         +96     +96  +100.00%
crates/a2a/a2a-auth-callout/src/test_support.rs                                                       +20     +20  +100.00%
crates/a2a/a2a-auth-callout/src/account_resolver.rs                                                   +31       0  +100.00%
crates/a2a/a2a-auth-callout/src/dispatcher.rs                                                         +34     +13  +61.76%
crates/decider/trogon-decider-nats/src/processor.rs                                                  +109     +17  +84.40%
crates/decider/trogon-decider-nats/src/projector.rs                                                   +88      +3  +96.59%
crates/decider/trogon-decider-nats/src/provision.rs                                                  +100     +22  +78.00%
crates/decider/trogon-decider-nats/src/snapshot_store.rs                                             +467     +48  +89.72%
crates/decider/trogon-decider-nats/src/stream_store.rs                                               +252     +18  +92.86%
crates/decider/trogon-decider-nats/src/store.rs                                                       +73     +45  +38.36%
crates/a2a/a2a-redaction/src/bin/sign-bundle.rs                                                        +1      +1  +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-auth-callout/src/credentials/oidc.rs                                                  +188      +4  +97.87%
crates/a2a/a2a-auth-callout/src/credentials/mtls.rs                                                  +153     +13  +91.50%
crates/a2a/a2a-auth-callout/src/credentials/api_key.rs                                                +46      +1  +97.83%
crates/platform/trogon-nats/src/lease/release.rs                                                       +5      +5  +100.00%
crates/platform/trogon-nats/src/lease/ttl.rs                                                          +27       0  +100.00%
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/acquire.rs                                                       +5      +5  +100.00%
crates/platform/trogon-nats/src/lease/renew.rs                                                        +82     +19  +76.83%
crates/platform/trogon-nats/src/lease/renew_interval.rs                                               +25       0  +100.00%
crates/platform/trogon-nats/src/lease/provision.rs                                                    +83     +10  +87.95%
crates/platform/trogon-nats/src/lease/lease_timing.rs                                                 +15       0  +100.00%
crates/platform/trogon-nats/src/lease/lease_bucket.rs                                                 +19       0  +100.00%
crates/platform/trogon-nats/src/lease/mod.rs                                                         +107     +13  +87.85%
crates/acp/acp-nats/src/client/terminal_kill.rs                                                       +41       0  +100.00%
crates/acp/acp-nats/src/client/fs_write_text_file.rs                                                  +43       0  +100.00%
crates/acp/acp-nats/src/client/rpc_reply.rs                                                          +107     +43  +59.81%
crates/acp/acp-nats/src/client/mod.rs                                                                +101      +1  +99.01%
crates/acp/acp-nats/src/client/test_support.rs                                                        +17       0  +100.00%
crates/acp/acp-nats/src/client/terminal_wait_for_exit.rs                                              +55       0  +100.00%
crates/acp/acp-nats/src/client/fs_read_text_file.rs                                                   +27       0  +100.00%
crates/acp/acp-nats/src/client/elicitation_complete.rs                                                 +8       0  +100.00%
crates/acp/acp-nats/src/client/elicitation_create.rs                                                  +41       0  +100.00%
crates/acp/acp-nats/src/client/terminal_release.rs                                                    +35       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/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_create.rs                                                     +41       0  +100.00%
crates/acp/acp-nats/src/client/terminal_output.rs                                                     +29       0  +100.00%
crates/scheduler/trogon-scheduler/src/processor/execution/execution_schedules/mod.rs                  +82       0  +100.00%
crates/scheduler/trogon-scheduler/src/processor/execution/reconciliation/schedule_key.rs              +27       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/schedule_subject.rs          +31       0  +100.00%
crates/scheduler/trogon-scheduler/src/processor/execution/reconciliation/recorded_events.rs          +241     +12  +95.02%
crates/scheduler/trogon-scheduler/src/processor/execution/reconciliation/go_duration.rs               +40       0  +100.00%
crates/scheduler/trogon-scheduler/src/processor/execution/reconciliation/request.rs                  +230      +2  +99.13%
crates/scheduler/trogon-scheduler/src/processor/execution/reconciliation/reconcile.rs                +303     +13  +95.71%
crates/ard/ard-catalog/src/registry_error_wire.rs                                                      +8       0  +100.00%
crates/ard/ard-catalog/src/ard_storage_key.rs                                                         +10       0  +100.00%
crates/ard/ard-catalog/src/url_or_data.rs                                                             +20       0  +100.00%
crates/ard/ard-catalog/src/catalog_entry_wire.rs                                                       +3       0  +100.00%
crates/ard/ard-catalog/src/catalog_host.rs                                                            +26       0  +100.00%
crates/ard/ard-catalog/src/catalog_manifest_wire.rs                                                    +3       0  +100.00%
crates/ard/ard-catalog/src/representative_queries.rs                                                  +18       0  +100.00%
crates/ard/ard-catalog/src/catalog_entry.rs                                                          +107       0  +100.00%
crates/ard/ard-catalog/src/metadata.rs                                                                +14       0  +100.00%
crates/ard/ard-catalog/src/federation_mode.rs                                                          +3       0  +100.00%
crates/ard/ard-catalog/src/catalog_host_wire.rs                                                        +6       0  +100.00%
crates/ard/ard-catalog/src/trust_manifest.rs                                                          +45      +1  +97.78%
crates/ard/ard-catalog/src/catalog_manifest.rs                                                        +44       0  +100.00%
crates/ard/ard-catalog/src/media_type.rs                                                              +20       0  +100.00%
crates/ard/ard-catalog/src/display_name.rs                                                            +13       0  +100.00%
crates/ard/ard-catalog/src/ard_identifier.rs                                                          +54       0  +100.00%
crates/ard/ard-catalog/src/catalog_manifest_schema.rs                                                 +65      +4  +93.85%
crates/platform/trogon-nats/src/telemetry/messaging.rs                                                +37       0  +100.00%
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/platform/jsonrpc-nats/src/codec/encode.rs                                                      +31       0  +100.00%
crates/platform/jsonrpc-nats/src/codec/reconstruct.rs                                                 +90      +5  +94.44%
crates/platform/jsonrpc-nats/src/codec/decode.rs                                                      +57       0  +100.00%
crates/scheduler/trogon-scheduler/src/commands/domain/schedule_occurrence_sequence.rs                 +16       0  +100.00%
crates/scheduler/trogon-scheduler/src/commands/domain/recurrence.rs                                   +78      +1  +98.72%
crates/decider/trogon-decider/src/event/codec/event_decode.rs                                         +13       0  +100.00%
crates/decider/trogon-decider/src/event/codec/event_payload_error.rs                                   +5       0  +100.00%
crates/platform/jsonrpc-nats/src/id.rs                                                                +62     +20  +67.74%
crates/platform/jsonrpc-nats/src/message.rs                                                           +11      +3  +72.73%
crates/platform/jsonrpc-nats/src/transport.rs                                                         +92      +1  +98.91%
crates/platform/trogon-gateway/src/source/standard_webhooks.rs                                       +138       0  +100.00%
crates/platform/trogon-std/src/json.rs                                                                +23       0  +100.00%
crates/platform/trogon-std/src/duration.rs                                                            +15       0  +100.00%
crates/platform/trogon-std/src/uuid.rs                                                                 +3       0  +100.00%
crates/platform/trogon-std/src/signal.rs                                                              +22     +12  +45.45%
crates/platform/trogon-std/src/secret_string.rs                                                       +13       0  +100.00%
crates/platform/trogon-std/src/http.rs                                                                 +8       0  +100.00%
crates/platform/trogon-std/src/args.rs                                                                +12      +9  +25.00%
crates/scheduler/trogon-scheduler-domain/src/subject.rs                                               +26       0  +100.00%
crates/decider/trogon-decider-runtime/src/event/event_identity.rs                                      +3       0  +100.00%
crates/decider/trogon-decider-runtime/src/event/stream_event.rs                                        +8       0  +100.00%
crates/decider/trogon-decider-runtime/src/event/event_id.rs                                           +32       0  +100.00%
crates/platform/trogon-gateway/src/source/sentry/signature.rs                                          +6       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/server.rs                                            +69       0  +100.00%
crates/platform/trogonai-proto/src/agents/agents/codec.rs                                             +30       0  +100.00%
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/src/testing/codec.rs                                                    +14       0  +100.00%
crates/decider/trogon-decider-runtime/src/replay_limit.rs                                             +26       0  +100.00%
crates/decider/trogon-decider-runtime/src/memory.rs                                                  +104      +5  +95.19%
crates/decider/trogon-decider-runtime/src/execution.rs                                               +627      +3  +99.52%
crates/a2a/a2a-nats/src/gateway_ingress.rs                                                           +153     +21  +86.27%
crates/a2a/a2a-nats/src/agent_id.rs                                                                   +21       0  +100.00%
crates/a2a/a2a-nats/src/task_id.rs                                                                    +22       0  +100.00%
crates/a2a/a2a-nats/src/a2a_prefix.rs                                                                 +16       0  +100.00%
crates/a2a/a2a-nats/src/jsonrpc.rs                                                                    +27       0  +100.00%
crates/a2a/a2a-nats/src/context_id.rs                                                                 +22       0  +100.00%
crates/a2a/a2a-nats/src/req_id.rs                                                                     +21       0  +100.00%
crates/a2a/a2a-nats/src/wire.rs                                                                       +59      +2  +96.61%
crates/a2a/a2a-nats/src/config.rs                                                                    +114       0  +100.00%
crates/acp/acp-nats/src/nats/subjects/stream.rs                                                       +56       0  +100.00%
crates/a2a/a2a-nats/src/nats/subjects/stream.rs                                                       +50       0  +100.00%
crates/aauth/trogon-aauth-sdk/src/exchange/client.rs                                                 +283       0  +100.00%
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/a2a/a2a-auth-callout/src/jwt/mod.rs                                                           +232       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%
crates/a2a/a2a-auth-callout/src/jwt/user_jwt_subject.rs                                               +12       0  +100.00%
crates/acp/acp-nats-stdio/src/main.rs                                                                 +56      +8  +85.71%
crates/acp/acp-nats-stdio/src/config.rs                                                               +15       0  +100.00%
crates/platform/trogon-identity-types/src/aauth/error.rs                                              +14       0  +100.00%
crates/platform/trogon-identity-types/src/aauth/mod.rs                                                +69       0  +100.00%
crates/platform/trogon-identity-types/src/aauth/headers.rs                                            +47       0  +100.00%
crates/platform/trogon-identity-types/src/aauth/person_server.rs                                      +23       0  +100.00%
crates/platform/trogon-identity-types/src/aauth/login.rs                                              +78       0  +100.00%
crates/platform/trogon-identity-types/src/aauth/mission.rs                                            +33       0  +100.00%
crates/a2a/a2a-nats/src/client/streaming.rs                                                           +73       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%
crates/a2a/a2a-nats/src/client/wire.rs                                                                +13       0  +100.00%
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/handle.rs                                                             +218       0  +100.00%
crates/a2a/a2a-nats/src/client/event_stream.rs                                                        +76       0  +100.00%
crates/a2a/a2a-nats/src/nats/subjects/tasks/events.rs                                                 +17       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/cancel.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/close.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/fork.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/load.rs                                                +15       0  +100.00%
crates/acp/acp-nats/src/nats/subjects/commands/set_config_option.rs                                   +15       0  +100.00%
crates/aauth/trogon-aauth-person/src/http/mod.rs                                                     +213       0  +100.00%
crates/a2a/a2a-nats/src/server/agent_card.rs                                                          +16       0  +100.00%
crates/a2a/a2a-nats/src/server/bridge.rs                                                              +65       0  +100.00%
crates/a2a/a2a-nats/src/server/message_stream.rs                                                      +56      +6  +89.29%
crates/a2a/a2a-nats/src/server/tasks_list.rs                                                          +12       0  +100.00%
crates/a2a/a2a-nats/src/server/push_set.rs                                                            +12       0  +100.00%
crates/a2a/a2a-nats/src/server/push_delete.rs                                                         +12       0  +100.00%
crates/a2a/a2a-nats/src/server/dispatch.rs                                                            +33       0  +100.00%
crates/a2a/a2a-nats/src/server/tasks_cancel.rs                                                        +12       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/message_send.rs                                                        +15       0  +100.00%
crates/a2a/a2a-nats/src/server/tasks_resubscribe.rs                                                   +12       0  +100.00%
crates/a2a/a2a-nats/src/server/push_get.rs                                                            +12       0  +100.00%
crates/a2a/a2a-nats/src/server/test_support.rs                                                        +81     +25  +69.14%
crates/a2a/a2a-nats/src/server/wire.rs                                                                +34      +4  +88.24%
crates/platform/trogon-std/src/telemetry/http.rs                                                      +58       0  +100.00%
crates/a2a/a2a-redaction/src/signed_bundle/signature.rs                                               +30      +3  +90.00%
crates/a2a/a2a-redaction/src/signed_bundle/digest.rs                                                  +26       0  +100.00%
crates/a2a/a2a-redaction/src/signed_bundle/public_key.rs                                              +36      +2  +94.44%
crates/a2a/a2a-redaction/src/signed_bundle/manifest.rs                                                +56      +1  +98.21%
crates/a2a/a2a-redaction/src/signed_bundle/verify.rs                                                  +64      +2  +96.88%
crates/decider/trogon-decider-guest-macros/src/lib.rs                                                +136     +28  +79.41%
crates/scheduler/trogon-scheduler-domain/src/commands/pause_schedule.rs                               +31       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/proto_wire.rs                                  +138      +1  +99.28%
crates/scheduler/trogon-scheduler-domain/src/commands/resume_schedule.rs                              +34       0  +100.00%
crates/scheduler/trogon-scheduler-domain/src/commands/state.rs                                        +82       0  +100.00%
crates/scheduler/trogon-scheduler/src/telemetry/metrics.rs                                            +27       0  +100.00%
crates/scheduler/trogon-scheduler/src/telemetry/trace.rs                                              +20       0  +100.00%
crates/a2a/a2a-gateway/src/policy/tier1_declarative/evaluator.rs                                     +158     +13  +91.77%
crates/a2a/a2a-gateway/src/policy/tier1_declarative/time_predicate.rs                                +118      +2  +98.31%
crates/a2a/a2a-gateway/src/policy/tier1_declarative/bundle.rs                                         +57       0  +100.00%
crates/a2a/a2a-gateway/src/policy/tier1_declarative/loader.rs                                         +85      +9  +89.41%
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/session_request_permission.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/session_update.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/elicitation_create.rs                                +12       0  +100.00%
crates/acp/acp-nats/src/nats/subjects/client_ops/terminal_kill.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/terminal_release.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_wait_for_exit.rs                            +12       0  +100.00%
crates/a2a/a2a-nats/src/audit/task_lifecycle.rs                                                       +17       0  +100.00%
crates/a2a/a2a-nats/src/audit/envelope.rs                                                             +57       0  +100.00%
crates/a2a/a2a-nats/src/audit/emitter.rs                                                              +58       0  +100.00%
crates/platform/trogon-gateway/src/source/gitlab/signature.rs                                         +13       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/server.rs                                            +78       0  +100.00%
crates/decider/trogon-decider/src/decision.rs                                                         +27       0  +100.00%
crates/decider/trogon-decider/src/events.rs                                                           +49       0  +100.00%
crates/decider/trogon-decider/src/testing.rs                                                         +284       0  +100.00%
crates/decider/trogon-decider/src/act.rs                                                              +62       0  +100.00%
crates/acp/acp-nats-server/src/transport.rs                                                         +1018    +101  +90.08%
crates/acp/acp-nats-server/src/main.rs                                                                +68      +1  +98.53%
crates/acp/acp-nats-server/src/config.rs                                                              +39       0  +100.00%
crates/acp/acp-nats-server/src/connection.rs                                                         +102     +22  +78.43%
crates/acp/acp-nats-server/src/acp_connection_id.rs                                                   +14       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/cancel.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/list.rs                                            +15       0  +100.00%
crates/platform/trogon-nats/src/jetstream/traits.rs                                                   +46     +34  +26.09%
crates/platform/trogon-nats/src/jetstream/publish.rs                                                  +30       0  +100.00%
crates/platform/trogon-nats/src/jetstream/claim_check.rs                                             +104      +3  +97.12%
crates/platform/trogon-nats/src/jetstream/mocks.rs                                                   +941      +1  +99.89%
crates/platform/trogon-nats/src/jetstream/create_conflicts.rs                                         +14       0  +100.00%
crates/platform/trogon-nats/src/jetstream/stream_max_age.rs                                            +8       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/streams.rs                                                           +9       0  +100.00%
crates/a2a/a2a-nats/src/jetstream/provision.rs                                                        +16       0  +100.00%
crates/a2a/a2a-gateway/src/policy/tier3_redaction/real_gate.rs                                       +138     +33  +76.09%
crates/a2a/a2a-gateway/src/policy/tier3_redaction/mod.rs                                              +33      +2  +93.94%
crates/a2a/a2a-gateway/src/policy/tier3_redaction/json_path.rs                                        +84      +5  +94.05%
crates/a2a/a2a-gateway/src/policy/tier3_redaction/context.rs                                          +40       0  +100.00%
crates/a2a/a2a-gateway/src/policy/tier3_redaction/manifest.rs                                         +69      +3  +95.65%
crates/a2a/a2a-gateway/src/policy/tier3_redaction/decision.rs                                         +22       0  +100.00%
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-nats/src/nats/subjects/subscriptions/task_one_events.rs                                +12       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-gateway/src/policy/tier2_cel/bundle.rs                                                +120     +26  +78.33%
crates/a2a/a2a-gateway/src/policy/tier2_cel/compiler.rs                                               +25      +3  +88.00%
crates/a2a/a2a-gateway/src/policy/tier2_cel/evaluator.rs                                             +138       0  +100.00%
crates/a2a/a2a-nats/src/nats/subjects/agents/message_stream.rs                                        +15       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/acp/acp-nats/src/telemetry/metrics.rs                                                          +22       0  +100.00%
crates/decider/trogon-decider-sim/src/native.rs                                                       +81      +2  +97.53%
crates/decider/trogon-decider-sim/src/host.rs                                                         +69       0  +100.00%
crates/decider/trogon-decider-sim/src/ir.rs                                                          +113     +11  +90.27%
crates/decider/trogon-decider-sim/src/fixture.rs                                                      +18      +2  +88.89%
crates/decider/trogon-decider-sim/src/session.rs                                                      +23      +4  +82.61%
crates/decider/trogon-decider-sim/src/import_check.rs                                                 +52      +4  +92.31%
crates/decider/trogon-decider-sim/src/scenario.rs                                                    +189     +12  +93.65%
crates/decider/trogon-decider-sim/src/parity.rs                                                       +66      +6  +90.91%
crates/scheduler/trogon-scheduler/src/processor/execution/checkpoints/codec/twin.rs                   +96       0  +100.00%
TOTAL                                                                                              +39749   +1701  +0.08%

Results for commit: 8496fa8

Minimum allowed coverage is 95%

♻️ This comment has been updated with latest results

@yordis yordis added the rust:coverage-baseline-reset Relax Rust coverage gate to establish a new baseline label Jul 19, 2026
Comment thread rsworkspace/crates/trogonai-agents-domain/src/commands/activate_revision.rs Outdated

@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 3ccaa32. Configure here.

.sort_by_key(|entry| entry.revision_number);
}
state.current_active_revision = Some(revision.get());
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Rollback fold skips approval checks

Medium Severity

The rollback decider’s RevisionActivated fold only checks previous_active_revision and then records the target as previously activated, while the activate decider’s fold for the same event requires a staged revision with an approved verdict. A stream that contains an activation without prior staging/approval can leave rollback state treating that revision as activated even when the activate projection would fail replay.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 3ccaa32. Configure here.

Copilot AI review requested due to automatic review settings July 22, 2026 05:02
@yordis yordis changed the title feat(agents): introduce agent lifecycle domain and proto feat(agents): introduce agent provisioning domain and proto Jul 22, 2026

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

Introduces an initial “agents provisioning” boundary across the wire (protobuf) and domain layers, so the system can treat provisioning as an independently evolvable contract before broader agent proposal/revision workflows expand.

Changes:

  • Add agent provisioning proto schema (command, event union, and state snapshot) plus generated Rust bindings.
  • Extend trogonai-proto event JSON decoding registry/tests to include agent events.
  • Introduce trogonai-agents-domain crate implementing a Wasm-clean provisioning decider plus typed validation and wire↔domain conversion.

Reviewed changes

Copilot reviewed 70 out of 71 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
rsworkspace/crates/trogonai-proto/src/tests.rs Adds agent-related decoding tests and feature-gates schedule-only helpers.
rsworkspace/crates/trogonai-proto/src/lib.rs Registers agent proto types in the JSON decode registry and loosens feature gating to `schedules
rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.provision_agent.rs Generated Rust message for the ProvisionAgent command.
rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.provision_agent.__view.rs Generated borrow/view API for ProvisionAgent.
rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.mod.rs Generated module glue and type registration for agent v1 package.
rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.events.rs Generated AgentEvent oneof wrapper and JSON-any registration.
rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.events.__view.rs Generated view API for AgentEvent.
rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.events.__view_oneof.rs Generated view oneof enum for AgentEvent.
rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.events.__oneof.rs Generated owned oneof enum for AgentEvent.
rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.agent_provisioned.rs Generated Rust message for AgentProvisioned genesis event.
rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.agent_provisioned.__view.rs Generated borrow/view API for AgentProvisioned.
rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.provision_agent_state.rs Generated Rust messages for provisioning state snapshot and identity subset.
rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.mod.rs Generated module glue and type registration for agent state v1 package.
rsworkspace/crates/trogonai-proto/src/gen/mod.rs Wires agent package modules into the overall generated module tree.
rsworkspace/crates/trogonai-proto/src/agents/mod.rs Adds agents top-level wrapper module.
rsworkspace/crates/trogonai-proto/src/agents/agents/mod.rs Re-exports agent v1/state types and defines stable type URL/schema constants.
rsworkspace/crates/trogonai-proto/src/agents/agents/codec/tests.rs Adds tests for encoding/decoding agent event payloads and dispatch behavior.
rsworkspace/crates/trogonai-proto/src/agents/agents/codec.rs Implements trogon_decider event traits for the agent event envelope.
rsworkspace/crates/trogonai-proto/Cargo.toml Introduces agents feature and dependencies for agent proto support.
rsworkspace/crates/trogonai-agents-domain/src/lib.rs New crate root for the provisioning domain surface.
rsworkspace/crates/trogonai-agents-domain/src/commands/test_support.rs Test helpers for constructing valid commands/events/digests.
rsworkspace/crates/trogonai-agents-domain/src/commands/provision_agent/tests.rs Decider-level tests for provisioning behavior and retry classification.
rsworkspace/crates/trogonai-agents-domain/src/commands/provision_agent.rs Provisioning Decider implementation (decide/evolve/state).
rsworkspace/crates/trogonai-agents-domain/src/commands/proto_wire/tests.rs Tests for wire↔domain conversion and validation errors.
rsworkspace/crates/trogonai-agents-domain/src/commands/proto_wire.rs Wire conversion layer, including deterministic ordering/uniqueness checks.
rsworkspace/crates/trogonai-agents-domain/src/commands/mod.rs Commands module layout and public exports.
rsworkspace/crates/trogonai-agents-domain/src/commands/event_fold/tests.rs Tests for event payload extraction and identity mismatch handling.
rsworkspace/crates/trogonai-agents-domain/src/commands/event_fold.rs Helpers for folding/extracting the provisioning payload from the event envelope.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors/tests.rs Validation tests for tool selector sets.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors.rs Domain type enforcing nonblank/disjoint tool selector sets.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/runtime_id/tests.rs Runtime id validation/conversion tests.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/runtime_id.rs Runtime id value object.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/revision_number/tests.rs Revision number validation/ordering tests.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/revision_number.rs Revision number value object with genesis constant.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/principal/tests.rs Principal validation tests.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/principal.rs Principal value object enforcing trimming/length constraints.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/parent_ref/tests.rs Parent reference validation/conversion tests.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/parent_ref.rs Parent reference value object.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/nonblank.rs Shared nonblank/trimmed validation utility.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_parameters/tests.rs Model parameter validation tests.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_parameters.rs Model parameter map wrapper validating keys are nonblank/trimmed.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_id/tests.rs Model id validation/conversion tests.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_id.rs Model id value object.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/mod.rs Domain module composition and exports.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/labels/tests.rs Kubernetes label syntax tests and ordering checks.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/labels.rs Labels value object enforcing Kubernetes qualified-name/value syntax.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/kubernetes_syntax.rs Kubernetes qualified-name / label-value validators.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/delegate_selectors/tests.rs Validation tests for delegate selector sets.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/delegate_selectors.rs Domain type enforcing nonblank/disjoint delegate selector sets.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/content_digest/tests.rs Digest parsing tests, including invalid prefix/hex cases.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/content_digest.rs Content digest value object enforcing canonical sha256:<64 hex> format.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/annotations/tests.rs Annotation ordering/validation tests.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/annotations.rs Annotations value object enforcing Kubernetes qualified-name keys.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_name/tests.rs Agent name validation/conversion tests.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_name.rs Agent name value object.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_id/tests.rs Agent id validation/conversion tests.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_id.rs Agent id value object enforcing non-empty/trimmed input.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_definition/tests.rs Composition tests for the validated agent definition aggregate.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_definition.rs Agent definition aggregate (name/parent/owner/labels/annotations/charter).
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_charter/tests.rs Charter composition tests.
rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_charter.rs Agent charter aggregate (runtime/model/tools/delegates).
rsworkspace/crates/trogonai-agents-domain/Cargo.toml New crate manifest and dependencies on trogonai-proto with agents feature.
rsworkspace/Cargo.lock Adds the new trogonai-agents-domain package to the workspace lockfile.
proto/trogonai/agents/agents/v1/provision_agent.proto Adds provisioning command proto definition.
proto/trogonai/agents/agents/v1/events.proto Adds agent event union proto definition.
proto/trogonai/agents/agents/v1/agent.proto Adds shared agent v1 types (charter/model/labels/etc).
proto/trogonai/agents/agents/v1/agent_provisioned.proto Adds genesis provisioning event proto definition.
proto/trogonai/agents/agents/state/v1/provision_agent_state.proto Adds state snapshot proto definition for provisioning decider state.

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

Comment on lines +26 to +36
if raw.len() != ENCODED_LENGTH {
return Err(ContentDigestError::InvalidLength {
actual: hex.chars().count(),
});
}
if let Some((index, character)) = hex
.char_indices()
.find(|(_, character)| !matches!(character, '0'..='9' | 'a'..='f'))
{
return Err(ContentDigestError::InvalidHex { index, character });
}
Land the agent lifecycle domain under the crates/<group> topology from
ADR#0034: the domain crate in crates/agents/ and its generated proto in
crates/platform/trogonai-proto/, so the agents family follows the accepted
grouping rather than the pre-reorg flat layout.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Copilot AI review requested due to automatic review settings July 22, 2026 05:14
@yordis
yordis force-pushed the yordis/audit-agent-context-doc branch from e5c8969 to 8496fa8 Compare July 22, 2026 05:14

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 70 out of 71 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

rsworkspace/crates/agents/trogonai-agents-domain/src/commands/domain/content_digest.rs:30

  • ContentDigest::parse uses raw.len() (byte length) to enforce the sha256:<64 hex> length, but reports actual using hex.chars().count(). If the digest contains any non-ASCII character, this can incorrectly return InvalidLength { actual: 64 } (because a multi-byte char can keep the char-count at 64 while the byte-length differs), and it also prevents the more accurate InvalidHex path from triggering. Consider checking the character count instead of byte length for the length gate.
        if raw.len() != ENCODED_LENGTH {
            return Err(ContentDigestError::InvalidLength {
                actual: hex.chars().count(),
            });
        }

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

🤖 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 `@rsworkspace/crates/trogonai-agents-domain/src/commands/event_fold.rs`:
- Around line 6-15: Change AgentEventFoldError::AgentIdMismatch.expected from
String to AgentId, and update its construction sites to pass the existing
AgentId directly rather than converting it with as_str().to_string(). Preserve
the error message formatting and keep actual as the validated AgentId domain
type.

In `@rsworkspace/crates/trogonai-agents-domain/src/commands/mod.rs`:
- Around line 1-9: The exported ProvisionAgent API exposes AgentEventFoldError,
but the error type is not publicly reachable from the crate root. Add the
re-export in commands/mod.rs and then re-export it from lib.rs; no direct change
is needed in
rsworkspace/crates/trogonai-agents-domain/src/commands/provision_agent.rs lines
22-39 because it is evidence of the exposed type.
🪄 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: 6cd9d23d-3ac8-442f-87ca-550db12292db

📥 Commits

Reviewing files that changed from the base of the PR and between c2797f1 and e5c8969.

⛔ Files ignored due to path filters (16)
  • rsworkspace/Cargo.lock is excluded by !**/*.lock
  • rsworkspace/crates/trogonai-proto/src/gen/mod.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.mod.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.provision_agent_state.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.state.v1.provision_agent_state.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.agent.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.agent.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.agent_provisioned.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.agent_provisioned.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.events.__oneof.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.events.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.events.__view_oneof.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.events.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.mod.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.provision_agent.__view.rs is excluded by !**/gen/**
  • rsworkspace/crates/trogonai-proto/src/gen/trogonai.agents.agents.v1.provision_agent.rs is excluded by !**/gen/**
📒 Files selected for processing (55)
  • proto/trogonai/agents/agents/state/v1/provision_agent_state.proto
  • proto/trogonai/agents/agents/v1/agent.proto
  • proto/trogonai/agents/agents/v1/agent_provisioned.proto
  • proto/trogonai/agents/agents/v1/events.proto
  • proto/trogonai/agents/agents/v1/provision_agent.proto
  • rsworkspace/crates/trogonai-agents-domain/Cargo.toml
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_charter.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_charter/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_definition.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_definition/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_id.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_id/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_name.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_name/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/annotations.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/annotations/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/content_digest.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/content_digest/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/delegate_selectors.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/delegate_selectors/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/kubernetes_syntax.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/labels.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/labels/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/mod.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_id.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_id/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_parameters.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_parameters/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/nonblank.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/parent_ref.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/parent_ref/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/principal.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/principal/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/revision_number.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/revision_number/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/runtime_id.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/runtime_id/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/event_fold.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/event_fold/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/mod.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/proto_wire.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/proto_wire/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/provision_agent.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/provision_agent/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/test_support.rs
  • rsworkspace/crates/trogonai-agents-domain/src/lib.rs
  • rsworkspace/crates/trogonai-proto/Cargo.toml
  • rsworkspace/crates/trogonai-proto/src/agents/agents/codec.rs
  • rsworkspace/crates/trogonai-proto/src/agents/agents/codec/tests.rs
  • rsworkspace/crates/trogonai-proto/src/agents/agents/mod.rs
  • rsworkspace/crates/trogonai-proto/src/agents/mod.rs
  • rsworkspace/crates/trogonai-proto/src/lib.rs
  • rsworkspace/crates/trogonai-proto/src/tests.rs
🚧 Files skipped from review as they are similar to previous changes (33)
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_parameters/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_definition/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/runtime_id/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/delegate_selectors/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/Cargo.toml
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/revision_number/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_id/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/content_digest/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/parent_ref/tests.rs
  • rsworkspace/crates/trogonai-proto/Cargo.toml
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/nonblank.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_charter/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_id/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/labels/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/delegate_selectors.rs
  • proto/trogonai/agents/agents/v1/agent.proto
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/runtime_id.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/labels.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_parameters.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_id.rs
  • rsworkspace/crates/trogonai-proto/src/agents/mod.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_charter.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/model_id.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/tool_selectors.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/parent_ref.rs
  • rsworkspace/crates/trogonai-proto/src/agents/agents/codec.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/content_digest.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/principal/tests.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/kubernetes_syntax.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/agent_name.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/principal.rs
  • rsworkspace/crates/trogonai-agents-domain/src/commands/domain/annotations.rs

Comment on lines +6 to +15
pub enum AgentEventFoldError {
#[error("agent event has no payload")]
MissingEvent,
#[error("event for agent '{actual}' was found in agent '{expected}' state")]
AgentIdMismatch { expected: String, actual: AgentId },
#[error("AgentProvisioned occurred more than once")]
DuplicateProvision,
#[error("invalid event payload: {0}")]
InvalidPayload(#[from] super::CommandWireError),
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

AgentIdMismatch.expected should stay an AgentId, not a String.

actual keeps the validated AgentId domain type, but expected is downgraded to String via .as_str().to_string() even though both represent the same domain concept (an agent identifier). As per coding guidelines, rsworkspace/crates/**/*.rs should "Prefer domain-specific value objects over primitives."

♻️ Proposed fix
     #[error("event for agent '{actual}' was found in agent '{expected}' state")]
-    AgentIdMismatch { expected: String, actual: AgentId },
+    AgentIdMismatch { expected: AgentId, actual: AgentId },
     ...
 pub fn ensure_command_identity(expected: &AgentId, actual: &AgentId) -> Result<(), AgentEventFoldError> {
     if expected != actual {
         return Err(AgentEventFoldError::AgentIdMismatch {
-            expected: expected.as_str().to_string(),
+            expected: expected.clone(),
             actual: actual.clone(),
         });
     }
     Ok(())
 }

Also applies to: 23-31

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

In `@rsworkspace/crates/trogonai-agents-domain/src/commands/event_fold.rs` around
lines 6 - 15, Change AgentEventFoldError::AgentIdMismatch.expected from String
to AgentId, and update its construction sites to pass the existing AgentId
directly rather than converting it with as_str().to_string(). Preserve the error
message formatting and keep actual as the validated AgentId domain type.

Source: Coding guidelines

Comment on lines +1 to +9
pub mod domain;
mod event_fold;
mod proto_wire;
mod provision_agent;
#[cfg(test)]
mod test_support;

pub use proto_wire::CommandWireError;
pub use provision_agent::{ProvisionAgent, ProvisionAgentError};

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '== search AgentEventFoldError ==\n'
rg -n "AgentEventFoldError|event_fold" rsworkspace/crates/trogonai-agents-domain -S

printf '\n== commands/mod.rs ==\n'
sed -n '1,80p' rsworkspace/crates/trogonai-agents-domain/src/commands/mod.rs

printf '\n== lib.rs ==\n'
sed -n '1,80p' rsworkspace/crates/trogonai-agents-domain/src/lib.rs

printf '\n== event_fold.rs ==\n'
sed -n '1,220p' rsworkspace/crates/trogonai-agents-domain/src/commands/event_fold.rs

printf '\n== provision_agent.rs ==\n'
sed -n '1,120p' rsworkspace/crates/trogonai-agents-domain/src/commands/provision_agent.rs

Repository: TrogonStack/trogonai

Length of output: 273


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '== repo root ==\n'
pwd

printf '\n== candidate paths ==\n'
fd -a 'trogonai-agents-domain' . || true
fd -a 'commands/mod.rs' . || true
fd -a 'lib.rs' . | rg 'trogonai-agents-domain/src/lib.rs|trogonai-agents-domain/src/commands/mod.rs|trogonai-agents-domain/src/commands/event_fold.rs|trogonai-agents-domain/src/commands/provision_agent.rs' -n || true

printf '\n== git ls-files relevant ==\n'
git ls-files | rg 'trogonai-agents-domain/.*(mod.rs|lib.rs|event_fold.rs|provision_agent.rs)$' -n || true

Repository: TrogonStack/trogonai

Length of output: 783


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '== commands/mod.rs ==\n'
cat -n rsworkspace/crates/agents/trogonai-agents-domain/src/commands/mod.rs

printf '\n== lib.rs ==\n'
cat -n rsworkspace/crates/agents/trogonai-agents-domain/src/lib.rs

printf '\n== event_fold.rs ==\n'
cat -n rsworkspace/crates/agents/trogonai-agents-domain/src/commands/event_fold.rs

printf '\n== provision_agent.rs ==\n'
cat -n rsworkspace/crates/agents/trogonai-agents-domain/src/commands/provision_agent.rs

Repository: TrogonStack/trogonai

Length of output: 7186


Re-export AgentEventFoldError
AgentEventFoldError is used by the exported ProvisionAgent API, but it has no crate-root re-export. Add pub use event_fold::AgentEventFoldError; in commands/mod.rs and pub use commands::AgentEventFoldError; in lib.rs so downstream code can refer to the concrete error type directly.

📍 Affects 3 files
  • rsworkspace/crates/trogonai-agents-domain/src/commands/mod.rs#L1-L9 (this comment)
  • rsworkspace/crates/trogonai-agents-domain/src/lib.rs#L4-L8
  • rsworkspace/crates/trogonai-agents-domain/src/commands/provision_agent.rs#L22-L39
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@rsworkspace/crates/trogonai-agents-domain/src/commands/mod.rs` around lines 1
- 9, The exported ProvisionAgent API exposes AgentEventFoldError, but the error
type is not publicly reachable from the crate root. Add the re-export in
commands/mod.rs and then re-export it from lib.rs; no direct change is needed in
rsworkspace/crates/trogonai-agents-domain/src/commands/provision_agent.rs lines
22-39 because it is evidence of the exposed type.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

rust:coverage-baseline-reset Relax Rust coverage gate to establish a new baseline

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants