Back to Skiasharp

CI Status Report Schema

.agents/skills/ci-status/references/report-schema.md

4.148.08.8 KB
Original Source

CI Status Report Schema

JSON schema for the CI status report. The AI generates this JSON by combining raw collector data with analysis, then render scripts produce HTML and Markdown reports.

Top-Level Structure

json
{
  "meta": { ... },
  "verdict": { ... },
  "azdoHealth": { ... },
  "chainAnalysis": [ ... ],
  "rootCauses": [ ... ],
  "githubActions": { ... },
  "flakes": [ ... ],
  "releaseRisk": [ ... ],
  "recommendations": [ ... ]
}

meta — Report Metadata

FieldTypeRequiredDescription
datestringYesISO date of the report (YYYY-MM-DD)
timestampstringYesFull ISO timestamp
schemaVersionstringYesAlways "1.0"
windowobjectYesCollection window parameters
window.buildsPerPipelineintegerYesNumber of builds per pipeline checked
window.branchesCountintegerYesNumber of branches checked
branchesarray[string]YesBranch names that were checked

verdict — Executive Summary

FieldTypeRequiredDescription
statusstringYesOne of: "healthy", "degraded", "broken"
emojistringYes"🟢", "🟡", or "🔴"
summarystringYes1-2 sentence summary of overall health

Classification rules:

  • 🟢 healthy — all branches green or only warnings
  • 🟡 degraded — some failures but main is green
  • 🔴 broken — main is red or a release branch is blocked

azdoHealth — Azure DevOps Pipeline Health

json
{
  "branches": [
    {
      "name": "main",
      "risk": "low",
      "pipelines": [
        {
          "name": "SkiaSharp (Public)",
          "definitionId": 4,
          "org": "xamarin/public",
          "latestResult": "succeeded",
          "latestIcon": "✅",
          "passRate": 100.0,
          "runs": [
            {
              "id": 157985,
              "buildNumber": "6.0.0-preview.3.24305.1",
              "result": "succeeded",
              "status": "completed",
              "icon": "✅",
              "startTime": "2026-05-28T10:00:00Z",
              "finishTime": "2026-05-28T11:30:00Z",
              "durationMinutes": 90,
              "sourceVersion": "abc1234",
              "url": "https://dev.azure.com/..."
            }
          ],
          "issues": [ ... ],
          "changes": [ ... ],
          "regression": null
        }
      ]
    }
  ],
  "regressions": [
    {
      "branch": "main",
      "pipeline": "SkiaSharp (Public)",
      "lastGreenId": 157980,
      "lastGreenBuildNumber": "6.0.0-preview.3.24300.1",
      "firstRedId": 157985,
      "firstRedBuildNumber": "6.0.0-preview.3.24305.1",
      "firstRedUrl": "https://...",
      "suspects": [ { "id": "abc1234", "author": "[email protected]", "message": "..." } ]
    }
  ]
}

azdoHealth.branches[].risk

ValueMeaning
"low"All pipelines green
"medium"Some warnings/partial success, no failures
"high"At least one pipeline failed

chainAnalysis — Pipeline Chain Verdicts

Array of chain analysis verdicts. One entry per branch with ≥1 red internal pipeline.

json
{
  "branch": "release/3.119.x",
  "verdict": "cascade",
  "summary": "Tests red independently (Guardian TSA); Native/Managed warnings only — no cascade.",
  "rootPipeline": "SkiaSharp-Tests",
  "cascadedPipelines": []
}
FieldTypeRequiredDescription
branchstringYesBranch name
verdictstringYesOne of: "cascade", "independent", "mixed"
summarystringYesOne-sentence explanation
rootPipelinestringYesEarliest-in-chain failing pipeline
cascadedPipelinesarray[string]YesPipelines that failed due to cascade (not independent)

rootCauses — Clustered Error Analysis

