Review & Quality
RoboCo ships with structural quality machinery: every rejection is recorded as a finding, every assembled PR is reviewed by a gate reviewer armed with a collision map, and every PR the company opens is auto-labeled with its org-structure role. The point is to turn "trust the model behaved" into "the decision surface is visible, named, and resolvable."
Structured findings
When QA fails a review, the PR-review gate blocks a merge, a PM sends work back, or you reject an awaiting_ceo_approval task, the feedback is not a paragraph in a comment. It is one or more structured findings:
| Field | What it carries |
|---|---|
file + line | The exact location in the diff. |
severity | blocker / major / minor / nit |
expected | What the reviewer expected to see. |
actual | What actually shipped. |
fix | A suggested fix, when the reviewer can give one. |
| origin + round | Who raised it and which review round it belongs to. |
A task that bounces back must name each open finding by id before it can be resubmitted. The next reviewer sees every prior round instead of re-deriving the history. The Auditor can waive a stray minor or nit with a required note; blocker and major findings close only with an actual fix.
Acceptance criteria get the same rigor at both ends of a delegation. Down: a PM can't hand off a subtask without mapping it onto the parent's actual acceptance criteria — an unresolvable reference is refused, naming the real criteria, rather than silently dropping coverage until it's discovered much later. Up: QA can't pass a review with a gestalt "looks good" — pass_review requires one verified entry per acceptance criterion, and each renders as its own [AC] <criterion> — verified: <evidence> line in the QA notes on the task detail page, so a reviewer three steps removed can see exactly what was checked and how, not just that someone signed off.
The collision map
Sibling subtasks — tasks that share the same parent — can declare overlapping file globs or migration chains at delegation time. The collision map surfaces that overlap to both the task detail page and the in-path PR reviewer:
- Each task's Collision tab shows its own declared surface and every sibling whose declared surface overlaps it.
- Status, branch, PR number, and sequence badges appear per sibling.
- Overlapping globs are highlighted.
- A sibling that actually touched files it never declared gets a drift callout.
- Root and standalone tasks render an explicit "no collision map" state, since they have no siblings to collide with.
The same collision surface powers the sequence ordering that lets a PM enforce lower-sequence siblings finishing before higher-sequence ones are claimed.
PR org-structure labels
Every PR the company opens — assembled cell→root and root→master PRs, and Supersede PRs from the external-PR loop — is labeled with its org-structure role the moment it is created: a literal to master / to slave target label, root on an assembled root→master PR, MegaTask on any PR whose task carries a batch id, and an owning-layer label (main-pm, cell/{team}, or subtask/{team}). Architectural-conventions scaffold PRs carry no task and get a single fixed chore label instead of this set. Labeling is best-effort: a GitHub hiccup never blocks PR creation. The labels are a filtering aid on GitHub's own PR list, not a gate — review and merge behavior do not depend on them.
Makefile enforcement for agents
On a project that ships a Makefile, an agent's raw uv / pip / conda / poetry calls are denied and redirected to that project's own make quality / make test targets — npm/pnpm are approved tools and untouched by this guard. This keeps the gate an agent runs against identical to the gate a human developer runs. It also preserves the Makefile's UV_NO_SYNC=1 setting and its private UV_CACHE_DIR, preventing the concurrent-venv-corruption race that bare package-manager invocations can trigger. See Deployment for the operator-side Makefile targets.
RoboCo does not rely on every model choosing to behave. It relies on the fact that the wrong action is off the menu: a developer's manifest has no merge verb, QA's has no commit verb, and the agent bash guard blocks raw Python package-manager calls when a Makefile is present.
Next
→ How agents are sandboxed for the role-scoped verb manifest that enforces these boundaries · PR Review for the inbound and in-path review loops · Collision Map for the sibling-surface reference · Tasks & Kanban for the panel view of findings and collisions.