Files
hq/00-META/repos.md
T
jschoubben 4d387d2998 Hand the lab design off to mesh-lab
Playbook 04: the design names its owner and flips to in-progress. code
moves from hal to mesh-lab, and decisions gains 0029 and 0030 — the design
now rests on three records rather than one.

repos.md marks mesh-lab as the one target repository that exists. The
other six remain the target, not the present, and saying so is the point:
a map that lists repositories which do not exist is a map that will be
believed.
2026-08-23 22:26:30 +02:00

3.9 KiB

status, updated
status updated
canonical 2026-08-23

The Novox repositories

The map of where implementation lives. Humans use it for orientation; agents use it for issue triage (playbook process/03-issues.md). The code: frontmatter field in design documents points at entries here.

Repository names are recorded; hosts, URLs and owners are not — this repository is public, and a forge address is an operational detail (see README).

Repository Owns
hal The monorepo — the node runtime, the module catalogue, the delivery machinery, and the bootstrap scripts. Every core module lives here.
hq This repository, under the company organisation — mission, research, design, decisions, issue diagnosis. Company-scoped (ADR 0028); the mesh is its first product. The source of truth for why. Carries no implementation.
(one per application) Every standalone application, site or side-project gets its own repository, with module.yml at the root. Registered with the mesh as a build source; built and deployed by the same pipeline as anything in the monorepo.

What the mesh becomes

ADR 0030 records the repositories the monorepo decomposes into. Only mesh-lab exists so far — it is built first (ADR 0029); the rest are the target, not the present.

Repository Tier Holds
mesh-host 0 the node host — the one binary installed by hand
mesh-substrate 1 the four pinned services, as declarations
mesh-control 2 the control plane and its contexts
mesh-surfaces 3 tools, web, cli
mesh-sdk — contracts shared across tiers
mesh-lab — exists. The lab — scenario lifecycle, networking, placement. Ships to nobody; runs on a workstation.

Tier 4's shape is open, and deliberately so: see ADR 0030 and research 005.

What lives where inside the monorepo

Named by role, because the layout is itself part of the as-is design — see 03-DESIGN/00-as-is/.

Area Holds
Module catalogue One directory per module, each with a manifest. Core modules sit under the mesh's own namespace; everything else at the top level.
Node runtime The daemon and interactive runtime that every node runs.
Bootstrap scripts First-node initialisation, joining an existing mesh, and node rescue.
Shared library The SDK every module builds against.
Pipeline test harness End-to-end coverage of the delivery pipeline. Currently unbuildable — see 04-ISSUES/005.

Why applications do not live in the monorepo

A standalone application in the monorepo is a convention violation, and reviewers reject it. The reasoning is recorded in 02-DECISIONS/0010: the mesh installs, provisions for, and ships an application through exactly the same machinery whether or not its source sits beside the mesh's own — so co-location buys nothing and costs the monorepo's review cadence.

There is no npm workspace

Each module is a standalone package that consumes its dependencies from the private registry, not from a sibling directory. The workspace was removed after it caused build-versus-development divergence — a workspace member importing another resolved to local unbuilt source in the pipeline and to a published version in development. Recorded in 02-DECISIONS/0007.

Consequence, and it is a real one: a cross-package change is two steps — publish, then consume — and a repository-wide npm install does not exist.