json
{
  "id": "A",
  "title": "SKRuntimeEffectTest hang on Windows .NET Framework",
  "category": "code_regression",
  "severity": "high",
  "footprint": {
    "branches": ["release/3.119.x"],
    "pipelines": ["SkiaSharp (Public)", "SkiaSharp-Tests"]
  },
  "firstSeen": "2026-05-25T10:00:00Z",
  "lastSeen": "2026-05-29T10:00:00Z",
  "sampleError": "Process exited with code -1 (hang timeout)...",
  "buildEvidence": [
    { "id": 157820, "url": "https://..." }
  ]
}
FieldTypeRequiredDescription
idstringYesShort ID (A, B, C...) for cross-referencing
titlestringYesHuman-readable error title
categorystringYesOne of: "code_regression", "flake", "infra_network", "quota_resource", "chain_blockage", "unknown"
severitystringYesOne of: "critical", "high", "medium", "low"
footprint.branchesarray[string]YesAffected branches
footprint.pipelinesarray[string]YesAffected pipelines/workflows
firstSeenstringYesISO timestamp of earliest occurrence in window
lastSeenstringYesISO timestamp of latest occurrence in window
sampleErrorstringYesVerbatim error text (truncated at 500 chars)
buildEvidencearray[object]YesBuild/run IDs + URLs as evidence

githubActions — GitHub Actions Health

json
{
  "workflows": [
    {
      "name": "Docs - Deploy",
      "repo": "mono/SkiaSharp",
      "trigger": "push",
      "scope": "branch",
      "severity": "high",
      "status": "healthy",
      "branches": [
        {
          "name": "main",
          "latestResult": "success",
          "latestIcon": "✅",
          "passRate": 100.0,
          "runs": [ ... ]
        }
      ],
      "failedJobs": []
    }
  ],
  "summary": {
    "total": 18,
    "healthy": 15,
    "failing": 2,
    "stale": 1,
    "highSeverityFailing": 0,
    "mediumSeverityFailing": 1,
    "lowSeverityFailing": 1
  }
}

githubActions.workflows[].status

ValueMeaning
"healthy"Latest run(s) all passed
"failing"Latest run failed
"degraded"Mixed results (some branches pass, some fail)
"stale"No runs in last 7 days
"skipped"Workflow disabled or no trigger events

githubActions.workflows[].severity

ValueImpact
"high"User-facing impact or release process blocked
"medium"Automation degraded, manual workaround exists
"low"Cosmetic/housekeeping

githubActions.workflows[].failedJobs

json
[
  {
    "name": "build-and-deploy",
    "failedSteps": ["Run build", "Deploy to Azure"],
    "runId": 26651087356,
    "runUrl": "https://github.com/mono/SkiaSharp/actions/runs/..."
  }
]

flakes — Flake Detection

json
{
  "branch": "main",
  "pipeline": "SkiaSharp (Public)",
  "pattern": "✅❌✅❌✅",
  "confidence": "high",
  "description": "Alternating pass/fail on NUnit runner timeout"
}
FieldTypeRequiredDescription
branchstringYesBranch where flake observed
pipelinestringYesPipeline or workflow name
patternstringYesVisual pattern of recent results
confidencestringYes"high", "medium", "low"
descriptionstringYesWhat appears to be flaking

releaseRisk — Release Risk Assessment

json
{
  "branch": "release/3.119.x",
  "shippable": false,
  "daysSinceGreen": 7,
  "blockers": ["A"],
  "recommendation": "investigate"
}
FieldTypeRequiredDescription
branchstringYesRelease branch name
shippablebooleanYesCan this be released right now?
daysSinceGreenintegerNoDays since full green chain (null if never green in window)
blockersarray[string]YesRoot cause IDs blocking this release
recommendationstringYesOne of: "ship", "wait", "cherry-pick", "investigate"

recommendations — Top Actions

json
{
  "priority": 1,
  "severity": "high",
  "action": "Fix SKRuntimeEffectTest hang on Windows .NET Framework",
  "reason": "Blocks Public CI and Tests on release/3.119.x (5/5 failures)",
  "target": "release/3.119.x",
  "rootCauseId": "A",
  "buildUrl": "https://..."
}
FieldTypeRequiredDescription
priorityintegerYes1-5, lower is more urgent
severitystringYes"critical", "high", "medium", "low"
actionstringYesImperative sentence: what to do
reasonstringYesWhy this matters
targetstringYesBranch, workflow, or infrastructure affected
rootCauseIdstringNoCross-reference to root cause cluster
buildUrlstringYesLink to relevant build/run

Maximum 5 recommendations, ordered by priority.