05 · Product
Version control
Every change reviewed before it becomes baseline.
Everyone works on the same project, live, and every edit to the model or the requirements is held as a draft. Drafts reach the published baseline only through a merge request someone else has reviewed, so the baseline is always approved work, and the reason behind each change is stored with it.

Thirteen staged changes on the left, the before and after for one of them on the right. None of it is baseline yet.
- Baseline and drafts, side by sideThe approved baseline and everyone's work in progress are one project seen two ways. A reviewer can read what is coming without being able to touch it.
- You see exactly what changedNot a new file version, but the attribute that moved from 142.3 to 148.1 kg, the interface that was added, the requirement that got a new parent. Each one reviewable on its own.
- Half a change cannot mergeA change that only makes sense with another one is caught before review, so a new attribute never reaches the baseline without the part it hangs from.
- Tagged releasesThe PDR baseline is a tagged snapshot of the model, and it stays exactly as it was on the day of the review.
- Subsystems shared as librariesA subsystem built once is imported into every project that uses it. When its owners release a new version, each project sees the full diff before taking it.
Nothing becomes baseline without a review
A set of changes goes for review with the analysis that justifies it attached and a reviewer named. The discussion lives on the request, and what the reviewer is looking at is locked so nobody can quietly edit underneath them. Who decided, and on what evidence, stays with the change rather than in someone’s inbox.

Catch the regression while it is still a draft
Before a change merges, every requirement with a check is judged against the staged values. Here eleven carry one and four come back failing or in error, found at the one point where fixing it costs nothing. Computed values whose inputs moved after staging are flagged too, so the request carries what the formula actually produces.
