# Episode 5 — Local Test Results
_Generated: 2026-05-29 11:49:23_

**Environment:** `https://org40ae6a46.crm.dynamics.com`

## Summary: ✅ 8/8 passing

| # | Test | Result | Time | Detail |
|---|------|--------|------|--------|
| | P1: CustomAPI lc_CalculateLaunchReadiness exists | ✅ | 6271ms | id=eab5c01a-7d5b-f111-bec7-000d3a5a5a08 |
| | P2: CustomAPI is in LaunchControl solution | ✅ | 600ms | componenttype=10038, solution=a8265c45-d14e-f111-bec6-00224802be5b |
| | P3: BYO MCP custom connectors present (>=2) | ✅ | 234ms | found 2: new_launch-20control-20-2D-20learn-20mcp, new_launch-20control-20-2D-20github-20mcp |
| | P4: CustomAPI lc_CalculateLaunchReadinessFx exists (Power Fx twin) | ✅ | 517ms | id=dee62557-8e5b-f111-bec7-000d3a5a5d72 |
| | T1: Smoke test — invoke for Q3 Widget Launch | ✅ | 302ms | Score=20, Verdict=CONDITIONAL |
| | T2: Verdict matrix — every launch in env | ✅ | 834ms | 1 launches scored consistently |
| | T3: Learn MCP server responds to initialize + tools/list | ✅ | 542ms | server=Microsoft Learn MCP Server exposes 3 tool(s) |
| | T4: Fx twin — lc_CalculateLaunchReadinessFx returns the contract | ✅ | 796ms | Score=100, Verdict=GO |

## Details

### P1: CustomAPI lc_CalculateLaunchReadiness exists
- Result: PASS
- Time: 6271ms
- Notes: id=eab5c01a-7d5b-f111-bec7-000d3a5a5a08

```json
{
  "@odata.etag": "W/\"10031416\"",
  "displayname": "Calculate Launch Readiness",
  "uniquename": "lc_CalculateLaunchReadiness",
  "customapiid": "eab5c01a-7d5b-f111-bec7-000d3a5a5a08"
}
```

### P2: CustomAPI is in LaunchControl solution
- Result: PASS
- Time: 600ms
- Notes: componenttype=10038, solution=a8265c45-d14e-f111-bec6-00224802be5b

### P3: BYO MCP custom connectors present (>=2)
- Result: PASS
- Time: 234ms
- Notes: found 2: new_launch-20control-20-2D-20learn-20mcp, new_launch-20control-20-2D-20github-20mcp

```json
[
  {
    "@odata.etag": "W/\"10031673\"",
    "connectorinternalid": "shared_new-5flaunch-20control-20-2d-20learn-20mcp-5f71a37560d06ee4cc",
    "connectorid": "b47e51fe-7e5b-f111-bec7-000d3a5a5a08",
    "name": "new_launch-20control-20-2D-20learn-20mcp",
    "createdon": "2026-05-29T16:54:02Z"
  },
  {
    "@odata.etag": "W/\"10031686\"",
    "connectorinternalid": "shared_new-5flaunch-20control-20-2d-20github-20mcp-5f71a37560d06ee4cc",
    "connectorid": "4aa5aa10-7f5b-f111-bec7-000d3a5a5baf",
    "name": "new_launch-20control-20-2D-20github-20mcp",
    "createdon": "2026-05-29T16:54:40Z"
  }
]
```

### P4: CustomAPI lc_CalculateLaunchReadinessFx exists (Power Fx twin)
- Result: PASS
- Time: 517ms
- Notes: id=dee62557-8e5b-f111-bec7-000d3a5a5d72

```json
{
  "@odata.etag": "W/\"10032900\"",
  "uniquename": "lc_calculatelaunchreadinessfx",
  "customapiid": "dee62557-8e5b-f111-bec7-000d3a5a5d72",
  "name": "Calculate Launch Readiness (Power Fx twin)"
}
```

### T1: Smoke test — invoke for Q3 Widget Launch
- Result: PASS
- Time: 302ms
- Notes: Score=20, Verdict=CONDITIONAL

