{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://docs.demiton.io/registers/site_diary/v1.json",
  "title": "site_diary contract v1",
  "type": "object",
  "required": [
    "content",
    "external_id",
    "occurred_on"
  ],
  "properties": {
    "asset": {
      "type": "integer",
      "description": "The plant or vehicle the diary records. Declared an INTEGER because Assignar's asset_id is numeric where it is populated at all."
    },
    "tasks": {
      "type": "array",
      "description": "The task(s) selected for the day.",
      "items": {
        "type": "string"
      }
    },
    "delays": {
      "type": "array",
      "description": "Delay reasons and their stated duration.",
      "items": {
        "type": "object",
        "properties": {
          "comment": {
            "type": "string"
          },
          "duration": {
            "type": "string"
          }
        }
      }
    },
    "worker": {
      "type": "integer",
      "description": "The worker who authored / is the subject of the diary. Declared an INTEGER because Assignar's worker_id is numeric."
    },
    "content": {
      "type": "string",
      "description": "The composed Q&A narrative - the semantic-search payload."
    },
    "project": {
      "type": "integer",
      "description": "The project the diary scopes. Optional because many live diaries carry no linked project. Declared an INTEGER because Assignar's project_id is numeric where populated."
    },
    "weather": {
      "type": "string",
      "description": "Site weather conditions for the day."
    },
    "progress": {
      "type": "string",
      "description": "What progressed, and where the crew worked."
    },
    "headcount": {
      "type": "integer",
      "description": "Number of people on site for the day."
    },
    "external_id": {
      "type": "integer",
      "description": "The source system's own identifier for this diary record; substrate source identity and idempotency key. Declared an INTEGER because that is what the source carries - the identity is a string concept but the adapter does not render it as one."
    },
    "hired_plant": {
      "type": "string",
      "description": "Hired plant/equipment on site for the day."
    },
    "occurred_on": {
      "type": "string",
      "description": "The diary's project-day (ISO 8601 date), distinct from when it was filed. One diary is one project-day.",
      "format": "date",
      "x-demiton-type": "date"
    },
    "legal_entity": {
      "type": "string",
      "description": "The contracting entity the diary belongs to."
    },
    "submitted_at": {
      "type": "string",
      "description": "When the form was submitted, distinct from the diary day.",
      "format": "date-time",
      "x-demiton-type": "datetime"
    },
    "subcontractor": {
      "type": "string",
      "description": "Subcontractor present on site."
    },
    "financial_period": {
      "type": "string",
      "description": "The claim/accounting period the diary day falls in.",
      "pattern": "^\\d{4}-(0[1-9]|1[0-2])$"
    },
    "form_template_id": {
      "type": "integer",
      "description": "Which form template produced the row. Declared an INTEGER because Assignar's form_id is numeric."
    },
    "odometer_reading": {
      "type": "number",
      "description": "Vehicle odometer at the diary. Unit unverified (km vs miles)."
    },
    "tenant_questions": {
      "type": "object",
      "description": "The tenant's own form questions, keyed by the slugified question label. Tenant-specific by construction - the same question does not exist for another tenant."
    },
    "incident_reported": {
      "type": "boolean",
      "description": "Whether an incident report was submitted for this day. The diary is evidence, not the incident record."
    },
    "source_modified_at": {
      "type": "string",
      "description": "Last modification at source; the incremental harvest cursor.",
      "format": "date-time",
      "x-demiton-type": "datetime"
    },
    "estimated_completion_date": {
      "type": "string",
      "description": "Forecast completion for the linked project.",
      "format": "date",
      "x-demiton-type": "date"
    }
  },
  "x-demiton-register-type": "site_diary",
  "x-demiton-contract-version": "1.0.2",
  "x-demiton-store": "tenant",
  "x-demiton-axes": [
    {
      "axis": "project",
      "requirement": "optional",
      "role": "subject"
    },
    {
      "axis": "asset",
      "requirement": "optional",
      "role": "subject"
    },
    {
      "axis": "legal_entity",
      "requirement": "optional",
      "role": "context"
    },
    {
      "axis": "financial_period",
      "requirement": "required",
      "role": "context"
    }
  ],
  "x-demiton-measures": [],
  "x-demiton-provenance": {
    "standards": [
      {
        "code": "AS 3798-2007",
        "title": "Guidelines on earthworks for commercial and residential developments",
        "access": "public_summary",
        "clause": "3.5 Site records; Appendix B",
        "region": "Australia",
        "edition": "2007 incl. Amd 1:2008",
        "checked_on": "2026-09-14"
      },
      {
        "code": "AS 4000:2025",
        "title": "General Conditions of Contract (construct only)",
        "access": "paywalled_secondary",
        "region": "Australia",
        "edition": "2025",
        "checked_on": "2026-09-14"
      },
      {
        "code": "AS/NZS ISO 45001:2018",
        "title": "Occupational health and safety management systems",
        "access": "paywalled_secondary",
        "clause": "7.5",
        "region": "Australia",
        "edition": "2018 incl. Amd 1:2024",
        "checked_on": "2026-09-14"
      },
      {
        "code": "AS/NZS ISO 9001:2016",
        "title": "Quality management systems - Requirements",
        "access": "paywalled_secondary",
        "clause": "7.5",
        "region": "Australia",
        "edition": "2016 (adopts ISO 9001:2015)",
        "checked_on": "2026-09-14"
      },
      {
        "code": "Fair Work Act 2009 (Cth)",
        "title": "Fair Work Act 2009",
        "access": "full_text_verified",
        "clause": "s 535",
        "region": "Australia",
        "edition": "compilation 2026-07-07",
        "checked_on": "2026-09-14"
      },
      {
        "code": "Work Health and Safety Act 2011 (Cth)",
        "title": "Model WHS Act Part 3 - notifiable incidents",
        "access": "public_summary",
        "clause": "ss 35-39",
        "region": "Australia",
        "edition": "2011 (as enacted in each harmonised jurisdiction)",
        "checked_on": "2026-09-14"
      },
      {
        "code": "ISO 45001:2018",
        "title": "Occupational health and safety management systems",
        "access": "paywalled_secondary",
        "clause": "7.5",
        "region": "International",
        "edition": "2018 incl. Amd 1:2024",
        "checked_on": "2026-09-14"
      },
      {
        "code": "ISO 9001:2015",
        "title": "Quality management systems - Requirements",
        "access": "paywalled_secondary",
        "clause": "7.5",
        "region": "International",
        "edition": "2015 (ISO 9001:2026 successor expected; unverified)",
        "checked_on": "2026-09-14"
      },
      {
        "code": "Health and Safety at Work Act 2015 (NZ)",
        "title": "HSWA 2015 - records of notifiable events",
        "access": "public_summary",
        "region": "New Zealand",
        "edition": "as amended",
        "checked_on": "2026-09-14"
      },
      {
        "code": "29 CFR Part 1904",
        "title": "OSHA Recording and Reporting Occupational Injuries and Illnesses",
        "access": "full_text_verified",
        "clause": "1904.33 (5-year retention)",
        "region": "United States",
        "edition": "as amended 2026-09-09",
        "checked_on": "2026-09-14"
      }
    ]
  },
  "description": "Daily site diaries: delays, weather, productivity, variations.",
  "x-demiton-contract-url": "https://docs.demiton.io/registers/site_diary/",
  "x-demiton-register-catalog": "https://docs.demiton.io/concepts/register-catalog"
}