Skip to content
Purview Dev logo

Engineering Playbook

Experimental Engineering Playbook Reviewed 2026-10-15 purview-dev/engineering-playbook Star on GitHub architecture-tests best-practices coding-agents conventions csharp documentation dotnet engineering msbuild-sdk tunit llms.txt

Experimental. This project is an experiment: the public API, defaults and packaging can change between prereleases, and there is no production support guarantee.

This is the playbook for building and maintaining a Purview repository. It records the conventions the projects under purview-dev are held to: how a repository is laid out, how its architecture is enforced by tests rather than by review, how a change is verified in tiers, how data crosses a boundary, how tests are written and fed, and how a repository is made legible to a coding agent.

The conventions were previously discoverable only by reading the repositories and inferring the pattern from the repetition. They are stated here once, with the evidence and the trade-offs attached, and scaled so that a repository adopting them can take the part that fits.

Every content page follows the same shape:

SectionAnswers
The ruleWhat is expected.
WhyThe failure the rule prevents.
How it is enforcedThe mechanism that makes it true — or an explicit note that it is a review obligation.
At your scaleWhat to do when the repository is smaller than the one the rule came from.

Rules a build can enforce are labelled as such. Rules only a reviewer can enforce are labelled as review obligations. A convention that claims to be enforced when it is not is worse than no convention at all, so the two are never blurred.

This page and index.md are navigation rather than rules, and Engineering Principles is an index that links to the page stating each rule in full.

PageCovers
Getting StartedThe smallest repository that satisfies every rule, in the order you would build it.
Engineering PrinciplesThe non-negotiable rules, and where the authoritative statement of each one lives.
Repository ShapeWhere a file goes, what it is called, and how a project’s name becomes its namespace.
Project ResponsibilitiesWhat each project is for, how it is named, and what it may depend on.
Architecture as TestsHow the build refuses a dependency that points the wrong way.
Verification ModelWhich checks run, in which tier, for which change.
Contracts and Data ExchangeHow value objects, schemas and results cross a boundary.
Testing and Test DataHow tests are written, and where their data comes from.
Agent EnablementHow a repository is made legible to a coding agent.
Agent Skills DistributionHow a skill is published once and reaches both a package’s consumers and an agent’s own directories.
Agent Guidance SkillsThe shared architecture, telemetry and persistence guidance, and the context an agent must establish first.
Documentation ConventionHow the wiki is written, structured and published.
Worked ExamplesThe reference implementation in this repository, walked end to end.
Adopting This at Your ScaleWhich parts apply to a small, medium or large repository.
ContributingHow to change the playbook itself.
Release FlowHow a change becomes a version, and what a release means here.

src/ in this repository is a deliberately small layered repository that is built, linted and tested by the same pipeline every Purview repository uses. It exists so the rules in this playbook are not just prose: the dependency-direction rules fail the build when they are broken, and the test-data conventions are shown in the form they are meant to be copied. Worked Examples walks it end to end.

Every rule here is drawn from a public Purview repository — chiefly build-sdk (the MSBuild SDK that supplies the defaults), containers (a multi-package library with two backends), value-objects, results and event-sourcing (data exchange at a boundary), and purview-dev (documentation as a published surface). Each page names the repositories it was derived from, so a claim can always be checked against running code.