Files
hq/01-RESEARCH/001-module-domain-decomposition/00-overview.md
T
jschoubben c0b35652d0 The numbering is the flow: decisions are 02, design is 03
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.
2026-08-23 18:05:11 +02:00

2.2 KiB

status, initiated, touches, became
status initiated touches became
active 2026-08-22
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
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 under "Open questions".