{

  "$schema": "https://json-schema.org/draft/2020-12/schema",

  "$id": "https://landscapearchive.org/schemas/orbits/tla-ml.required.schema.json",

  "title": "TLA-ML required-keys smoke (Draft — not normative)",

  "description": "Required-key + enum smoke for la.archive.ml-label.v1 golden examples. Enums aligned to ML_HUB_LABEL_SCHEMA_v1. Not a full normative schema; not Archive Seal.",

  "type": "object",

  "additionalProperties": true,

  "required": [

    "schema_id",

    "schema_version",

    "asset",

    "modality",

    "part",

    "source",

    "quality",

    "training_role"

  ],

  "properties": {

    "schema_id": { "const": "la.archive.ml-label.v1" },

    "schema_version": { "type": "integer", "const": 1 },

    "asset": {

      "type": "object",

      "required": ["file"],

      "properties": {

        "file": { "type": "string", "minLength": 1 }

      }

    },

    "modality": {

      "type": "string",

      "enum": ["mesh", "photo", "silhouette", "other"]

    },

    "part": {

      "type": "string",

      "enum": [

        "whole_plant",

        "leaf",

        "flower",

        "fruit",

        "twig",

        "branch",

        "trunk",

        "bark",

        "root",

        "seed",

        "stem",

        "cluster",

        "foliage_spray",

        "other"

      ]

    },

    "source": {

      "type": "string",

      "enum": ["import", "external", "workbench", "blender", "scan", "photogrammetry", "other", "meshy"]

    },

    "quality": {

      "type": "string",

      "enum": ["gold", "good", "ok", "reject"]

    },

    "training_role": {

      "type": "string",

      "enum": ["train", "val", "test", "holdout", "unassigned"]

    }

  }

}


