*Every weekday a single, opinionated rule for senior C#/.NET engineers using Cursor. Here's the full week in one read — canonical posts live on [the Agentic Architect blog](https://agenticstandardcontact-byte.github.io/agentic-architect/blog/).*
## New essays this week
### [Cursor vs GitHub Copilot for C#/.NET in 2026: which to pay for](https://agenticstandardcontact-byte.github.io/agentic-architect/blog/08-cursor-vs-copilot-dotnet.html)
_Tue 02 Jun · .NET tooling_
Real pricing, where each one wins on agentic .NET edits, where each one loses, and a straight verdict on which to pay for.
## 7 daily senior rules
### Rule 25: ActivitySource for OpenTelemetry
_Sun 07 Jun_
Logs alone won't debug a distributed system. Add a static readonly ActivitySource per project and wrap every external call (DB, HTTP, queue) in StartActivity. Cursor never adds OTEL spans on its own — give it a rule that recognises external-call patterns and proposes the trace.
[→ Permalink on the blog](https://agenticstandardcontact-byte.github.io/agentic-architect/blog/#2026-06-07)
### Rule 24: ValueTask Only When Justified
_Sat 06 Jun_
ValueTask is a perf optimisation for hot paths that often return synchronously. It is not a drop-in for Task. Cursor swaps them around without thinking. Flag ValueTask returns and ask whether the method is actually mostly synchronous. If not, revert to Task.
[→ Permalink on the blog](https://agenticstandardcontact-byte.github.io/agentic-architect/blog/#2026-06-06)
### Rule 23: No Bool Flag Parameters
_Fri 05 Jun_
SendEmail(string to, bool isHtml) should be SendHtmlEmail and SendPlainEmail. Bool flags hide branching that belongs in the type system. Flag any method signature with two or more bool parameters as a refactor candidate.
[→ Permalink on the blog](https://agenticstandardcontact-byte.github.io/agentic-architect/blog/#2026-06-05)
### Rule 22: BackgroundService Over Task.Run
_Thu 04 Jun_
Long-running work in ASP.NET Core goes in a BackgroundService, not Task.Run inside a controller. Cursor will happily fire Task.Run and call it "async work" — your request thread will die mid-execution and you'll never know why. Catch Task.Run outside test code and propose a hosted service.
[→ Permalink on the blog](https://agenticstandardcontact-byte.github.io/agentic-architect/blog/#2026-06-04)
### Rule 21: Channels for Producer Consumer
_Wed 03 Jun_
System.Threading.Channels beats BlockingCollection and beats roll-your-own queue plus SemaphoreSlim. The AI reaches for ConcurrentQueue every time and stitches it together by hand. A rule that detects producer/consumer patterns and proposes Channel will save you a class.
[→ Permalink on the blog](https://agenticstandardcontact-byte.github.io/agentic-architect/blog/#2026-06-03)
### Rule 20: Source-Generated JSON Serialisation
_Tue 02 Jun_
Reflection-based System.Text.Json is fine for prototypes. For hot paths and AOT, use JsonSerializable source generation. Cursor never thinks of this on its own — add a rule that flags new DTO classes and asks whether they should be source-generated.
[→ Permalink on the blog](https://agenticstandardcontact-byte.github.io/agentic-architect/blog/#2026-06-02)
### Rule 19: NetArchTest for Boundaries
_Mon 01 Jun_
Architectural rules belong in tests, not in code review. Encode them as NetArchTest assertions ("no class in Domain references EntityFrameworkCore") and they fail your build instead of your standup. Add the corresponding test whenever a new layer or project is introduced.
[→ Permalink on the blog](https://agenticstandardcontact-byte.github.io/agentic-architect/blog/#2026-06-01)
---
## Try one rule before you trust the whole kit
The free **[`arch-core-lite.mdc`](https://github.com/agenticstandardcontact-byte/agentic-architect/blob/main/arch-core-lite.mdc?utm_source=devto&utm_medium=weekly_digest&utm_campaign=free_sample)** is one drop-in Cursor rule that ends the morning re-explanation ritual. Install in 60 seconds, see whether Cursor actually remembers your DI lifetimes, and decide for yourself whether the full kit is worth £9.00.
- **Free sample:** [`arch-core-lite.mdc` on GitHub](https://github.com/agenticstandardcontact-byte/agentic-architect/blob/main/arch-core-lite.mdc?utm_source=devto&utm_medium=weekly_digest&utm_campaign=free_sample)
- **Full kit (£9.00, one-time):** [Agentic Architect Kit](https://payhip.com/b/98aSq?utm_source=devto&utm_medium=weekly_digest&utm_campaign=paid_kit)
- **Daily rules feed:** [https://agenticstandardcontact-byte.github.io/agentic-architect/blog/](https://agenticstandardcontact-byte.github.io/agentic-architect/blog/?utm_source=devto&utm_medium=weekly_digest&utm_campaign=blog_index)
Canonical home for everything in this digest: [https://agenticstandardcontact-byte.github.io/agentic-architect/blog/](https://agenticstandardcontact-byte.github.io/agentic-architect/blog/).