{
  "appVersion": "1.6.1",
  "contract": {
    "id": "LogDiagnostic",
    "name": "LogDiagnostic",
    "options": [],
    "fields": [
      {
        "id": "Actions",
        "name": "Actions",
        "type": "IReadOnlyList`1",
        "options": [],
        "defaultValue": null
      },
      {
        "id": "Actions.Kind",
        "name": "Kind",
        "type": "String",
        "options": [],
        "defaultValue": null
      },
      {
        "id": "Actions.Path",
        "name": "Path",
        "type": "String",
        "options": [],
        "defaultValue": null
      },
      {
        "id": "Actions.RunId",
        "name": "RunId",
        "type": "Guid",
        "options": [],
        "defaultValue": null
      },
      {
        "id": "Actions.StepId",
        "name": "StepId",
        "type": "String",
        "options": [],
        "defaultValue": null
      },
      {
        "id": "CauseKey",
        "name": "CauseKey",
        "type": "String",
        "options": [],
        "defaultValue": null
      },
      {
        "id": "Code",
        "name": "Code",
        "type": "String",
        "options": [],
        "defaultValue": null
      },
      {
        "id": "HelpKey",
        "name": "HelpKey",
        "type": "String",
        "options": [],
        "defaultValue": null
      }
    ]
  },
  "explanations": {
    "purpose": "Stabiler Diagnosecode mit lokalisierten Ursachen-/Hilfeschlüsseln und angebotenen Hilfsaktionen. Übersetzte Texte nicht als maschinelle Identitaet verwenden.",
    "example": "Filtere einen konkreten RunId und lese LogPage mit unveraenderter SnapshotSequence bis NextBeforeSequence=null. Ordne danach StepExecutionId, StepSummaries und Laufstatus gemeinsam zu. Der Log-Leitfaden zeigt ein synthetisches Ereignis im echten Serializerformat.",
    "errors": "State, Issues und IsComplete begrenzen die Aussagekraft. Ein leerer beziehungsweise nicht verfuegbarer Bestand ist kein Erfolgsbeleg. Fehlende ExecutionId oder Endzeitpunkte nicht erfinden.",
    "field.Actions": "Angebotene Diagnoseaktionen mit Kind und optional RunId, StepId oder Path. Verweisen auf konkrete Hilfs-/Navigationsziele; sind keine ausgefuehrten Jobs.",
    "field.Actions.Kind": "Art der jeweiligen Diagnose-Hilfsaktion; die optionalen Ziel-IDs und Pfade passend zu dieser Art interpretieren.",
    "field.Actions.Path": "Optionaler strukturierter Pfad einer Diagnoseaktion. Nur im beschriebenen Aktionskontext verwenden; ein vorhandener Pfad beweist weder Existenz noch erfolgreiche Dateioperation.",
    "field.Actions.RunId": "ID genau dieses Laufs. Verknüpft Starts, Steps, Probleme und Abschluss desselben Laufs.",
    "field.Actions.StepId": "Stabile ID des Job-Steps; derselbe Step kann in mehreren Durchläufen ausgeführt werden.",
    "field.CauseKey": "Lokalisierungsschlüssel der Diagnoseursache. Fuer Anzeige aufloesen, für maschinelle Identitaet den stabilen Code verwenden.",
    "field.Code": "Stabiler Diagnosecode, unabhaengig von lokalisierter Ursache und Hilfe. Mit CauseKey, HelpKey und Actions für die Anzeige kombinieren.",
    "field.HelpKey": "Lokalisierungsschlüssel des konkreten Hilfetexts zur Diagnose. Kein freier Skriptbefehl."
  },
  "template": null,
  "screenshots": [],
  "note": "Referenzdaten. Defaultvorlage vor Verwendung vervollständigen und fachlich validieren."
}
