Skip to content

Reconcile Hamma's agent architecture guide with the live crate boundaries #129

Description

@forkwright

Finding

Hamma's public and agent-facing architecture guides describe a different crate and cryptographic/configuration topology from the code that exists.

The generated Phase A dependency blocks are now authoritative and consistent; this finding excludes them. The remaining hand-maintained orientation prose still assigns capabilities to mitos that live in dictyon or do not exist, describes an Ed25519 identity layer absent from the workspace, and directs agents to a Figment configuration cascade that is not implemented.

Verified against main 9aa9a56223afdd47d7723104cd16a5c07d5fc722.

Evidence

Crate ownership

  • README.md:40-48, AGENTS.md:39-47, CLAUDE.md:34-45, and _llm/architecture.toml:22-29 describe mitos as owning Noise framing and ACL types.
  • crates/mitos/src/lib.rs:1-17 still titles itself “Hamma Core” and claims Noise framing, WireGuard key wrappers, peer identity, ACL representations, and protocol constants, but exports only capability, config, keys, and types.
  • Actual Noise handshake and transport framing live under crates/dictyon/src/{noise,transport,wire}. No effective ACL representation/state exists in mitos; open Build authoritative ACL policy state before advertising or activating the data plane #67 owns building that capability before data-plane activation.
  • _llm/architecture.toml declares generated = false and includes histos and hamma-derp as [[architecture.crates]] with paths that do not exist. README/AGENTS correctly call them planned, but the machine-oriented architecture inventory does not distinguish live workspace members from future destinations structurally.

Identity model

  • CLAUDE.md:70 says node identity is Ed25519, WireGuard tunnel keys are Curve25519, and Noise uses X25519, with each represented by a distinct newtype.
  • crates/mitos/src/keys.rs:1-12,205-237 says all current key families are Curve25519/X25519 wrappers. NodePrivate is explicitly the WireGuard identity; no Ed25519 dependency or identity type exists anywhere in the workspace.

Configuration model

  • CLAUDE.md:71 says TOML configuration is parsed through Figment with an environment-variable override cascade.
  • Root Cargo.toml contains no figment dependency, and a workspace source inventory finds no Figment use or TOML/env configuration loader. mitos::Config is currently a typed/default/validation structure passed directly by callers.

#118 owns the separate public Phase A order and Kanon-consumption contract. This issue does not reopen or duplicate that generated block.

Why this matters

These files are the dispatch surface for agents. Following them can lead an implementation to:

That is more than stale prose. It creates competing architecture authorities around security-critical boundaries where type identity and crate ownership are intended to prevent accidental mixing.

Desired correction

Rebuild the hand-maintained architecture guidance from the live workspace and explicitly separate three states:

  1. implemented ownership;
  2. approved but blocked/planned capability; and
  3. speculative future destination.

Make mitos documentation name only the vocabulary it actually owns today. Route Noise framing to dictyon; link ACL claims to #67 until the types and state exist. Correct the identity description to the implemented Curve25519/X25519 hierarchy, or add a separately justified Ed25519 authority only when a real consumer requires it. Describe configuration as direct typed config unless/until a real loader lands.

Derive workspace-member/path inventory mechanically while retaining human-owned role descriptions.

Done when:

  • every live crate is represented exactly once and planned crates cannot appear as existing paths;
  • mitos docs and exports agree on its current responsibility;
  • Noise, ACL, identity, and configuration guidance matches executable ownership;
  • no guide claims an Ed25519 or Figment surface absent from dependencies/source;
  • adding/removing/renaming a workspace crate makes the architecture inventory check fail; and
  • the Phase A generated contract remains unchanged and authoritative for sequencing.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugUnintended behavior or production defectdocumentationDocumentation-only change or gap

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions