{"id":50672939,"url":"https://github.com/joslat/maf-autopilot","last_synced_at":"2026-06-08T13:02:25.075Z","repository":{"id":358453559,"uuid":"1229570567","full_name":"joslat/maf-autopilot","owner":"joslat","description":"AI-powered toolkit for Microsoft Agent Framework (MAF) migrations — agents, skills, MCP server, and self-updating guide","archived":false,"fork":false,"pushed_at":"2026-05-17T13:28:02.000Z","size":2782,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-17T14:34:39.580Z","etag":null,"topics":["agent","ai-agents","copilot","dotnet","framework","maf","mcp-server","migration"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joslat.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-05T07:15:31.000Z","updated_at":"2026-05-17T13:28:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/joslat/maf-autopilot","commit_stats":null,"previous_names":["joslat/maf-autopilot"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/joslat/maf-autopilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joslat%2Fmaf-autopilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joslat%2Fmaf-autopilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joslat%2Fmaf-autopilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joslat%2Fmaf-autopilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joslat","download_url":"https://codeload.github.com/joslat/maf-autopilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joslat%2Fmaf-autopilot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34063159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","ai-agents","copilot","dotnet","framework","maf","mcp-server","migration"],"created_at":"2026-06-08T13:02:24.363Z","updated_at":"2026-06-08T13:02:25.068Z","avatar_url":"https://github.com/joslat.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MAF Doctor — the maf-autopilot toolkit for Microsoft Agent Framework\n\n\u003e Diagnose, explain, prescribe, verify — for MAF agents and workflows.\n\n\u003e **Why two names?** **MAF Doctor** is the brand — what the toolkit *does*. **`maf-autopilot`** is the NuGet package ID and CLI binary name. They're the same thing; we kept the package ID stable to avoid breaking existing installs.\n\n\u003c!--\n  Two animated casts (each ~30 s). Rendered from docs/assets/*.tape via vhs.\n  Re-render after editing the .tape files: bash scripts/make-cast.sh (or .ps1).\n\n  If a GIF appears broken/missing, the renderer hasn't run yet —\n  see scripts/make-cast.sh for the install + render instructions.\n--\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/install-cast.gif\"\n       alt=\"maf-autopilot — install + audit any MAF codebase in 30 seconds\"\n       width=\"900\" /\u003e\n  \u003cbr/\u003e\n  \u003cem\u003eInstall + audit a real MAF codebase. Doctor returns grade F + the top fixes.\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/migration-cast.gif\"\n       alt=\"maf-autopilot — auto-fix the broken codebase to grade A in ~30 seconds\"\n       width=\"900\" /\u003e\n  \u003cbr/\u003e\n  \u003cem\u003eOne \u003ccode\u003eautofix-all\u003c/code\u003e command. Every mechanical rule. Grade F → A, deterministic.\u003c/em\u003e\n\u003c/p\u003e\n\n**MAF Doctor** (the maf-autopilot toolkit) is a .NET global tool that does three things in one install:\n\n1. **An MCP server** — exposes **25 executable tools**, 6 resources, and 7 prompts to GitHub Copilot / Claude Code / Cursor via `.vscode/mcp.json`.\n2. **A CLI** — `maf-autopilot doctor` (A-F health letter), `maf-autopilot autofix-all` (deterministic rewriters), `maf-autopilot new agent \u003cName\u003e`, `maf-autopilot new executor \u003cName\u003e`, `maf-autopilot init` (drops MCP config + steering snippets into your repo), `maf-autopilot verify-registry`, `maf-autopilot badge`, `maf-autopilot registry-extract`.\n3. **A plugin** — `init` also drops 12 specialised skills, 7 specialist agents, and steering snippets for GitHub Copilot Coding Agent so Copilot's agentic loops gain MAF-specific knowledge.\n\nPlus a **separate `maf-autopilot.Analyzers` NuGet** with 3 Roslyn analyzers (`MAF001`/`MAF002`/`MAF003`) for IDE write-time enforcement, and a curated **19-entry obsolete-API registry** keyed by MAF version (`applies_to_codebases` markers). Copilot invokes the tools automatically while auditing, migrating, reviewing, and maintaining your agents and workflows.\n\n### What makes it worth trying\n\n- 🔍 **Catches the bugs that compile clean** — detects fan-out/fan-in silent failures where a workflow exits successfully but produces no output. Runtime-only, zero build signal, invisible without this tool.\n- 🩺 **Compiler ground-truth for CS0618** — `dotnet-inspect` v0.7.8 surfaces `[Obsolete]` statically (pre-build), but only the compiler catches transitive obsoletions, overload-resolution surprises, and project-local `[Obsolete]` attributes. `maf-autopilot` pairs both.\n- ✅ **Best-practice auditing, not just migration** — reviews your MAF agents and workflows against current patterns after migration too. Catches drift, anti-patterns, and deprecated usage before they become production bugs.\n- 🤖 **Fully agentic loop** — Copilot audits your codebase, generates a tracked migration plan, executes it task-by-task with `dotnet build` verification after every step, and updates the plan as it goes.\n- 📖 **Self-updating knowledge** — a GitHub Actions workflow watches NuGet weekly, diffs the MAF API surface, and opens a PR updating the migration guide and compatibility matrix automatically when a new version ships.\n- 🧰 **Deterministic fixes, not guesses** — a machine-readable Obsolete API Registry maps every known CS0618 warning to its exact replacement pattern. No hallucinated fix patterns.\n- 🔄 **Keeps your code current** — as MAF evolves, re-run the auditor on your codebase. It cross-references the latest guide, flags anything that's now obsolete or has a better pattern, and tells you exactly what to change.\n\n## How It Works\n\n`maf-autopilot` is a **[Model Context Protocol (MCP)](https://modelcontextprotocol.io) server** packaged as a .NET global tool. When running in MCP mode (default — no subcommand), it exposes:\n\n- **25 executable tools**, each annotated with MCP behavior hints (`readOnlyHint` / `destructiveHint` / `idempotentHint` / `openWorldHint`) so well-behaved clients can auto-classify them. Tools include: registry lookup (`MafApiSafety`, `MafRegistryLookup`, `MafListRegistry`), code scanning (`MafScanAntiPatterns`, `MafValidateFanOut`, `MafLintAgentPrompt`, `MafEstimateCost`), build-verified hunts (`MafRunCs0618Hunt`), NuGet diffing (`MafDiffPackage`, `MafPreUpgradeDryRun`), workflow simulation (`MafSimulateWorkflow`), explanations (`MafExplain`), scaffolders (`MafNewAgent`, `MafNewExecutor`), PR-scoped audits (`MafAuditPullRequest`), version planning (`MafMigrationPath`, `MafGenerateRegressionPlan`, `MafScoreMigrationRisk`), upstream-issue drafter (`MafDraftIssue`), capability tour (`MafTour`), `MafBeforeAfter`, `MafCompatibility`, and the single-command health letter `MafDoctor` (markdown + JSON output for CI integration). Anti-pattern + fan-out scanners both support `format: \"sarif\"` for GitHub Advanced Security integration. The 2 destructive tools (`MafAutoFix`, `MafAutoFixAll`) support `dryRun`.\n- **6 resources** — `maf://guide`, `maf://constraints`, `maf://registry`, `maf://rules`, `maf://help`, `maf://skills?name=...` — the full migration knowledge base, readable on demand.\n- **7 prompts** — `maf-audit`, `maf-migrate`, `maf-cs0618-hunt`, `maf-review`, `maf-debug`, `maf-scaffold`, `maf-help` — structured conversation starters.\n- **3 Roslyn analyzers** (separate `maf-autopilot.Analyzers` NuGet) — `MAF001` fan-out, `MAF002` `DefaultAzureCredential`, `MAF003` `EnableSensitiveData`. Write-time enforcement.\n\nWhen invoked with a subcommand instead, the same binary runs as a CLI tool. See \"Quick Start\" below for the most useful subcommands (`init`, `doctor`, `new agent`, `autofix-all`).\n\nGitHub Copilot Chat connects to the MCP server and gains agentic access to all of this during migration work.\n\n## Quick Start — Two Integration Modes\n\n### ⭐ Mode 1: MCP Server (recommended — full agentic power)\n\nInstall the NuGet global tool, then run `init` in your target project:\n\n```powershell\n# 1. Install the MCP server as a .NET global tool\ndotnet tool install --global maf-autopilot\n\n# 2. In your MAF project — writes .vscode/mcp.json + .github/copilot-instructions.md\ncd your-maf-project\nmaf-autopilot init\n```\n\n\u003e 📦 Current release: [`1.0.0`](https://www.nuget.org/packages/maf-autopilot). Supports MAF 1.0 / 1.2 / 1.3 simultaneously.\n\n### ⚡ First 5 minutes — try these three commands\n\n```powershell\n# 1. Instant health check on any MAF project (A/B/C/F grade + top 3 fixes)\nmaf-autopilot doctor .\n\n# 2. Scaffold a brand-new MAF 1.3.0 agent + smoke test (10 seconds, anti-pattern-clean)\nmaf-autopilot new agent ChatBot\n\n# 3. Open VS Code; in Copilot Chat:\n@maf-auditor                           # full pre-migration audit + plan\n@maf-best-practice-reviewer            # steady-state best-practice review\n```\n\nFor deeper queries, ask Copilot:\n\n\u003e \"Use `MafPreUpgradeDryRun` to tell me which files would break if I upgraded `Microsoft.Agents.AI` from 1.2.0 to 1.3.0.\"\n\n\u003e \"Run `MafSimulateWorkflow` against this repo and embed the Mermaid topology in my PR description.\"\n\n\u003e \"Use `MafLintAgentPrompt` to audit every agent's `Instructions` string for prompt-injection risk.\"\n\nVS Code picks up `.vscode/mcp.json` automatically and starts the MCP server. Copilot Chat gains live tool calls, resource reads, and structured prompts.\n\n### ⭐ Mode 1b: Docker container (no .NET SDK on the host)\n\nIf you'd rather not install the .NET SDK locally, pull the container instead:\n\n```bash\ndocker pull ghcr.io/joslat/maf-autopilot:latest\n```\n\nWire it into your IDE's `mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"maf-autopilot\": {\n      \"type\": \"stdio\",\n      \"command\": \"docker\",\n      \"args\": [\"run\", \"--rm\", \"-i\", \"ghcr.io/joslat/maf-autopilot:latest\"]\n    }\n  }\n}\n```\n\nSame tools, same skills, same resources — just isolated inside a container. Multi-arch (`amd64` + `arm64`).\n\n### Mode 2: Skills + Agents only (no MCP server required)\n\nCopy `.github/` from this repo into your .NET repository root. You get the agents and skills via VS Code's instruction/agent system — no MCP server needed, but no live tool calls either.\n\n```powershell\n# In your MAF project root\ngit clone https://github.com/joslat/maf-autopilot tmp-maf\nCopy-Item tmp-maf/.github -Destination .github -Recurse\nRemove-Item tmp-maf -Recurse\n```\n\nThen open Copilot Chat and use `@maf-migration` or `@maf-auditor`.\n\n## Recommended companion MCPs\n\nMAF Doctor is laser-focused on **diagnose + fix** for Microsoft Agent Framework. For best results, pair us with these companion MCPs in your `.vscode/mcp.json` or Claude Code config:\n\n| MCP | What it gives you | Endpoint | Auth |\n|---|---|---|---|\n| **[Microsoft Learn MCP](https://learn.microsoft.com/api/mcp)** | Live MAF documentation, code samples, version-aware. 3 tools. | `https://learn.microsoft.com/api/mcp` | None |\n| **[Context7](https://github.com/upstash/context7)** | 9000+ library docs, version-specific NuGet docs | `https://mcp.context7.com/mcp` | API key |\n| **[DeepWiki](https://mcp.deepwiki.com/mcp)** | Query `microsoft/agent-framework` source repo wiki directly | `https://mcp.deepwiki.com/mcp` | None |\n| **[Serena](https://github.com/oraios/serena)** | Semantic IDE-shape navigation across 40+ languages | local install | None |\n\nThis stack gives an AI client: docs lookup (Learn / Context7 / DeepWiki), codebase navigation (Serena), and MAF-specific audit + fix + migration (MAF Doctor). Each MCP stays in its lane.\n\n## Why This Exists\n\n`dotnet upgrade-assistant` handles package version bumps. maf-autopilot handles everything else:\n\n- MAF-specific executor pattern migration (`ReflectingExecutor` → `partial class : Executor` + `[MessageHandler]`)\n- Session API changes (`AgentThread` → `AgentSession`)\n- Fan-out/fan-in silent failure detection — a class of bug that builds green but runs wrong\n- Compiler ground-truth CS0618 detection (transitive obsoletions, overload-resolution surprises, project-local `[Obsolete]`) that pairs with `dotnet-inspect@0.7.8`'s new static surfacing\n- Build-verified, task-by-task execution with a full tracking table\n- A machine-readable Obsolete API Registry so fixes are deterministic, not guessed\n\n---\n\n## Project Structure\n\n```\nmaf-autopilot/\n├── .github/\n│   ├── agents/                            # 7 GitHub Copilot Coding Agent specialists\n│   │   ├── maf.agent.md                          # Root triage agent — routes you to the right specialist\n│   │   ├── maf-auditor.agent.md                  # Pre-migration scan → generates migration-plan.md\n│   │   ├── maf-best-practice-reviewer.agent.md   # Steady-state audit (post-migration) → audit-report.md\n│   │   ├── maf-migration.agent.md                # Build-verified task-by-task migration orchestrator\n│   │   ├── maf-incident-responder.agent.md       # Production failure triage → root-cause + fix\n│   │   ├── maf-onboarding.agent.md               # \"New to this MAF repo\" guided tour\n│   │   └── maf-rollback.agent.md                 # 1.3 → 1.2 surgical rollback (build-verified per task)\n│   ├── instructions/\n│   │   └── maf-constraints.instructions.md       # Always-loaded: breaking changes, constraints\n│   ├── skills/                            # 12 specialised skills (loaded by agents on demand)\n│   │   ├── cs0618-hunter/                 # compiler-ground-truth path (paired with MafRunCs0618Hunt)\n│   │   ├── dotnet-inspect/                # pinned to v0.7.8 (surfaces [Obsolete])\n│   │   ├── maf-anti-pattern-scanner/      # canonical anti-pattern rule list (paired with MafScanAntiPatterns)\n│   │   ├── maf-fan-out-validator/         # silent fan-in starvation rules\n│   │   ├── maf-issue-reporter/            # upstream-issue filing procedure (paired with MafDraftIssue)\n│   │   ├── maf-migration-guide/           # multi-section guide navigator (version-keyed)\n│   │   ├── maf-migration-plan-creator/    # template + ID conventions for tracking tables\n│   │   ├── maf-migration-retrospective/   # post-migration learning loop\n│   │   ├── maf-obsolete-api-registry/     # 19-entry CS0618 fix registry (the YAML source)\n│   │   ├── maf-release-watcher/           # weekly NuGet check + AI-fill loop documentation\n│   │   ├── maf-workflow-smoke-tester/     # smoke test templates\n│   │   └── nuget-diff-analyzer/           # generic NuGet diff procedure (subsumed by MafDiffPackage tool)\n│   └── workflows/                         # 7 GitHub Actions\n│       ├── release.yml                    # NuGet publish (test → pack → push) on v* tag\n│       ├── docker-publish.yml             # multi-arch GHCR image on tag push\n│       ├── maf-release-watcher.yml        # weekly (Monday 9 AM UTC) MAF version check\n│       ├── maf-ai-fill-todos.yml          # dispatches GitHub issue for Copilot Coding Agent to fill registry TODOs\n│       ├── maf-ai-fill-verify.yml         # PR-gate: runs verify-registry on AI-filled output before merge\n│       ├── maf-pr-audit.yml               # PR-scoped scan, posts a sticky comment\n│       └── maf-drift-detector.yml         # weekly MafDoctor; opens issue if grade \u003c A\n├── src/\n│   ├── maf-autopilot/                     # MCP server — 25 tools, 6 resources, 7 prompts; CLI binary\n│   ├── maf-autopilot.Analyzers/           # Roslyn analyzer package (MAF001/002/003 — separate NuGet)\n│   ├── maf-autopilot.Tests/               # 580 xUnit tests (× 3 TFMs = 1740 executions per run)\n│   └── maf-autopilot.Analyzers.Tests/     # 11 analyzer tests (× 3 TFMs = 33 executions)\n├── Dockerfile                             # multi-stage build → ghcr.io/joslat/maf-autopilot:latest\n├── guides/\n│   ├── maf-current-migration-guide.md     # Cumulative — auto-generated, all versions concatenated (start here)\n│   ├── maf-1.3.0-migration-guide.md       # 21-section migration guide (hand-authored bootstrap)\n│   ├── maf-1.4.0-migration-guide.md       # 1.3 → 1.4 delta (auto-generated by release-watcher)\n│   └── maf-1.5.0-migration-guide.md       # 1.4 → 1.5 delta (auto-generated by release-watcher)\n├── docs/\n│   ├── maf-migration-toolkit-plan.md      # 🗺️ phased roadmap + full 68-row tracking table\n│   ├── project-status-and-vision.md       # stage assessment + completeness audit\n│   ├── compatibility-matrix.md            # MAF version ↔ dependency versions\n│   └── setup.md                           # detailed install + configure\n├── CONTRIBUTING.md                        # 4 contribution shapes + PR conventions\n├── TROUBLESHOOTING.md                     # install / init / MCP / dotnet-inspect / CI failure modes\n└── .maf-version                           # tracked version (for release watcher)\n```\n\n---\n\n## Skill Orchestration — When to Call What\n\n| You need to…                                      | Use skill                      |\n|---------------------------------------------------|--------------------------------|\n| Look up MAF API signatures or patterns            | `maf-migration-guide`          |\n| Check if a NuGet type/member exists               | `dotnet-inspect`               |\n| Detect and fix CS0618 obsolete warnings           | `cs0618-hunter`                |\n| Look up the fix pattern for a specific CS0618     | `maf-obsolete-api-registry`    |\n| Review 1.3.0 code for known anti-patterns         | `maf-anti-pattern-scanner`     |\n| Generate a migration plan for a new codebase      | `maf-migration-plan-creator`   |\n| Validate fan-out/fan-in workflow structure        | `maf-fan-out-validator`        |\n| Post-process NuGet diff into actionable report    | `nuget-diff-analyzer`          |\n| File an upstream MAF bug                          | `maf-issue-reporter`           |\n| Check for / respond to new MAF versions           | `maf-release-watcher`          |\n| Generate smoke tests for migrated workflows       | `maf-workflow-smoke-tester`    |\n| Learn from migration surprises, improve toolkit   | `maf-migration-retrospective`  |\n\n\u003e **Pin to `dotnet-inspect@0.7.8` or later.** v0.7.8 (2026-05-04) [closes the `[Obsolete]`-overload gap](https://github.com/richlander/dotnet-inspect/releases/tag/v0.7.8). For ground-truth on what your project actually triggers (transitive obsoletions, overload resolution, project-local `[Obsolete]`), `cs0618-hunter` (compiler-based) is still the canonical path.\n\n---\n\n## Typical Migration Workflow\n\n1. **Audit** — open Copilot Chat → use the `maf-audit` prompt (or `@maf-auditor` agent) to scan your codebase and generate `src/docs/migration-plan.md`\n2. **Migrate** — use the `maf-migrate` prompt (or `@maf-migration` agent) to execute the plan task-by-task with `dotnet build` verification after each step\n3. **Hunt stragglers** — use the `maf-cs0618-hunt` prompt to catch any remaining CS0618 obsolete API warnings the build surfaces\n\nThe MCP server tools are called automatically by Copilot during steps 1–3 — you don't invoke them directly.\n\n---\n\n## Roadmap \u0026 Status\n\nFor an up-to-date, evidence-anchored view of what is done, what is in progress, and what is pending, see:\n\n- **[`docs/maf-migration-toolkit-plan.md`](docs/maf-migration-toolkit-plan.md)** — phased roadmap + the tracking table (single source of truth)\n- **[`docs/project-status-and-vision.md`](docs/project-status-and-vision.md)** — stage assessment, the broader vision beyond migration, completeness audit\n\n\u003e The README used to carry its own tick-list of features. It drifted from the plan twice in two months. The plan tracking table is now authoritative; the README sticks to \"what this is\" and \"how to use it.\"\n\n### Distribution status (2026-05-17)\n\n- ✅ **NuGet** — [`1.0.0`](https://www.nuget.org/packages/maf-autopilot) on nuget.org. Supports MAF 1.0 / 1.2 / 1.3.\n- ✅ **Docker GHCR** — multi-arch (amd64+arm64) container, semver tags (built by `docker-publish.yml` on tag push)\n- ✅ **Roslyn analyzers** — `maf-autopilot.Analyzers` package ships 3 write-time rules\n- ✅ **Multi-version migration paths** — `MafMigrationPath(currentVer, targetVer)` walks version-keyed guide metadata\n- ✅ **Security model documented** — see [`docs/security.md`](docs/security.md). Cisco mcp-scanner v4.6.0 (2026-05-17): **25/25 tools SAFE, 0 findings**.\n\n---\n\n## Acknowledgements\n\nThis toolkit relies heavily on **[dotnet-inspect](https://github.com/richlander/dotnet-inspect)** by [Rich Lander](https://github.com/richlander) — a powerful CLI for querying .NET API surfaces across NuGet packages, platform libraries, and local assemblies. The `nuget-diff-analyzer` skill and the `maf-release-watcher` workflow both use `dotnet-inspect` (via [dnx](https://github.com/filipw/dnx)) to diff MAF package versions and surface breaking API changes.\n\n\u003e ℹ️ As of `dotnet-inspect` **v0.7.8** (2026-05-04), `[Obsolete]` members are surfaced in listings ([PR #318](https://github.com/richlander/dotnet-inspect/pull/318) closes [issue #316](https://github.com/richlander/dotnet-inspect/issues/316)). Versions ≤ v0.7.7 missed `[Obsolete]` at the overload level — historic motivation for `cs0618-hunter` as a workaround. **Pin to v0.7.8 or later.** `cs0618-hunter` remains valuable as the compiler ground-truth path (catches transitive obsoletions, overload-resolution surprises, project-local `[Obsolete]`); `dotnet-inspect` is the static / pre-build path. They are complementary.\n\n---\n\n## Contributing\n\nWhenever a migration surfaces a new surprise (unexpected breaking change, silent runtime failure, wrong pattern in the official docs), update:\n1. `guides/maf-1.3.0-migration-guide.md` — add to \"Known Misalignments\" or create a new section. (For deltas between versions, edit the matching per-version file; the cumulative `maf-current-migration-guide.md` auto-regenerates from those.)\n2. `.github/skills/maf-obsolete-api-registry/registry.yaml` — add the CS0618 entry\n3. `.github/instructions/maf-constraints.instructions.md` — update the breaking changes table if needed\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoslat%2Fmaf-autopilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoslat%2Fmaf-autopilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoslat%2Fmaf-autopilot/lists"}