Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
Compare total calls, success rate, customer errors, Azure service errors, and MCP tool bugs between
the current week and the previous week. See kql-queries.md.
1c. Error Details
Run the error summary query to get per-tool exception types, messages, and stack traces.
Also run the daily error trend query. See kql-queries.md.
1d. Duration Percentiles
Get P50/P95/P99 latency for successful calls. See kql-queries.md.
1e. Custom Dimension Tags
Query azurebackup/VaultType, azurebackup/WorkloadType, azurebackup/DatasourceType, azurebackup/OperationScope
dimensions to see if users have upgraded to versions with telemetry tags.
Use queries 7, 11, 12, and 13 from kql-queries.md.
Step 2: Gather Git Context
Run these git commands against the microsoft/mcp repository:
# Merged PRs this week
git log upstream/main --oneline --since="<week-start>" -- tools/Azure.Mcp.Tools.AzureBackup/
# Releases shipped
git log upstream/main --oneline --since="<week-start>" --grep="Prepare MCP release"# Open branches
git branch -a --list "*azurebackup*"# Changes since last release
git diff <last-release-tag>..upstream/main --stat -- tools/Azure.Mcp.Tools.AzureBackup/
Also count tests on main (checkout upstream/main test files first):
# Runnable unit test count = [Fact] + [InlineData] (each InlineData is a separate test run)$facts = (Select-String "\[Fact\]" tools/Azure.Mcp.Tools.AzureBackup/tests/Azure.Mcp.Tools.AzureBackup.Tests/**/*.cs | Measure-Object).Count
$inlines = (Select-String "\[InlineData" tools/Azure.Mcp.Tools.AzureBackup/tests/Azure.Mcp.Tools.AzureBackup.Tests/**/*.cs | Measure-Object).Count
# Total runnable = $facts + $inlines# Live test count — count only [Fact] (each method has [Fact]; [LiveTestOnly] is an# additional attribute on the same method, so counting both would double-count)
Select-String "\[Fact\]" tools/Azure.Mcp.Tools.AzureBackup/tests/Azure.Mcp.Tools.AzureBackup.Tests/*.cs | Measure-Object
# Registered tools
Select-String "AddCommand" tools/Azure.Mcp.Tools.AzureBackup/src/AzureBackupSetup.cs | Measure-Object
Important: Do NOT count [Fact] + [Theory] as the unit test count — that gives you
method count, not runnable test count. Each [InlineData] on a [Theory] is a separate test.
Step 3: Analyze and Classify
Apply the 3-way error classification:
Category
Exception Types
What It Means
Customer (4xx)
RequestFailedException with 400/403/404, KeyNotFoundException
User error — wrong input, missing permissions, resource doesn't exist
Azure Service
AggregateException, RequestFailedException with 5xx
Azure SDK/API/auth layer failure — tool correctly surfaces it
MCP Tool Bug
FormatException, ArgumentNullException, ArgumentException, InvalidOperationException (thrown by our code for unsupported operations)
Releases Shipped — Table of releases with Azure Backup changes
Per-Tool Health Table — 3-way classification with MCP % column
Error Deep Dive — Analysis of top error patterns
Error Hotspots — Table by HTTP status code and classification
Merged PRs — Cards for each merged PR with bug references
Open PRs — Pending branches
Bug Tracker — Updated status of all known bugs
Codebase Snapshot — Tool count, test counts, lines changed
Action Items — Prioritized next steps
Save the report as azure-backup-telemetry-report-<date>.html (both the styled version and the Outlook-compatible version).
Step 5: Outlook-Compatible Version
For the Outlook version, apply these rules:
All styles inline (no <style> block or CSS classes)
Table-based layout instead of flexbox/grid for KPI boxes
Noborder-radius, gradients, or CSS pseudo-elements
Use cellpadding/cellspacing attributes on tables
Include MSO PixelsPerInch declaration in <head>
Use border-left on table cells for callout boxes (instead of separate div)
Error Classification Decision Tree
Customer Report Queries: For customer identification, tool adoption, client distribution,
and version analysis, refer to kql-customer-queries.md
(queries 14–24). These queries use cross-cluster joins to mabprod1 (P360) and icmdataro.centralus (C360)
for customer name resolution and external/internal classification.
Key rule: Always use P360_CustomerName (not CustomerName) from the P360 table.
The CustomerName field contains generic tenant names (e.g., "Denis" for Prometeia SpA).
Important: MCP bug exception types must be checked before StatusCode.
The HandleException base class maps ArgumentNullException (inherits ArgumentException)
to HTTP 400, which would incorrectly classify MCP bugs as "Customer" errors if StatusCode
is checked first.
Is success == true?
└─ YES → "Success"
└─ NO →
Is ExceptionType FormatException / ArgumentNullException / ArgumentException / InvalidOperationException?
└─ YES → "MCP Tool Bug"
└─ NO →
Is ExceptionType ValidationError?
└─ YES → "Customer (4xx)" (user omitted required options)
Is ExceptionType System.UnauthorizedAccessException?
└─ YES → "Customer (4xx)" (broken credentials / expired token)
Is ExceptionType Azure.Identity.CredentialUnavailableException?
└─ YES → "Customer (4xx)" (auth not configured)
Is StatusCode 400/401/403/404?
└─ YES → "Customer (4xx)"
└─ NO →
Is ExceptionType Azure.RequestFailedException with 5xx?
└─ YES → "Azure Service"
Is ExceptionType System.AggregateException?
└─ YES → "Azure Service"
Otherwise → "Unknown" (investigate)
Known Bug IDs
These are the bugs triaged from the original telemetry analysis (April 2026):
Bug
Tool
Description
Fix PR
Release
BUG-1
backup_status, protecteditem_get
ArgumentNullException on null ResourceType in MapArmResourceTypeToBackupDataSourceType
#2518 (partial), #2621 (defense-in-depth)
beta.7 (partial), pending
BUG-2
protecteditem_protect
VM pre-discovery loop timeout
#2470
beta.6
BUG-3
protectableitem_list, find-unprotected
Workload normalization ArgumentException in ValidateAndParseResourceTypeFilter
#2518 (partial), #2621 (relaxed regex)
beta.7 (partial), pending
BUG-4
soft-delete
Deprecated BackupResourceVaultConfig API
#2518
beta.7
BUG-5
enable-crr
Deprecated BackupResourceConfig API
#2518
beta.7
BUG-6
vault_get
FormatException on subscription name (non-GUID)
#2518
beta.7
BUG-7
protecteditem_protect
DPP vault missing managed identity
#2470
beta.6
BUG-8
recoverypoint_get
Null container in resolution
#2518
beta.7
NEW-1
vault_get
AggregateException — pre-existing auth race (Azure Service, not MCP bug)
Not filed
—
NEW-2
job_get
FormatException in DPP SDK — XmlConvert.ToTimeSpan fails during DataProtectionBackupJobProperties.Deserialize (Azure SDK bug, not MCP code)
Note: PR #2518 title says "Fix 5 telemetry-triaged bugs (BUG-3,4,5,6,8)" but the
actual merged code also includes the BUG-1 fix. However, the #2518 fixes for BUG-1 and
BUG-3 were incomplete — confirmed by telemetry on beta.8/beta.9. PR #2621 adds
defense-in-depth fixes for both. Always verify the diff, not just the title.
When new errors appear, assign the next sequential ID (NEW-2, NEW-3, etc.) and add to this table.