Found by a full scan before making the repository public, which is the moment the public rule stops being aspirational. A module name identified a specific laptop model — hardware inventory, which is operational detail about one installation rather than a lesson that travels. Generalised. ADR 0028 named a forge username in a repository path, which the public rule forbids, and the sentence had also gone stale: the repository it described was subsequently verified empty of anything unique and removed. Rewritten to state what happened without the username. Removing a disclosure from a record is the same class as fixing a path — the rule that permits it outranks the one that forbids editing. Issue 006 gains its proposed direction: Nox works from within this repository rather than these documents being synced into the knowledge base. Better on three counts — no copy, so no drift; no fourth knowledge system, which was the original objection; always current. But it changes the promise, and the issue says so. ADR 0019 promised these documents would surface BESIDE everything else in a symptom search. An agent that must be asked is reachable, not surfacing, and the two differ in precisely the case the operational memory exists for — someone debugging an error with no reason to suspect HQ knows anything about it. The question narrows to whether a symptom search finds this content without the searcher already suspecting it.
90 lines
5.0 KiB
Markdown
90 lines
5.0 KiB
Markdown
---
|
||
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, because the forge predates
|
||
the transfer API. The original was verified to contain nothing the new one lacks — every ref
|
||
an ancestor, no tags, issues, pull requests, releases or wiki content — and then removed.
|
||
- 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.
|