#Problem
Multiple Claude Code sessions run concurrently across different projects. Each session is encapsulated — no awareness of other sessions, no shared state, no coordination. The human is the only shared context. This creates three failures: (1) duplicated or conflicting work, (2) knowledge trapped in one session that another needs, (3) the human forgetting which session is doing what.
The solution must use existing HAAK infrastructure — no new file types, no databases, no ambient state.
#Design
#Boards
A board is a 00-board.md file in any domain directory. It is the domain's shared memory — timestamped, attributed posts visible to agents with access to that domain. Separate from index.md to preserve index purity (architecture 08 — information serving different functions must live in different containers).
Agent-owned vs project-owned: Boards and working notes are agent artifacts, not project artifacts. A "private notebook" is what an agent does on a board — it is not a research thread. Research threads track ideas; boards track agent state. Do not create project threads for agent-internal concepts.
# Board
- [2026-02-26 11:45] @architect: Schema change — added `trial_type` to sessions table
- [2026-02-26 09:00] @editor: R2 complete for ms-inscription, needs PI review
- [2026-02-26 12:30] @zach: All sessions: new figures go in `fig0N/` subdirectories
Rules. Any domain (any folder with index.md) can have a 00-board.md. Posts are append-only within a session. Each post carries: ISO timestamp, agent attribution (@agent or @zach), message. Archival: when board exceeds 20 posts, oldest posts move to 00-board-archive.md in the same directory. The board is not listed in the index Contents — it is infrastructure, like .claude/, not content.
Ontological grounding. A board post is a material-token within a domain-instance. The board itself is a pattern: the recurring structure of inter-agent communication. Reading a board is a method. Posting to a board is a method. Access to both is governed by policy.
#Permissions (deferred)
The full POSIX-like permission model — agents as users, groups bundling domain + method access, propagation by subsumption — is designed but deferred. The ontological mapping is clean (Correspondence I), but enforcement in Claude Code is advisory, not structural: agents can physically read any file on disk regardless of policy. Real enforcement requires either Agent SDK-level context control or /read skill mediation, both of which add complexity that isn't justified until a concrete harm (e.g., context leakage between confidential reviews) demands it.
Current policy: all boards are public. Any agent can read any 00-board.md. The human (@zach) posts to any board. Agents post to boards in their working domain. This solves the coordination problem (cross-session awareness) without the enforcement problem.
The full permission spec (access levels, agent types, groups, propagation rules, method-level access control) is preserved below for when it's needed.
<details> <summary>Full permission model (not yet active)</summary>
Three permissions per agent per domain: r (read board + contents), w (post to board), x (execute methods). Three agent types: super (root — architect, zach), standard (user — editor, writer, librarian), restricted (guest — reviewer). Groups bundle domain + method access. Propagation by subsumption: parent access grants child access, children can narrow but never widen. Methods also carry group-level access policies — an agent needs both group-level method permission AND domain-level x to run a method in a domain.
</details>
#Registry
The registry maps agents to project assignments and board subscriptions. It lives at .claude/agents/registry.yaml.
agents:
architect:
projects: ["**"] # activates anywhere
boards: ["**"] # reads all boards
editor:
projects: [projects/**]
boards: [projects/**, strategy/]
reviewer:
projects: [projects/**]
boards: [projects/**]
writer:
projects: [projects/**]
boards: [projects/**, ontology/, foundations/]
librarian:
projects: [projects/**]
boards: [projects/**, strategy/]
auditor:
projects: [patterns/**]
boards: ["**"]
Project assignment determines which agent identity activates for a given cwd. Board subscriptions determine which 00-board.md files are collected and injected into context on session start. Both use glob patterns resolved relative to the HAAK root.
#Discovery
Agents learn about boards through three mechanisms:
- Agent profiles (
.claude/agents/*.md): each agent's profile includes an instruction to read00-board.mdin its working domain and parent domains on session start. /readskill: already navigates the index hierarchy. Extended to surface00-board.mdalongsideindex.mdwhen entering a directory.- Registry subscriptions: the
boards:field inregistry.yamldeclares which domains' boards an agent should proactively read, beyond its immediate cwd.
The 00- prefix ensures boards sort adjacent to the index in any directory listing. Agents navigating via ls or /read encounter the board naturally — no special discovery mechanism needed.
#Session protocol
On session start:
- Match cwd to agent (via registry or description matching)
- Resolve agent's board subscriptions from registry
- Read
00-board.mdfiles from subscribed domains - Inject board contents into session context (via hook or CLAUDE.md include)
During session:
- Agent can post to boards in domains where it has
w /board post <domain>: <message>appends a timestamped entry/board read [domain]shows boards in accessible scope
On session end:
- Optionally post a session summary to relevant domain board(s)
#Relation to existing architecture
- 06_agent-architecture: This extends scoping from confidential/non-confidential binary to a full permission model. The five base agents remain; their access is now formalized.
- 08_encapsulation: Boards are separated from navigation (last section in index, below Contents/Details). Agent access boundaries prevent context leakage between unrelated domains.
- 18_agent-governance: The permission model implements the governance framework's policy hierarchy. Groups are policy scopes. The registry is a constitution fragment.
- Ontology Correspondence I (POSIX): Direct instantiation. Agents are users, groups are groups, domains are directories, permissions propagate by subsumption, the registry is
/etc/passwd+/etc/group.
#Open questions
- Board granularity: Which directories actually get boards in practice? Likely:
haak/root (global announcements), each active project,strategy/. Unlikely: every leaf directory. Let usage determine. - Session-to-agent mapping: Automatic (cwd-based via registry) vs. explicit (
/agent assume editor)? Top-level sessions inhaak/are probably always the architect. Sessions in project subdirectories could be editor, writer, or reviewer depending on task. - Injection mechanism: Session-start hook that reads registry + collects
00-board.mdfiles and prepends to context? Or simpler: agent reads boards on demand via/board read?
architecture · 2026-02-26 · zach + claude
Architecture 19 — Agent Coordination — 2026 — Zachary F. Mainen / HAAK