chore: Remove legacy CODEOWNERS file (#40266)

This commit is contained in:
Charlie Kolb 2026-10-05 08:14:37 +00:00 committed by GitHub
parent 674fb57941
commit 4ea06438db
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 10 additions and 34 deletions

View File

@ -27,7 +27,7 @@ never a copy per directory. Security and QA & DX deliberately don't link
agents shouldn't be able to produce.
All five slots are used, so a new domain now merges into an existing agent. QA &
DX covers the build, test, and CI surface — the same paths `.github/OWNERS`
DX covers the build, test, and CI surface — the same paths `OWNERS`
assigns to `@n8n-io/qa-dx`. Code-quality rules that happen to apply broadly
(error classes, `any`, lazy imports) are backend rules, not QA & DX ones. DB
migrations is split out of Backend because a migration is permanent and runs

11
.github/CODEOWNERS vendored
View File

@ -1,11 +0,0 @@
# Temporary: kept side by side with the top-level OWNERS file while the
# "Required Reviews" enforcement is on trial. Do not add entries here;
# add them to OWNERS. See "Transition from CODEOWNERS" in WORKFLOWS.md.
packages/@n8n/db/src/migrations/ @n8n-io/migrations-review
/OWNERS @n8n-io/qa-dx
.github/workflows @n8n-io/qa-dx
.github/scripts @n8n-io/qa-dx
.github/actions @n8n-io/qa-dx
.github/poutine-rules @n8n-io/qa-dx
docker/get-n8n.sh @n8n-io/qa-dx
.code-health-baseline.json @n8n-io/qa-dx

19
.github/WORKFLOWS.md vendored
View File

@ -10,7 +10,6 @@ Complete reference for n8n's `.github/` folder.
.github/
├── WORKFLOWS.md # This document
├── CI-TELEMETRY.md # Telemetry & metrics guide
├── CODEOWNERS # Temporary, side by side with OWNERS during the trial
├── pull_request_template.md # PR description template
├── pull_request_title_conventions.md # Title format rules (Angular)
├── actionlint.yml # Workflow linter config
@ -850,9 +849,8 @@ See **[CI-TELEMETRY.md](CI-TELEMETRY.md)** for:
## OWNERS
Team ownership lives in the top-level `OWNERS` file (this replaces the
GitHub-native `CODEOWNERS` file; see the transition note below). The scripts
that consume it live in `.github/scripts/owners/`. Line format:
Team ownership lives in the top-level `OWNERS` file. The scripts that consume
it live in `.github/scripts/owners/`. Line format:
```
<pattern> <@org/team> [required]
@ -922,8 +920,7 @@ Reviews** status succeed without required OWNERS team approvals. A team member
must apply the `large-scale-change` label. The gate checks the actor from the
label event and verifies their current team membership. The label alone is not
sufficient. Label changes re-evaluate the status. Removing the label removes
the exemption. During the CODEOWNERS trial, GitHub still enforces its separate
code-owner review requirement.
the exemption.
Every path that writes the status runs in the base repository context, because
a fork-context run has no secrets and a read-only token. PR changes arrive
@ -937,16 +934,6 @@ contribution whose runs still wait for approval gets no review-event
re-evaluation until a maintainer approves the runs; `workflow_dispatch` with
the PR number is the manual fallback.
### Transition from CODEOWNERS
During a trial period, `.github/CODEOWNERS` stays in place next to OWNERS:
GitHub's native code-owner enforcement keeps gating merges while the
"Required Reviews" status runs side by side. The two must agree — CODEOWNERS
holds exactly the `required` entries of OWNERS (plus the OWNERS file itself)
and must not gain new entries; new ownership goes into OWNERS. After the
trial, delete `.github/CODEOWNERS`, remove "Require review from Code Owners"
from the master ruleset, and delete this section (tracked in DEVP-887).
---
## Runner Selection

View File

@ -10,7 +10,7 @@ Modules give these benefits:
- **Independence:** You typecheck, lint and test one feature in seconds. You do not run all of
editor-ui (~770K lines of `.ts` and `.vue`; `src/features/` holds ~600K of that).
- **Decoupling:** A module cannot read the shell or another module. Features stay separate.
- **Ownership:** One package has one CODEOWNERS line.
- **Ownership:** One package has one `OWNERS` line.
- **Parity:** The frontend module id is the same as the backend module id. Both read
`/rest/module-settings`.
@ -477,7 +477,7 @@ const isEnabled = computed(
## Register the module with the shell
A module does nothing until the shell can see it. The shell needs **four file edits and one
CODEOWNERS line**. The CLI makes the four edits. Read this section when you register a module by
`OWNERS` line**. The CLI makes the four edits. Read this section when you register a module by
hand, or when you debug a CI failure.
| # | Where | What | Scaffolded? |
@ -486,10 +486,10 @@ hand, or when you debug a CI failure.
| 2 | `editor-ui/package.json` | `"@n8n/frontend-module-x": "workspace:*"` | ✅ |
| 3 | `editor-ui/tsconfig.json` | two `paths` entries (bare + `/*`) | ✅ |
| 4 | `editor-ui/src/app/modules.manifest.ts` | import + array entry | ✅ |
| 5 | `.github/CODEOWNERS` | one line for the new package | ❌ do this |
| 5 | `OWNERS` | one line for the new package | ❌ do this |
The frontend has no CODEOWNERS entries today, so you cannot copy a line for #5. Add your line when
you create the module. A package with no owner is the start of an incomplete migration.
Add the ownership line when you create the module. A package with no owner is the start of an
incomplete migration.
**Put #1, #2 and #3 in the same PR.** They are not alternatives. Each one serves a different
resolver:
@ -696,7 +696,7 @@ Keep `"license": "LicenseRef-n8n-sustainable-use"`. Do not add `private`.
can become a static map of dynamic imports. Vite then emits one chunk for each module. The
decision point is the end of wave 2, with bundle data. The team decided against a module load
at run time.
5. **CODEOWNERS is a manual step.** An addition to the CLI is a small and clear follow-up.
5. **Updating `OWNERS` is a manual step.** An addition to the CLI is a small and clear follow-up.
6. **`@n8n/module-cli` has no `lint` script.** Type-aware lint on a package with no types gives
only `no-unsafe-*` noise. Ten other `@n8n/*` packages ship in the same way, and Biome still
formats this one. Review this decision if the CLI grows past a few hundred lines.