Skip to content
Cockpit0.29.0
A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live

project.the-cooperation-model-is-the-owners-word@1

Work moves through seats held as mesh claims, lands in combined tops, and every checkout is kept current

What it is

URI
majordomus://rule/project.the-cooperation-model-is-the-owners-word@1
Kind
rule
Identity
project.the-cooperation-model-is-the-owners-word@1
Path
.ai/repo/rules/project/the-cooperation-model-is-the-owners-word.v1.md
Provenance
declared
Media type
text/markdown
As a capability
rule.project.the-cooperation-model-is-the-owners-word@1

Front matter

{
  "id": "project.the-cooperation-model-is-the-owners-word",
  "version": 1,
  "kind": "rule",
  "title": "Work moves through seats held as mesh claims, lands in combined tops, and every checkout is kept current",
  "description": "The owner's operating decision of 2026-10-16. A seat (landing, release, repair, worker) is an exclusive mesh claim and nothing else; the landing seat lands combined tops pinned to the head one validation run judged; a stale checkout or branch is preserved in a rescue ref and brought current without asking; the release seat releases whenever master holds landed work past the last tag. Every surface that describes the model reads this record or the live claims, never a copy.",
  "statement": "Hold a seat only by holding its exclusive mesh claim; land a combined top only pinned to the head whose ci succeeded and which contains the current master; preserve a stale checkout's work in a rescue ref, then bring it current without asking, and bring a pushed branch current by merging master into it; release whenever master holds landed work past the last tag; and describe the model by pointing at this rule or reading the live claims, never by copying it.",
  "status": "active",
  "class": "blocking",
  "depends_on": [
    "project.integration-follows-the-current-master@3",
    "project.an-expedited-landing-is-the-owners-word@1",
    "project.work-is-claimed-before-it-is-built@1",
    "project.mesh-cooperation-is-authenticated@1"
  ],
  "tags": [
    "process",
    "integration",
    "mesh",
    "release",
    "governance"
  ],
  "x-majordomus": {
    "tests": [
      "test/cases/3150_the_cooperation_model_is_one_record.sh",
      "test/cases/2999_delivery_is_expedited_only_where_the_rule_says.sh",
      "test/cases/720_integration_follows_the_current_master.sh"
    ]
  }
}

Content

---
id: project.the-cooperation-model-is-the-owners-word
version: 1
kind: rule
title: Work moves through seats held as mesh claims, lands in combined tops, and every checkout is kept current
description: The owner's operating decision of 2026-10-16. A seat (landing, release, repair, worker) is an exclusive mesh claim and nothing else; the landing seat lands combined tops pinned to the head one validation run judged; a stale checkout or branch is preserved in a rescue ref and brought current without asking; the release seat releases whenever master holds landed work past the last tag. Every surface that describes the model reads this record or the live claims, never a copy.
statement: Hold a seat only by holding its exclusive mesh claim; land a combined top only pinned to the head whose ci succeeded and which contains the current master; preserve a stale checkout's work in a rescue ref, then bring it current without asking, and bring a pushed branch current by merging master into it; release whenever master holds landed work past the last tag; and describe the model by pointing at this rule or reading the live claims, never by copying it.
status: active
class: blocking
depends_on: [project.integration-follows-the-current-master@3, project.an-expedited-landing-is-the-owners-word@1, project.work-is-claimed-before-it-is-built@1, project.mesh-cooperation-is-authenticated@1]
tags: [process, integration, mesh, release, governance]

x-majordomus:
  tests: [test/cases/3150_the_cooperation_model_is_one_record.sh, test/cases/2999_delivery_is_expedited_only_where_the_rule_says.sh, test/cases/720_integration_follows_the_current_master.sh]
---

# Rationale

On 2026-10-16 more than a hundred pull requests were open, nine or more sessions worked one
machine, every landing put every other head behind master again, the primary checkout served
plan answers from a tree 779 commits behind master, and releases waited for milestones while
master moved past them. The owner's answer, quoted with its date and an English reading in ADR 0167, was: clear
milestones, issues and waves very fast; deploy, bump and verify often, from now on always;
use the mesh; split the work and cooperate; land combined tops; always update, rebase or
bring forward whatever helps, after preserving it; document it on the site and in the UI; and
make all of it derived, generated, dynamic and enforced.

What makes that safe is not new. Decisions are still taken against the current master and
named heads (`project.integration-follows-the-current-master`), the protection is still spent
only on a judged tree (`project.an-expedited-landing-is-the-owners-word`), and paths are still
claimed before they are built (`project.work-is-claimed-before-it-is-built`). What this rule
adds is who does what, how large a landing may be, and that nobody waits to be asked before
bringing a stale tree current.

# Required behaviour

