{
  "$defs": {
    "ActionItem": {
      "description": "Action item.",
      "properties": {
        "completed": {
          "type": "boolean"
        },
        "completed_on": {
          "anyOf": [
            {
              "$ref": "#/$defs/IsoDate"
            },
            {
              "type": "null"
            }
          ]
        },
        "description": {
          "type": "string"
        },
        "due_date": {
          "$ref": "#/$defs/IsoDate"
        },
        "id": {
          "type": "string"
        },
        "owner": {
          "$ref": "#/$defs/PathRef"
        }
      },
      "required": [
        "id",
        "description",
        "owner",
        "due_date",
        "completed"
      ],
      "type": "object"
    },
    "AttendanceRole": {
      "description": "Attendance role.",
      "oneOf": [
        {
          "enum": [
            "chair",
            "director",
            "officer",
            "shareholder",
            "observer",
            "secretary"
          ],
          "type": "string"
        },
        {
          "const": "voting_member",
          "description": "Voting member (committee).",
          "type": "string"
        },
        {
          "const": "advisor",
          "description": "External advisor (legal counsel, auditor, banker).",
          "type": "string"
        },
        {
          "const": "guest",
          "description": "Guest / presenter.",
          "type": "string"
        }
      ]
    },
    "Attendee": {
      "description": "Attendee.",
      "properties": {
        "attended": {
          "description": "Whether they attended (false ⇒ absent / proxy).",
          "type": "boolean"
        },
        "person": {
          "$ref": "#/$defs/PathRef"
        },
        "role": {
          "$ref": "#/$defs/AttendanceRole"
        },
        "voting_units": {
          "description": "Voting weight (units / shares represented).",
          "format": "double",
          "type": [
            "number",
            "null"
          ]
        }
      },
      "required": [
        "person",
        "role",
        "attended"
      ],
      "type": "object"
    },
    "Confidentiality": {
      "description": "Cross-cutting confidentiality classification used across privacy,\nsecurity, knowledge, IR pillars. Default rendering rule: `corpospec-report`\nexcludes `Restricted | BoardOnly | InvestorOnly` records from public output\nunless an explicit audience parameter overrides. See BDR 0076 §1.",
      "oneOf": [
        {
          "const": "public",
          "description": "Safe to publish anywhere.",
          "type": "string"
        },
        {
          "const": "customer",
          "description": "Visible to customers under standard ToS.",
          "type": "string"
        },
        {
          "const": "internal",
          "description": "Employees and contractors only.",
          "type": "string"
        },
        {
          "const": "restricted",
          "description": "Need-to-know subset of internal.",
          "type": "string"
        },
        {
          "const": "board_only",
          "description": "Board members and direct staff.",
          "type": "string"
        },
        {
          "const": "investor_only",
          "description": "Existing investors + prospective with NDA.",
          "type": "string"
        }
      ]
    },
    "IsoDate": {
      "description": "ISO 8601 date (YYYY-MM-DD).",
      "format": "date",
      "type": "string"
    },
    "MeetingFormat": {
      "description": "Meeting format.",
      "oneOf": [
        {
          "enum": [
            "inperson",
            "remote",
            "hybrid"
          ],
          "type": "string"
        },
        {
          "const": "written_consent",
          "description": "Written consent in lieu of meeting (Umlaufverfahren / DGCL §141(f)).",
          "type": "string"
        }
      ]
    },
    "MeetingKind": {
      "description": "Meeting kind.",
      "oneOf": [
        {
          "const": "shareholder",
          "description": "Shareholder / general assembly (Gesellschafterversammlung).",
          "type": "string"
        },
        {
          "const": "board",
          "description": "Board of directors / Aufsichtsrat.",
          "type": "string"
        },
        {
          "const": "audit_committee",
          "description": "Audit committee.",
          "type": "string"
        },
        {
          "const": "compensation_committee",
          "description": "Compensation committee.",
          "type": "string"
        },
        {
          "const": "nominating_committee",
          "description": "Nominating / governance committee.",
          "type": "string"
        },
        {
          "const": "risk_committee",
          "description": "Risk / compliance committee.",
          "type": "string"
        },
        {
          "const": "leadership",
          "description": "Management leadership team.",
          "type": "string"
        },
        {
          "const": "town_hall",
          "description": "All-hands / town-hall.",
          "type": "string"
        },
        {
          "const": "works_council",
          "description": "Works-council meeting (Betriebsversammlung).",
          "type": "string"
        },
        {
          "const": "special",
          "description": "Special / ad-hoc.",
          "type": "string"
        }
      ]
    },
    "MeetingResolution": {
      "description": "One resolution / decision recorded at the meeting.",
      "properties": {
        "abstentions": {
          "format": "double",
          "type": "number"
        },
        "bdr_ref": {
          "anyOf": [
            {
              "$ref": "#/$defs/PathRef"
            },
            {
              "type": "null"
            }
          ],
          "description": "PathRef to the BDR that documents this decision (if any)."
        },
        "id": {
          "description": "Internal short id.",
          "type": "string"
        },
        "motion": {
          "type": "string"
        },
        "outcome": {
          "$ref": "#/$defs/MeetingResolutionOutcome"
        },
        "votes_against": {
          "format": "double",
          "type": "number"
        },
        "votes_for": {
          "format": "double",
          "type": "number"
        }
      },
      "required": [
        "id",
        "motion",
        "outcome",
        "votes_for",
        "votes_against",
        "abstentions"
      ],
      "type": "object"
    },
    "MeetingResolutionOutcome": {
      "description": "Outcome of a motion voted on at a meeting.\n\nDistinct from [`crate::governance::ResolutionOutcome`], which records the\noutcome of a formal corporate resolution item (`approved`/`rejected`).\nA meeting motion is `passed`/`failed` by vote tally.",
      "enum": [
        "passed",
        "failed",
        "withdrawn",
        "deferred"
      ],
      "type": "string"
    },
    "PathRef": {
      "description": "Path-based cross-reference relative to .corpospec/ root.\nPattern: `^[a-z0-9_-]+(/[a-z0-9_.-]+)+$`",
      "pattern": "^[a-z0-9_-]+(/[a-z0-9_.-]+)+$",
      "type": "string"
    }
  },
  "$id": "https://corpospec.com/schemas/v0.16.0/meeting-record.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "description": "Meeting record.",
  "properties": {
    "action_items": {
      "items": {
        "$ref": "#/$defs/ActionItem"
      },
      "type": "array"
    },
    "agenda": {
      "description": "Agenda items (titles only).",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "attendees": {
      "items": {
        "$ref": "#/$defs/Attendee"
      },
      "type": "array"
    },
    "chair": {
      "$ref": "#/$defs/PathRef",
      "description": "PathRef to the chair."
    },
    "confidentiality": {
      "$ref": "#/$defs/Confidentiality"
    },
    "duration_minutes": {
      "description": "Duration in minutes.",
      "format": "int32",
      "type": "integer"
    },
    "entity": {
      "$ref": "#/$defs/PathRef"
    },
    "format": {
      "$ref": "#/$defs/MeetingFormat"
    },
    "held_on": {
      "$ref": "#/$defs/IsoDate"
    },
    "id": {
      "$ref": "#/$defs/PathRef"
    },
    "kind": {
      "$ref": "#/$defs/MeetingKind"
    },
    "minutes_approved_on": {
      "anyOf": [
        {
          "$ref": "#/$defs/IsoDate"
        },
        {
          "type": "null"
        }
      ],
      "description": "Approved by attendees on this date."
    },
    "minutes_ref": {
      "anyOf": [
        {
          "$ref": "#/$defs/PathRef"
        },
        {
          "type": "null"
        }
      ],
      "description": "PathRef to detailed minutes artefact."
    },
    "recording_ref": {
      "anyOf": [
        {
          "$ref": "#/$defs/PathRef"
        },
        {
          "type": "null"
        }
      ],
      "description": "PathRef to AV recording (if any)."
    },
    "resolutions": {
      "items": {
        "$ref": "#/$defs/MeetingResolution"
      },
      "type": "array"
    },
    "retention_until": {
      "$ref": "#/$defs/IsoDate"
    },
    "secretary": {
      "anyOf": [
        {
          "$ref": "#/$defs/PathRef"
        },
        {
          "type": "null"
        }
      ],
      "description": "PathRef to the secretary / scribe."
    },
    "title": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "entity",
    "kind",
    "format",
    "title",
    "held_on",
    "duration_minutes",
    "chair",
    "attendees",
    "agenda",
    "resolutions",
    "action_items",
    "retention_until",
    "confidentiality"
  ],
  "title": "MeetingRecord",
  "type": "object",
  "x-corpospec-pillar": "knowledge"
}