Files
the-nexus/CODEOWNERS
Line: 26: incorrect codeowner user: replace Line: 26: no users/groups matched Line: 27: incorrect format Line: 29: incorrect format Line: 30: incorrect format Line: 31: incorrect codeowner user: search Line: 31: no users/groups matched Line: 36: incorrect codeowner user: repositories Line: 36: incorrect codeowner user: must Line: 36: incorrect codeowner user: enforce Line: 36: incorrect codeowner user: these Line: 36: incorrect codeowner user: rules Line: 36: incorrect codeowner user: on Line: 36: incorrect codeowner user: the Line: 36: incorrect codeowner user: `main` Line: 36: incorrect codeowner user: branch: Line: 36: no users/groups matched Line: 38: incorrect codeowner user: Rule Line: 38: incorrect codeowner user: | Line: 38: incorrect codeowner user: Status Line: 38: incorrect codeowner user: | Line: 38: incorrect codeowner user: Rationale Line: 38: incorrect codeowner user: | Line: 38: no users/groups matched Line: 39: incorrect format Line: 40: incorrect codeowner user: Require Line: 40: incorrect codeowner user: PR Line: 40: incorrect codeowner user: for Line: 40: incorrect codeowner user: merge Line: 40: incorrect codeowner user: | Line: 40: incorrect codeowner user: ✅ Line: 40: incorrect codeowner user: Enabled Line: 40: incorrect codeowner user: | Line: 40: incorrect codeowner user: Prevent Line: 40: incorrect codeowner user: direct Line: 40: incorrect codeowner user: commits Line: 40: incorrect codeowner user: | Line: 40: no users/groups matched Line: 41: incorrect codeowner user: Required Line: 41: incorrect codeowner user: approvals Line: 41: incorrect codeowner user: | Line: 41: incorrect codeowner user: ✅ Line: 41: incorrect codeowner user: 1+ Line: 41: incorrect codeowner user: | Line: 41: incorrect codeowner user: Minimum Line: 41: incorrect codeowner user: review Line: 41: incorrect codeowner user: threshold Line: 41: incorrect codeowner user: | Line: 41: no users/groups matched Line: 42: incorrect codeowner user: Dismiss Line: 42: incorrect codeowner user: stale Line: 42: incorrect codeowner user: approvals Line: 42: incorrect codeowner user: | Line: 42: incorrect codeowner user: ✅ Line: 42: incorrect codeowner user: Enabled Line: 42: incorrect codeowner user: | Line: 42: incorrect codeowner user: Re-review Line: 42: incorrect codeowner user: after Line: 42: incorrect codeowner user: new Line: 42: incorrect codeowner user: commits Line: 42: incorrect codeowner user: | Line: 42: no users/groups matched Line: 43: incorrect codeowner user: Require Line: 43: incorrect codeowner user: CI Line: 43: incorrect codeowner user: to Line: 43: incorrect codeowner user: pass Line: 43: incorrect codeowner user: | Line: 43: incorrect codeowner user: � Line: 43: incorrect codeowner user: Conditional Line: 43: incorrect codeowner user: | Line: 43: incorrect codeowner user: Only Line: 43: incorrect codeowner user: where Line: 43: incorrect codeowner user: CI Line: 43: incorrect codeowner user: exists Line: 43: incorrect codeowner user: | Line: 43: no users/groups matched Line: 44: incorrect codeowner user: Block Line: 44: incorrect codeowner user: force Line: 44: incorrect codeowner user: push Line: 44: incorrect codeowner user: | Line: 44: incorrect codeowner user: ✅ Line: 44: incorrect codeowner user: Enabled Line: 44: incorrect codeowner user: | Line: 44: incorrect codeowner user: Protect Line: 44: incorrect codeowner user: commit Line: 44: incorrect codeowner user: history Line: 44: incorrect codeowner user: | Line: 44: no users/groups matched Line: 45: incorrect codeowner user: Block Line: 45: incorrect codeowner user: branch Line: 45: incorrect codeowner user: deletion Line: 45: incorrect codeowner user: | Line: 45: incorrect codeowner user: ✅ Line: 45: incorrect codeowner user: Enabled Line: 45: incorrect codeowner user: | Line: 45: incorrect codeowner user: Prevent Line: 45: incorrect codeowner user: accidental Line: 45: incorrect codeowner user: deletion Line: 45: incorrect codeowner user: | Line: 45: no users/groups matched Line: 49: incorrect codeowner regexp: error parsing regexp: invalid nested repetition operator: `**` Line: 50: incorrect codeowner user: ✅ Line: 50: incorrect codeowner user: All Line: 50: incorrect codeowner user: protections Line: 50: incorrect codeowner user: enabled Line: 50: no users/groups matched Line: 51: incorrect codeowner user: 🔒 Line: 51: incorrect codeowner user: Required Line: 51: incorrect codeowner user: reviewer: Line: 51: incorrect codeowner user: `@Timmy` Line: 51: incorrect codeowner user: (owner Line: 51: incorrect codeowner user: gate) Line: 51: no users/groups matched Line: 52: incorrect codeowner user: 🧪 Line: 52: incorrect codeowner user: CI: Line: 52: incorrect codeowner user: Enabled Line: 52: incorrect codeowner user: (currently Line: 52: incorrect codeowner user: functional) Line: 52: no users/groups matched Line: 54: incorrect codeowner regexp: error parsing regexp: invalid nested repetition operator: `**` Line: 55: incorrect codeowner user: ✅ Line: 55: incorrect codeowner user: All Line: 55: incorrect codeowner user: protections Line: 55: incorrect codeowner user: enabled Line: 55: no users/groups matched Line: 56: incorrect codeowner user: � Line: 56: incorrect codeowner user: CI: Line: 56: incorrect codeowner user: Disabled Line: 56: incorrect codeowner user: (runner Line: 56: incorrect codeowner user: dead Line: 56: incorrect codeowner user: - Line: 56: incorrect codeowner user: see Line: 56: no users/groups matched Line: 57: incorrect codeowner user: 🧪 Line: 57: incorrect codeowner user: CI: Line: 57: incorrect codeowner user: Re-enable Line: 57: incorrect codeowner user: when Line: 57: incorrect codeowner user: runner Line: 57: incorrect codeowner user: restored Line: 57: no users/groups matched Line: 59: incorrect codeowner regexp: error parsing regexp: invalid nested repetition operator: `**` Line: 60: incorrect codeowner user: ✅ Line: 60: incorrect codeowner user: PR Line: 60: incorrect codeowner user: + Line: 60: incorrect codeowner user: 1 Line: 60: incorrect codeowner user: approval Line: 60: incorrect codeowner user: required Line: 60: no users/groups matched Line: 61: incorrect codeowner user: 🧪 Line: 61: incorrect codeowner user: CI: Line: 61: incorrect codeowner user: No Line: 61: incorrect codeowner user: CI Line: 61: incorrect codeowner user: configured Line: 61: no users/groups matched Line: 63: incorrect codeowner regexp: error parsing regexp: invalid nested repetition operator: `**` Line: 64: incorrect codeowner user: ✅ Line: 64: incorrect codeowner user: PR Line: 64: incorrect codeowner user: + Line: 64: incorrect codeowner user: 1 Line: 64: incorrect codeowner user: approval Line: 64: incorrect codeowner user: required Line: 64: no users/groups matched Line: 65: incorrect codeowner user: 🧪 Line: 65: incorrect codeowner user: CI: Line: 65: incorrect codeowner user: Limited Line: 65: incorrect codeowner user: CI Line: 65: no users/groups matched Line: 69: incorrect codeowner user: repositories Line: 69: incorrect codeowner user: must: Line: 69: no users/groups matched Line: 70: incorrect codeowner user: 🧑‍ Line: 70: incorrect codeowner user: Default Line: 70: incorrect codeowner user: reviewer: Line: 70: incorrect codeowner user: `@perplexity` Line: 70: incorrect codeowner user: (QA Line: 70: incorrect codeowner user: gate) Line: 70: no users/groups matched Line: 71: incorrect codeowner user: 🧑 Line: 71: incorrect codeowner user: Required Line: 71: incorrect codeowner user: reviewer: Line: 71: incorrect codeowner user: `@Timmy` Line: 71: incorrect codeowner user: for Line: 71: incorrect codeowner organization: `hermes-agent/` Line: 71: incorrect codeowner user: only Line: 71: no users/groups matched Line: 75: incorrect codeowner user: Go Line: 75: incorrect codeowner user: to Line: 75: incorrect codeowner user: Gitea Line: 75: incorrect codeowner user: > Line: 75: incorrect codeowner user: Settings Line: 75: incorrect codeowner user: > Line: 75: incorrect codeowner user: Branches Line: 75: incorrect codeowner user: > Line: 75: incorrect codeowner user: Branch Line: 75: incorrect codeowner user: Protection Line: 75: no users/groups matched Line: 76: incorrect codeowner user: For Line: 76: incorrect codeowner user: each Line: 76: incorrect codeowner user: repo: Line: 76: no users/groups matched Line: 77: incorrect codeowner user: [ Line: 77: incorrect codeowner user: ] Line: 77: incorrect codeowner user: Enable Line: 77: incorrect codeowner user: "Require Line: 77: incorrect codeowner user: PR Line: 77: incorrect codeowner user: for Line: 77: incorrect codeowner user: merge" Line: 77: no users/groups matched Line: 78: incorrect codeowner user: [ Line: 78: incorrect codeowner user: ] Line: 78: incorrect codeowner user: Set Line: 78: incorrect codeowner user: "Required Line: 78: incorrect codeowner user: approvals" Line: 78: incorrect codeowner user: to Line: 78: incorrect codeowner user: 1 Line: 78: no users/groups matched Line: 79: incorrect codeowner user: [ Line: 79: incorrect codeowner user: ] Line: 79: incorrect codeowner user: Enable Line: 79: incorrect codeowner user: "Dismiss Line: 79: incorrect codeowner user: stale Line: 79: incorrect codeowner user: approvals" Line: 79: no users/groups matched Line: 80: incorrect codeowner user: [ Line: 80: incorrect codeowner user: ] Line: 80: incorrect codeowner user: Enable Line: 80: incorrect codeowner user: "Block Line: 80: incorrect codeowner user: force Line: 80: incorrect codeowner user: push" Line: 80: no users/groups matched Line: 81: incorrect codeowner user: [ Line: 81: incorrect codeowner user: ] Line: 81: incorrect codeowner user: Enable Line: 81: incorrect codeowner user: "Block Line: 81: incorrect codeowner user: branch Line: 81: incorrect codeowner user: deletion" Line: 81: no users/groups matched Line: 82: incorrect codeowner user: [ Line: 82: incorrect codeowner user: ] Line: 82: incorrect codeowner user: Enable Line: 82: incorrect codeowner user: "Require Line: 82: incorrect codeowner user: CI Line: 82: incorrect codeowner user: to Line: 82: incorrect codeowner user: pass" Line: 82: incorrect codeowner user: if Line: 82: incorrect codeowner user: CI Line: 82: incorrect codeowner user: exists Line: 82: no users/groups matched Line: 86: incorrect codeowner user: [ Line: 86: incorrect codeowner user: ] Line: 86: incorrect codeowner user: All Line: 86: incorrect codeowner user: four Line: 86: incorrect codeowner user: repositories Line: 86: incorrect codeowner user: have Line: 86: incorrect codeowner user: protection Line: 86: incorrect codeowner user: rules Line: 86: incorrect codeowner user: applied Line: 86: no users/groups matched Line: 87: incorrect codeowner user: [ Line: 87: incorrect codeowner user: ] Line: 87: incorrect codeowner user: Default Line: 87: incorrect codeowner user: reviewers Line: 87: incorrect codeowner user: configured Line: 87: incorrect codeowner user: per Line: 87: incorrect codeowner user: matrix Line: 87: incorrect codeowner user: above Line: 87: no users/groups matched Line: 88: incorrect codeowner user: [ Line: 88: incorrect codeowner user: ] Line: 88: incorrect codeowner user: This Line: 88: incorrect codeowner user: document Line: 88: incorrect codeowner user: updated Line: 88: incorrect codeowner user: in Line: 88: incorrect codeowner user: all Line: 88: incorrect codeowner user: repositories Line: 88: no users/groups matched Line: 89: incorrect codeowner user: [ Line: 89: incorrect codeowner user: ] Line: 89: incorrect codeowner user: Policy Line: 89: incorrect codeowner user: enforced Line: 89: incorrect codeowner user: for Line: 89: incorrect codeowner user: 72 Line: 89: incorrect codeowner user: hours Line: 89: incorrect codeowner user: with Line: 89: incorrect codeowner user: no Line: 89: incorrect codeowner user: unreviewed Line: 89: incorrect codeowner user: merges Line: 89: no users/groups matched Line: 91: incorrect codeowner user: This Line: 91: incorrect codeowner user: policy Line: 91: incorrect codeowner user: replaces Line: 91: incorrect codeowner user: all Line: 91: incorrect codeowner user: previous Line: 91: incorrect codeowner user: ad-hoc Line: 91: incorrect codeowner user: workflows. Line: 91: incorrect codeowner user: Any Line: 91: incorrect codeowner user: exceptions Line: 91: incorrect codeowner user: require Line: 91: incorrect codeowner user: written Line: 91: incorrect codeowner user: approval Line: 91: incorrect codeowner user: from Line: 91: incorrect codeowner user: and Line: 91: incorrect codeowner user: perplexity. Line: 104: incorrect codeowner user: replace Line: 104: no users/groups matched Line: 105: incorrect format Line: 107: incorrect format Line: 111: incorrect codeowner user: replace Line: 111: incorrect codeowner user: the Line: 111: incorrect codeowner user: placeholder Line: 111: incorrect codeowner user: documentation Line: 111: incorrect codeowner user: with Line: 111: incorrect codeowner user: a Line: 111: incorrect codeowner user: clear, Line: 111: incorrect codeowner user: actionable Line: 111: incorrect codeowner user: policy Line: 111: incorrect codeowner user: summary. Line: 111: no users/groups matched Line: 113: incorrect format Line: 114: incorrect format Line: 115: incorrect codeowner user: search Line: 115: no users/groups matched Line: 159: incorrect codeowner user: replace Line: 159: no users/groups matched Line: 160: incorrect format Line: 162: incorrect format Line: 163: incorrect format Line: 164: incorrect codeowner user: search Line: 164: no users/groups matched Line: 179: incorrect codeowner user: replace Line: 179: no users/groups matched Line: 180: incorrect format Line: 182: incorrect format Line: 183: incorrect format Line: 184: incorrect codeowner user: search Line: 184: no users/groups matched Line: 189: incorrect codeowner user: repositories Line: 189: incorrect codeowner user: must Line: 189: incorrect codeowner user: enforce Line: 189: incorrect codeowner user: these Line: 189: incorrect codeowner user: rules Line: 189: incorrect codeowner user: on Line: 189: incorrect codeowner user: the Line: 189: incorrect codeowner user: `main` Line: 189: incorrect codeowner user: branch: Line: 189: no users/groups matched
Alexander Whitestone 2ca2cbf16e
Some checks failed
CI / test (pull_request) Failing after 18s
CI / validate (pull_request) Failing after 6s
feat: [QA][POLICY] Branch Protection + Mandatory Review Policy for All Repos (#918)
Refs #918
Agent: groq
2026-04-07 05:25:14 -04:00

219 lines
5.0 KiB
Plaintext
Raw Blame History

# CODEOWNERS - Mandatory Review Policy
# Default reviewer for all repositories
* @perplexity
# Specialized component owners
hermes-agent/ @Timmy
hermes-agent/agent-core/ @Rockachopa
hermes-agent/protocol/ @Timmy
the-nexus/ @perplexity
the-nexus/ai/ @Timmy
timmy-home/ @perplexity
timmy-config/ @perplexity
# Owner gates
hermes-agent/ @Timmy
# QA reviewer for all PRs
* @perplexity
# Specialized component owners
hermes-agent/agent-core/ @Rockachopa
hermes-agent/protocol/ @Timmy
the-nexus/portals/ @perplexity
the-nexus/ai/ @Timmy
>>>>>>> replace
```
CONTRIBUTING.md
```diff
<<<<<<< search
# Contribution & Code Review Policy
## Branch Protection & Review Policy
All repositories must enforce these rules on the `main` branch:
| Rule | Status | Rationale |
|---|---|---|
| Require PR for merge | ✅ Enabled | Prevent direct commits |
| Required approvals | ✅ 1+ | Minimum review threshold |
| Dismiss stale approvals | ✅ Enabled | Re-review after new commits |
| Require CI to pass | <20> Conditional | Only where CI exists |
| Block force push | ✅ Enabled | Protect commit history |
| Block branch deletion | ✅ Enabled | Prevent accidental deletion |
### Repository-Specific Configuration
**1. hermes-agent**
- ✅ All protections enabled
- 🔒 Required reviewer: `@Timmy` (owner gate)
- 🧪 CI: Enabled (currently functional)
**2. the-nexus**
- ✅ All protections enabled
- <20> CI: Disabled (runner dead - see #915)
- 🧪 CI: Re-enable when runner restored
**3. timmy-home**
- ✅ PR + 1 approval required
- 🧪 CI: No CI configured
**4. timmy-config**
- ✅ PR + 1 approval required
- 🧪 CI: Limited CI
### Default Reviewer Assignment
All repositories must:
- 🧑‍ Default reviewer: `@perplexity` (QA gate)
- 🧑 Required reviewer: `@Timmy` for `hermes-agent/` only
### Implementation Steps
1. Go to Gitea > Settings > Branches > Branch Protection
2. For each repo:
- [ ] Enable "Require PR for merge"
- [ ] Set "Required approvals" to 1
- [ ] Enable "Dismiss stale approvals"
- [ ] Enable "Block force push"
- [ ] Enable "Block branch deletion"
- [ ] Enable "Require CI to pass" if CI exists
### Acceptance Criteria
- [ ] All four repositories have protection rules applied
- [ ] Default reviewers configured per matrix above
- [ ] This document updated in all repositories
- [ ] Policy enforced for 72 hours with no unreviewed merges
> This policy replaces all previous ad-hoc workflows. Any exceptions require written approval from @Timmy and @perplexity.
# Default reviewer for all repositories
* @perplexity
# Specialized component owners
hermes-agent/ @Timmy
hermes-agent/agent-core/ @Rockachopa
hermes-agent/protocol/ @Timmy
the-nexus/ @perplexity
the-nexus/ai/ @Timmy
timmy-home/ @perplexity
timmy-config/ @perplexity
>>>>>>> replace
````
---
### ✅ Updated `README.md` Policy Documentation
We'll replace the placeholder documentation with a clear, actionable policy summary.
`README.md`
````
<<<<<<< search
# Specialized component owners
hermes-agent/ @Timmy
hermes-agent/protocol/ @Timmy
the-nexus/portals/ @perplexity
the-nexus/ai/ @Timmy
# Specialized component owners
hermes-agent/agent-core/ @Rockachopa
hermes-agent/protocol/ @Timmy
the-nexus/portals/ @perplexity
the-nexus/ai/ @Timmy
# CODEOWNERS - Mandatory Review Policy
# Default reviewer for all repositories
* @perplexity
# Specialized component owners
hermes-agent/ @Timmy
hermes-agent/protocol/ @Timmy
the-nexus/ @perplexity
the-nexus/ai/ @Timmy
timmy-home/ @perplexity
timmy-config/ @perplexity
# Owner gates
hermes-agent/ @Timmy
# CODEOWNERS - Mandatory Review Policy
# Default reviewer for all repositories
* @perplexity
# Specialized component owners
hermes-agent/ @Timmy
hermes-agent/agent-core/ @Rockachopa
hermes-agent/protocol/ @Timmy
the-nexus/ @perplexity
the-nexus/ai/ @Timmy
timmy-home/ @perplexity
timmy-config/ @perplexity
# Owner gates
hermes-agent/ @Timmy
>>>>>>> replace
</source>
README.md
<source>
<<<<<<< search
# The Nexus Project
# CODEOWNERS - Mandatory Review Policy
# Default reviewer for all repositories
* @perplexity
# Specialized component owners
hermes-agent/ @Timmy
hermes-agent/agent-core/ @Rockachopa
hermes-agent/protocol/ @Timmy
the-nexus/ @perplexity
the-nexus/ai/ @Timmy
timmy-home/ @perplexity
timmy-config/ @perplexity
>>>>>>> replace
```
README.md
```markdown
<<<<<<< search
# Nexus Organization Policy
## Branch Protection & Review Requirements
All repositories must enforce these rules on the `main` branch:
# CODEOWNERS - Mandatory Review Policy
# Default reviewer for all repositories
* @perplexity
# Specialized component owners
hermes-agent/ @Timmy
hermes-agent/agent-core/ @Rockachopa
hermes-agent/protocol/ @Timmy
the-nexus/ @perplexity
the-nexus/ai/ @Timmy
timmy-home/ @perplexity
timmy-config/ @perplexity
# Owner gates
hermes-agent/ @Timmy
# CODEOWNERS - Mandatory Review Policy
# Default reviewer for all repositories
* @perplexity
# Specialized component owners
hermes-agent/ @Timmy
hermes-agent/agent-core/ @Rockachopa
hermes-agent/protocol/ @Timmy
the-nexus/ @perplexity
the-nexus/ai/ @Timmy
timmy-home/ @perplexity
timmy-config/ @perplexity