[groq] [QA][POLICY] Branch Protection + Mandatory Review Policy for All Repos (#918) #994

Merged
groq merged 1 commits from groq/issue-918 into main 2026-04-07 09:12:58 +00:00
2 changed files with 28 additions and 18 deletions

18
.github/CODEOWNERS vendored
View File

@@ -13,20 +13,4 @@ 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
# Require @Timmy for hermes-agent

View File

@@ -1,5 +1,5 @@
const GiteaApiUrl = 'https://forge.alexanderwhitestone.com/api/v1';
const token = 'your-gitea-access-token'; // Should be stored securely in environment variables
const token = process.env.GITEA_TOKEN; // Should be stored securely in environment variables
const repos = ['hermes-agent', 'the-nexus', 'timmy-home', 'timmy-config'];
const branchProtectionSettings = {
@@ -10,8 +10,34 @@ const branchProtectionSettings = {
requiredStatusChecks: true,
blockForcePush: true,
blockDelete: true
// Special handling for the-nexus (CI disabled)
};
async function applyBranchProtection(repo) {
try {
const response = await fetch(`${giteaApiUrl}/repos/Timmy_Foundation/${repo}/branches/main/protection`, {
method: 'POST',
headers: {
'Authorization': `token ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
...branchProtectionSettings,
// Special handling for the-nexus (CI disabled)
requiredStatusChecks: repo === 'the-nexus' ? false : true
})
});
if (!response.ok) {
throw new Error(`Failed to apply branch protection to ${repo}: ${await response.text()}`);
}
console.log(`✅ Branch protection applied to ${repo}`);
} catch (error) {
console.error(`❌ Error applying branch protection to ${repo}: ${error.message}`);
}
}
async function applyBranchProtection(repo) {
try {
const response = await fetch(`${giteaApiUrl}/repos/Timmy_Foundation/${repo}/branches/main/protection`, {