[
  {
    "description": "merging: properties accumulate",
    "database": {
      "schemas": [
        {
          "$id": "base_0",
          "properties": {
            "base_prop": {
              "type": "string"
            }
          }
        },
        {
          "$ref": "base_0",
          "properties": {
            "child_prop": {
              "type": "string"
            }
          },
          "$id": "merge_0_0"
        }
      ]
    },
    "tests": [
      {
        "description": "valid with both properties",
        "data": {
          "base_prop": "a",
          "child_prop": "b"
        },
        "schema_id": "merge_0_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "invalid when base property has wrong type",
        "data": {
          "base_prop": 1,
          "child_prop": "b"
        },
        "schema_id": "merge_0_0",
        "action": "validate",
        "expect": {
          "success": false,
          "errors": [
            {
              "code": "TYPE_MISMATCH",
              "path": "/base_prop"
            }
          ]
        }
      }
    ]
  },
  {
    "description": "merging: required fields accumulate",
    "database": {
      "schemas": [
        {
          "$id": "base_1",
          "properties": {
            "a": {
              "type": "string"
            }
          },
          "required": [
            "a"
          ]
        },
        {
          "$ref": "base_1",
          "properties": {
            "b": {
              "type": "string"
            }
          },
          "required": [
            "b"
          ],
          "$id": "merge_1_0"
        }
      ]
    },
    "tests": [
      {
        "description": "valid when both present",
        "data": {
          "a": "ok",
          "b": "ok"
        },
        "schema_id": "merge_1_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "invalid when base required missing",
        "data": {
          "b": "ok"
        },
        "schema_id": "merge_1_0",
        "action": "validate",
        "expect": {
          "success": false,
          "errors": [
            {
              "code": "REQUIRED_FIELD_MISSING",
              "path": "/a"
            }
          ]
        }
      },
      {
        "description": "invalid when child required missing",
        "data": {
          "a": "ok"
        },
        "schema_id": "merge_1_0",
        "action": "validate",
        "expect": {
          "success": false,
          "errors": [
            {
              "code": "REQUIRED_FIELD_MISSING",
              "path": "/b"
            }
          ]
        }
      }
    ]
  },
  {
    "description": "merging: dependencies accumulate",
    "database": {
      "schemas": [
        {
          "$id": "base_2",
          "properties": {
            "trigger": {
              "type": "string"
            },
            "base_dep": {
              "type": "string"
            }
          },
          "dependencies": {
            "trigger": [
              "base_dep"
            ]
          }
        },
        {
          "$ref": "base_2",
          "properties": {
            "child_dep": {
              "type": "string"
            }
          },
          "dependencies": {
            "trigger": [
              "child_dep"
            ]
          },
          "$id": "merge_2_0"
        }
      ]
    },
    "tests": [
      {
        "description": "valid with all deps",
        "data": {
          "trigger": "go",
          "base_dep": "ok",
          "child_dep": "ok"
        },
        "schema_id": "merge_2_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "invalid missing base dep",
        "data": {
          "trigger": "go",
          "child_dep": "ok"
        },
        "schema_id": "merge_2_0",
        "action": "validate",
        "expect": {
          "success": false,
          "errors": [
            {
              "code": "DEPENDENCY_FAILED",
              "path": "/base_dep"
            }
          ]
        }
      },
      {
        "description": "invalid missing child dep",
        "data": {
          "trigger": "go",
          "base_dep": "ok"
        },
        "schema_id": "merge_2_0",
        "action": "validate",
        "expect": {
          "success": false,
          "errors": [
            {
              "code": "DEPENDENCY_FAILED",
              "path": "/child_dep"
            }
          ]
        }
      }
    ]
  },
  {
    "description": "merging: form and display do NOT merge",
    "database": {
      "schemas": [
        {
          "$id": "base_3",
          "properties": {
            "a": {
              "type": "string"
            },
            "b": {
              "type": "string"
            }
          },
          "form": [
            "a",
            "b"
          ]
        },
        {
          "$ref": "base_3",
          "properties": {
            "c": {
              "type": "string"
            }
          },
          "form": [
            "c"
          ],
          "$id": "merge_3_0"
        }
      ]
    },
    "tests": [
      {
        "description": "child schema validation",
        "data": {
          "a": "ok",
          "b": "ok",
          "c": "ok"
        },
        "comment": "Verifies validator handles the unmerged metadata correctly (ignores it or handles replacement)",
        "schema_id": "merge_3_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      }
    ]
  }
]