Skip to main content

Change tiers

A change has a tier: small, medium or large. The tier sets the records, commits and human gates of the change. A small fix gets few records, one knowledge commit and one human gate. A medium or large change keeps every phase commit and explicit plan approval. The guarantees at the end of this page hold for every tier.

Record the tier​

The coordinator assigns the tier at Requirement and writes it in the front matter of the change README. This is the only front-matter key of a change README:

---
tier: small
---

A change README without front matter, or without tier, is a medium change. Existing change records stay valid without edits. The README body still states the reason and the scope in prose.

The owner can raise the tier at any time, and a raise needs no reason. A lower tier is allowed only while every small-tier criterion holds.

Small-tier criteria​

A change is small only when every criterion passes. A criterion that fails, or that is unresolved, keeps the change medium or large.

IDCriterionDecided by
one-artifactThe knowledge difference against the protected branch changes files of one artifact only, and no unit brief names a second member.validator
one-repositoryThe change needs no companion change in another repository.coordinator
patch-levelThe plan declares compatibility: patch.validator
no-contractThe difference adds or removes no flow record, changes no element that another artifact references, adds no decision file and adds no requirement ID.validator
upstream-establishedEvery depends_on target of the artifact has an established version on the protected branch.validator
code-limitFewer than tiers.small.max_code_lines changed code and test lines (default 100). The count excludes docs/artifacts/**, the bundle, lockfiles and generated files.validator
impact-containedThe change impact over the difference reaches no entity outside the artifact, and its coverage statement leaves no reached item unresolved.a tool that computes change impact, or the coordinator's recorded impact assessment when no such tool is available

Each criterion has one result:

ResultMeaning
passThe criterion holds.
failThe criterion does not hold.
unresolvedA tool answer was necessary and was not available, or the answer did not decide.
coordinatorThe coordinator decides the criterion and records the decision in the change README.

A change that touches more than one artifact, or changes a contract that another artifact consumes, is large. Every other change that is not small is medium.

Records, commits and gates by tier​

ItemSmallMediumLarge
Change READMEreason, scope, tier, the plan as one short paragraph and, without an impact tool, the impact assessmentreason and scopereason and scope
Requirement and specificationedited in place, one self_check eachedited in placeedited in place
ADRnot allowed (see no-contract)when a choice has several optionswhen a choice has several options
tasks/README.mdone tasktask listtask list
Unit briefnot requiredrequired by defaultrequired
Knowledge commitsone commit for Requirement, Specification and Planone commit per phaseone commit per phase
Plan approvalthe owner's request; the plan appears in the PR descriptionexplicit, before implementationexplicit, before implementation
Compatibility levelpatch, confirmed by the owner at mergeproposed in the plan, confirmed with plan approvalproposed in the plan, confirmed with plan approval
Owner look at a changed user interfacescreenshot in the PR descriptionrecorded before Versionrecorded before Version
Version record and identity recordyesyesyes
PR and team reviewyesyesyes

The coordinator asks again for the level only when the level changes after approval. When several unit members present their plans together, one approval covers all of them. The coordinator reads merges from Git and does not ask the owner to report them.

A small change still has every phase. Requirement, Specification and Plan are short and are committed together. The owner's request to make the change counts as the plan approval, because a small change cannot break a contract, cannot reach another artifact and cannot wait for an upstream version.

Example of a small change README​

This invented example shows the change README of a small change. It holds the plan paragraph. Without a tool that computes change impact, it also holds the coordinator's impact assessment and the one-repository decision:

---
tier: small
---

# Keep document reads working with several tabs open

## Reason and scope

With four browser tabs open, document reads time out, because each tab
holds an event stream and the browser limits connections per host. This
change closes the stream of a hidden tab and opens it again when the tab
becomes visible. Excluded: a shared worker for all tabs.

## Plan

One task changes the stream client and adds a browser test with four tabs.
The task covers DR1 and DR2 in requirements/document-reads.md.
Compatibility: patch.

## Tier decisions

One repository: the client and its test are in this repository.
Impact: the stream client is used only by the page shell of this artifact;
no other artifact imports it, and no flow record changes.

Compatibility level and version number​

The front matter of the plan tasks/README.md can declare compatibility with the value patch, minor or major:

---
tasks:
- 01-deliver.md
compatibility: patch
---

The plan does not state a version number. At Version, the coordinator computes the number from current_version of the artifact identity record on the protected branch:

LevelNew number
patchIncrement the third part.
minorIncrement the second part and set the third part to 0.
majorIncrement the first part and set the other parts to 0.

A first version is 1.0.0. When the protected branch moves before merge, compute the number again and rename the version record. The validator reports a version record whose number is not the computed number.

Owner look at a user interface​

When a medium or large change changes a user interface, the plan has one DoD item: the owner looked at screenshots or at the running interface. The task evidence records what the owner looked at. For a small change, the screenshot goes in the PR description. The owner look is a check record, not an approval.

Configuration file​

A project can add docs/artifacts/add.config.yaml. Without it, the defaults apply. Unknown keys and wrong types are the error config-invalid.

version: 1
tiers:
small:
max_code_lines: 100
unit_brief:
required_for: [medium, large]
reading:
coordinator: []
product-owner: []
technical-lead: []
implementer: []
KeyTypeDefaultRule
versioninteger1Only 1 is defined.
tiers.small.max_code_linespositive integer100Upper limit, not included, of the code-limit criterion.
unit_brief.required_forlist of tiers[medium, large]Tiers for which an outcome with one member needs a unit brief. An outcome with more than one member always needs one.
reading.<role>list of repository-relative Markdown paths[]Extra guidance that the role reads at start, in addition to its skill core.

Check the tier​

When the validator is available, run it with --change <artifact>/<change>. Its tier object gives the declared tier, the allowed tier and one result for each criterion. A declared small tier with a criterion that fails or is unresolved is the error tier-mismatch. The validator reports one-repository and, without an impact tool, impact-contained as coordinator; record those two decisions in the change README. Without the validator, check each criterion by hand and record the results in the change README.

Guarantees​

GuaranteeSmallMedium and large
main shows the current truthRequirement and specification are edited in place in the same branch as the code.Unchanged.
TraceabilityThe task declares covers; the validator checks it.Unchanged, with covers checked.
Versions and the established ruleThe patch version record is written and establishes only on the protected branch.Unchanged.
Upstream waitA change with an unestablished upstream fails upstream-established and cannot be small.Unchanged.
A person approves a large planNot applicable: a small change is not large; the owner's request starts it.Explicit approval before implementation.

Approval stays out of files. Tiers add no workflow state, registry, phase, role or gate.