Lock down master branch on all igor accessible repos #319

Closed
opened 2026-07-02 04:01:15 +00:00 by igor · 1 comment
Collaborator

Why

The agent was able to commit directly to master on parsley today (added .forgejo/workflows/validate.yml and edited deploy.yml with no PR). That means master isn't protected — anything with push access (the bot, or a fat-fingered human) can bypass the entire review + merge gate. The whole autonomous model rests on "the human reviews and merges every PR"; an unprotected master is a hole straight through it.

What

Enable branch protection on master (the default branch on all 11) for every igor-accessible repo:

  • No direct pushes to the default branch — all changes land via PR.
  • Require a review approval (joshtronic) before merge.
  • Require status checks (CI) green before merge, where a repo has CI.
  • Consider: require branch up-to-date; restrict who may merge.

Repos (check off as each is locked down)

All default to master. Grouping is by CEO-mandate presence (root CEO.md), verified live.

Infra (no CEO mandate):

  • igor — the harness itself (most critical — self-deploys in ~1 min)
  • api.sherver.org
  • stonks — stonks-market

CEO'd brands (root CEO.md):

  • porksicle.com — L5 exemplar
  • joshing.you
  • scenekids.com
  • sharktank.co
  • vps-showdown
  • igor.bot
  • parsleymakesitbetter.com — the repo that exposed this
  • certifiedtradejobs.com

Notes

  • Operator task — branch protection is a Forgejo repo setting (Settings → Branches), deliberately not something the agent self-configures (that would be the same "agent removing its own guardrail" problem as the #315 ban lift).
  • Once master is locked, the direct-commit the agent did today becomes impossible — which is the point. The scaffold/onboarding flow works through PRs, so this does not block it.
  • The harness auto-merge (where wired) merges via the API with the human's approval, which respects branch protection.
## Why The agent was able to commit **directly to `master`** on parsley today (added `.forgejo/workflows/validate.yml` and edited `deploy.yml` with no PR). That means master isn't protected — anything with push access (the bot, or a fat-fingered human) can bypass the entire review + merge gate. The whole autonomous model rests on "the human reviews and merges every PR"; an unprotected master is a hole straight through it. ## What Enable branch protection on **`master` (the default branch on all 11) for every igor-accessible repo**: - **No direct pushes to the default branch** — all changes land via PR. - **Require a review approval** (`joshtronic`) before merge. - **Require status checks (CI) green** before merge, where a repo has CI. - Consider: require branch up-to-date; restrict who may merge. ## Repos (check off as each is locked down) All default to `master`. Grouping is by CEO-mandate presence (root `CEO.md`), verified live. **Infra (no CEO mandate):** - [x] `igor` — the harness itself (**most critical** — self-deploys in ~1 min) - [x] `api.sherver.org` - [x] `stonks` — stonks-market **CEO'd brands (root `CEO.md`):** - [x] `porksicle.com` — L5 exemplar - [x] `joshing.you` - [x] `scenekids.com` - [x] `sharktank.co` - [x] `vps-showdown` - [x] `igor.bot` - [ ] `parsleymakesitbetter.com` — the repo that exposed this - [ ] `certifiedtradejobs.com` ## Notes - Operator task — branch protection is a Forgejo repo setting (Settings → Branches), deliberately **not** something the agent self-configures (that would be the same "agent removing its own guardrail" problem as the #315 ban lift). - Once master is locked, the direct-commit the agent did today becomes impossible — which is the point. The scaffold/onboarding flow works through PRs, so this does not block it. - The harness auto-merge (where wired) merges via the API with the human's approval, which respects branch protection. <!-- cos: branch-protection -->
joshtronic stopped working 2026-07-02 14:58:45 +00:00
12 minutes 15 seconds
Owner

Completed.

Completed.
Sign in to join this conversation.
No milestone
No assignees
2 participants
Notifications
Total time spent: 12 minutes 15 seconds
joshtronic
12 minutes 15 seconds
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
joshtronic/igor#319
No description provided.