From caed04c69deb9e75661fc61b067236897a34d01d Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Tue, 10 Feb 2026 22:16:58 -0800 Subject: [PATCH 1/3] Clean up GitOps workflows and policies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update reviewer assignments in pulls-02-reviewers.yml - Replace arthurclares with msbrett as default reviewer for all PRs - Add special handling for features/wacoascripts branch (Arthur only, or Brett/Michael if Arthur is author) - Remove inactive reviewers: ro100e, didayal-msft, springstone, ivanmtta, sebassem - Add arthurclares as reviewer for Optimization workbook PRs - Update CODEOWNERS to match reviewer changes - Fix label typo in issues-00-conventions.yml (Skill: Workbooks → Tool: Workbooks) - Clean up issues-01-new.yml (remove stale TODO comment) - Update issues-02-duplicate.yml to close issues instead of assigning to author - Delete fabricbot.json (deprecated, functionality covered by policies) Co-Authored-By: Claude Opus 4.5 --- .github/CODEOWNERS | 114 +++-- .github/fabricbot.json | 558 --------------------- .github/policies/issues-00-conventions.yml | 2 +- .github/policies/issues-01-new.yml | 4 +- .github/policies/issues-02-duplicate.yml | 7 +- .github/policies/pulls-02-reviewers.yml | 111 ++-- 6 files changed, 115 insertions(+), 681 deletions(-) delete mode 100644 .github/fabricbot.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 38eedc630..c63bdac57 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,97 +1,117 @@ -# Lines starting with '#' are comments. -# Each line is a file pattern followed by one or more owners. +# Lines starting with '#' are comments + +# Each line is a file pattern followed by one or more owners # More details are here: https://help.github.com/articles/about-codeowners/ -# The '*' pattern is global owners. +# The '\*' pattern is global owners + +# Order is important. The last matching pattern has the most precedence + +# The folders are ordered as follows -# Order is important. The last matching pattern has the most precedence. -# The folders are ordered as follows: +# In each subsection folders are ordered first by depth, then alphabetically -# In each subsection folders are ordered first by depth, then alphabetically. -# This should make it easy to add new rules without breaking existing ones. +# This should make it easy to add new rules without breaking existing ones # Global rule -#* @microsoft/finops-toolkit -* @flanakin @arthurclares + +# \* @microsoft/finops-toolkit + +- @flanakin @msbrett # DevOps folders -#.build @TODO -#.github @TODO -#docs-wiki @TODO -#src/scripts @TODO + +# .build @TODO +# .github @TODO +# docs-wiki @TODO +# src/scripts @TODO # General -#docs/help.md @TODO -#docs/README.md @TODO -#docs-mslearn/toolkit/help @TODO -#docs-mslearn/toolkit/*.md @TODO -#docs-wiki @TODO + +# docs/help.md @TODO +# docs/README.md @TODO +# docs-mslearn/toolkit/help @TODO +# docs-mslearn/toolkit/\*.md @TODO +# docs-wiki @TODO # FTK governing board + docs-mslearn/toolkit/roadmap.md @microsoft/finops-toolkit-board docs-wiki/Advisory-council.md @microsoft/finops-toolkit-board docs-wiki/Governing-board.md @microsoft/finops-toolkit-board docs-wiki/Release-process.md @microsoft/finops-toolkit-board # FTK advisory council + .github/CODEOWNERS @microsoft/finops-toolkit-council docs-wiki/Coding-guidelines.md @microsoft/finops-toolkit-council docs-wiki/Dev-process.md @microsoft/finops-toolkit-council docs-wiki/Support-escalations.md @microsoft/finops-toolkit-board # Alerts -docs/alerts.md @ro100e @arthurclares @flanakin -docs-mslearn/toolkit/alerts @ro100e @arthurclares @flanakin -src/templates/finops-alerts @ro100e + +# docs/alerts.md @ro100e @flanakin +# docs-mslearn/toolkit/alerts @ro100e @flanakin +# src/templates/finops-alerts @ro100e @flanakin # Bicep -#docs/bicep.md @TODO -#docs-mslearn/toolkit/bicep-registry @TODO -#src/bicep-registry @TODO + +# docs/bicep.md @TODO +# docs-mslearn/toolkit/bicep-registry @TODO +# src/bicep-registry @TODO # Guide -docs/guide.md @flanakin -docs-mslearn/best-practices @arthurclares @flanakin -docs-mslearn/framework @arthurclares @flanakin @kevindlr -docs-mslearn/focus @flanakin + +#docs/guide.md @flanakin +#docs-mslearn/best-practices @arthurclares @flanakin +#docs-mslearn/framework @arthurclares @flanakin @kevindlr +#docs-mslearn/focus @flanakin # Fabric -docs-mslearn/fabric @flanakin + +#docs-mslearn/fabric @flanakin # Hubs -docs/hubs.md @msbrett @flanakin @arthurclares -docs-mslearn/toolkit/hubs @msbrett @flanakin @arthurclares -src/templates/finops-hub @msbrett @flanakin @arthurclares + +docs/hubs.md @msbrett @flanakin @RolandKrummenacher +docs-mslearn/toolkit/hubs @msbrett @flanakin @RolandKrummenacher +src/templates/finops-hub @msbrett @flanakin @RolandKrummenacher # Open data -docs/open-data.md @flanakin -docs-mslearn/toolkit/open-data.md @flanakin -src/open-data @flanakin + +#docs/open-data.md @flanakin +#docs-mslearn/toolkit/open-data.md @flanakin +#src/open-data @flanakin # Optimization Engine -docs/optimization-engine.md @helderpinto @arthurclares @flanakin -docs-mslearn/toolkit/optimization-engine @helderpinto @arthurclares @flanakin + +docs/optimization-engine.md @helderpinto @msbrett @flanakin +docs-mslearn/toolkit/optimization-engine @helderpinto @msbrett @flanakin src/optimization-engine @helderpinto # Power BI -#docs/power-bi.md @TODO -#docs-mslearn/toolkit/power-bi @TODO -#src/power-bi @TODO -src/power-bi/*/Governance* @nteyan + +# docs/power-bi.md @TODO +# docs-mslearn/toolkit/power-bi @TODO +# src/power-bi @TODO +src/power-bi/_/Governance_ @nteyan # PowerShell -#docs/powershell.md @TODO -#src/powershell @TODO -#docs-mslearn/toolkit/powershell @TODO -#src/powershell @TODO + +# docs/powershell.md @TODO +# src/powershell @TODO +# docs-mslearn/toolkit/powershell @TODO +# src/powershell @TODO # Web -src/web @ivanmtta @jamelachahbar @flanakin + +src/web @jamelachahbar @flanakin @akiskips # Workbooks + docs/workbooks.md @arthurclares @nteyan @flanakin docs-mslearn/toolkit/workbooks @arthurclares @nteyan @flanakin src/templates/finops-workbooks @arthurclares @nteyan src/workbooks/governance @nteyan -src/workbooks/optimization @arthurclares +src/workbooks/optimization @arthurclares @flanakin diff --git a/.github/fabricbot.json b/.github/fabricbot.json deleted file mode 100644 index 922651438..000000000 --- a/.github/fabricbot.json +++ /dev/null @@ -1,558 +0,0 @@ -{ - "version": "1.0", - "tasks": [ - { - "taskType": "trigger", - "capabilityId": "IssueResponder", - "subCapability": "PullRequestResponder", - "version": "1.0", - "config": { - "taskName": "Do not allow PRs to be merged into main", - "eventType": "pull_request", - "eventNames": ["pull_request", "issues", "project_card"], - "conditions": { - "operator": "and", - "operands": [ - { - "name": "isAction", - "parameters": { - "action": "opened" - } - }, - { - "name": "prTargetsBranch", - "parameters": { - "branchName": "main" - } - } - ] - }, - "actions": [ - { - "name": "addReply", - "parameters": { - "comment": "Hi @${issueAuthor}. We noticed you created this PR against `main`. We don't accept PRs against `main`. Please use `dev` or a `features/*` branch instead. To learn more, see [Select a branch](https://github.com/microsoft/finops-toolkit/tree/dev/src#-select-a-branch)." - } - }, - { - "name": "addLabel", - "parameters": { - "label": "Needs: Attention 👋" - } - } - ] - } - }, - { - "taskName": "Label solutions", - "taskType": "trigger", - "capabilityId": "PrAutoLabel", - "subCapability": "Path", - "version": "1.0", - "config": { - "configs": [ - { - "label": "Solution: FinOps hubs", - "pathFilter": ["src/templates/finops-hub"] - }, - { - "label": "Solution: Workbooks", - "pathFilter": ["src/workbooks"] - }, - { - "label": "Solutions: Bicep Registry", - "pathFilter": ["src/bicep-registry"] - }, - { - "label": "Area: GitHub", - "pathFilter": [".github"] - } - ], - "taskName": "Solution labels" - } - }, - { - "taskType": "trigger", - "capabilityId": "InPrLabel", - "subCapability": "InPrLabel", - "version": "1.0", - "config": { - "label_inPr": "Status: 🔬 Code review", - "fixedLabelEnabled": true, - "taskName": "Label issues in review", - "label_fixed": "Status: 📦 Pending release" - } - }, - { - "taskType": "trigger", - "capabilityId": "IssueResponder", - "subCapability": "PullRequestReviewResponder", - "version": "1.0", - "config": { - "taskName": "PR changes requested - Needs attention", - "conditions": { - "operator": "and", - "operands": [ - { - "name": "isAction", - "parameters": { - "action": "submitted" - } - }, - { - "name": "isReviewState", - "parameters": { - "state": "changes_requested" - } - } - ] - }, - "actions": [ - { - "name": "addLabel", - "parameters": { - "label": "Needs: Attention 👋" - } - } - ], - "eventType": "pull_request", - "eventNames": ["pull_request_review"] - } - }, - { - "taskType": "trigger", - "capabilityId": "IssueResponder", - "subCapability": "PullRequestResponder", - "version": "1.0", - "config": { - "taskName": "PR updated by author - Needs review", - "conditions": { - "operator": "and", - "operands": [ - { - "name": "isActivitySender", - "parameters": { - "user": { - "type": "author" - } - } - }, - { - "operator": "not", - "operands": [ - { - "name": "isAction", - "parameters": { - "action": "closed" - } - } - ] - }, - { - "name": "hasLabel", - "parameters": { - "label": "Needs: Attention 👋" - } - } - ] - }, - "actions": [ - { - "name": "removeLabel", - "parameters": { - "label": "Needs: Attention 👋" - } - }, - { - "name": "addLabel", - "parameters": { - "label": "Needs: Review 👀" - } - } - ], - "eventType": "pull_request", - "eventNames": ["pull_request", "issues", "project_card"] - } - }, - { - "taskType": "trigger", - "capabilityId": "IssueResponder", - "subCapability": "PullRequestCommentResponder", - "version": "1.0", - "config": { - "taskName": "PR comments - Needs review", - "conditions": { - "operator": "and", - "operands": [ - { - "name": "isActivitySender", - "parameters": { - "user": { - "type": "author" - } - } - }, - { - "name": "hasLabel", - "parameters": { - "label": "Needs: Attention 👋" - } - } - ] - }, - "actions": [ - { - "name": "removeLabel", - "parameters": { - "label": "Needs: Attention 👋" - } - }, - { - "name": "addLabel", - "parameters": { - "label": "Needs: Review 👀" - } - } - ], - "eventType": "pull_request", - "eventNames": ["issue_comment"] - } - }, - { - "taskType": "trigger", - "capabilityId": "IssueResponder", - "subCapability": "PullRequestReviewResponder", - "version": "1.0", - "config": { - "taskName": "PR review comments - Needs review", - "conditions": { - "operator": "and", - "operands": [ - { - "name": "isActivitySender", - "parameters": { - "user": { - "type": "author" - } - } - }, - { - "name": "hasLabel", - "parameters": { - "label": "Needs: Attention 👋" - } - } - ] - }, - "actions": [ - { - "name": "removeLabel", - "parameters": { - "label": "Needs: Attention 👋" - } - }, - { - "name": "addLabel", - "parameters": { - "label": "Needs: Review 👀" - } - } - ], - "eventType": "pull_request", - "eventNames": ["pull_request_review"] - } - }, - { - "taskType": "trigger", - "capabilityId": "IssueResponder", - "subCapability": "PullRequestResponder", - "version": "1.0", - "config": { - "taskName": "PR revived - Needs review", - "conditions": { - "operator": "and", - "operands": [ - { - "operator": "not", - "operands": [ - { - "name": "isAction", - "parameters": { - "action": "closed" - } - } - ] - }, - { - "name": "hasLabel", - "parameters": { - "label": "Resolution: No activity" - } - } - ] - }, - "actions": [ - { - "name": "removeLabel", - "parameters": { - "label": "Resolution: No activity" - } - }, - { - "name": "addLabel", - "parameters": { - "label": "Needs: Review 👀" - } - } - ], - "eventType": "pull_request", - "eventNames": ["pull_request", "issues", "project_card"] - } - }, - { - "taskType": "trigger", - "capabilityId": "IssueResponder", - "subCapability": "PullRequestCommentResponder", - "version": "1.0", - "config": { - "taskName": "PR revived via comments - Needs review", - "conditions": { - "operator": "and", - "operands": [ - { - "name": "hasLabel", - "parameters": { - "label": "Resolution: No activity" - } - } - ] - }, - "actions": [ - { - "name": "removeLabel", - "parameters": { - "label": "Resolution: No activity" - } - }, - { - "name": "addLabel", - "parameters": { - "label": "Needs: Review 👀" - } - } - ], - "eventType": "pull_request", - "eventNames": ["issue_comment"] - } - }, - { - "taskType": "trigger", - "capabilityId": "IssueResponder", - "subCapability": "PullRequestReviewResponder", - "version": "1.0", - "config": { - "taskName": "PR revived via review - Needs review", - "conditions": { - "operator": "and", - "operands": [ - { - "name": "hasLabel", - "parameters": { - "label": "Resolution: No activity" - } - } - ] - }, - "actions": [ - { - "name": "removeLabel", - "parameters": { - "label": "Resolution: No activity" - } - }, - { - "name": "addLabel", - "parameters": { - "label": "Needs: Review 👀" - } - } - ], - "eventType": "pull_request", - "eventNames": ["pull_request_review"] - } - }, - { - "taskType": "scheduled", - "capabilityId": "ScheduledSearch", - "subCapability": "ScheduledSearch", - "version": "1.1", - "config": { - "taskName": "PR inactive 3mo - Close", - "frequency": [ - { - "weekDay": 0, - "hours": [4, 10, 16, 22] - }, - { - "weekDay": 1, - "hours": [4, 10, 16, 22] - }, - { - "weekDay": 2, - "hours": [4, 10, 16, 22] - }, - { - "weekDay": 3, - "hours": [4, 10, 16, 22] - }, - { - "weekDay": 4, - "hours": [4, 10, 16, 22] - }, - { - "weekDay": 5, - "hours": [4, 10, 16, 22] - }, - { - "weekDay": 6, - "hours": [4, 10, 16, 22] - } - ], - "searchTerms": [ - { - "name": "isPr", - "parameters": {} - }, - { - "name": "isOpen", - "parameters": {} - }, - { - "name": "hasLabel", - "parameters": { - "label": "Needs: Attention 👋" - } - }, - { - "name": "hasLabel", - "parameters": { - "label": "Resolution: No activity" - } - }, - { - "name": "noActivitySince", - "parameters": { - "days": 91 - } - } - ], - "actions": [ - { - "name": "closeIssue", - "parameters": {} - } - ] - } - }, - { - "taskType": "scheduled", - "capabilityId": "ScheduledSearch", - "subCapability": "ScheduledSearch", - "version": "1.1", - "config": { - "taskName": "PR inactive 4 weeks - Comment and flag", - "frequency": [ - { - "weekDay": 0, - "hours": [5, 11, 17, 23] - }, - { - "weekDay": 1, - "hours": [5, 11, 17, 23] - }, - { - "weekDay": 2, - "hours": [5, 11, 17, 23] - }, - { - "weekDay": 3, - "hours": [5, 11, 17, 23] - }, - { - "weekDay": 4, - "hours": [5, 11, 17, 23] - }, - { - "weekDay": 5, - "hours": [5, 11, 17, 23] - }, - { - "weekDay": 6, - "hours": [5, 11, 17, 23] - } - ], - "searchTerms": [ - { - "name": "isPr", - "parameters": {} - }, - { - "name": "isOpen", - "parameters": {} - }, - { - "name": "hasLabel", - "parameters": { - "label": "Needs: Attention 👋" - } - }, - { - "name": "noActivitySince", - "parameters": { - "days": 28 - } - }, - { - "name": "noLabel", - "parameters": { - "label": "Resolution: No activity" - } - } - ], - "actions": [ - { - "name": "addLabel", - "parameters": { - "label": "Resolution: No activity" - } - }, - { - "name": "addReply", - "parameters": { - "comment": "This PR has not been updated in 4 weeks. Please respond to comments and update the PR. It will be closed if not updated **in the next 2 months**." - } - } - ] - } - }, - { - "taskType": "trigger", - "capabilityId": "AutoMerge", - "subCapability": "AutoMerge", - "version": "1.0", - "config": { - "taskName": "PR automerge 3 day wait - Automerge", - "label": "Resolution: Automerge", - "silentMode": false, - "minMinutesOpen": "4320", - "mergeType": "squash", - "allowAutoMergeInstructionsWithoutLabel": true, - "deleteBranches": true, - "removeLabelOnPush": true, - "requireSpecificCheckRuns": false, - "conditionalMergeTypes": [] - } - } - ], - "userGroups": [] -} diff --git a/.github/policies/issues-00-conventions.yml b/.github/policies/issues-00-conventions.yml index e597b1989..8842aa326 100644 --- a/.github/policies/issues-00-conventions.yml +++ b/.github/policies/issues-00-conventions.yml @@ -108,6 +108,6 @@ configuration: isRegex: true then: - addLabel: - label: 'Skill: Workbooks' + label: 'Tool: Workbooks' onFailure: onSuccess: diff --git a/.github/policies/issues-01-new.yml b/.github/policies/issues-01-new.yml index 96767bf2f..583f60e2c 100644 --- a/.github/policies/issues-01-new.yml +++ b/.github/policies/issues-01-new.yml @@ -12,10 +12,8 @@ configuration: eventResponderTasks: - description: >- When an author creates new issue: - - Assign to PM - Label with `Needs: Triage 🔍` - - TODO: Consider adding a comment to teach reviewer about what they can do: "@author, thanks for the issue! Please make sure all relevant details are included. @reviewer, please triage this issue. If you need more details, leave a comment with #needs-info..." + - Add a welcome comment if: - payloadType: Issues - isAction: diff --git a/.github/policies/issues-02-duplicate.yml b/.github/policies/issues-02-duplicate.yml index 10b3137a4..75363f13e 100644 --- a/.github/policies/issues-02-duplicate.yml +++ b/.github/policies/issues-02-duplicate.yml @@ -12,9 +12,9 @@ configuration: eventResponderTasks: - description: >- When an issue has been flagged with `#duplicate` in a comment: - - Assign to author - - Remove the `Needs: Triage 🔍` label - Label with `Resolution: Duplicate` + - Remove the `Needs: Triage 🔍` label + - Close the issue if: - payloadType: Issue_Comment - commentContains: @@ -29,7 +29,6 @@ configuration: label: 'Resolution: Duplicate' - removeLabel: label: 'Needs: Triage 🔍' - - assignTo: - author: True + - closeIssue onFailure: onSuccess: diff --git a/.github/policies/pulls-02-reviewers.yml b/.github/policies/pulls-02-reviewers.yml index 1202b97d2..920fd698e 100644 --- a/.github/policies/pulls-02-reviewers.yml +++ b/.github/policies/pulls-02-reviewers.yml @@ -10,23 +10,58 @@ where: configuration: resourceManagementConfiguration: eventResponderTasks: + # features/wacoascripts branch -- Arthur (or Brett and Michael if Arthur is the author) + - description: When a PR is opened against features/wacoascripts, assign reviewers + if: + - payloadType: Pull_Request + - targetsBranch: + branch: features/wacoascripts + then: + # If Arthur, assign Brett and Michael + - if: + - isActivitySender: + user: arthurclares + then: + - requestReview: + reviewer: msbrett + - requestReview: + reviewer: flanakin + - assignTo: + user: msbrett + - assignTo: + user: flanakin + # Otherwise, assign Arthur + - if: + - not: + isActivitySender: + user: arthurclares + then: + - requestReview: + reviewer: arthurclares + - assignTo: + user: arthurclares + + # All other branches (excluding main and features/wacoascripts) - description: When a PR is opened, add reviewers and labels based on file paths if: - payloadType: Pull_Request - not: targetsBranch: branch: main + - not: + targetsBranch: + branch: features/wacoascripts then: - # all paths -- Arthur + # all paths -- Brett - if: - not: isActivitySender: - user: arthurclares + user: msbrett then: - requestReview: - reviewer: arthurclares + reviewer: msbrett - assignTo: - user: arthurclares + user: msbrett # all paths -- Michael - if: - not: @@ -177,16 +212,6 @@ configuration: reviewer: helderpinto - assignTo: user: helderpinto - # Robel - - if: - - not: - isActivitySender: - user: ro100e - then: - - requestReview: - reviewer: ro100e - - assignTo: - user: ro100e # Roland - if: - not: @@ -263,16 +288,6 @@ configuration: reviewer: aromano2 - assignTo: user: aromano2 - # Divyadeep - - if: - - not: - isActivitySender: - user: didayal-msft - then: - - requestReview: - reviewer: didayal-msft - - assignTo: - user: didayal-msft # Helder - if: - not: @@ -283,16 +298,6 @@ configuration: reviewer: helderpinto - assignTo: user: helderpinto - # Sacha - - if: - - not: - isActivitySender: - user: springstone - then: - - requestReview: - reviewer: springstone - - assignTo: - user: springstone # optimization engine - if: - filesMatchPattern: @@ -317,26 +322,6 @@ configuration: then: - addLabel: label: 'Skill: Deployment' - # Divyadeep - - if: - - not: - isActivitySender: - user: didayal-msft - then: - - requestReview: - reviewer: didayal-msft - - assignTo: - user: didayal-msft - # Sacha - - if: - - not: - isActivitySender: - user: springstone - then: - - requestReview: - reviewer: springstone - - assignTo: - user: springstone # web - if: - or: @@ -345,16 +330,6 @@ configuration: then: - addLabel: label: 'Tool: Web app' - # Ivan - - if: - - not: - isActivitySender: - user: ivanmtta - then: - - requestReview: - reviewer: ivanmtta - - assignTo: - user: ivanmtta # Jamel - if: - not: @@ -418,7 +393,7 @@ configuration: reviewer: nteyan - assignTo: user: nteyan - # Seif + # Arthur - if: - or: - filesMatchPattern: @@ -429,11 +404,11 @@ configuration: pattern: ^src\/workbooks\/(\.scaffold|optimization)\/.* - not: isActivitySender: - user: sebassem + user: arthurclares then: - requestReview: - reviewer: sebassem + reviewer: arthurclares - assignTo: - user: sebassem + user: arthurclares onFailure: onSuccess: From ed72b6f0eeaac728d7388f06709a9035e2912ac4 Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Wed, 11 Feb 2026 03:56:51 -0800 Subject: [PATCH 2/3] Update .github/policies/issues-01-new.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/policies/issues-01-new.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/policies/issues-01-new.yml b/.github/policies/issues-01-new.yml index 583f60e2c..ae1f024be 100644 --- a/.github/policies/issues-01-new.yml +++ b/.github/policies/issues-01-new.yml @@ -11,7 +11,7 @@ configuration: resourceManagementConfiguration: eventResponderTasks: - description: >- - When an author creates new issue: + When an author creates a new issue: - Label with `Needs: Triage 🔍` - Add a welcome comment if: From 03d05da4e6e450c311a881dc77829b22dafe343d Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Wed, 11 Feb 2026 03:57:53 -0800 Subject: [PATCH 3/3] Update .github/CODEOWNERS Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/CODEOWNERS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c63bdac57..21120584d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -95,7 +95,8 @@ src/optimization-engine @helderpinto # docs/power-bi.md @TODO # docs-mslearn/toolkit/power-bi @TODO # src/power-bi @TODO -src/power-bi/_/Governance_ @nteyan +src/power-bi/storage/Governance.* @nteyan +src/power-bi/kql/Governance.* @nteyan # PowerShell