1. **A seat is an exclusive mesh claim.** A session holds a seat by holding its claim through
   `mesh.claim`, releases it when it stops, and loses it when its heartbeat stops. Nothing else
   makes a session a seat: not a name on the board, not a sentence in a handover. The seats and
   the scope each one claims:

   | seat | claims | does |
   |---|---|---|
   | landing seat | `campaign/*/landing` | lands every green head, alone, pinned to the head CI judged; builds combined tops |
   | release seat | `release/seat` | bumps, tags, records and verifies the site after landings, whenever master holds landed work past the last tag |
   | repair lane | `refs/heads/*` | merges master into a pull request that conflicts, on that pull request's own branch, one claim per branch |
   | worker | the paths of its one issue | one issue, one pull request: announces on the board, claims on the mesh, asks for a mesh review, hands the green head to the landing seat, never merges |

   The Mesh screen of the UI (`/ui/mesh`) reads these scopes from the live claims of
   `mesh.state` and draws who holds each seat now; its seat table and this table name the same
   scopes, and case 3150 and the screen's own test hold the two to each other.
2. **A combined top is the landing seat's unit of work.** Its members are pull requests whose
   heads conflict with nothing in authored paths, decided by a chain of `git merge-tree` from
   the current master. The derived files are regenerated once, after the merge commit. One
   validation run judges every member. A red member is dropped from the top and fixed on its
   own branch, never inside the top. The top lands by one merge,
   `gh pr merge <n> --admin --merge --match-head-commit <sha>`, and only when that exact head's
   `ci` concluded success and the head contains the current `origin/master`. A release's bump
   may ride inside a top. The pull request of a top names its members and their heads.
3. **Always current, preserved first.** A checkout or branch found behind master is brought
   current by whoever finds it, without asking. Before anything is moved, what it holds is
   preserved: uncommitted work as `git stash create` recorded under `refs/rescue/<name>` by
   `git update-ref`, anything else as a patch under `<repository>-rescue/`, the primary
   checkout's sibling. A checkout, or a branch no other session or forge reads, may then be reset,
   rebased or fast-forwarded. A pushed branch is brought current by merging master into it and
   pushing a fast-forward; it is never force-pushed.
4. **Release often.** The release seat cuts a release whenever master holds landed work past
   the last tag, not once per milestone. A tag is still pushed only on a commit whose `ci`
   succeeded (`scripts/ci/release-verdict`), and the site is verified after it.
5. **One record, read everywhere.** The integration, mesh and release documents point at this
   rule and ADR 0167 rather than restating the seats; the site renders both from these files;
   the UI reads the seats from the mesh. A copy of the seat table anywhere else is a defect.

# What it amends, and what still holds

ADR 0101 left batches to a person, and this is the owner taking that decision: a combined top
is the landing seat's ordinary unit, not an exception. The integration executor is unchanged:
`majordomus prs drain` still lands one ready pull request at a time and never passes `--admin`,
as `project.integration-follows-the-current-master` requires of integration code. ADR 0155's
"one landing at a time" now reads "one landing seat at a time"; a landing may carry a whole
top. Every other clause of both rules holds: decisions name the master and heads they were
taken against, no check, hook or gate is skipped, `--no-verify` is never used, a release is
never expedited, and every decision leaves its evidence.

# Enforcement points

- `test/cases/3150_the_cooperation_model_is_one_record.sh`: the seat scopes this rule names
  are the ones the Mesh screen classifies, the merge it documents is pinned to a judged head
  that contains master, and the integration, mesh and release documents point at this rule
  and ADR 0167 without copying the seat table.
- `apps/majordomus-cli/src/ui/mesh.rs`, its unit test `every_seat_is_named_by_the_rule`: the
  converse, every seat the screen draws is a scope this rule names.
- `test/cases/2999_delivery_is_expedited_only_where_the_rule_says.sh` and
  `test/cases/720_integration_follows_the_current_master.sh`: the executor still never names
  `--admin`, and a release still waits for its verdict.
- Carried by other workers on 2026-10-16, each its own pull request, and named here so that
  clause 3 has a starter: a new worktree starts from the remote trunk rather than a stale local
  master (`majordomus worktree create`, pull request #1291, case 3131); `majordomus start`
  makes sure the checkout's server runs before its task claims its scope on the mesh (pull
  request #1288, case 3151); and a checkout reports how far it stands behind the remote trunk
  wherever it is read (rule `project.a-checkout-serves-the-current-trunk`, branch
  `feature/a-checkout-serves-the-current-trunk`, case 3176). When they land, their cases join
  this rule's tests.

Clauses 2 and 3 are also acts of a session, and are decided by the record: the landing claim
on the mesh, the members and the judged head named in the top's pull request, and the rescue
refs left before a move.

# Verification

`bash test/run.sh 3150_the_cooperation_model_is_one_record`, the same for cases 2999 and 720,
and `cargo test --lib ui::mesh`.