papa-hq reads 01 research -> 03 decision -> 02 design. The order is a scar, not a choice: 02-DESIGN existed from its initial commit, and when adr/ was finally promoted on 2026-07-13 it took the next free number rather than its place in the sequence. By then design was too settled to renumber. hal-hq was three commits old, so it is not. adr/ becomes 02-DECISIONS and 02-DESIGN becomes 03-DESIGN, and following the folder numbers now walks the process in the order it happens: research produces a decision, the decision authorises a design. 00-GENESIS becomes 00-META, matching papa's rename from the same restructure. Every path reference rewritten across documents, frontmatter, playbooks and skills. All links resolve; all 58 frontmatter blocks parse and their path fields still point at files that exist.
53 lines
2.2 KiB
Markdown
53 lines
2.2 KiB
Markdown
---
|
|
status: active
|
|
initiated: 2026-08-22
|
|
touches: [03-DESIGN/00-as-is/02-modules-and-manifests.md, 03-DESIGN/00-as-is/10-module-catalogue.md, 03-DESIGN/01-to-be/00-work-breakdown.md]
|
|
became: [02-DECISIONS/0015-mesh-brokers-nodes-host-agents-think.md]
|
|
---
|
|
|
|
# 001 — Module domain decomposition
|
|
|
|
- **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".
|