The review of a commit
sheriff review has a runner judge every commit that changes the system's code. A runner is an agent's CLI, started apart from the session that wrote the code (§s-xr5xxa9cxf2mq5u). The runner is given:
- the commit's message;
- the commit's change, less the files generated from the nodes, each of which is named to it with what it holds;
- each node the message or a changed symbol's tag names, with its text and its reason, a RecordType with its fields, and a node of a project's own kind with the values its kind declares;
- each symbol of the system's code outside its tests the commit changes, whole as the commit leaves it, with its file, its lines and its tags.
The symbols are those sheriff binding finds changed (§s-2x58az67bm6cxq2). A symbol's tags are its own or those of the symbol it stands in.
The runner judges the commit against the nodes, and each changed symbol, whole, against the nodes its tags name. It refuses the commit where the code does something no named node states in its text, or leaves out what one requires. It also refuses the commit where a changed symbol:
- does something no node its tags name states in its text;
- carries a tag naming a node it does not implement;
- carries the tag that names no node while it implements the system's logic.
A finding of the last kind names as its node the rule that every symbol carries a tag (§s-kgbzk2ph9e6jfb4).
A tag says which node a symbol is held to. The checks can tell that a tag names a node that exists, not that the symbol does what that node says. Nor can they tell whether a symbol whose tag names no node carries the system's logic. A reader of the code can tell both.
A changed symbol is judged whole, since a change anywhere in it counts as a change of the whole symbol. The whole symbol is then held to the nodes the commit names. Shown only the changed lines, the reviewer would pass the lines beside them that do what no node says.
The links it makes
- implements → What is checked, when, and what a failure costs
- implements → The reviewer sees only the change and the nodes it names
- implements → Every symbol carries a tag, and what carries no rule says so
- cites → Who runs the reviewer
- cites → The symbols a commit changes
- cites → The system's code is the code implementing the specification, and its tests
The decisions taken on it
- Problem
The reviewer was given the commit's change and the nodes it names, and judged the commit as a whole. A tag moved onto a node its symbol does not implement, or a tag naming no node on a symbol carrying the system's logic, passed wherever another named node stated what the code does.
- Ruling
The owner: the reviewer is given each changed symbol of the system's code with the tags that bind it, and judges each against the nodes its own tags name. A changed symbol is judged whole, not only its changed lines, since a change anywhere in it is a change of the whole symbol.
- Problem
The system's code came to include its tests, which carry a sid rather than a tag.
- Ruling
Following the owner's ruling on §s-hheus6f395ynqvc: the reviewer is given each changed symbol of the system's code outside its tests.
- Problem
The node named a kind of node "data record" and a node's place "address" or "id".
- Ruling
A technical replacement following the owner's decisions of that day: a data record is a RecordType, and a node's address or id is its location.
The tests bound to it
- skills/tools/test/unit/gates.test.ts · s-vp24dqydygztqbt gives the runner only the symbols of the system's code, telling a symbol with no tag from one whose tag names no node
- skills/tools/test/unit/gates.test.ts · s-vp24dqydygztqbt gives the runner the nodes with their reasons and each changed symbol whole with the tags that bind it, and asks it to judge each symbol