Two kinds of approval, and the one an agent may hold

Ratifying a rule and approving a change against the rules are now separate rights. An agent can hold the second, inside one Area, and never the first.

Until now Smeldr had one approval word, approve, and it meant "ratify a Decision". That was enough while only people ratified. It stops being enough when an agent reviews a pull request against the rules a team has agreed. That agent approves a change. It does not change the rules.

So there are two rights.

ratify ratifies, supersedes or amends a Decision. approve-change approves a change, such as a pull request, against the Decisions in force. The pull request check is the first user of it.

Three roles hold them. The approver holds both, over the whole organization. The domain-approver holds both over one Domain, its Areas and what is placed in them. The area-approver holds only approve-change, over one Area.

An agent never ratifies. A token of class agent or job is refused a role that holds ratify. A transition that needs ratify is refused for such a token whatever its grants say, which also covers a grant made before the rule existed. An agent may hold approve-change, but only within one Area, and only when a person gave it. A person who holds approve-change over that Area grants the agent area-approver on it. The reason and the grantor are recorded, and the grant is revoked like any other.

In practice an agent applies the rules inside an Area a person handed it, and never sets them.

On an existing instance, the first start of this release renames decision-steward to approver and decision-domain-admin to domain-approver. Every grant keeps its ID, scope and expiry, and open ratification conditions still reach the people who can act on them.

Released in core v1.168.0 and mcp v1.66.0.