Problem metadata reference Stable
Each problem in a pack carries a metadata.json. The fields below are normative
reference derived from the ProblemMetadata contract and the
validateProblemMetadata validator in @tenkacloud/problem-sdk. The SDK owns the
id, runtime, and scoring fields and is forward-compatible with extra
catalog-display fields it does not interpret.
Fields
| Field | Type | Presence | Description |
|---|---|---|---|
id | string | Required | Stable, non-empty problem identifier. Validated by the SDK. |
runtime | object | composite | Optional | Runtime descriptor ({ provider, engine, entry }) or a composite { kind: 'composite', targets }. Defaults to aws/cloudformation when absent. |
cfnTemplate | string | Optional | Legacy single deploy-body filename. Defaults to 'template.yaml' when neither runtime.entry nor cfnTemplate is set. |
scoring | ProblemScoringMetadata | Optional | One of the six built-in scoring kinds (flag, multi-flag, uptime-flat, uptime-multi, phased-polling, attack-detection) plus composite-probe. |
endpoints | unknown | Optional | Optional endpoint declarations validated by the metadata-section validators. |
phases | unknown | Optional | Optional phase declarations for phased-polling problems. |
disruptions | unknown | Optional | Optional disruption declarations for resilience problems. |
Runtime declaration
A problem's runtime is either a single { provider, engine, entry } descriptor or
a composite { kind: "composite", targets }. A composite runtime requires between
2 and 8 targets. The recognized provider/engine pairs are listed in the
runtime capability matrix.
Example
The example below is illustrative, not normative.
{
"id": "com.example.starter.intro",
"runtime": { "provider": "aws", "engine": "cloudformation", "entry": "template.yaml" },
"scoring": { "kind": "flag", "flagOutputKey": "Flag", "points": 100 }
}
Related: pack manifest reference and the validation error reference.