What the mesh is, what it is becoming, and why. Implementation lives in the code repositories; the reasoning lives here. 00-GENESIS mission, engineering context, effect, and the rules that hold 01-RESEARCH investigations, before they harden into design 02-DESIGN the authoritative specification adr numbered decisions — what was chosen, and what was rejected DECISIONS.md the ledger: every decision, in the order it was taken Written for a reader who is not its author and has no access to the mesh it describes. Addresses use the documentation ranges of RFC 5737 and RFC 1918; nodes are named by role. Single initial commit by intent. The prior history came from a private repository and carried operational detail — a routable address identified as a VPN hub, real domain names, a hosting provider — which sanitising a tip commit would not have removed from the log.
47 lines
2.0 KiB
Markdown
47 lines
2.0 KiB
Markdown
# 001 — Module domain decomposition
|
|
|
|
- **Status:** ONGOING — ADR 0001 accepted; graduates when `02-DESIGN` carries the per-context specifications
|
|
- **Initiated by:** jochen, 2026-08-22
|
|
- **Areas touched:** every `hal/*` and `noxflow/*` module; the pipeline's dependency
|
|
graph; the knowledge base; agent identity and credentials.
|
|
|
|
## Summary
|
|
|
|
HAL has 124 modules. That number is not a maintenance problem in itself — it is the
|
|
**symptom of missing bounded contexts**. Modules are split not because they model
|
|
different domains, but because splitting is the only lever the platform offers:
|
|
|
|
- no way to run one daemon on one node without making it a module
|
|
(`hal/claude-licences` — one daemon, single-node)
|
|
- no way to expose two of a kind from one module
|
|
- no namespace separating the mesh from the software it runs
|
|
|
|
This effort establishes the **current state**, the **ideal state**, and the sequence
|
|
between them.
|
|
|
|
## Trigger
|
|
|
|
A night of debugging that produced four fixes and one conclusion. Every fault was a
|
|
boundary fault:
|
|
|
|
- Per-agent Claude credentials had to be written by the *noxflow runtime*, because
|
|
`agents.claude_account` is in noxflow's database — even though agent identity is a
|
|
mesh concept and node identity already lives in the mesh registry.
|
|
- Whether `hal/brain` may depend on noxflow took three attempts to answer, twice
|
|
wrongly, because the ownership boundary was never stated.
|
|
- Authoritative documentation existed in `mesh_docs` and was not found, while a
|
|
proposal in repo markdown was invisible to search entirely.
|
|
|
|
## Decisions taken (2026-08-22)
|
|
|
|
| Question | Decision |
|
|
|---|---|
|
|
| What should noxflow become? | Decompose into `hal/*` modules; noxflow returns to tasks/workflows |
|
|
| Who owns agent identity? | `hal/agents` — a mesh concept, alongside nodes |
|
|
| Where do third-party apps live? | Out of this repo. They run *on* the mesh; they are not *of* it |
|
|
| Knowledge structure | Modelled on `papa-hq`; implementation choice left open |
|
|
|
|
## Open questions
|
|
|
|
Tracked in [`analysis.md`](analysis.md) under "Open questions".
|