No owner
One assistant answers everything. Nobody owns the PRD, the ADR or the release note, so nothing can be reviewed.
I run my side projects like a small software company: 25 AI roles, seven functions, one human. Every role owns a single artifact. Every decision to ship stays with me.
This is the operating model behind the workforce floor on my homepage — what the roles do, what they are not allowed to do, and what has actually run.
Most agent setups fail at the same three points. The fix is not a better prompt. It is a smaller role, a named artifact and a gate.
One assistant answers everything. Nobody owns the PRD, the ADR or the release note, so nothing can be reviewed.
An agent with repo-wide write access is a production incident waiting for a trigger. Speed is not the constraint. Blast radius is.
A demo shows the happy path. It never shows which roles have run a real ticket, or what happened when they failed.
The chief-of-staff plans the week. Six functions do the work and hand off documents, not opinions. If a role cannot name its artifact, it does not get a desk.
A 26th agent, notifier, is a subagent that only sends P1 alerts and
blocked-gate messages. It has no shell and cannot write to the repo, so it is not on the
floor.
A ticket is the only unit of work. It moves through the same path every time. A gate is a person, not a checklist.
The PRD, acceptance criteria and backlog. Nothing starts without a written problem.
An ADR with API and data contracts, only for work longer than two days.
Implementation, tests and a pull request. One ticket per branch.
The diff is checked against the criteria, the test plan and CI.
A release note, a green scan and a rollback SHA. Deploy waits for a person.
Health, capacity and dependency risk; triage and an incident timeline when something breaks.
Automation is allowed to prepare a decision. It is not allowed to make one. Content and spend carry their own gates.
| Gate | The question | Evidence required |
|---|---|---|
| Scope | Is this the right problem? | Problem statement + acceptance criteria |
| Design | Is this the right shape? (work > 2 days) | ADR + API and data impact |
| Merge | Is the diff safe to keep? | Green CI + no blocking review findings |
| Deploy | Is now the right time? | Green scan + rollback SHA |
Each role starts from a permission tier. A deny in the baseline cannot be relaxed by a role. The narrowest set that still does the job wins.
| Tier | Access | Roles |
|---|---|---|
read | No writes | reviewer · sec-reviewer · design-critic |
docs(path) | Write only under an assigned docs path | pm · architect · researchers · marketing |
code | Repository writes; push asks; force-push and main denied | builder · patch-engineer · prototyper |
ops-read | docker ps, logs and stats; no mutations | sre · prod-support |
security | docs/security only | sec-intel |
notify | No shell; alerts only | notifier |
.env*, tokens or keys.
sudo, systemctl, or anything that changes
production.
main, force-push, merge or deploy without a human gate.
The agent most likely to cause damage is the one with the broadest permission. Fix the tier before you fix the prompt.
I track the difference between a role that exists and a role that has shipped. The status table is deliberately unglamorous.
reviewer read a merged origin-authentication change and returned six
findings: one high, one medium-high, two medium, two low. One was a real secret-path
disclosure; two were availability risks. It stayed read-only and named four residual
risks it could not verify.
validate.sh fails when frontmatter is incomplete, a baseline deny is
missing, a command points at a role that does not exist, or the roster drifts from the
docs.
A role is marked in use only after one real ticket. The first phase — pm, builder and reviewer — is in use. The others have a file, permissions and a playbook, but not yet a written first run.
What I do not claim: every role is battle-tested. The design is complete. The evidence is still accumulating. I would rather publish the gap than imply that all 25 agents are shipping.
No. 25 agent roles and one human. I approve scope, design, merge and deploy.
No. release prepares the evidence and a rollback SHA. Deploy is a human
gate.
The roles are model-agnostic. They run in OpenCode, and I choose the model per session instead of hardcoding one into a role.
Every role adds a handoff. I add one only when a real artifact has no owner.
Yes. Start with one artifact per role and the smallest permission set that still does the job. If you want the checklist, email me.
Handoffs and permissions — a role that cannot see what it needs, or one that can see far too much. Both show up as review findings, not demos.
I write about the operating model, the failures and the gates. If you are wiring agents into real delivery, I am happy to compare notes.