Per-sub-organ build plans so each organ can be made independently. Each spec follows a shared 10-section template (contract + stubs => standalone build/test). - README.md: index, template, integration DAG, build waves - C1: OpenHermes Agent <-> metacognitive cycling (priority) - A1 hub, A2 Energy, A3 PS+, A4 endomotiv array, A5 priors, A6 Eth-Int, A7 conviction array, A8 ETR Numbers stay disowned per restart discipline; unfitted constants marked C1. https://claude.ai/code/session_015hmgREHNsxYCuim33yUF2c
4.3 KiB
C1 — OpenHermes Agent ↔ Metacognitive Cycling (PRIORITY)
1. Component
The seam where the OpenHermes Agent harness mounts the Gen.03 body and drives the 4+4 metacognitive inference cycle. This is the integration spine: Hermes brings model-agnostic harnessing (persistent memory, skills, tool-call parsing, Atropos RL); the body brings the organ-systems cognition. C1 defines how a turn flows from Hermes through the cycle and back.
2. Status / certainty
DESIGN-FIRST. Entry mechanism C4 (the MCP bridge exists, mafiabot.adb + hermes_protocol);
the Hermes-side wiring and Level1 handoff are C1/C2.
3. Language & location
OpenHermes (harness, external) ↔ Ada/SPARK bridge. Existing: mafiabot_core/src/mafiabot.adb
(MCP stdio server), mafiabot_core/src/protocol/hermes_protocol.{ads,adb} (JSON-RPC).
New Hermes-side config/glue location TBD (Hermes mcp_servers entry + skill manifest).
4. Does / does-not
- Does: mount the body as a Hermes tool/MCP server; carry one user turn into the cycle
scoped to a session key
(uid, channel, server); return the synthesized result; surface Drive-Box terrain + RAG context into the descent; let Hermes own memory/skills/RL. - Does-not: be the cognition (that's C2/C4), route tools (that's Ada D1), or hold identity (that's B2). It is plumbing + sequencing, not an organ.
5. Interface contract
- Hermes → body (per turn):
{ input:str, uid:str, channel:str, server:str }over JSON-RPCtools/call(already parsed byHermes_Protocol.Extract_Field). Plus standard MCPinitialize/tools/list. - body → Hermes:
tools/callresult{ content:str }on success, JSON-RPC error otherwise (Make_Tool_Result_Response/Make_Error_Response). - Boot side-effect: body fixes the Big-3 identity and writes
~/.hermes/SOUL.md(B2). - Cycle internal contract: each
tools/callruns the 23-step cycle (see C3); step 2 pulls the Drive-Box snapshot (A1) + MoRAG context (F1) across Ada (D1); the 4+4 passes (C2) interleave Celtic-Cross draws (B3); step 19 mini-rag packs the tool schema (D3); step 21 Ada routes.
6. Dependencies & stubs
- Inference cycle C3 — stub: a pass-through that echoes input → lets C1 be tested as pure transport.
- Drive-Box A1, Tarot B1/B2/B3, MoRAG F1, mini-rag D3 — stub: each returns a canned block; C1 only needs them present at their contract, not real.
- Hermes itself — stub: a local JSON-RPC driver script feeding
initialize/tools/list/tools/callon stdin (the existingmafiabot.adbloop already speaks this).
7. Invariants / laws
- L1 (C4): every turn is scoped to its
(uid,channel,server)session key — no cross-room bleed. - L2 (C4): tool routing is Ada's job, not the LLM's (the LLM emits intent + packed schema).
- L3 (C3): methodology composition is static — the 4+4 ordering never changes per turn; responsiveness comes from Energy-gated compute (skip later passes when E low), not a learned router.
- L4 (C2): the coherence check (step 23) contrasts synthesized output vs final cognition — drift detector, not a reward signal to optimize.
8. Build steps
- Write the laws + the turn-sequence as a doc-level contract (this file) → encode L1/L3 as tests on the bridge (session-key isolation; pass-count vs Energy).
- Stand up the Hermes
mcp_serversentry pointing at themafiabotstdio binary; verifyinitialize/tools/list/tools/callround-trip with the C3-stub. - Wire Energy-gated compute: Drive-Box snapshot (A1) supplies E; C1 chooses how many of the 4+4 passes run. Fit the gating thresholds invariants-first (no asserted cutoffs).
- Resolve Level1 (see Open) and slot it into the
Hermes → Level1 → Adahandoff.
9. Tests
- Bridge transport: feed canned JSON-RPC to the
mafiabotbinary (or stub), assert session-key scoping (L1) and that low-E input runs fewer passes (L3). Harness TBD (Ada test main + a shell driver).
10. Open items
- Level1 — C1: what it does and where it sits in
Hermes → Level1 → Ada. Blocks full wiring. - Atropos RL integration — C1: how/whether RL touches the cycle (must not optimize the coherence check, per L4).
- Compute-gating curve — C1: Energy→pass-count mapping, fitted invariants-first.
- Reuse vs rebuild the existing Ada
ada_mediumcycle (defunct-flagged) — decided in C3.