Skip to content

Repository Scope

The root should stay narrow. It exists to hold shared docs structure, repository-wide validation and release framing, tracked API artifacts, and other assets that genuinely cross package boundaries. It should not become a backup owner for product behavior.

Scope Model

flowchart TB
    root["root surface"]
    docs["docs and handbook routing"]
    apis["tracked contract artifacts"]
    process["make, workflow, and release coordination"]
    product["product behavior"]

    root --> docs
    root --> apis
    root --> process
    product -. stays out of root .-> root

This page should help a reviewer reject the common excuse that something belongs at the root because several packages touch it. Shared touch does not equal shared ownership.

Root Scope

  • handbook structure and cross-package routing under docs/
  • tracked contract artifacts under apis/
  • repository-wide command, workflow, and release coordination under Makefile, makes/, and .github/workflows/
  • workspace metadata and root governance files when they affect several packages together

Out Of Scope

  • runtime execution behavior
  • evidence, decision, or lab semantics
  • package-local contracts that happen to be reused elsewhere

Failure Mode To Reject

A root change that adds product behavior because it is easier to wire once at the top is usually the wrong change. Shared convenience is not the same thing as shared ownership.

First Proof Check

  • root files only when the rule truly spans several packages
  • otherwise the owning package handbook, code, and tests

Design Pressure

The common drift is to broaden root scope one convenience change at a time until product behavior has no clean owner anymore.