| Crash triage | debugging-playbook → failure-archaeology (has this crashed before?) → architecture-contract (crash-safety invariants) | Reproduce: harness script from diagnostics-and-tooling on a minimal snippet | Regression test with issue link; full suite green; change-control evidence |
| Correctness (FP/FN) | fp-convergence-campaign (this IS its job) → it pulls debugging-playbook, moq-api-reference, proof-toolkit as needed | Campaign Phase 1: reproduce with the harness, BOTH Moq versions | Campaign Phase 4–5 (prove + promote); never skip a Moq version |
| Failure diagnosis | debugging-playbook (symptom table first) → build-and-env (if environmental) or validation-and-qa (if test-infra) | The symptom row's "first discriminating check" | Root cause named before any fix; span STOP protocol respected |
| New rule / fixer | rule-lifecycle (the full new-rule file checklist) → roslyn-analyzer-reference + moq-api-reference (while implementing) → validation-and-qa (test bar) → dotnet-api-design-standards (before review) | grep -n "Moq1" src/Common/DiagnosticIds.cs (pick a free ID in the right range) | Every MANDATORY row of the rule-lifecycle checklist touched (rows 1–9; row 10 = code fix / KnownSymbols, optional) — do not stop at a fixed count; RS2000 clean; 100% block coverage; change-control evidence |
| Performance | diagnostics-and-tooling (measure FIRST) → architecture-contract (allocation invariants) → research-methodology (predict numbers before running) | ./build/scripts/perf/CIPerf.sh -filter '*(FileCount: 1)' | Predicted vs. observed numbers in the PR; perf gate green (read the PerfDiff defect table in diagnostics-and-tooling before trusting it) |
| Test authoring | validation-and-qa → moq-api-reference (version fan-out facts) | Run the target suite: dotnet test --settings ./build/targets/tests/test.runsettings --filter "FullyQualifiedName~<Class>" | Positive + negative + doppelganger axes considered; spans pinned; both Moq versions |
| Environment | build-and-env (alone; it is self-contained) | Its top-of-file setup sequence | Green build AND green test run |
| CI / dependency | change-control (pins and who-may-change) → config-and-flags (what the knob does) → failure-archaeology (pin incidents: CS8032, S1135) | git log --oneline -5 -- <file you are about to touch> | actionlint + gh act -n evidence for workflows; NEVER bump a pinned dep without the superseding ADR |
| Release | rule-lifecycle (promotion runbook) → change-control (release gates) → docs-and-writing (notes) | Read src/Analyzers/AnalyzerReleases.Unshipped.md | Version-verify step; Shipped.md edited ONLY via promotion |
| Docs | docs-and-writing (templates + stale-docs list) | Its doc-inventory table (find the owner-of-truth) | markdownlint clean; doc-update triggers satisfied |
| Research | research-frontier (pick the problem) → research-methodology (design the experiment) → proof-toolkit (verify claims) | None — read first | Falsifiable milestone stated; claims labeled open/candidate |
| Review | change-control (what gates apply) → dotnet-api-design-standards (the quality bar) → validation-and-qa (is the evidence real?) | Read the diff before any skill deep-dive | Every behavior change has an issue-linked test; adversarial cases exist for AI-authored code |