# Episode 9 - Local Test Results
_Generated: 2026-05-10 23:42:39_

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

## Summary: OK - 9 pass / 0 fail / 0 skip / 9 total

| Test | Result | Time | Detail |
|------|--------|------|--------|
| P1: lc_statusupdate has Sentinel write shape | PASS | 3564ms | all required columns present (~39 attributes total) |
| P2: lc_task.lc_isblocked column exists | PASS | 334ms | AttributeType=Boolean |
| P3: CustomAPI lc_CalculateLaunchReadiness exists | PASS | 361ms | id=ec5ae21a-d742-f111-bec6-000d3a336093 |
| P4: Sentinel prompt has severity rubric | PASS | 0ms | all 4 severity headings present (7458 chars) |
| P5: Sentinel prompt has idempotency markers | PASS | 0ms | Source / Correlation / GeneratedByAutomation all present |
| P6: Severity rubric matches escalation-policy.md | PASS | 0ms | thresholds aligned: [2, 7, 14]; autonomous-mode section present |
| P7: Sentinel prompt loads skills via describe() (skills-as-brain) | PASS | 0ms | both describe() lines present; digest skill contains SQL + Teams target |
| S1: Active launches OData query returns rows | PASS | 320ms | 1 active launch(es): Q3 Widget Launch |
| S2: lc_CalculateLaunchReadiness invoke smoke | PASS | 700ms | Q3 Widget Launch -> Score=38.8, Verdict=NO-GO |

## Details

### P1: lc_statusupdate has Sentinel write shape
- Result: PASS
- Time: 3564ms
- Notes: all required columns present (~39 attributes total)

### P2: lc_task.lc_isblocked column exists
- Result: PASS
- Time: 334ms
- Notes: AttributeType=Boolean

### P3: CustomAPI lc_CalculateLaunchReadiness exists
- Result: PASS
- Time: 361ms
- Notes: id=ec5ae21a-d742-f111-bec6-000d3a336093

```json
{
  "@odata.etag": "W/\"7998410\"",
  "displayname": "Calculate Launch Readiness",
  "uniquename": "lc_CalculateLaunchReadiness",
  "customapiid": "ec5ae21a-d742-f111-bec6-000d3a336093"
}
```

### P4: Sentinel prompt has severity rubric
- Result: PASS
- Time: 0ms
- Notes: all 4 severity headings present (7458 chars)

### P5: Sentinel prompt has idempotency markers
- Result: PASS
- Time: 0ms
- Notes: Source / Correlation / GeneratedByAutomation all present

### P6: Severity rubric matches escalation-policy.md
- Result: PASS
- Time: 0ms
- Notes: thresholds aligned: [2, 7, 14]; autonomous-mode section present

### P7: Sentinel prompt loads skills via describe() (skills-as-brain)
- Result: PASS
- Time: 0ms
- Notes: both describe() lines present; digest skill contains SQL + Teams target

### S1: Active launches OData query returns rows
- Result: PASS
- Time: 320ms
- Notes: 1 active launch(es): Q3 Widget Launch

```json
[
  {
    "@odata.etag": "W/\"6955195\"",
    "lc_name": "Q3 Widget Launch",
    "lc_targetdate": "2026-09-15T00:00:00Z",
    "lc_launchstatus": 10600002,
    "lc_launchid": "2100057d-ad42-f111-bec6-000d3a336093"
  }
]
```

### S2: lc_CalculateLaunchReadiness invoke smoke
- Result: PASS
- Time: 700ms
- Notes: Q3 Widget Launch -> Score=38.8, Verdict=NO-GO

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