diff --git a/semantic-conventions/src/tests/data/markdown/stability/all_badges_expected.md b/semantic-conventions/src/tests/data/markdown/stability/all_badges_expected.md
new file mode 100644
index 00000000..7bbe6fb7
--- /dev/null
+++ b/semantic-conventions/src/tests/data/markdown/stability/all_badges_expected.md
@@ -0,0 +1,44 @@
+
+| Attribute | Type | Description | Examples | Requirement Level |
+|---|---|---|---|---|
+| [`test.deprecated_experimental_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | Required |
+| [`test.deprecated_stable_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | Required |
+| [`test.exp_attr`](stable_badges_expected.md) | boolean | ![Experimental](https://img.shields.io/badge/-experimental-blue)
| | Required |
+| [`test.stable_attr`](stable_badges_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | Required |
+
+
+
+| Attribute | Type | Description | Examples | Requirement Level |
+|---|---|---|---|---|
+| [`test.deprecated_experimental_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | Required |
+| [`test.deprecated_stable_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | Required |
+| [`test.exp_attr`](stable_badges_expected.md) | boolean | ![Experimental](https://img.shields.io/badge/-experimental-blue)
| | Required |
+| [`test.stable_attr`](stable_badges_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | Required |
+
+
+
+| Attribute | Type | Description | Examples | Requirement Level |
+|---|---|---|---|---|
+| [`test.deprecated_experimental_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | Required |
+| [`test.deprecated_stable_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | Required |
+| [`test.exp_attr`](stable_badges_expected.md) | boolean | ![Experimental](https://img.shields.io/badge/-experimental-blue)
| | Required |
+| [`test.stable_attr`](stable_badges_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | Required |
+
+
+
+| Name | Instrument Type | Unit (UCUM) | Description |
+| -------- | --------------- | ----------- | -------------- |
+| `stable_metric` | Histogram | `s` | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
stable_metric |
+
+
+
+| Name | Instrument Type | Unit (UCUM) | Description |
+| -------- | --------------- | ----------- | -------------- |
+| `experimental_metric` | Counter | `{e}` | ![Experimental](https://img.shields.io/badge/-experimental-blue)
experimental_metric |
+
+
+
+| Name | Instrument Type | Unit (UCUM) | Description |
+| -------- | --------------- | ----------- | -------------- |
+| `deprecated_metric` | UpDownCounter | `{d}` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
deprecated_metric |
+
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/markdown/stability/stable_badges_expected.md b/semantic-conventions/src/tests/data/markdown/stability/stable_badges_expected.md
new file mode 100644
index 00000000..e1a57a66
--- /dev/null
+++ b/semantic-conventions/src/tests/data/markdown/stability/stable_badges_expected.md
@@ -0,0 +1,44 @@
+
+| Attribute | Type | Description | Examples | Requirement Level |
+|---|---|---|---|---|
+| [`test.deprecated_experimental_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | Required |
+| [`test.deprecated_stable_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | Required |
+| [`test.exp_attr`](stable_badges_expected.md) | boolean | | | Required |
+| [`test.stable_attr`](stable_badges_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | Required |
+
+
+
+| Attribute | Type | Description | Examples | Requirement Level |
+|---|---|---|---|---|
+| [`test.deprecated_experimental_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | Required |
+| [`test.deprecated_stable_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | Required |
+| [`test.exp_attr`](stable_badges_expected.md) | boolean | | | Required |
+| [`test.stable_attr`](stable_badges_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | Required |
+
+
+
+| Attribute | Type | Description | Examples | Requirement Level |
+|---|---|---|---|---|
+| [`test.deprecated_experimental_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | Required |
+| [`test.deprecated_stable_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | Required |
+| [`test.exp_attr`](stable_badges_expected.md) | boolean | | | Required |
+| [`test.stable_attr`](stable_badges_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | Required |
+
+
+
+| Name | Instrument Type | Unit (UCUM) | Description |
+| -------- | --------------- | ----------- | -------------- |
+| `stable_metric` | Histogram | `s` | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
stable_metric |
+
+
+
+| Name | Instrument Type | Unit (UCUM) | Description |
+| -------- | --------------- | ----------- | -------------- |
+| `experimental_metric` | Counter | `{e}` | experimental_metric |
+
+
+
+| Name | Instrument Type | Unit (UCUM) | Description |
+| -------- | --------------- | ----------- | -------------- |
+| `deprecated_metric` | UpDownCounter | `{d}` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
deprecated_metric |
+
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/deprecated/extends_overrides_deprecation.yaml b/semantic-conventions/src/tests/data/yaml/errors/deprecated/extends_overrides_deprecation.yaml
new file mode 100644
index 00000000..c74ad8c1
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/deprecated/extends_overrides_deprecation.yaml
@@ -0,0 +1,20 @@
+groups:
+ - id: test
+ type: span
+ prefix: test
+ brief: ""
+ span_kind: client
+ attributes:
+ - id: convention_version
+ type: boolean
+ brief: 'test'
+ examples: [true, false]
+ stability: experimental
+ deprecated: "parent description"
+ - id: test_child
+ type: span
+ brief: ""
+ extends: test
+ attributes:
+ - ref: test.convention_version
+ deprecated: "Removed"
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/deprecated/multiple_deprecations.yaml b/semantic-conventions/src/tests/data/yaml/errors/deprecated/multiple_deprecations.yaml
new file mode 100644
index 00000000..b83ffe5b
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/deprecated/multiple_deprecations.yaml
@@ -0,0 +1,14 @@
+groups:
+ - id: test
+ type: span
+ prefix: test
+ brief: 'This document defines semantic conventions for test.'
+ span_kind: client
+ attributes:
+ - id: convention_version
+ type: boolean
+ deprecated: "first"
+ deprecated: "second"
+ brief: 'test'
+ examples: [true, false]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/deprecated/ref_overrides_deprecation.yaml b/semantic-conventions/src/tests/data/yaml/errors/deprecated/ref_overrides_deprecation.yaml
new file mode 100644
index 00000000..f8adeac5
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/deprecated/ref_overrides_deprecation.yaml
@@ -0,0 +1,18 @@
+groups:
+ - id: test
+ type: span
+ prefix: test
+ brief: ""
+ span_kind: client
+ attributes:
+ - id: convention_version
+ type: boolean
+ brief: 'test'
+ examples: [true, false]
+ stability: experimental
+ - id: test_child
+ type: span
+ brief: ""
+ attributes:
+ - ref: test.convention_version
+ deprecated: "Removed"
diff --git a/semantic-conventions/src/tests/data/yaml/errors/stability/extends_override_stability.yaml b/semantic-conventions/src/tests/data/yaml/errors/stability/extends_override_stability.yaml
new file mode 100644
index 00000000..38c61f21
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/stability/extends_override_stability.yaml
@@ -0,0 +1,16 @@
+groups:
+ - id: test
+ type: attribute_group
+ brief: 'test'
+ attributes:
+ - id: test_attr
+ type: boolean
+ brief: ""
+ stability: experimental
+ - id: test_child_1
+ type: attribute_group
+ brief: 'test child'
+ extends: test
+ attributes:
+ - ref: test_attr
+ stability: stable
diff --git a/semantic-conventions/src/tests/data/yaml/errors/stability/missing_stability_value.yaml b/semantic-conventions/src/tests/data/yaml/errors/stability/missing_stability_value.yaml
new file mode 100644
index 00000000..267e337d
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/stability/missing_stability_value.yaml
@@ -0,0 +1,8 @@
+groups:
+ - id: test
+ type: attribute_group
+ brief: 'test'
+ attributes:
+ - id: test_attr
+ type: boolean
+ brief: ""
diff --git a/semantic-conventions/src/tests/data/yaml/errors/stability/multiple_stability_values.yaml b/semantic-conventions/src/tests/data/yaml/errors/stability/multiple_stability_values.yaml
new file mode 100644
index 00000000..3cd56d87
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/stability/multiple_stability_values.yaml
@@ -0,0 +1,10 @@
+groups:
+ - id: test
+ type: attribute_group
+ brief: 'test'
+ attributes:
+ - id: test_attr
+ type: boolean
+ stability: stable
+ stability: experimental
+ brief: ""
diff --git a/semantic-conventions/src/tests/data/yaml/errors/stability/ref_override_stability.yaml b/semantic-conventions/src/tests/data/yaml/errors/stability/ref_override_stability.yaml
new file mode 100644
index 00000000..d2fe1603
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/stability/ref_override_stability.yaml
@@ -0,0 +1,15 @@
+groups:
+ - id: test
+ type: attribute_group
+ brief: 'test'
+ attributes:
+ - id: test_attr
+ type: boolean
+ brief: ""
+ stability: experimental
+ - id: test_child_1
+ type: attribute_group
+ brief: 'test child'
+ attributes:
+ - ref: test_attr
+ stability: stable