chore: add Serena onboarding configuration and memories#1078
chore: add Serena onboarding configuration and memories#1078
Conversation
- Update .serena/project.yml YAML list indentation style - Add line_ending configuration key - Add initial Serena memory files for project knowledge base: - project-overview.md - style-and-conventions.md - suggested-commands.md - task-completion-checklist.md - code-review/ directory with reuse analysis Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request integrates the Serena AI coding assistant configuration and initial project memory files into the Highlights
Changelog
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Repository UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (9)
📝 WalkthroughWalkthroughAdds many documentation and Serena memory files (ADRs, architectural patterns, style guides, checklists, roadmaps, commands, dependency-constraint guidance, and onboarding notes) plus minor formatting updates to Changes
Sequence Diagram(s)(omitted — changes are documentation-only and do not introduce new multi-component control flow) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Comment |
|
|
Overall Grade |
Security Reliability Complexity Hygiene |
Code Review Summary
| Analyzer | Status | Updated (UTC) | Details |
|---|---|---|---|
| C# | Mar 15, 2026 7:26p.m. | Review ↗ |
There was a problem hiding this comment.
Code Review
This pull request adds configuration and knowledge files for the Serena AI assistant. The changes are well-structured and clearly explained. I've identified a couple of minor inconsistencies in the new documentation files. Correcting them will improve the accuracy of the information provided to the AI tool. My feedback is focused on ensuring this documentation is precise and consistent.
There was a problem hiding this comment.
Pull request overview
Adds Serena MCP project configuration and a starter set of Serena memory documents to bootstrap symbol-based navigation/onboarding for the moq.analyzers repository.
Changes:
- Normalizes
.serena/project.ymllist formatting and introduces aline_endingconfiguration key. - Adds initial Serena memory documents covering project overview, conventions, suggested commands, task completion checklist, and a prior code review note.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
.serena/project.yml |
Adjusts YAML list formatting and adds a line_ending config entry. |
.serena/memories/project-overview.md |
Captures high-level repo purpose, stack, and structure for onboarding. |
.serena/memories/style-and-conventions.md |
Documents expected naming/style and analyzer/fixer/testing conventions. |
.serena/memories/suggested-commands.md |
Lists common local commands for build/test/benchmarks/format/package. |
.serena/memories/task-completion-checklist.md |
Provides a pre-commit checklist intended to reflect repo quality gates. |
.serena/memories/code-review/reuse-analysis-diff.md |
Stores a summary of reuse-related observations from a prior diff review. |
You can also share your feedback on Copilot code review. Take the survey.
Captures 9 ADRs covering: symbol-based detection, .NET Standard 2.0 target, Roslyn SDK version, AnalyzerUtilities version cap, central package management, WellKnown types pattern, IOperation action preference, performance testing strategy, and analyzer test infrastructure. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.serena/memories/project-overview.md:
- Line 9: Update the project overview to remove the incorrect "C# 13, .NET 9
SDK" claim and instead reference global.json as the authoritative SDK version;
specifically, delete or replace the sentence that states "C# 13, .NET 9 SDK" and
add a short note that the SDK is pinned in global.json (currently 10.0.201) and
that C# LangVersion is left at "default" (no explicit C# 13 configured), so
consumers should consult global.json and project LangVersion settings for
accurate versions.
In @.serena/memories/suggested-commands.md:
- Around line 45-47: Update the formatting guidance to show both the mutating
and non-mutating checks: keep the existing "dotnet format" command for applying
formatting locally and add a verification command "dotnet format
--verify-no-changes" to match the completion checklist/CI pre-commit validation;
label them (e.g., "Apply formatting locally" and "Validate no pending format
changes (pre-commit/CI gate)") so readers run the correct command for their
workflow.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: bf6d152f-bf7a-4ed7-a2e8-1798c41923a9
📒 Files selected for processing (6)
.serena/memories/code-review/reuse-analysis-diff.md.serena/memories/project-overview.md.serena/memories/style-and-conventions.md.serena/memories/suggested-commands.md.serena/memories/task-completion-checklist.md.serena/project.yml
Address P0/P1 issues from architect, critic, independent-thinker, and analyst reviews: - ADR-003: Add upgrade trigger criteria (market share, API need, 18-month cycle) and reversibility assessment - ADR-004: Add exit condition and explicit dependency on ADR-003 - ADR-005: Document ValidateAnalyzerHostCompatibility target location and behavior, add cross-references to ADR-003/ADR-004 - ADR-007: Document base-class delegation pattern for operation action registration - ADR-008: Expand threshold documentation with default value and contributor guidance Add Serena memories: - architecture-decision-records: Index of all 9 ADRs with dependencies - architectural-patterns: Core patterns with code examples - dependency-constraints: Version caps and transitive pinning rules - forgetful-knowledge-base: Cross-machine bootstrapping reference Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 5
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/architecture/ADR-006-wellknown-types-pattern-for-moq-symbol-resolution.md (1)
1-67:⚠️ Potential issue | 🔴 CriticalUpdate broken external reference in REF-003.
The external link to Roslyn analyzer performance guidance (line 63) returns a 404 error—the
dotnet/roslyn-analyzersrepository is archived. Replace it with the active documentation link:https://github.com/dotnet/roslyn/blob/main/docs/analyzers/Report%20Analyzer%20Format.md, or remove the reference if performance measurement specifics are not essential to this ADR.The ADR structure, content, and Markdown formatting are otherwise sound (markdownlint: 0 errors).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/architecture/ADR-006-wellknown-types-pattern-for-moq-symbol-resolution.md` around lines 1 - 67, REF-003 points to a broken external link; update the reference entry labeled REF-003 in the ADR (the References section) so it either uses the active Roslyn documentation URL https://github.com/dotnet/roslyn/blob/main/docs/analyzers/Report%20Analyzer%20Format.md or remove the REF-003 bullet entirely if you decide not to include external performance guidance; ensure the REF-003 label remains consistent and the markdown link text is updated accordingly.
♻️ Duplicate comments (1)
.serena/memories/project-overview.md (1)
9-9:⚠️ Potential issue | 🟡 MinorFix inaccurate SDK and language version claims.
Line 9 incorrectly states "C# 13, .NET 9 SDK" when
global.jsonpins SDK version 10.0.201 (which is .NET 10), and there is no explicit C# 13LangVersionconfigured in the project files.🔧 Suggested fix
-- **Language**: C# 13, .NET 9 SDK (pinned via global.json, currently 10.0.201) +- **Language**: .NET SDK (pinned via `global.json`; currently 10.0.201), C# language version per project defaults🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.serena/memories/project-overview.md at line 9, Update the inaccurate SDK/language claim in .serena/memories/project-overview.md: replace "C# 13, .NET 9 SDK" with accurate info reflecting that global.json pins SDK 10.0.201 (i.e., .NET 10) and that no explicit C# LangVersion (e.g., C# 13) is set in project files; reference the project's global.json and absence of a LangVersion property in csproj files (or add a note that LangVersion is unspecified) so the statement matches the repo configuration.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.serena/memories/forgetful-knowledge-base.md:
- Line 22: Update the "Encoded" metadata value in
.serena/memories/forgetful-knowledge-base.md to use an ISO 8601 full timestamp
(e.g., 2026-03-15T00:00:00Z or the actual encode time) instead of the current
date-only string "2026-03-15" so the Encoded field is unambiguous and auditable.
- Line 13: The storage path line currently hardcodes a Unix-style path
(`~/.forgetful/forgetful.db`); update the note in
.serena/memories/forgetful-knowledge-base.md to list OS-specific defaults or
explicitly state it's for Unix-like systems — e.g., show Windows (e.g.,
%APPDATA%\Forgetful\forgetful.db or
C:\Users\<User>\AppData\Roaming\Forgetful\forgetful.db), macOS
(~/Library/Application Support/Forgetful/forgetful.db), and Linux/Unix
(~/.forgetful/forgetful.db), or add a single clarifying sentence that the shown
path is Unix-only and will vary by OS.
In `@docs/architecture/ADR-001-symbol-based-detection-over-string-matching.md`:
- Line 58: Update the REF-002 entry in ADR-001 to include a direct URL to the
Roslyn API docs for the referenced symbols (e.g., the
Microsoft.CodeAnalysis.ISymbol and SymbolEqualityComparer pages); locate the
REF-002 bullet in ADR-001-symbol-based-detection-over-string-matching.md and
append the official documentation link(s) (or a single Roslyn API docs root
link) right after the text "Roslyn API documentation: `ISymbol`,
`SymbolEqualityComparer`" so readers can click through to the authoritative
docs.
In `@docs/architecture/ADR-002-target-netstandard2-for-analyzer-assemblies.md`:
- Line 61: The REF-001 bibliography entry in
ADR-002-target-netstandard2-for-analyzer-assemblies.md is missing the Microsoft
docs URL; update the reference labeled "REF-001" to include the full hyperlink
to the Microsoft documentation titled "How analyzers run in the compiler
pipeline" (for example the Microsoft Learn/Docs page) so readers can click
through directly — modify the REF-001 line to include the URL alongside the
existing title.
In
`@docs/architecture/ADR-005-central-package-management-with-transitive-pinning.md`:
- Around line 57-66: Update IMP-002 to clarify the status of the two referenced
artifacts (`build/targets/codeanalysis/ValidateHostCompatibility.targets` and
`build/targets/codeanalysis/net8-sdk-assemblies.json`): either state that these
files will be added as part of this change (and briefly describe their intended
purpose—e.g., a ValidateAnalyzerHostCompatibility MSBuild target and a JSON
manifest of .NET 8 SDK assemblies) or mark them as planned work and
remove/adjust language that implies they already exist; reference IMP-002 and
the two filenames so reviewers can locate and verify the declaration.
---
Outside diff comments:
In
`@docs/architecture/ADR-006-wellknown-types-pattern-for-moq-symbol-resolution.md`:
- Around line 1-67: REF-003 points to a broken external link; update the
reference entry labeled REF-003 in the ADR (the References section) so it either
uses the active Roslyn documentation URL
https://github.com/dotnet/roslyn/blob/main/docs/analyzers/Report%20Analyzer%20Format.md
or remove the REF-003 bullet entirely if you decide not to include external
performance guidance; ensure the REF-003 label remains consistent and the
markdown link text is updated accordingly.
---
Duplicate comments:
In @.serena/memories/project-overview.md:
- Line 9: Update the inaccurate SDK/language claim in
.serena/memories/project-overview.md: replace "C# 13, .NET 9 SDK" with accurate
info reflecting that global.json pins SDK 10.0.201 (i.e., .NET 10) and that no
explicit C# LangVersion (e.g., C# 13) is set in project files; reference the
project's global.json and absence of a LangVersion property in csproj files (or
add a note that LangVersion is unspecified) so the statement matches the repo
configuration.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: e7b14799-fc1b-43b8-a155-5a9d9401d4cb
📒 Files selected for processing (16)
.serena/memories/architectural-patterns.md.serena/memories/architecture-decision-records.md.serena/memories/dependency-constraints.md.serena/memories/forgetful-knowledge-base.md.serena/memories/observations-index.md.serena/memories/project-overview.md.serena/memories/style-and-conventions.mddocs/architecture/ADR-001-symbol-based-detection-over-string-matching.mddocs/architecture/ADR-002-target-netstandard2-for-analyzer-assemblies.mddocs/architecture/ADR-003-pin-roslyn-sdk-to-codeanalysis-4-8.mddocs/architecture/ADR-004-cap-analyzerutilities-at-3-3-4.mddocs/architecture/ADR-005-central-package-management-with-transitive-pinning.mddocs/architecture/ADR-006-wellknown-types-pattern-for-moq-symbol-resolution.mddocs/architecture/ADR-007-prefer-registeroperationaction-over-registersyntaxnodeaction.mddocs/architecture/ADR-008-benchmarkdotnet-perfdiff-for-performance-regression-detection.mddocs/architecture/ADR-009-xunit-with-roslyn-test-infrastructure.md
Correct .NET SDK version (10 not 9), project count (7 not 10), and remove parenthetical file counts that were inaccurate. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…erns memory Correct MoqKnownSymbols instantiation (constructor not factory method), registration pattern (RegisterCompilationStartAction with closure capture), early exit guard (IsMockReferenced not null check), and ConfigureGeneratedCodeAnalysis method name. Update wrong vs correct examples to match actual implementation. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…7, ADR-009 ADR-006: correct IMP-001 to show constructor pattern with closure capture instead of factory method. ADR-007: add IMP-004 table listing 7 analyzers that use RegisterSyntaxNodeAction with justification. ADR-009: fix REF-003 URL (tree/src -> tree/main/src). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ries dependency-constraints: note that the netstandard2.0 host constraint differs from the .NET 10 build SDK. forgetful-knowledge-base: consolidate redundant environment-specific warning; clarify DB path. suggested-commands: distinguish dotnet format (style) from build-time Roslyn diagnostics. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Delete reuse-analysis-diff.md which contained a one-off diff review with stale line references. Remove its entry from observations-index.md index. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Autofix Details
Bugbot Autofix prepared a fix for the issue found in the latest run.
- ✅ Fixed: Machine-specific database IDs committed to shared repository
- Removed hardcoded SQLite row IDs (project ID 27, memory IDs 511-532, entity IDs 25-38, document IDs 4-5) and replaced them with descriptive topic/entity lists and instructions to query local database.
Remove hardcoded SQLite row IDs (project ID, memory IDs, entity IDs, document IDs) that are local to a single developer's machine. The file now documents the topics and entities encoded without specific IDs, and instructs contributors to query their own local database.
There was a problem hiding this comment.
Actionable comments posted: 5
♻️ Duplicate comments (2)
.serena/memories/forgetful-knowledge-base.md (1)
13-13: 🧹 Nitpick | 🔵 TrivialAdd cross-platform storage path guidance.
The storage path
~/.forgetful/forgetful.dbis Unix-specific. To improve onboarding across different operating systems, consider adding platform-specific paths or a note clarifying this is the Unix/Linux/macOS default.🗂️ Suggested clarification
-Storage: `~/.forgetful/forgetful.db` (SQLite, local to each machine). +Storage locations (SQLite, local to each machine): +- **Unix/Linux/macOS**: `~/.forgetful/forgetful.db` +- **Windows**: `%APPDATA%\Forgetful\forgetful.db` (typically `C:\Users\<User>\AppData\Roaming\Forgetful\forgetful.db`)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.serena/memories/forgetful-knowledge-base.md at line 13, Replace the hard-coded Unix path string `~/.forgetful/forgetful.db` with a cross-platform guidance sentence: state that `~/.forgetful/forgetful.db` is the UNIX/macOS default, add the Windows equivalent (e.g., under `%APPDATA%\\Forgetful\\forgetful.db`), and mention using XDG_BASE_DIRS or an environment variable / OS-specific data directory (or an OS-aware helper) to choose the path at runtime; update the markdown entry to show the Unix default and a short note with the Windows path and suggestion to use an OS-agnostic storage location..serena/memories/suggested-commands.md (1)
45-47: 🧹 Nitpick | 🔵 TrivialDocument both formatting commands for complete workflow coverage.
Currently only the mutating
dotnet formatcommand is shown. Consider adding the verification commanddotnet format --verify-no-changesto support both local formatting and pre-commit/CI validation workflows.📝 Suggested addition
## Format ```bash +# Apply formatting locally dotnet format + +# Validate no pending format changes (pre-commit/CI gate) +dotnet format --verify-no-changes</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In @.serena/memories/suggested-commands.md around lines 45 - 47, Summary:
Document both the mutating and verification dotnet-format commands for local and
CI workflows. Update .serena/memories/suggested-commands.md to keep the existing
"dotnet format" entry and add a second entry documenting "dotnet format
--verify-no-changes" with a short heading like "Validate no pending format
changes (pre-commit/CI gate)"; ensure the two items appear together so
developers know to run the first locally and the second in CI/pre-commit checks.</details> </blockquote></details> </blockquote></details> <details> <summary>🤖 Prompt for all review comments with AI agents</summary>Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.serena/memories/project-overview.md:
- Line 9: Update the project overview text that currently reads "C# 13, .NET 10
SDK (pinned via global.json, currently 10.0.201)" to state "C# 14" instead of
"C# 13" so the language version reflects the effective compiler version when
using LangVersion=default; change the phrase in the line containing "C# 13" to
"C# 14".In
@docs/architecture/ADR-007-prefer-registeroperationaction-over-registersyntaxnodeaction.md:
- Around line 64-72: The ADR table is missing reasons for why these analyzers
use RegisterSyntaxNodeAction instead of IOperation; update documentation or
source comments to explain the limitation for each analyzer: open each analyzer
class (ConstructorArgumentsShouldMatchAnalyzer,
EventSetupHandlerShouldMatchEventTypeAnalyzer,
RaiseEventArgumentsShouldMatchEventSignatureAnalyzer,
RaisesEventArgumentsShouldMatchEventSignatureAnalyzer,
ReturnsAsyncShouldBeUsedForAsyncMethodsAnalyzer,
ReturnsDelegateShouldReturnTaskAnalyzer,
SetupShouldNotIncludeAsyncResultAnalyzer), inspect their use of syntax node
kinds (e.g., ObjectCreationExpression, InvocationExpression, LambdaExpression,
Async method returns, etc.), and add a concise reason stating why IOperation
cannot express the needed implicit/explicit syntax distinctions or required
syntactic context (or add a TODO note in the analyzer source if you cannot
determine it) and then populate the corresponding "Reason" cells in the ADR
table to match those explanations.- Line 59: The long single line containing the rule and base-class delegation
text should be wrapped into multiple shorter lines for readability; split the
sentence that mentions OperationKind.Invocation, OperationKind.ObjectCreation,
OperationKind.SimpleAssignment / OperationKind.PropertyReference and the
Base-class delegation clause (referencing MockBehaviorDiagnosticAnalyzerBase)
into two or three logical lines so each line stays within typical limits and the
meaning is preserved.- Line 76: The REF-001 link in the ADR is broken; update the reference under
REF-001 to point to the correct Roslyn IOperation documentation by replacing the
invalid GitHub URL with either the Microsoft Learn API page
(https://learn.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.ioperation)
or the Roslyn source file on GitHub
(https://github.com/dotnet/roslyn/blob/main/src/Compilers/Core/Portable/Operations/IOperation.cs)
so the REF-001 reference resolves correctly.In
@docs/architecture/ADR-009-xunit-with-roslyn-test-infrastructure.md:
- Line 52: Replace the phrase "file loading convention" with the hyphenated
compound modifier "file-loading convention" in the ALT-004 bullet (the line
containing "ALT-004: Rejection Reason") of
ADR-009-xunit-with-roslyn-test-infrastructure.md so the sentence reads
"...Requires a file-loading convention that adds indirection without benefit.",
ensuring consistent, clearer technical phrasing.
Duplicate comments:
In @.serena/memories/forgetful-knowledge-base.md:
- Line 13: Replace the hard-coded Unix path string
~/.forgetful/forgetful.db
with a cross-platform guidance sentence: state that~/.forgetful/forgetful.db
is the UNIX/macOS default, add the Windows equivalent (e.g., under
%APPDATA%\\Forgetful\\forgetful.db), and mention using XDG_BASE_DIRS or an
environment variable / OS-specific data directory (or an OS-aware helper) to
choose the path at runtime; update the markdown entry to show the Unix default
and a short note with the Windows path and suggestion to use an OS-agnostic
storage location.In @.serena/memories/suggested-commands.md:
- Around line 45-47: Summary: Document both the mutating and verification
dotnet-format commands for local and CI workflows. Update
.serena/memories/suggested-commands.md to keep the existing "dotnet format"
entry and add a second entry documenting "dotnet format --verify-no-changes"
with a short heading like "Validate no pending format changes (pre-commit/CI
gate)"; ensure the two items appear together so developers know to run the first
locally and the second in CI/pre-commit checks.</details> --- <details> <summary>ℹ️ Review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: Repository UI **Review profile**: ASSERTIVE **Plan**: Pro **Run ID**: `fefe7394-1962-4b01-a6f4-513dbee14b74` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 53b5de651f357a16fc2771328aee405ffa5a9b40 and 6f2a3ca71568cc565ab30580a37fe8b76af4cd25. </details> <details> <summary>📒 Files selected for processing (9)</summary> * `.serena/memories/architectural-patterns.md` * `.serena/memories/dependency-constraints.md` * `.serena/memories/forgetful-knowledge-base.md` * `.serena/memories/observations-index.md` * `.serena/memories/project-overview.md` * `.serena/memories/suggested-commands.md` * `docs/architecture/ADR-006-wellknown-types-pattern-for-moq-symbol-resolution.md` * `docs/architecture/ADR-007-prefer-registeroperationaction-over-registersyntaxnodeaction.md` * `docs/architecture/ADR-009-xunit-with-roslyn-test-infrastructure.md` </details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
… examples .NET 10 SDK with LangVersion=default resolves to C# 14, not C# 13. DiagnosticAnalyzer class count is 24 (verified), not 23. Remove hard-coded SDK patch version from project-overview; point to global.json instead. Fix misleading interface naming example in style-and-conventions. Remove per-operation MoqKnownSymbols construction from architectural-patterns; show only the correct RegisterCompilationStartAction pattern. Add clarifying note that Name pre-filter in early exit is a performance hint, not a semantic check. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
IMP-005 records the pinned version (0.15.8) and points to Directory.Packages.props as the authoritative source, consistent with the version citation pattern used in ADR-003 and ADR-004. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add 5 new Serena memories from comprehensive analysis of all 200 issues, 200 PRs, 14 releases, and full codebase architecture: - bug-patterns-and-antipatterns: 6 recurring failure modes with prevention checklist - complete-analyzer-catalog: all 24 rules, 5 fixers, registration patterns - open-work-roadmap: 44 open issues prioritized by effort - pr-and-issue-patterns: PR/issue distribution, label signals - release-history: 14 releases, 4 project phases, CS8032 lesson Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix prepared a fix for the issue found in the latest run.
- ✅ Fixed: AI session working artifacts committed without PR mention
- Deleted the three AI session working artifacts in .agents/ directory that contained internal tool references and were not part of the intended PR changes.
Remove .agents/ directory containing internal AI tool session outputs that were unintentionally included in the commit.
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (2)
docs/architecture/ADR-007-prefer-registeroperationaction-over-registersyntaxnodeaction.md (1)
76-76:⚠️ Potential issue | 🟡 MinorReplace REF-001 with a valid IOperation documentation link.
Line 76 points to a Roslyn path that is not a stable API-doc target.
🔗 Proposed fix
-- **REF-001**: Roslyn IOperation documentation: <https://github.com/dotnet/roslyn/blob/main/docs/compilers/CSharp/IOperation.md> +- **REF-001**: Roslyn IOperation documentation: <https://learn.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.ioperation>#!/bin/bash set -euo pipefail curl -sI "https://github.com/dotnet/roslyn/blob/main/docs/compilers/CSharp/IOperation.md" | head -n 1 curl -sI "https://learn.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.ioperation" | head -n 1As per coding guidelines, "Validate all links before committing markdown changes".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/architecture/ADR-007-prefer-registeroperationaction-over-registersyntaxnodeaction.md` at line 76, Replace the unstable GitHub path referenced by REF-001 with the stable Microsoft Docs API page for IOperation: update the markdown entry labeled **REF-001** so its URL points to https://learn.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.ioperation (or equivalent regional docs) and ensure the link text remains descriptive (e.g., "Roslyn IOperation documentation") so the reference in ADR-007-prefer-registeroperationaction-over-registersyntaxnodeaction.md resolves to the stable API doc.docs/architecture/ADR-001-symbol-based-detection-over-string-matching.md (1)
58-58:⚠️ Potential issue | 🟡 MinorAdd direct API URLs for REF-002.
Line 58 names Roslyn APIs but does not provide clickable references.
🔗 Proposed fix
-- **REF-002**: Roslyn API documentation: `ISymbol`, `SymbolEqualityComparer` +- **REF-002**: Roslyn API documentation: [`ISymbol`](https://learn.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.isymbol), [`SymbolEqualityComparer`](https://learn.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.symbolequalitycomparer)Provide the official Microsoft Learn API reference URLs for `Microsoft.CodeAnalysis.ISymbol` and `Microsoft.CodeAnalysis.SymbolEqualityComparer`.As per coding guidelines, "Validate all links before committing markdown changes".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/architecture/ADR-001-symbol-based-detection-over-string-matching.md` at line 58, REF-002 currently lists Roslyn types without links; update the ADR to include direct Microsoft Learn API reference URLs for Microsoft.CodeAnalysis.ISymbol and Microsoft.CodeAnalysis.SymbolEqualityComparer (refer to REF-002 and the symbol names ISymbol and SymbolEqualityComparer to locate the text), insert the official Learn dotnet API page links next to each type, and validate both links work before committing the markdown change.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.serena/memories/architectural-patterns.md:
- Around line 63-68: The examples currently over-highlight by calling
invocationSyntax.Expression.GetLocation() and objectCreation.Type.GetLocation();
change the invocation case to target the method name by casting to
MemberAccessExpressionSyntax and using .Name.GetLocation() (e.g.,
((MemberAccessExpressionSyntax)invocationSyntax.Expression).Name.GetLocation()),
and change the object-creation case to target the sealed type by extracting the
type argument via objectCreation.TypeArgumentList.Arguments[0].GetLocation() (or
its Type node) instead of objectCreation.Type.GetLocation(); update the examples
accordingly so they match the patterns used in
EventSetupHandlerShouldMatchEventTypeAnalyzer.cs and
CallbackSignatureShouldMatchMockedMethodAnalyzer.cs.
In @.serena/memories/pr-and-issue-patterns.md:
- Line 22: The percentage on line 22 ("49.5% of all PRs are dependency updates")
is inconsistent with the counts shown on line 13 (113 dependency PRs out of 200
= 56.5%); recalc and update the text to the correct value (56.5%) or adjust the
counts so they match; specifically edit the sentence containing "49.5% of all
PRs are dependency updates" to reflect the correct percentage (56.5%) and verify
any other references to dependency PR percentage in this document for
consistency.
---
Duplicate comments:
In `@docs/architecture/ADR-001-symbol-based-detection-over-string-matching.md`:
- Line 58: REF-002 currently lists Roslyn types without links; update the ADR to
include direct Microsoft Learn API reference URLs for
Microsoft.CodeAnalysis.ISymbol and Microsoft.CodeAnalysis.SymbolEqualityComparer
(refer to REF-002 and the symbol names ISymbol and SymbolEqualityComparer to
locate the text), insert the official Learn dotnet API page links next to each
type, and validate both links work before committing the markdown change.
In
`@docs/architecture/ADR-007-prefer-registeroperationaction-over-registersyntaxnodeaction.md`:
- Line 76: Replace the unstable GitHub path referenced by REF-001 with the
stable Microsoft Docs API page for IOperation: update the markdown entry labeled
**REF-001** so its URL points to
https://learn.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.ioperation
(or equivalent regional docs) and ensure the link text remains descriptive
(e.g., "Roslyn IOperation documentation") so the reference in
ADR-007-prefer-registeroperationaction-over-registersyntaxnodeaction.md resolves
to the stable API doc.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: fa4fc730-af3d-4699-bae1-efa1a3428ee1
📒 Files selected for processing (13)
.serena/.gitignore.serena/memories/architectural-patterns.md.serena/memories/bug-patterns-and-antipatterns.md.serena/memories/complete-analyzer-catalog.md.serena/memories/open-work-roadmap.md.serena/memories/pr-and-issue-patterns.md.serena/memories/project-overview.md.serena/memories/release-history.md.serena/memories/style-and-conventions.md.serena/project.ymldocs/architecture/ADR-001-symbol-based-detection-over-string-matching.mddocs/architecture/ADR-007-prefer-registeroperationaction-over-registersyntaxnodeaction.mddocs/architecture/ADR-008-benchmarkdotnet-perfdiff-for-performance-regression-detection.md
- Fix dependency PR percentage: 49.5% -> 56.5% in pr-and-issue-patterns - Add manual lint commands (markdownlint, yamllint, shellcheck) to suggested-commands - Fix broken Roslyn IOperation URL in ADR-007 (was 404, now points to Microsoft Learn) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove blank lines between mapping keys and sequence values that were introduced by the whitespace normalization commit, causing yamllint CI failure. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add local-and-ci-configuration: git hooks, CI workflows, linter configs, build flags, AI editor rules, known broken configs - Add codebase-analysis-observations: session learnings on memory accuracy, YAML validation, and AI reviewer verification - Update observations-index with new memory references Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
yamllint requires sequence items to be indented under their parent mapping key. Unindented items at column 1 fail the indentation rule. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Modern Debian/Ubuntu blocks pip install in externally-managed environments (PEP 668). pipx handles virtual environment isolation automatically. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Description
Adds Serena MCP configuration and initial project memory files to bootstrap the Serena onboarding workflow for the moq.analyzers repository.
Motivation and Context
Serena provides LSP-powered symbol analysis for AI coding assistants. Configuring it for this project enables accurate, symbol-based codebase exploration rather than text-search guesses. The memory files capture institutional knowledge about the project structure, conventions, and quality standards so future sessions start with full context.
Changes Made
.serena/project.ymlYAML list indentation to canonical style (no leading spaces)line_endingconfiguration key to.serena/project.ymlfor explicit line ending control.serena/memories/project-overview.md: purpose, tech stack, solution structure, design principles.serena/memories/style-and-conventions.md: naming rules, analyzer/fixer patterns, testing and build conventions.serena/memories/suggested-commands.md: common build, test, and benchmark commands.serena/memories/task-completion-checklist.md: pre-commit quality gates and review steps.serena/memories/code-review/reuse-analysis-diff.md: observations from code review session on reuse patternsType of Change
Checklist
CONTRIBUTING.mdSummary by CodeRabbit