rose by ConsensusLabs

rose

A software factory by ConsensusLabs · Amsterdam

How work moves through Rose

Inter-office memo   To: engineering leads   From: ConsensusLabs


Hand Rose a ticket. You get back a pull request.

On the way, one agent writes the tests before any code exists. Another writes the code, and may not change those tests. Up to seven reviewers read the change. Every check that ran is filed as a carbon copy.

You sign twice: the plan, and the merge.

1 Mail room

Context

Work item · Jira or GitHub issue

A ticket comes in. Before anyone reads it, the clerk checks one thing: can this repo prove its own work? Rose looks for the build, test and lint command your CI already runs. If there is none, it warns you and waits.

Then it gathers the ticket, the linked docs and the team wiki into one brief. For a bug, it first tries to reproduce it.

Buys
A run anchored to a check that can fail.
Limit
A repo with no tests gets a warning, not a test suite.

2 Planning

Plan

The planner turns the acceptance criteria into assertions a test can check. It reads the decisions earlier runs recorded, so it does not undo one by accident. Large work is split into sub-tickets, and each one that matters is designed twice before a design is chosen.

Then the plan waits on your desk. Nothing is built until you sign.

Approved by Sign 1
Buys
You see the plan before any code exists.
Limit
The plan is checked by you. Skip the approval, and you skip that check.

3 Test room

Spec · sealed

One agent writes the tests, before the code exists. It works from the plan's assertions, runs the tests, and shows they fail for the right reason. Then it commits them.

A mechanical check matches every assertion in the plan to a committed test, so nothing is dropped on the way. The tests leave through a one-way hatch. The agent that writes the code works in a different context: it gets the tests, not the reasoning behind them.

Buys
A definition of done the coder did not write.
Limit
Tests check what the ticket asks for, and nothing more.

4 Workshop

Implement

One implementer per sub-ticket, each in its own git worktree, so your checkout is never touched. Before it writes, it is told the bug classes this repo has already paid for.

It must make the acceptance tests pass without weakening them, add its own tests, and keep build, tests and lint green. Then a probe breaks the new code on purpose. If the tests still pass, they were not testing anything.

Five tries. Then it stops and asks you.

Buys
Code that passes tests it did not write.
Limit
A hook guards the test lines against its file edits, but it relies on a harness field not yet seen in a live run, and a shell command could still reach them. Review checks those lines again either way.

5 Review hall

Review
  • Correctnessevery change
  • Test qualityevery change
  • Conventionsevery change
  • Securitywhen the change touches it
  • Code smellswhen the change touches it
  • Performancewhen the change touches it
  • System designwhen the change touches it

Correctness also checks every caller of a contract that changed. A blocking finding about behaviour must say how to show the failure. It goes back to the workshop, and only the desks that raised it look again.

If the implementer disputes a finding, a judge in a separate booth, who has seen neither side's reasoning, rules on the evidence. Five rounds. Then it stops and asks you.

Buys
Findings that come with a way to prove them.
Limit
Reviewers are models too. A finding can be wrong, which is why it can be contested.

6 Records

Finalize

The branch is rebased onto the latest code, with a check that the fix survived the rebase. The pull request is written for a reader who never saw the pipeline: what changed, the ticket quoted word for word, a diagram of the change, and each acceptance criterion mapped to the test that holds it.

Then the rose copy is filed: which gates ran, on which commit. A script can check it against the pull request.

Buys
A pull request that carries the record of its own review.
Limit
Rose opens the pull request. It never merges it.

Your desk

Sign 2

The pull request lands on your desk. You read it. You merge it, or you send it back.

Two signatures: the plan, and the merge. Everything in between is checked by something other than the agent that did the work.

Buys
The last call stays with a person.
Limit
Rose builds what the ticket asks for. Whether the ticket asked for the right thing is yours to judge.
ERequest access
The Rose office, seen from above Six rooms in two rows. A ticket enters at the street door, passes the mail room, planning and the sealed test room, drops through a one-way hatch into the workshop, crosses the review hall with seven desks and a judge's booth, reaches records, and leaves by the side door for your desk. STREET SIGN 1 GATE JUDGE YOU · SIGN 2 MAIL ROOM clerk: writes brief PLANNING planner: writes plan TEST ROOM test-author only RECORDS files the rose copy REVIEW HALL reviewers: read only WORKSHOP implementer: no tests
Now in The street door

Every form has a rose copy

In an office, forms go out in triplicate. The original travels. The rose copy stays behind and proves what happened. Rose keeps all three.

The ticket

Quoted word for word in the pull request, so the reviewer reads what was asked, not a summary of it.

Original

The attestation

Commit
a41f09c
Gate
green at this commit
Correctness
pass
Test quality
resolved 2
Security
pass
Probes
3 run · 3 caught
Contests
1 · upheld

Specimen: the values are made up. The fields are the real ones.

DuplicateSpecimen

The ledgers

Bot findings, shipped bugs, hotfixes and your own corrections. Each becomes a proposed rule for the reviewers. You decide which ones stay.

Triplicate

After hours

Some jobs are bigger than one ticket. They run when you call them; the night watch can also run on a schedule.

Night shift roster

JobRunsLeaves behind
Night watch /sentry-sweepDaily on a schedule, or when you call itA ticket for each new production error, with the stack trace attached
Cleaning crew /drift-sweepWhen you call itA dated report on patterns that spread across the whole codebase, and up to five draft tickets
Day report /journalWhen you call itRuns landed, minus the ones reverted, minus the ones that needed a hotfix
Desk check /lens-consistencyWhen you call itHow often three runs of one reviewer agree on the same change

House rules

  1. No merge

    Rose opens the pull request. The merge is yours.

  2. Caps

    The main loops have a hard limit. At the limit, the run stops and asks you. The hook catches a count recorded past the cap, not a loop that never records one.

  3. No self-grading

    Tests come from one agent, code from another, review from up to seven more.

  4. Proposals

    What Rose learns is proposed as a rule. You decide what gets published.

  5. Limits

    Every room on the floor says what it does not cover.

For developers

Rose is a Claude Code plugin. It runs inside Claude Code, against any repo with a build and a test command. Its state is plain files in your repo — run state, ledgers, a bug index — so a run can stop and resume, and you can read everything it did.

Form R-1 · Inventory

Agents
14
Skills
56
Commands
16
Tests
362, deterministic, in CI
Tickets from
Jira · GitHub Issues
State
.claude/state/workflow/
Hooks
  • Blocks git commands that would wipe the committed tests
  • Will not start planning before the run is sized
  • Blocks a loop count recorded past its cap, until a person rules
  • Guards the acceptance-test lines from the coding agent
  • Will not let a run stop halfway without saying why
  • Warns when a scheduled sweep has stopped running
  • Warns when the installed plugin is out of date
  • Measures comment density on every commit

The code is private. Ask us, and we will show you how it runs on your repo.

ERequest access

rose

One ticket in. A reviewed pull request out. Two signatures.