```json
{
  "request": {
    "lc_LaunchName": "Q3 Widget Launch"
  },
  "response": {
    "@odata.context": "https://org40ae6a46.crm.dynamics.com/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.lc_CalculateLaunchReadinessResponse",
    "lc_ReadinessScore": 20,
    "lc_ReadinessSummary": "Launch: Q3 Widget Launch\nMilestones evaluated: 16\n\n- [NOT STARTED ] Achieve 99.9% widget API SLA (20/100)\n- [NOT STARTED ] Customer telemetry pipeline (2026Q3) (20/100)\n- [NOT STARTED ] Onboard 50 paying customers in beta (20/100)\n- [NOT STARTED ] Reduce widget P95 latency below 200ms (20/100)\n- [NOT STARTED ] Smart Widget Pro GA (20/100)\n- [NOT STARTED ] Smart Widget Pro v1.0 release (2026Q3) (20/100)\n- [NOT STARTED ] Widget admin portal v2 (2026Q3) (20/100)\n- [NOT STARTED ] Widget mobile SDK alpha (2026Q3) (20/100)\n- [NOT STARTED ] Beta program offboarding (2026Q4) (20/100)\n- [NOT STARTED ] Complete SOC2 Type II for widgets (20/100)\n- [NOT STARTED ] EMEA datacenter rollout (2026Q4) (20/100)\n- [NOT STARTED ] Establish widget partner program (20/100)\n- [NOT STARTED ] Localize widgets for EMEA (20/100)\n- [NOT STARTED ] Multi-region failover rollout (2026Q4) (20/100)\n- [NOT STARTED ] Sunset legacy widget v1 API (20/100)\n- [NOT STARTED ] Widget v1 API deprecation (2027Q1) (20/100)\n\nReadiness Score: 20/100\nVerdict: CONDITIONAL",
    "lc_Verdict": "CONDITIONAL"
  }
}
```

### T2: Verdict matrix — every launch in env
- Result: PASS
- Time: 834ms
- Notes: 1 launches scored consistently

### T3: Learn MCP server responds to initialize + tools/list
- Result: PASS
- Time: 542ms
- Notes: server=Microsoft Learn MCP Server exposes 3 tool(s)

```json
{
  "server": "Microsoft Learn MCP Server",
  "tools_count": 3,
  "tool_names": [
    "microsoft_docs_search",
    "microsoft_code_sample_search",
    "microsoft_docs_fetch"
  ]
}
```

### T4: Fx twin — lc_CalculateLaunchReadinessFx returns the contract
- Result: PASS
- Time: 796ms
- Notes: Score=100, Verdict=GO

```json
{
  "fx": {
    "@odata.context": "https://org40ae6a46.crm.dynamics.com/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.lc_calculatelaunchreadinessfxResponse",
    "lc_ReadinessScore": 100,
    "lc_ReadinessSummary": "Q3 Widget Launch: 16 milestone(s); Redmond is 51F (feels 55F)",
    "lc_Verdict": "GO"
  },
  "plugin_baseline": {
    "@odata.context": "https://org40ae6a46.crm.dynamics.com/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.lc_CalculateLaunchReadinessResponse",
    "lc_ReadinessScore": 20,
    "lc_ReadinessSummary": "Launch: Q3 Widget Launch\nMilestones evaluated: 16\n\n- [NOT STARTED ] Achieve 99.9% widget API SLA (20/100)\n- [NOT STARTED ] Customer telemetry pipeline (2026Q3) (20/100)\n- [NOT STARTED ] Onboard 50 paying customers in beta (20/100)\n- [NOT STARTED ] Reduce widget P95 latency below 200ms (20/100)\n- [NOT STARTED ] Smart Widget Pro GA (20/100)\n- [NOT STARTED ] Smart Widget Pro v1.0 release (2026Q3) (20/100)\n- [NOT STARTED ] Widget admin portal v2 (2026Q3) (20/100)\n- [NOT STARTED ] Widget mobile SDK alpha (2026Q3) (20/100)\n- [NOT STARTED ] Beta program offboarding (2026Q4) (20/100)\n- [NOT STARTED ] Complete SOC2 Type II for widgets (20/100)\n- [NOT STARTED ] EMEA datacenter rollout (2026Q4) (20/100)\n- [NOT STARTED ] Establish widget partner program (20/100)\n- [NOT STARTED ] Localize widgets for EMEA (20/100)\n- [NOT STARTED ] Multi-region failover rollout (2026Q4) (20/100)\n- [NOT STARTED ] Sunset legacy widget v1 API (20/100)\n- [NOT STARTED ] Widget v1 API deprecation (2027Q1) (20/100)\n\nReadiness Score: 20/100\nVerdict: CONDITIONAL",
    "lc_Verdict": "CONDITIONAL"
  }
}
```
