--- status: accepted date: 2026-08-23 deciders: jochen reconstructed: false --- # 28. HQ is company-scoped; the mesh is its first product ## Context This repository was `hal-hq` — one product's headquarters, named for the product. Then the product was renamed ([ADR 0027](0027-the-product-is-novox-mesh.md)), which forced the question of what the repository is actually the headquarters *of*. Two facts settled it, and both were checked rather than assumed. **Novox already delivers other things.** The company's forge organisation holds live projects beside the mesh, and they are registered as build sources — meaning the mesh already builds and deploys them. They are not hypothetical future products; they exist and ship today. **They are tenants, not peers.** They run *on* the mesh. Every one of them is developed, delivered and hosted by it. So the mesh is not one product among several — it is the ground the others stand on. That distinction decides the scope. If the mesh were a product beside others, a per-product HQ would be right. Because it is the substrate the company operates on, a decision about the mesh is a decision about how the company works. ## Considered options 1. **`mesh-hq` — one HQ per product.** The safe choice, and the reversible one: a second product creates its own HQ and shared practice graduates upward later. Rejected, knowingly, because it models the mesh as a peer of things that are actually its tenants. 2. **A company HQ *and* a product HQ, from the start.** Rejected as ceremony — two repositories for one operator, and the constitution's own YAGNI rule says not to. 3. **One company-scoped HQ, `novox/hq`, with the mesh as its first product.** Chosen. ## Decision The repository is **`novox/hq`** — Novox's headquarters, not the mesh's. It holds the reasoning behind what Novox builds. Today almost all of that is the mesh, because the mesh is what Novox is building. That is a fact about the present, not a definition of the repository. **The scope of each document is fixed now, so the eventual split is mechanical rather than archaeological:** | Scope | Documents | Moves if products separate? | |---|---|---| | **Company** | [`how-we-build.md`](../00-META/how-we-build.md), [`process/`](../00-META/process/), [`repos.md`](../00-META/repos.md), this record and [0019](0019-hq-is-its-own-repository.md)–[0027](0027-the-product-is-novox-mesh.md) | No — they stay at the top | | **Product (mesh)** | [`mission.md`](../00-META/mission.md), [`context.md`](../00-META/context.md), [`effect.md`](../00-META/effect.md), `01-RESEARCH`, `03-DESIGN`, `04-ISSUES`, records 0001–0018 | Yes — into a product section | The folders are **not** restructured now. One product's content under a company name is correct while there is one product's worth of it, and nesting before there is anything to nest is the ceremony option 2 was rejected for. ## Consequences - Engineering practice has a home that does not belong to the mesh. `how-we-build.md` — never write to production directly, migrations for schema changes, runtime evidence for behavioural criteria — is true of any Novox project, and its being in a mesh repository was always a slight mislabelling. - The constitution derived from it ([ADR 0025](0025-hq-is-the-source-of-the-constitution.md)) can legitimately govern work outside the mesh. Under a product HQ it could not have, without either duplicating or reaching across repositories. - **The bet is not entirely forward-looking, and that is worth being honest about.** Novox already has work that is *not* a mesh tenant — client engagements and at least one product that is developed outside it. So the company genuinely has a scope wider than the mesh **today**, which strengthens the case for a company HQ and simultaneously means the split in the table above is closer than "some day". The table is not a precaution; it is a plan whose trigger already half-exists. - What has *not* happened yet is any of that work needing the constitution. That is the actual trigger ([ADR 0025](0025-hq-is-the-source-of-the-constitution.md)): the moment something outside the mesh must be governed by the same rules, product-level content moves down a level and this repository becomes what its name already claims. - A new repository was created rather than the old one transferred — the forge predates the transfer API. `jschoubben/hq` is left in place untouched; it is not the source of truth and nothing points at it. - The mesh's own documents now live one conceptual level below the repository they are in. A reader arriving at `01-RESEARCH` should understand it as the mesh's research, not Novox's. Nothing in the folder names says so, and that is the cost of not restructuring. ## References - [ADR 0027](0027-the-product-is-novox-mesh.md) — the product name that forced the question. - [ADR 0019](0019-hq-is-its-own-repository.md) — why HQ is a repository at all. Unchanged; only its scope moves.