{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://pipelinexlab.com/contracts/component-declarative-node-value.v1.schema.json",
  "title": "PipelineXLab host-declarative Component Node value V1",
  "$comment": "Closed value for the registered component.declarative@2 host renderer. Version 2 since 2026-09-01, by owner decision measured on the promoted renderer gallery: the same host-owned body, drawn at one of three registered boxes by declared port count and showing the value the current Run produced for each declared summary result. The package still selects and supplies nothing. Registration makes an already-resolved value drawable; it does not activate the product presentation-resolution composition, read relay, placement or execution. Its version is independent from package, declaration and Component contract versions.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "$schema",
    "schemaVersion",
    "componentRef",
    "label",
    "presentation"
  ],
  "properties": {
    "$schema": {
      "const": "https://pipelinexlab.com/contracts/component-declarative-node-value.v1.schema.json"
    },
    "schemaVersion": { "const": 1 },
    "componentRef": {
      "$ref": "#/$defs/componentRef"
    },
    "label": {
      "$ref": "#/$defs/label"
    },
    "presentation": {
      "$ref": "#/$defs/presentation"
    }
  },
  "$defs": {
    "componentRef": {
      "allOf": [
        {"$ref": "./pxflow-direct.v1.schema.json#/$defs/componentRef"},
        {
          "type": "object",
          "properties": {
            "componentContractVersion": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            }
          }
        }
      ]
    },
    "publisherText": {
      "type": "string",
      "minLength": 1,
      "$comment": "Renderer-value V1 owns this closed publisher-text shape independently from authoring and declaration schema versions. NFC remains semantic admission.",
      "pattern": "^(?!\\s)(?!.*\\s$)[^\\u0000-\\u001F\\u007F-\\u009F\\u00AD\\u061C\\u200B\\u200E\\u200F\\u2028-\\u202E\\u2060-\\u206F\\uFEFF]+$"
    },
    "label": {
      "allOf": [
        {"$ref": "#/$defs/publisherText"},
        {"type": "string", "maxLength": 120}
      ]
    },
    "presentation": {
      "type": "object",
      "additionalProperties": false,
      "required": ["icon", "summaryResultKeys"],
      "properties": {
        "icon": {
          "type": "string",
          "maxLength": 64,
          "pattern": "^[a-z][a-z0-9-]*$"
        },
        "summaryResultKeys": {
          "type": "array",
          "maxItems": 4,
          "uniqueItems": true,
          "items": {"$ref": "./pxflow-direct.v1.schema.json#/$defs/semanticKey"}
        }
      }
    }
  }
}
