From ff2e53ad6bcfc8da129833db8f5ad07105dc9e6f Mon Sep 17 00:00:00 2001 From: Alex Boten <223565+codeboten@users.noreply.github.com> Date: Wed, 7 Oct 2026 11:15:31 -0700 Subject: [PATCH 1/3] chore: remove kind in workstreams.yml Everything is a SIG, no need for this field. Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com> --- workstreams.yml | 60 ------------------------------------------------- 1 file changed, 60 deletions(-) diff --git a/workstreams.yml b/workstreams.yml index c9706ff22..2118d0b45 100644 --- a/workstreams.yml +++ b/workstreams.yml @@ -1,5 +1,4 @@ - id: spec-general - kind: sig sigCategory: specification name: 'Specification: General + OTel Maintainers Sync' parent: none @@ -48,7 +47,6 @@ - repository: open-telemetry/opentelemetry-proto - repository: open-telemetry/build-tools - id: sampling - kind: sig sigCategory: specification name: 'Specification: Sampling' parent: spec-general @@ -67,7 +65,6 @@ id: C027DS6GZD3 - roadmapProject: 133 - id: spec-logs - kind: sig sigCategory: specification name: 'Specification: Logs' parent: spec-general @@ -86,7 +83,6 @@ name: '#otel-spec-logs' id: C062HUREGUV - id: semconv-general - kind: sig sigCategory: specification name: 'Semantic Conventions: General' parent: spec-general @@ -109,7 +105,6 @@ - repository: open-telemetry/semantic-conventions - repository: open-telemetry/semantic-conventions-conformance - id: semconv-system-metrics - kind: sig sigCategory: specification name: 'Semantic Conventions: System Metrics' parent: semconv-general @@ -128,7 +123,6 @@ id: C05CTFE9U4A - roadmapProject: 55 - id: semconv-k8s - kind: sig sigCategory: specification name: 'Semantic Conventions: K8s' parent: semconv-general @@ -147,7 +141,6 @@ id: C07Q1L0FGKX - roadmapProject: 114 - id: semconv-genai - kind: sig sigCategory: specification name: 'Semantic Conventions and Instrumentation: GenAI' parent: semconv-general @@ -168,7 +161,6 @@ id: C06KR7ARS3X - roadmapProject: 82 - id: semconv-cicd - kind: sig sigCategory: specification name: 'Semantic Conventions: CI/CD' parent: semconv-general @@ -187,7 +179,6 @@ id: C0598R66XAP - roadmapProject: 171 - id: semconv-rpc - kind: sig sigCategory: specification name: 'Semantic Conventions: RPC' parent: semconv-general @@ -206,7 +197,6 @@ id: C09D3TRKMED - roadmapProject: 161 - id: semconv-service-deployment - kind: sig sigCategory: specification name: 'Semantic Conventions: Service and Deployment' parent: semconv-general @@ -225,7 +215,6 @@ id: C09HLNSSJSE - roadmapProject: 168 - id: spec-entities - kind: sig sigCategory: specification name: 'Specification: Entities' parent: spec-general @@ -244,7 +233,6 @@ id: C06QEG97W7L - roadmapProject: 85 - id: opamp - kind: sig sigCategory: specification name: OpAMP parent: none @@ -264,7 +252,6 @@ - repository: open-telemetry/opamp-go - repository: open-telemetry/opamp-spec - id: prometheus-interop - kind: sig sigCategory: specification name: Prometheus Interoperability parent: none @@ -282,7 +269,6 @@ name: '#otel-prometheus' id: C01LSCJBXDZ - id: faas - kind: sig sigCategory: specification name: Functions as a Service (FAAS) parent: none @@ -301,7 +287,6 @@ id: C04HVBETC9Z - repository: open-telemetry/opentelemetry-lambda - id: profiling - kind: sig sigCategory: specification name: Profiling parent: none @@ -320,7 +305,6 @@ id: C03J794L0BV - repository: open-telemetry/opentelemetry-ebpf-profiler - id: mainframes - kind: sig sigCategory: specification name: OpenTelemetry on Mainframes parent: none @@ -339,7 +323,6 @@ name: '#otel-mainframes' id: C05PXDFTCPJ - id: client-instrumentation - kind: sig sigCategory: specification name: Client Instrumentation parent: none @@ -357,7 +340,6 @@ name: '#otel-client-side-telemetry' id: C0239SYARD2 - id: policies - kind: sig sigCategory: specification name: Policies parent: none @@ -375,7 +357,6 @@ name: '#otel-policies' id: C0C0VFN9526 - id: android - kind: sig sigCategory: implementation name: 'Android: SDK + Automatic Instrumentation' parent: none @@ -394,7 +375,6 @@ id: C05J0T9K27Q - repository: open-telemetry/opentelemetry-android - id: arrow - kind: sig sigCategory: implementation name: Arrow parent: none @@ -414,7 +394,6 @@ - repository: open-telemetry/otel-arrow - roadmapProject: 139 - id: browser - kind: sig sigCategory: implementation name: Browser parent: none @@ -436,7 +415,6 @@ - repository: open-telemetry/opentelemetry-browser - roadmapProject: 146 - id: collector - kind: sig sigCategory: implementation name: Collector parent: none @@ -462,7 +440,6 @@ - repository: open-telemetry/opentelemetry-go-vanityurls - repository: open-telemetry/govanityurls - id: cpp - kind: sig sigCategory: implementation name: 'C++: SDK' parent: none @@ -483,7 +460,6 @@ - repository: open-telemetry/opentelemetry-cpp-contrib - repository: open-telemetry/cpp-build-tools - id: dotnet-auto-instr - kind: sig sigCategory: implementation name: '.NET: Automatic Instrumentation' parent: none @@ -502,7 +478,6 @@ id: C01NR1YLSE7 - repository: open-telemetry/opentelemetry-dotnet-instrumentation - id: dotnet - kind: sig sigCategory: implementation name: '.NET: SDK' parent: none @@ -522,7 +497,6 @@ - repository: open-telemetry/opentelemetry-dotnet - repository: open-telemetry/opentelemetry-dotnet-contrib - id: dart-flutter - kind: sig sigCategory: implementation name: 'Dart and Flutter: SDK' parent: none @@ -541,7 +515,6 @@ id: C027SBQGLS0 - repository: open-telemetry/opentelemetry-dart - id: erlang-elixir - kind: sig sigCategory: implementation name: 'Erlang/Elixir: SDK' parent: none @@ -561,7 +534,6 @@ - repository: open-telemetry/opentelemetry-erlang - repository: open-telemetry/opentelemetry-erlang-contrib - id: go - kind: sig sigCategory: implementation name: 'GoLang: SDK' parent: none @@ -585,7 +557,6 @@ - repository: open-telemetry/opentelemetry-proto-go - repository: open-telemetry/govanityurls - id: go-auto-instr - kind: sig sigCategory: implementation name: 'GoLang: Automatic Instrumentation' parent: none @@ -604,7 +575,6 @@ id: C03S01YSAS0 - repository: open-telemetry/opentelemetry-go-instrumentation - id: go-compile-instr - kind: sig sigCategory: implementation name: 'GoLang: Compile-Time Instrumentation' parent: none @@ -624,7 +594,6 @@ - repository: open-telemetry/opentelemetry-go-compile-instrumentation - roadmapProject: 130 - id: injector - kind: sig sigCategory: implementation name: Injector parent: none @@ -643,7 +612,6 @@ id: C09025GKPAL - repository: open-telemetry/opentelemetry-injector - id: java-sdk-instrumentation - kind: sig sigCategory: implementation name: 'Java: SDK + Instrumentation' parent: none @@ -667,7 +635,6 @@ - repository: open-telemetry/opentelemetry-proto-java - repository: open-telemetry/semantic-conventions-java - id: javascript-sdk - kind: sig sigCategory: implementation name: 'JavaScript: SDK' parent: none @@ -688,7 +655,6 @@ - repository: open-telemetry/opentelemetry-js - repository: open-telemetry/opentelemetry-js-contrib - id: kotlin - kind: sig sigCategory: implementation name: 'Kotlin: SDK' parent: none @@ -707,7 +673,6 @@ id: C08NRCD4R4G - repository: open-telemetry/opentelemetry-kotlin - id: packaging - kind: sig sigCategory: implementation name: 'Packaging' parent: none @@ -726,7 +691,6 @@ id: C0AD17NMBLZ - repository: open-telemetry/opentelemetry-packaging - id: php-sdk - kind: sig sigCategory: implementation name: 'PHP: SDK' parent: none @@ -747,7 +711,6 @@ - repository: open-telemetry/opentelemetry-php-contrib - repository: open-telemetry/opentelemetry-php-instrumentation - id: python-sdk - kind: sig sigCategory: implementation name: 'Python: SDK' parent: none @@ -767,7 +730,6 @@ - repository: open-telemetry/opentelemetry-python - repository: open-telemetry/opentelemetry-python-contrib - id: ruby-sdk - kind: sig sigCategory: implementation name: 'Ruby: SDK' parent: none @@ -788,7 +750,6 @@ - repository: open-telemetry/opentelemetry-ruby - repository: open-telemetry/opentelemetry-ruby-contrib - id: rust-sdk - kind: sig sigCategory: implementation name: 'Rust: SDK' parent: none @@ -809,7 +770,6 @@ - repository: open-telemetry/opentelemetry-rust - repository: open-telemetry/opentelemetry-rust-contrib - id: swift-sdk - kind: sig sigCategory: implementation name: 'Swift: SDK' parent: none @@ -828,7 +788,6 @@ id: C01NCHR19SB - repository: open-telemetry/opentelemetry-swift - id: network - kind: sig sigCategory: implementation name: Network parent: none @@ -847,7 +806,6 @@ id: C02AB15583A - roadmapProject: 202 - id: ebpf-instrumentation - kind: sig sigCategory: implementation name: eBPF Instrumentation parent: none @@ -866,7 +824,6 @@ id: C08P9L4FPKJ - repository: open-telemetry/opentelemetry-ebpf-instrumentation - id: k8s-operator - kind: sig sigCategory: implementation name: Kubernetes Operator parent: none @@ -885,7 +842,6 @@ id: C033BJ8BASU - repository: open-telemetry/opentelemetry-operator - id: k8s-helm-charts - kind: sig sigCategory: implementation name: Kubernetes Helm Charts parent: none @@ -904,7 +860,6 @@ id: C03HVLM8LAH - repository: open-telemetry/opentelemetry-helm-charts - id: community-demo - kind: sig sigCategory: implementation name: Community Demo Application parent: none @@ -923,7 +878,6 @@ id: C03B4CWV4DA - repository: open-telemetry/opentelemetry-demo - id: semconv-tooling - kind: sig sigCategory: implementation name: 'Semantic Conventions: Tooling' parent: semconv-general @@ -942,7 +896,6 @@ id: C0697EXNTL3 - repository: open-telemetry/weaver - id: communications - kind: sig sigCategory: cross-cutting name: 'Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.)' @@ -963,7 +916,6 @@ - repository: open-telemetry/opentelemetry.io - roadmapProject: 129 - id: end-user - kind: sig sigCategory: cross-cutting name: End-User SIG parent: none @@ -983,7 +935,6 @@ - repository: open-telemetry/sig-end-user - roadmapProject: 181 - id: security - kind: sig sigCategory: cross-cutting name: Security parent: none @@ -1002,7 +953,6 @@ id: C05A85QC281 - repository: open-telemetry/sig-security - id: contributor-experience - kind: sig sigCategory: cross-cutting name: Contributor Experience parent: none @@ -1023,7 +973,6 @@ id: C06TMJ2R0SK - repository: open-telemetry/sig-contributor-experience - id: developer-experience - kind: sig sigCategory: cross-cutting name: Developer Experience parent: none @@ -1043,7 +992,6 @@ id: C01S42U83B2 - repository: open-telemetry/sig-developer-experience - id: localization-bn - kind: sig sigCategory: cross-cutting name: Bengali (bn) parent: communications @@ -1058,7 +1006,6 @@ name: '#otel-localization-bn' id: C08TBCSAY1F - id: localization-zh-cn - kind: sig sigCategory: cross-cutting name: Chinese (zh-CN) parent: communications @@ -1073,7 +1020,6 @@ name: '#otel-localization-zhcn' id: C08SSK25Y7L - id: localization-fr - kind: sig sigCategory: cross-cutting name: French (fr-FR) parent: communications @@ -1088,7 +1034,6 @@ name: '#otel-localization-fr' id: C07THD60YLF - id: localization-ja - kind: sig sigCategory: cross-cutting name: Japanese (ja-JA) parent: communications @@ -1107,7 +1052,6 @@ name: '#otel-localization-ja' id: C08SGPBN44E - id: localization-pl - kind: sig sigCategory: cross-cutting name: Polish (pl-PL) parent: communications @@ -1122,7 +1066,6 @@ name: '#otel-localization-pl' id: C0ALHN9V7PT - id: localization-pt-br - kind: sig sigCategory: cross-cutting name: Portuguese (pt-BR) parent: communications @@ -1137,7 +1080,6 @@ name: '#otel-localization-ptbr' id: C076LET8YSK - id: localization-ro - kind: sig sigCategory: cross-cutting name: Romanian (ro-RO) parent: communications @@ -1155,7 +1097,6 @@ name: '#otel-localization-ro' id: C09E9KNNLP4 - id: localization-es - kind: sig sigCategory: cross-cutting name: Spanish (es-ES) parent: communications @@ -1174,7 +1115,6 @@ name: '#otel-localization-es' id: C07PVQVCHA6 - id: localization-uk - kind: sig sigCategory: cross-cutting name: Ukrainian (uk-UA) parent: communications From f49f6b1ef1c6dcc43ea3eedc21d6ab856c4f5272 Mon Sep 17 00:00:00 2001 From: Alex Boten <223565+codeboten@users.noreply.github.com> Date: Wed, 7 Oct 2026 12:25:58 -0700 Subject: [PATCH 2/3] fix validation Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com> --- scripts/schema/workstreams.schema.yml | 10 +--------- scripts/validate-workstreams.py | 22 ++++------------------ 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/scripts/schema/workstreams.schema.yml b/scripts/schema/workstreams.schema.yml index 7c113c303..b47e1402a 100644 --- a/scripts/schema/workstreams.schema.yml +++ b/scripts/schema/workstreams.schema.yml @@ -12,24 +12,16 @@ items: workstream: type: object - required: [id, kind, name, parent, people] + required: [id, name, parent, people] additionalProperties: false properties: # Stable slug, unique across all workstreams. id: type: string minLength: 1 - kind: - type: string - enum: - # Permanent operational group with recurring meetings, - # a GC liaison, and a TC sponsor. - - sig name: type: string minLength: 1 - # Grouping category. Only valid on kind: sig. Absent means specification (the default). - # Enforcement of the kind constraint is in scripts/validate-workstreams.py. sigCategory: type: string enum: diff --git a/scripts/validate-workstreams.py b/scripts/validate-workstreams.py index d8d6bea7d..a03b52c66 100644 --- a/scripts/validate-workstreams.py +++ b/scripts/validate-workstreams.py @@ -31,12 +31,8 @@ TBD = "tbd" NONE = "none" -KIND_REQUIRED_ROLES = { - "sig": {"gcLiaison", "tcSponsor"}, -} - -VALID_PARENT_KINDS = { - "sig": {"sig"}, +REQUIRED_ROLES = { + "gcLiaison", "tcSponsor", } MEMBERSHIP_REQUIRED_ROLES = {"gcLiaison", "tcSponsor", "specSponsor"} @@ -101,10 +97,6 @@ def validate_workstreams_semantics(workstreams: list[dict], people_data: dict) - continue parent_kind = id_to_workstream[parent_id].get("kind", "") - if parent_kind not in VALID_PARENT_KINDS.get(kind, set()): - errors.append( - f"[{wid}] kind '{kind}' cannot have a parent of kind '{parent_kind}'" - ) for w in workstreams: wid = w.get("id", "(unknown)") @@ -119,18 +111,12 @@ def validate_workstreams_semantics(workstreams: list[dict], people_data: dict) - for w in workstreams: wid = w.get("id", "(unknown)") - kind = w.get("kind", "") - - if "sigCategory" in w and kind != "sig": - errors.append( - f"[{wid}] sigCategory is only valid on kind 'sig'" - ) person_roles = {next(iter(pr)) for pr in w.get("people", [])} - for required_role in KIND_REQUIRED_ROLES.get(kind, set()): + for required_role in REQUIRED_ROLES: if required_role not in person_roles: errors.append( - f"[{wid}] kind '{kind}' requires at least one '{required_role}'" + f"[{wid}] SIG requires at least one '{required_role}'" ) teams = people_data.get("teams", {}) From 702ad8c1594aed948f02eba9820b89324947f5f2 Mon Sep 17 00:00:00 2001 From: Alex Boten <223565+codeboten@users.noreply.github.com> Date: Wed, 7 Oct 2026 12:27:54 -0700 Subject: [PATCH 3/3] skip kind check Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com> --- scripts/update-sig-tables.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/update-sig-tables.py b/scripts/update-sig-tables.py index 6a5dcb5c3..24410a8a1 100755 --- a/scripts/update-sig-tables.py +++ b/scripts/update-sig-tables.py @@ -125,8 +125,6 @@ def extract_row_data(ws): localization_sigs = [] for ws in workstreams: - if ws.get("kind") != "sig": - continue category = ws.get("sigCategory") parent = ws.get("parent", "none")