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:

FieldWhat it carries
file + lineThe exact location in the diff.
severityblocker / major / minor / nit
expectedWhat the reviewer expected to see.
actualWhat actually shipped.
fixA suggested fix, when the reviewer can give one.
origin + roundWho 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.

Quality is structural, not motivational

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.

llms.txt