From 3704fa25373f9d97d0f63fea3a8ff5ac00e0faf4 Mon Sep 17 00:00:00 2001 From: "damaz@google.com" Date: Mon, 29 Jun 2026 11:03:44 +0200 Subject: [PATCH 1/6] chore: add governance rules for all UCP repos --- .../governance/rules/conformance-rules.yml | 49 +++++++++++ org-tools/governance/rules/js-sdk-rules.yml | 55 ++++++++++++ org-tools/governance/rules/samples-rules.yml | 48 +++++++++++ org-tools/governance/rules/ucp-rules.yml | 86 +++++++++++++++++++ .../governance/rules/ucp-schema-rules.yml | 51 +++++++++++ 5 files changed, 289 insertions(+) create mode 100644 org-tools/governance/rules/conformance-rules.yml create mode 100644 org-tools/governance/rules/js-sdk-rules.yml create mode 100644 org-tools/governance/rules/samples-rules.yml create mode 100644 org-tools/governance/rules/ucp-rules.yml create mode 100644 org-tools/governance/rules/ucp-schema-rules.yml diff --git a/org-tools/governance/rules/conformance-rules.yml b/org-tools/governance/rules/conformance-rules.yml new file mode 100644 index 0000000..05d0451 --- /dev/null +++ b/org-tools/governance/rules/conformance-rules.yml @@ -0,0 +1,49 @@ +--- +rules: + # --------------------------------------------------------- + # Governance + # --------------------------------------------------------- + - name: "governance_and_licensing" + patterns: + - "LICENSE" + requires: + # Strictly Governance Council (L4) + - team: "governance-council" + min_approvals: 2 + + # --------------------------------------------------------- + # Infrastructure, Tooling & Configuration + # --------------------------------------------------------- + - name: "infra_and_tooling" + patterns: + - ".cspell.json" + - ".cspell/**" + - ".github/**" + - ".gitignore" + - ".pre-commit-config.yaml" + - "README.md" + - "*.py" + - "pyproject.toml" + - "shopping-agent-test.json" + - "test_data/**" + requires: + # Grants access to devops (L1), maintainers (L2), tech-council (L3), + # and governance-council (L4) + - min_team: "devops-maintainers" + min_approvals: 2 + +fallback: + requires: + # Default for all files (*). + # Strictest rule possible + - min_team: "governance-council" + min_approvals: 2 + +proxy_reviewers: + - amithanda + +team_hierarchy: + devops-maintainers: 1 + maintainers: 2 + tech-council: 3 + governance-council: 4 diff --git a/org-tools/governance/rules/js-sdk-rules.yml b/org-tools/governance/rules/js-sdk-rules.yml new file mode 100644 index 0000000..cc59c90 --- /dev/null +++ b/org-tools/governance/rules/js-sdk-rules.yml @@ -0,0 +1,55 @@ +--- +rules: + # --------------------------------------------------------- + # Governance + # --------------------------------------------------------- + - name: "governance_and_licensing" + patterns: + - "LICENSE" + requires: + # Strictly Governance Council (L4) + - team: "governance-council" + min_approvals: 2 + + # --------------------------------------------------------- + # Infrastructure, Tooling & Configuration + # --------------------------------------------------------- + - name: "infra_and_tooling" + patterns: + - ".codespellignore" + - ".github/**" + - ".gitignore" + - ".pre-commit-config.yaml" + - ".prettierrc" + - "README.md" + - "generate_models.sh" + - "index.ts" + - "package-lock.json" + - "package.json" + - "scripts/**" + - "src/**" + - "tsconfig.cjs.json" + - "tsconfig.esm.json" + - "tsconfig.json" + - "tsconfig.types.json" + requires: + # Grants access to devops (L1), maintainers (L2), tech-council (L3), + # and governance-council (L4) + - min_team: "devops-maintainers" + min_approvals: 2 + +fallback: + requires: + # Default for all files (*). + # Strictest rule possible + - min_team: "governance-council" + min_approvals: 2 + +proxy_reviewers: + - amithanda + +team_hierarchy: + devops-maintainers: 1 + maintainers: 2 + tech-council: 3 + governance-council: 4 diff --git a/org-tools/governance/rules/samples-rules.yml b/org-tools/governance/rules/samples-rules.yml new file mode 100644 index 0000000..48ad5ef --- /dev/null +++ b/org-tools/governance/rules/samples-rules.yml @@ -0,0 +1,48 @@ +--- +rules: + # --------------------------------------------------------- + # Governance + # --------------------------------------------------------- + - name: "governance_and_licensing" + patterns: + - "LICENSE" + requires: + # Strictly Governance Council (L4) + - team: "governance-council" + min_approvals: 2 + + # --------------------------------------------------------- + # Infrastructure, Tooling & Configuration + # --------------------------------------------------------- + - name: "infra_and_tooling" + patterns: + - ".cspell.json" + - ".cspell/**" + - ".github/**" + - ".gitignore" + - ".pre-commit-config.yaml" + - "README.md" + - "SECURITY.md" + - "a2a/**" + - "rest/**" + requires: + # Grants access to devops (L1), maintainers (L2), tech-council (L3), + # and governance-council (L4) + - min_team: "devops-maintainers" + min_approvals: 2 + +fallback: + requires: + # Default for all files (*). + # Strictest rule possible + - min_team: "governance-council" + min_approvals: 2 + +proxy_reviewers: + - amithanda + +team_hierarchy: + devops-maintainers: 1 + maintainers: 2 + tech-council: 3 + governance-council: 4 diff --git a/org-tools/governance/rules/ucp-rules.yml b/org-tools/governance/rules/ucp-rules.yml new file mode 100644 index 0000000..3dceb8e --- /dev/null +++ b/org-tools/governance/rules/ucp-rules.yml @@ -0,0 +1,86 @@ +--- +rules: + # --------------------------------------------------------- + # Governance + # --------------------------------------------------------- + - name: "governance_and_licensing" + patterns: + - "LICENSE" + # Consider updating this path if renaming to owners.yaml + - ".github/CODEOWNERS" + requires: + # Strictly Governance Council (L4) + - team: "governance-council" + min_approvals: 2 + + # --------------------------------------------------------- + # Core Protocol + # --------------------------------------------------------- + - name: "core_protocol_src" + patterns: + - "source/**" + requires: + # Grants access to governance-council (L4) + - min_team: "governance-council" + min_approvals: 2 + + # --------------------------------------------------------- + # Specific Documentation + # --------------------------------------------------------- + - name: "documentation_spec" + patterns: + - "docs/specification/**" + requires: + # Grants access to maintainers (L2), tech-council (L3) and + # governance-council (L4) + - min_team: "maintainers" + min_approvals: 2 + + # --------------------------------------------------------- + # Infrastructure, Tooling, Configuration & General Docs + # --------------------------------------------------------- + - name: "infra_and_tooling" + patterns: + - ".github/**" + - "scripts/**" + - "generated/**" + - "hooks.py" + - "main.py" + - ".cspell/**" + - ".cspell.json" + - ".pre-commit-config.yaml" + - ".prettierignore" + - ".prettierrc" + - ".stylelintrc.json" + - "biome.json" + - "mkdocs.yml" + - ".gitignore" + - "pyproject.toml" + - "uv.lock" + - "package.json" + - "package-lock.json" + - "docs/**" + excludes: + - "docs/specification/**" # Covered by Documentation Specification + - ".github/CODEOWNERS" + requires: + # Grants access to devops (L1), maintainers (L2), tech-council (L3), + # and governance-council (L4) + - min_team: "devops-maintainers" + min_approvals: 2 + +fallback: + requires: + # Default for all files (*). + # Strictest rule possible + - min_team: "governance-council" + min_approvals: 2 + +proxy_reviewers: + - amithanda + +team_hierarchy: + devops-maintainers: 1 + maintainers: 2 + tech-council: 3 + governance-council: 4 diff --git a/org-tools/governance/rules/ucp-schema-rules.yml b/org-tools/governance/rules/ucp-schema-rules.yml new file mode 100644 index 0000000..69ed2d4 --- /dev/null +++ b/org-tools/governance/rules/ucp-schema-rules.yml @@ -0,0 +1,51 @@ +--- +rules: + # --------------------------------------------------------- + # Governance + # --------------------------------------------------------- + - name: "governance_and_licensing" + patterns: + - "LICENSE" + requires: + # Strictly Governance Council (L4) + - team: "governance-council" + min_approvals: 2 + + # --------------------------------------------------------- + # Infrastructure, Tooling & Configuration + # --------------------------------------------------------- + - name: "infra_and_tooling" + patterns: + - ".github/**" + - ".gitignore" + - ".pre-commit-config.yaml" + - "CHANGELOG.md" + - "Cargo.lock" + - "Cargo.toml" + - "FAQ.md" + - "Makefile" + - "README.md" + - "fixtures/**" + - "src/**" + - "tests/**" + requires: + # Grants access to devops (L1), maintainers (L2), tech-council (L3), + # and governance-council (L4) + - min_team: "devops-maintainers" + min_approvals: 2 + +fallback: + requires: + # Default for all files (*). + # Strictest rule possible + - min_team: "governance-council" + min_approvals: 2 + +proxy_reviewers: + - amithanda + +team_hierarchy: + devops-maintainers: 1 + maintainers: 2 + tech-council: 3 + governance-council: 4 From c6932704659d66e1ab3b84643f2d535177effcaa Mon Sep 17 00:00:00 2001 From: "damaz@google.com" Date: Mon, 29 Jun 2026 11:08:20 +0200 Subject: [PATCH 2/6] chore: add target repository URL --- org-tools/governance/rules/conformance-rules.yml | 2 ++ org-tools/governance/rules/js-sdk-rules.yml | 2 ++ org-tools/governance/rules/python-sdk-rules.yml | 2 ++ org-tools/governance/rules/samples-rules.yml | 2 ++ org-tools/governance/rules/ucp-rules.yml | 2 ++ org-tools/governance/rules/ucp-schema-rules.yml | 2 ++ 6 files changed, 12 insertions(+) diff --git a/org-tools/governance/rules/conformance-rules.yml b/org-tools/governance/rules/conformance-rules.yml index 05d0451..57df211 100644 --- a/org-tools/governance/rules/conformance-rules.yml +++ b/org-tools/governance/rules/conformance-rules.yml @@ -1,3 +1,5 @@ +# Target Repository: conformance +# Repository URL: https://github.com/Universal-Commerce-Protocol/conformance --- rules: # --------------------------------------------------------- diff --git a/org-tools/governance/rules/js-sdk-rules.yml b/org-tools/governance/rules/js-sdk-rules.yml index cc59c90..0d7a987 100644 --- a/org-tools/governance/rules/js-sdk-rules.yml +++ b/org-tools/governance/rules/js-sdk-rules.yml @@ -1,3 +1,5 @@ +# Target Repository: js-sdk +# Repository URL: https://github.com/Universal-Commerce-Protocol/js-sdk --- rules: # --------------------------------------------------------- diff --git a/org-tools/governance/rules/python-sdk-rules.yml b/org-tools/governance/rules/python-sdk-rules.yml index e6f9c71..7966a22 100644 --- a/org-tools/governance/rules/python-sdk-rules.yml +++ b/org-tools/governance/rules/python-sdk-rules.yml @@ -1,3 +1,5 @@ +# Target Repository: python-sdk +# Repository URL: https://github.com/Universal-Commerce-Protocol/python-sdk --- rules: # --------------------------------------------------------- diff --git a/org-tools/governance/rules/samples-rules.yml b/org-tools/governance/rules/samples-rules.yml index 48ad5ef..483158a 100644 --- a/org-tools/governance/rules/samples-rules.yml +++ b/org-tools/governance/rules/samples-rules.yml @@ -1,3 +1,5 @@ +# Target Repository: samples +# Repository URL: https://github.com/Universal-Commerce-Protocol/samples --- rules: # --------------------------------------------------------- diff --git a/org-tools/governance/rules/ucp-rules.yml b/org-tools/governance/rules/ucp-rules.yml index 3dceb8e..6628077 100644 --- a/org-tools/governance/rules/ucp-rules.yml +++ b/org-tools/governance/rules/ucp-rules.yml @@ -1,3 +1,5 @@ +# Target Repository: ucp +# Repository URL: https://github.com/Universal-Commerce-Protocol/ucp --- rules: # --------------------------------------------------------- diff --git a/org-tools/governance/rules/ucp-schema-rules.yml b/org-tools/governance/rules/ucp-schema-rules.yml index 69ed2d4..08a35a9 100644 --- a/org-tools/governance/rules/ucp-schema-rules.yml +++ b/org-tools/governance/rules/ucp-schema-rules.yml @@ -1,3 +1,5 @@ +# Target Repository: ucp-schema +# Repository URL: https://github.com/Universal-Commerce-Protocol/ucp-schema --- rules: # --------------------------------------------------------- From 758db564d10e201972e33723e69e24126dac27f3 Mon Sep 17 00:00:00 2001 From: "damaz@google.com" Date: Mon, 29 Jun 2026 12:24:37 +0200 Subject: [PATCH 3/6] SDKs only need 1 approval --- org-tools/governance/rules/js-sdk-rules.yml | 6 +++--- org-tools/governance/rules/python-sdk-rules.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/org-tools/governance/rules/js-sdk-rules.yml b/org-tools/governance/rules/js-sdk-rules.yml index 0d7a987..577e3e2 100644 --- a/org-tools/governance/rules/js-sdk-rules.yml +++ b/org-tools/governance/rules/js-sdk-rules.yml @@ -11,7 +11,7 @@ rules: requires: # Strictly Governance Council (L4) - team: "governance-council" - min_approvals: 2 + min_approvals: 1 # --------------------------------------------------------- # Infrastructure, Tooling & Configuration @@ -38,14 +38,14 @@ rules: # Grants access to devops (L1), maintainers (L2), tech-council (L3), # and governance-council (L4) - min_team: "devops-maintainers" - min_approvals: 2 + min_approvals: 1 fallback: requires: # Default for all files (*). # Strictest rule possible - min_team: "governance-council" - min_approvals: 2 + min_approvals: 1 proxy_reviewers: - amithanda diff --git a/org-tools/governance/rules/python-sdk-rules.yml b/org-tools/governance/rules/python-sdk-rules.yml index 7966a22..24c613f 100644 --- a/org-tools/governance/rules/python-sdk-rules.yml +++ b/org-tools/governance/rules/python-sdk-rules.yml @@ -11,7 +11,7 @@ rules: requires: # Strictly Governance Council (L4) - team: "governance-council" - min_approvals: 2 + min_approvals: 1 # --------------------------------------------------------- # Infrastructure, Tooling & Configuration @@ -32,14 +32,14 @@ rules: # Grants access to devops (L1), maintainers (L2), tech-council (L3), # and governance-council (L4) - min_team: "devops-maintainers" - min_approvals: 2 + min_approvals: 1 fallback: requires: # Default for all files (*). # Strictest rule possible - min_team: "governance-council" - min_approvals: 2 + min_approvals: 1 proxy_reviewers: - amithanda From aaf4cfe6f2d92c2c01936a38e3eb566d65fef71a Mon Sep 17 00:00:00 2001 From: "damaz@google.com" Date: Mon, 29 Jun 2026 14:31:04 +0200 Subject: [PATCH 4/6] add rules for meeting-minutes + add missing files to existing rules --- .../rules/meeting-minutes-rules.yml | 71 +++++++++++++++++++ .../governance/rules/python-sdk-rules.yml | 2 + org-tools/governance/rules/samples-rules.yml | 2 + org-tools/governance/rules/ucp-rules.yml | 6 +- 4 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 org-tools/governance/rules/meeting-minutes-rules.yml diff --git a/org-tools/governance/rules/meeting-minutes-rules.yml b/org-tools/governance/rules/meeting-minutes-rules.yml new file mode 100644 index 0000000..ad98523 --- /dev/null +++ b/org-tools/governance/rules/meeting-minutes-rules.yml @@ -0,0 +1,71 @@ +# Target Repository: meeting-minutes +# Repository URL: https://github.com/Universal-Commerce-Protocol/meeting-minutes +--- +rules: + # --------------------------------------------------------- + # Governance + # --------------------------------------------------------- + - name: "governance_and_licensing" + patterns: + - "LICENSE" + requires: + # Strictly Governance Council (L4) + - team: "governance-council" + min_approvals: 2 + + # --------------------------------------------------------- + # Technical Council Minutes + # --------------------------------------------------------- + - name: "tech_council_minutes" + patterns: + - "tc/**" + requires: + # Grants access to tech-council (L3) and governance-council (L4) + - min_team: "tech-council" + min_approvals: 2 + + # --------------------------------------------------------- + # Governing Council Minutes + # --------------------------------------------------------- + - name: "governance_council_minutes" + patterns: + - "gc/**" + requires: + # Grants access to governance-council (L4) + - min_team: "governance-council" + min_approvals: 2 + + # --------------------------------------------------------- + # Infrastructure, Tooling & General Files + # --------------------------------------------------------- + - name: "infra_and_tooling" + patterns: + - ".github/**" + - ".gitignore" + - ".pre-commit-config.yaml" + - "README.md" + - "CONTRIBUTING.md" + - "SECURITY.md" + excludes: + - ".github/CODEOWNERS" + requires: + # Grants access to devops (L1), maintainers (L2), tech-council (L3), + # and governance-council (L4) + - min_team: "devops-maintainers" + min_approvals: 2 + +fallback: + requires: + # Default for all files (*). + # Strictest rule possible + - min_team: "governance-council" + min_approvals: 2 + +proxy_reviewers: + - amithanda + +team_hierarchy: + devops-maintainers: 1 + maintainers: 2 + tech-council: 3 + governance-council: 4 diff --git a/org-tools/governance/rules/python-sdk-rules.yml b/org-tools/governance/rules/python-sdk-rules.yml index 24c613f..2a590a0 100644 --- a/org-tools/governance/rules/python-sdk-rules.yml +++ b/org-tools/governance/rules/python-sdk-rules.yml @@ -18,9 +18,11 @@ rules: # --------------------------------------------------------- - name: "infra_and_tooling" patterns: + - ".codespellignore" - ".github/**" - ".gitignore" - ".pre-commit-config.yaml" + - ".prettierrc" - "pyproject.toml" - "uv.lock" - "generate_models.sh" diff --git a/org-tools/governance/rules/samples-rules.yml b/org-tools/governance/rules/samples-rules.yml index 483158a..f82ad80 100644 --- a/org-tools/governance/rules/samples-rules.yml +++ b/org-tools/governance/rules/samples-rules.yml @@ -18,11 +18,13 @@ rules: # --------------------------------------------------------- - name: "infra_and_tooling" patterns: + - ".codespellignore" - ".cspell.json" - ".cspell/**" - ".github/**" - ".gitignore" - ".pre-commit-config.yaml" + - ".prettierrc" - "README.md" - "SECURITY.md" - "a2a/**" diff --git a/org-tools/governance/rules/ucp-rules.yml b/org-tools/governance/rules/ucp-rules.yml index 6628077..37ddee4 100644 --- a/org-tools/governance/rules/ucp-rules.yml +++ b/org-tools/governance/rules/ucp-rules.yml @@ -8,8 +8,7 @@ rules: - name: "governance_and_licensing" patterns: - "LICENSE" - # Consider updating this path if renaming to owners.yaml - - ".github/CODEOWNERS" + - "MAINTAINERS.md" requires: # Strictly Governance Council (L4) - team: "governance-council" @@ -57,6 +56,9 @@ rules: - "biome.json" - "mkdocs.yml" - ".gitignore" + - ".linkignore" + - "AGENTS.md" + - "CLAUDE.md" - "pyproject.toml" - "uv.lock" - "package.json" From 30474bfdbc38e26c22f84478e3d94008fe7f0113 Mon Sep 17 00:00:00 2001 From: "damaz@google.com" Date: Mon, 29 Jun 2026 14:36:41 +0200 Subject: [PATCH 5/6] set 1 approval for meeting-minutes --- org-tools/governance/rules/meeting-minutes-rules.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/org-tools/governance/rules/meeting-minutes-rules.yml b/org-tools/governance/rules/meeting-minutes-rules.yml index ad98523..7dc21c2 100644 --- a/org-tools/governance/rules/meeting-minutes-rules.yml +++ b/org-tools/governance/rules/meeting-minutes-rules.yml @@ -11,7 +11,7 @@ rules: requires: # Strictly Governance Council (L4) - team: "governance-council" - min_approvals: 2 + min_approvals: 1 # --------------------------------------------------------- # Technical Council Minutes @@ -22,7 +22,7 @@ rules: requires: # Grants access to tech-council (L3) and governance-council (L4) - min_team: "tech-council" - min_approvals: 2 + min_approvals: 1 # --------------------------------------------------------- # Governing Council Minutes @@ -33,7 +33,7 @@ rules: requires: # Grants access to governance-council (L4) - min_team: "governance-council" - min_approvals: 2 + min_approvals: 1 # --------------------------------------------------------- # Infrastructure, Tooling & General Files @@ -52,14 +52,14 @@ rules: # Grants access to devops (L1), maintainers (L2), tech-council (L3), # and governance-council (L4) - min_team: "devops-maintainers" - min_approvals: 2 + min_approvals: 1 fallback: requires: # Default for all files (*). # Strictest rule possible - min_team: "governance-council" - min_approvals: 2 + min_approvals: 1 proxy_reviewers: - amithanda From 2107bb668ab9721197d2089dd9ab6670d2f3b654 Mon Sep 17 00:00:00 2001 From: "damaz@google.com" Date: Mon, 29 Jun 2026 15:16:32 +0200 Subject: [PATCH 6/6] add .codespellignore to infra and tooling --- org-tools/governance/rules/meeting-minutes-rules.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/org-tools/governance/rules/meeting-minutes-rules.yml b/org-tools/governance/rules/meeting-minutes-rules.yml index 7dc21c2..510bbb7 100644 --- a/org-tools/governance/rules/meeting-minutes-rules.yml +++ b/org-tools/governance/rules/meeting-minutes-rules.yml @@ -40,6 +40,7 @@ rules: # --------------------------------------------------------- - name: "infra_and_tooling" patterns: + - ".codespellignore" - ".github/**" - ".gitignore" - ".pre-commit-config.yaml"