Skip to content

A commit message is a value this repository judges, not a convention it hopes for

The commit message has one grammar, one policy and one verdict; the scope it is written under is learned from the repository's own history rather than kept in a table, and a message that does not satisfy the policy is refused while it is still being written.

status
feature status: stable
on the homepage
featured

What it does

majordomus commit validate judges one message against the policy declared in .ai/repo/policy.yaml and reports typed findings — the grammar, the subject width, a scope the history has not used, a record id the layer does not hold, a fix with no test among its files, a breaking change that explains nothing. .githooks/commit-msg asks it with the staged paths, which is the one moment the message and the files both exist, and git aborts the commit when a finding is an error. scripts/ci/commit-policy asks the same judge of the history through majordomus commit history, which reads 1788 commits in about a second.

majordomus commit scopes answers which scopes this repository writes about which directories, learned from the log. majordomus commit plan says what the working tree would commit, divided into the commits the history's own scoping supports, each with the evidence for it and the whole under a fingerprint that makes a stale plan refusable.

All four are read-only capability declarations, so the command line, MCP, HTTP, OpenAPI, the Cockpit and the generated reference derive from one place and none of them keeps a list.

What it does not do

It does not make the commit. git commit is a repository mutation and the exposure policy stops every machine surface at local mutation: an agent may ask what a commit would be and whether a message passes, and a person commits. The subsystem is shaped to that — the planner and the judge are pure functions of a tree and a message, so they work offline, cannot half-succeed, and every answer can be recomputed and checked.

It does not judge whether the subject is a good sentence, whether the change is atomic, or whether the work was worth doing. A reviewer decides those. It does not propose a subject either: what a change did is the one thing no evidence in the tree can state, and a planner that wrote a confident sentence about it would be writing fiction into the history.

Why it exists

Operational moments from the Why catalogue that name one of this feature's mechanisms. Nothing here was assigned: a moment appears because it names a rule, a command, a capability or a claim this feature also names.

How it works

The capability modules of the executable this feature names, each with the capabilities it composes. The interfaces each one reaches are listed under Interfaces below: they are projections of one declaration, not separate registrations.

Commit commit behaviorally verified

The commit as a value: the scope vocabulary this repository's own history yields, what the working tree would commit and how it divides, and the verdict on one message against the repository's commit policy.

Where it sits

domain
Governance — The rules are written once, in the repository, projected into every tool's instructions, and a blocking rule stops the command instead of advising it.
areas of work
governancework-tracking

Interfaces

Each capability behind it, on every interface it is projected onto. A link goes to this site's reference for that interface; an HTTP route and an MCP tool are answered by a running majordomus serve, not by this site.

The capabilities behind this feature, by interface
capabilitycommand lineHTTPMCP tool
commit.history majordomus commit history GET /api/v1/commit/history majordomus_commit_history
commit.plan majordomus commit plan GET /api/v1/commit/plan majordomus_commit_plan
commit.scopes majordomus commit scopes GET /api/v1/commit/scopes majordomus_commit_scopes
commit.validate majordomus commit validate GET /api/v1/commit/validate majordomus_commit_validate

Evidence

What is guaranteed

Each claim this feature names, with the status its row declares, the verdict the recorded runs support, and the test that settles it.

Executable use cases

The rules that hold it

  • blocking A commit message is a value this repository judges, not a convention it hopes forproject.conventional-commits
  • blocking Derived files are regenerated, never editedproject.derived-files-regenerated
  • blocking External interfaces are projections of one capability definitionproject.interfaces-are-projections

The decisions behind it

Using it

From the executable's command line

The synopsis of each, as the executable's own help prints it.

Where this page comes from

the file
.ai/repo/features/commit.md
the same answer
majordomus product show commit
read further

The commit

Searches the titles and descriptions of every page this site publishes.