{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://docs.demiton.io/registers/overstaffing_verdict/v1.json",
  "title": "overstaffing_verdict contract v1",
  "type": "object",
  "required": [
    "actual_hours",
    "assessed_at",
    "budget_hours",
    "burn_pct",
    "elapsed_pct",
    "project_ref",
    "run_rate_pct",
    "verdict"
  ],
  "properties": {
    "verdict": {
      "type": "string",
      "description": "The outcome: `OVERSTAFFED`, `ON_TRACK` or `UNDERSTAFFED`. `BUDGET_ONLY` is *not* a stored value — the writer returns without writing (`:410-411`).",
      "x-demiton-requiredness": "required"
    },
    "burn_pct": {
      "type": "number",
      "description": "`actual_hours / budget_hours`.",
      "x-demiton-requiredness": "required",
      "x-demiton-unit": "ratio (0–1+)"
    },
    "confidence": {
      "type": "number",
      "description": "Producer confidence in the judgement.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "0–1"
    },
    "source_uri": {
      "type": "string",
      "description": "Canonical URI of the verdict fact (`demiton://project/{code}/overstaffing-verdict`).",
      "x-demiton-requiredness": "optional"
    },
    "assessed_at": {
      "type": "string",
      "description": "When the judgement was taken.",
      "x-demiton-requiredness": "required",
      "x-demiton-unit": "UTC",
      "format": "date-time",
      "x-demiton-type": "datetime"
    },
    "elapsed_pct": {
      "type": "number",
      "description": "Fraction of project duration elapsed at assessment time.",
      "x-demiton-requiredness": "required",
      "x-demiton-unit": "fraction (0–1)"
    },
    "project_ref": {
      "type": "string",
      "description": "The Demiton project the verdict is about (the `project_code` the writer already keys on).",
      "x-demiton-requiredness": "required"
    },
    "source_file": {
      "type": "string",
      "description": "Name of the resource-schedule workbook the budget side came from.",
      "x-demiton-requiredness": "optional"
    },
    "actual_hours": {
      "type": "number",
      "description": "Labour hours actually charged to the project at assessment time.",
      "x-demiton-requiredness": "required",
      "x-demiton-unit": "hours"
    },
    "budget_hours": {
      "type": "number",
      "description": "Tendered labour hours the actual is measured against (parsed schedule total or override).",
      "x-demiton-requiredness": "required",
      "x-demiton-unit": "hours"
    },
    "run_rate_pct": {
      "type": "number",
      "description": "`burn_pct / elapsed_pct` — headcount run-rate against expected pace; the value the verdict thresholds are applied to.",
      "x-demiton-requiredness": "required",
      "x-demiton-unit": "ratio"
    },
    "verdict_thresholds": {
      "type": "object",
      "description": "The `overstaffed_at` / `understaffed_at` cut-offs used for this assessment.",
      "x-demiton-requiredness": "tenant-specific"
    }
  },
  "x-demiton-register-type": "overstaffing_verdict",
  "x-demiton-contract-version": "1.0.2",
  "x-demiton-store": "tenant",
  "x-demiton-axes": [],
  "x-demiton-measures": [],
  "x-demiton-provenance": {
    "standards": [
      {
        "code": "ISO 30414:2025",
        "title": "Human resource management - Requirements and recommendations for human capital reporting and disclosure",
        "access": "paywalled_secondary",
        "region": "International",
        "edition": "2025 (2nd ed.; 2018 1st ed. cancelled)",
        "checked_on": "2026-09-14"
      }
    ]
  },
  "description": "Whether a project's actual crew exceeds its tendered labour schedule.",
  "x-demiton-contract-url": "https://docs.demiton.io/registers/overstaffing_verdict/",
  "x-demiton-register-catalog": "https://docs.demiton.io/concepts/register-catalog"
}