Design Microsoft Orleans systems from each primitive's purpose and failure model.
ManagedCode.Orleans.Graph
Integrate ManagedCode.Orleans.Graph into an Orleans-based .NET application for grain-call policy enforcement, deadlock detection, live-call telemetry, and Mermaid graph diagnostics. USE FOR: ManagedCode.Orleans.Graph integration; allowed grain transitions; Orleans call filters; live policy graphs; reviewing Orleans call-cycle risk. DO NOT USE FOR: generic graph data modeling or traversal unrelated to Orleans calls. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made.
Trigger On
- integrating
ManagedCode.Orleans.Graphinto an Orleans-based system - enforcing which grain interfaces may call other grain interfaces and methods
- detecting unsafe runtime grain call cycles or intentional self-reentrancy
- generating configured-policy or live-call Mermaid diagrams
- running observe mode to discover real traffic before locking down a policy
Workflow
- Confirm the application needs grain-call policy enforcement or live-call diagnostics. If the task is generic graph data traversal, use normal Orleans grain modeling instead.
- Register Orleans.Graph filters in the silo with
AddOrleansGraph(...). - Model the policy from source grain to target grain and method. Start with explicit allow rules for client entry points and grain-to-grain transitions.
- Use
AllowAll()observe mode only to discover traffic before enforcement. Keep a follow-up step to convert observed edges into reviewed policy. - Register the client-side outgoing filter with
clientBuilder.AddOrleansGraph()only when Orleans clients should participate in call-history tracking. - Use attributes when colocating policy with grain contracts is clearer than central fluent setup.
- Generate Mermaid diagrams and inspect policy edges for review artifacts.
- Validate with real Orleans runtime tests, including timer, reminder, hosted-service, and stateless-worker call origins when those are part of the topology.
flowchart LR
A["Orleans call"] --> B["Outgoing filter records source"]
B --> C["Incoming filter checks transition policy"]
C --> D{"Allowed?"}
D -->|Yes| E["Target grain method runs"]
D -->|No| F["Blocked before target code"]
E --> G["Telemetry worker aggregates live edge"]
G --> H["Telemetry grain / Mermaid graph"]Deliver
- explicit Orleans.Graph registration for the silo and, when needed, clients
- reviewed allow rules for client-to-grain and grain-to-grain transitions
- observe-mode output or Mermaid diagrams when discovering real call paths
- validation coverage for blocked transitions, allowed transitions, self-reentrancy, and runtime graph diagnostics
Validate
- the app needs call policy enforcement, not generic graph traversal
- every client entry point and grain transition required by the workflow is allowed intentionally
- missing or unexpected transitions fail before target grain code runs
- observe-mode findings are converted into reviewed policy before production enforcement
- timer, reminder, hosted-service, stateless-worker, and client-originated calls are covered when they exist
- Mermaid or edge snapshots are generated from runtime traffic or configured policy and reviewed for cycles
Related skills
Use ManagedCode.Orleans.SignalR when a distributed .NET application needs Orleans-based coordination of SignalR real-time messaging, hub delivery, and grain-driven push flows.
Related agents
Orleans Specialist
Orleans specialist agent for purpose-first grain design, state versus database ownership, timers, reminders, Durable Jobs, stateless workers…
Also works: dotnet agents install orleans-specialist