{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://thenextgenerationbanking.com/schemas/agent-usage.v1.json",
  "title": "FinCoach AI · Module Agent-Usage Manifest v1",
  "description": "Maschinen-lesbares Audit-Log der Qualitätsagenten pro Modul-Build. Pflicht-Schema laut CLAUDE.md ab 2026-06-08. Wird als <script type=\"application/json\" id=\"module-agents-used\"> in jedem Modul-HTML eingebettet UND vom Compliance-Guardian validiert.",
  "type": "object",
  "required": ["module_id", "build_id", "build_timestamp", "stichtag", "agents_used"],
  "properties": {
    "module_id": {
      "type": "string",
      "pattern": "^M\\d{3,4}$|^[a-z-]+$",
      "description": "Modul-ID (z. B. M307) oder slug bei Nicht-Standard-Modulen"
    },
    "build_id": {
      "type": "string",
      "description": "Eindeutige Build-ID (z. B. M307-v1.2-2026-06-08)"
    },
    "build_timestamp": {
      "type": "string",
      "format": "date-time",
      "description": "ISO-8601-Timestamp des Builds"
    },
    "stichtag": {
      "type": "string",
      "format": "date",
      "description": "Stichtag für die Daten dieses Builds (CLAUDE.md DATUM-PFLICHT)"
    },
    "agents_used": {
      "type": "array",
      "minItems": 1,
      "description": "Liste aller Agenten, die diesen Build geprüft haben",
      "items": {
        "type": "object",
        "required": ["id", "status"],
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "fincoach-interdisciplinary-council",
              "fincoach-wikipedia-synthesis",
              "fincoach-module-provenance",
              "fincoach-module-compliance-guardian",
              "fincoach-module-deepdive",
              "fincoach-news-feed",
              "fincoach-yahoo-finance",
              "fincoach-world-governance",
              "fincoach-index-history",
              "fincoach-entity-network-cartographer",
              "fincoach-site-publisher",
              "fincoach-global-problems-atlas"
            ]
          },
          "status": {
            "type": "string",
            "enum": ["passed", "passed-with-warnings", "failed", "skipped", "pending"]
          },
          "timestamp": { "type": "string", "format": "date-time" },
          "output": {
            "type": "string",
            "description": "Pfad zur produzierten Output-Datei (relativ zum Projekt-Root)"
          },
          "version": {
            "type": "string",
            "description": "Version des Agents zum Zeitpunkt des Builds"
          },
          "stats": {
            "type": "object",
            "description": "Agent-spezifische Statistiken (Schema variiert)",
            "additionalProperties": true
          },
          "warnings": {
            "type": "array",
            "items": { "type": "string" },
            "description": "Liste der Warn-Findings (Pflicht wenn status=passed-with-warnings)"
          },
          "errors": {
            "type": "array",
            "items": { "type": "string" },
            "description": "Liste der kritischen Fehler (Pflicht wenn status=failed)"
          }
        },
        "allOf": [
          {
            "if": { "properties": { "status": { "const": "passed-with-warnings" } } },
            "then": { "required": ["warnings"] }
          },
          {
            "if": { "properties": { "status": { "const": "failed" } } },
            "then": { "required": ["errors"] }
          }
        ]
      }
    },
    "agents_skipped": {
      "type": "array",
      "description": "Bewusst nicht aufgerufene Agenten mit Begründung",
      "items": {
        "type": "object",
        "required": ["id", "reason"],
        "properties": {
          "id": { "type": "string" },
          "reason": {
            "type": "string",
            "minLength": 10,
            "description": "Mindestens 10 Zeichen Begründung (verhindert leere 'n/a' Stub-Einträge)"
          }
        }
      }
    },
    "open_issues": {
      "type": "array",
      "description": "Offene Punkte aus pending-Status oder methodische Schwächen",
      "items": {
        "type": "object",
        "required": ["title"],
        "properties": {
          "title": { "type": "string" },
          "agent": { "type": "string" },
          "deadline": { "type": "string", "format": "date" },
          "priority": { "type": "string", "enum": ["low", "medium", "high"] }
        }
      }
    },
    "agents_complete": {
      "type": "boolean",
      "description": "Wird vom Compliance-Guardian gesetzt: true wenn alle Pflicht-Agenten Status passed/passed-with-warnings haben"
    }
  },
  "$mandatoryAgents": {
    "description": "Wird vom Compliance-Guardian gegen Modul-Typ geprüft (informativ, nicht Teil der JSON-Validierung)",
    "tiefenmodul": ["fincoach-interdisciplinary-council", "fincoach-wikipedia-synthesis", "fincoach-module-provenance", "fincoach-module-compliance-guardian"],
    "datenpflege": ["fincoach-module-provenance", "fincoach-module-compliance-guardian"],
    "atlas-erweiterung": ["fincoach-world-governance", "fincoach-module-compliance-guardian"]
  }
}
