Add open source project intake system#4
Add open source project intake system#4michaeloboyle wants to merge 8 commits intoagenticsorg:mainfrom
Conversation
Add GitHub issue template for project submissions, 6 workflows for the full intake lifecycle (triage, scoring, escalation vote, validation vote, approval registration, retraction), scoring template, label setup script, and approved projects registry. Implements the process defined in the Open Source Committee governance doc. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
michaeloboyle
left a comment
There was a problem hiding this comment.
Security Audit — 16 Findings (2 Critical, 4 High, 5 Medium, 3 Low, 2 Info)
Merge Blockers
SEC-001/002 — CRITICAL: Shell Injection Pattern
approve-project.yml and retraction.yml use core.exportVariable() to set PROJECT_ID and ISSUE_NUMBER, then interpolate them in shell run: steps. While current values are safe (integers), this establishes a dangerous pattern. Use core.setOutput() and step outputs instead.
SEC-003 — HIGH: No Access Control on Voting
Any GitHub user who can comment can cast /vote approve, /score, etc. No verification of org membership, team membership, or author_association. Three burner accounts can approve any project. This alone should block merge.
Remediation: Check context.payload.comment.author_association or verify membership in a open-source-committee GitHub Team.
SEC-004 — HIGH: Direct Push to Main
approve-project.yml commits and pushes directly to the default branch, bypassing branch protection. Should create a PR instead, or at minimum respect branch protection rules.
SEC-005 — HIGH: Race Condition on Registry
Concurrent approvals/retractions will checkout the same approved-projects.json, and the second git push fails silently. Also causes duplicate project IDs (computed from registry.length + 1). Use issue number as ID and atomic file API.
SEC-006 — HIGH: Actions Not Pinned to SHA
All actions use mutable major version tags (@v4, @v7). Pin to full SHA hashes and add Dependabot for updates.
Pre-Production
SEC-007 — MEDIUM: Markdown Injection via User Input
User-controlled "Full Name" rendered directly in comments. Sanitize inputs before embedding.
SEC-008 — MEDIUM: DoS via Comment Spam
Every /vote comment triggers a full workflow run that paginates all comments and posts a tally. Add concurrency groups and rate limiting.
SEC-009 — MEDIUM: No JSON Schema Validation
Registry read/write has no schema validation. Malformed file crashes workflows.
SEC-010 — MEDIUM: Tie-Breaking Favors Approval
1-1-1 vote results in APPROVED. Use strict majority (> not >=), default to DEFERRED on ties.
SEC-011 — MEDIUM: Retraction Cannot Be Opposed
Only /vote retract exists, no /vote no-retract. 3 of 10 members can retract without opposition.
Backlog
SEC-012 — LOW: Submitter can vote on own submission
SEC-013 — LOW: Bot comments not filtered from tally; logic bug in escalation regex (line 284 double-negative)
SEC-014 — LOW: setup-labels.sh uses --force without confirmation, no input validation
SEC-015 — INFO: contents: write permission broader than necessary
SEC-016 — INFO: No immutable audit log; edited comments retain counted votes
Recommended Priority
| Priority | Findings |
|---|---|
| Before merge | SEC-003, SEC-006, SEC-001, SEC-002 |
| Before production use | SEC-004, SEC-005, SEC-008, SEC-010, SEC-011 |
| Short term | SEC-007, SEC-009, SEC-012, SEC-013 |
| Backlog | SEC-014, SEC-015, SEC-016 |
…lows Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…utput Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ct voting Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…gex, harden script - SEC-013: Add bot filtering to validation-vote.yml vote tallying - SEC-012: Exclude issue author from voting in validation-vote.yml - SEC-014: Add repo format validation and confirmation prompt to setup-labels.sh Note: escalation-vote.yml and retraction.yml fixes were applied in prior commits. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary
/scorecommands, posts formatted score tabledata/approved-projects.json/retractproposals and/vote retracttallyingscripts/setup-labels.sh) for 14 status + category labelsImplements the process defined in the Open Source Committee governance document.
Status
Draft — not tested, not ready for merge.
The workflows have not been exercised against real issues yet. Before merging:
on-submission.ymlfires correctly/scorecomment and verify parsing + summary/vote escalateand/vote no-escalatequorum logic/vote approve,/vote decline,/vote deferquorum logicapproved-projects.jsonupdates on approval/retractand/vote retractflowscripts/setup-labels.shagainstagenticsorg/community-projectsTest plan
./scripts/setup-labels.sh michaeloboyle/community-projects🤖 Generated with Claude Code