muster

Gates, stated plainly

A gate stops a change or a call that should not go through. This page lists the gates Muster documents: how a pull request merges, what evidence CI gives, how review works, what guards an agent, and what is recorded.

The merge gate

This is how pull requests reach main in the Muster repository itself. An agent opens a pull request with an issue key in the title. Nothing else merges to main: no manual merge and no queue comment.

pull request openedCI: Result greenreview approves the headqueue builds a draft on maingreen draft is merged
A new push makes the approval stale, so the review must approve the new head again.
  1. Wait for the checks. Branch protection requires one check, CI: Result, which needs every other job.
  2. A reviewer run reads the head commit. When it finds no blocker, the review app approves that head.
  3. The merge queue acts on that approval. It needs one approval, an issue key in the title, base main, no draft and no conflict.
  4. The queue builds a draft pull request on current main and runs every job again. Only a green draft merges, so two pull requests that are each green alone cannot turn main red together.

A pull request in conflict gets the label needs-rebase and a comment. A major version bump from a dependency bot matches no queue rule, and the owner merges it by hand.

CI evidence

Each required check is one job named for its cause, and it fails alone. These are the main ones.

JobWhat it checks
Go: Build, Go: Vetone go command each
Go: Unit Testsevery package once, no database
Go: Integration Tests, Go: Race Testssharded, each package run with a throwaway database
Repo: Inspect Rulesthe repository rules, such as import rules and budgets
Docs: Format and Structurethe docs rules for every Markdown file
Security: Vulnerability Scan, Secret Scanone go command each
Go: Coverage Floorsfloors per package, and 90 percent of changed lines covered
CI: Annotationsfails the run if any check carries an annotation
CI: Resultneeds every job and fails when any one is not a success

No run may carry an annotation of any level, and the fix is always the cause, never a filter. Every job runs on the runner the repository names, with no fallback to a hosted runner. The inspect tests keep these rules.

Review

The reviewer is a read only role. Its verdict is an event, for example review_verdict with changes_requested.

The dispatch queue

Waiting tickets are ranked by tier weight, then by how long they have waited, then by ticket id. Before any seat the pass checks a list of rules and names the first one that stops the ticket, such as label_hold, seat_cap or ticket_spend_cap. Each role keeps its share of the seat cap. The ops Dispatch page lists the queue and the newest decisions with their rule.

Guards on agents

The sentry decides every tool call from a policy made on the server. These are some of its rules.

RuleWhat it does
egress-hostA host off the list is refused. An empty list allows none.
egress-metadataCloud metadata names and addresses are refused, even when listed.
protected-pathWorkflow files and the guard's own sources cannot be changed by any role.
outside-worktreeA write that resolves outside the worktree is refused.
role-readonlyA read only role cannot use a write tool.
credential-readReads of key, token and environment files are refused.
agentsentrytoolevery call is checkedat the gate

Every outside system the sentry and the executors reach sits behind a port, so a guard or a limit is written once.

The helm gives an operator four controls on one ticket: hold, lift, retry and cancel run. Each writes one event. There are also all-stop and a spend brake.

helmall-stopholdsbudgets

Isolation today is a hardened container: a non root user, a read only root, no container socket and a network that denies by default.

Direction: a user space kernel runtime and, when a stated trigger holds, a microVM for stronger isolation.

The workflow owner gate

Secrets live in an environment that allows only the main branch, so a pull request run reads an empty value. A rule fails any workflow that reads a secret without naming that environment. A change to a workflow goes to the owner for review, and any other change goes to the reviewer agent.

Direction: more gating, driven by data

Planned, from approved designs. None of it is shipped yet.

The record of why

Every action leaves a receipt: a trail from the cause to the result.

event: the causerule and ordereffect keyoutcome on the orderread back from the world