RCA: Hermes/A2A shared-config drift across agent runtimes #27

Open
opened 2026-05-24 03:12:40 +00:00 by agent-researcher · 0 comments
Member

MECHANISM: Shared agent-runtime configuration has drifted across the Hermes/A2A runtime surface. The highest-risk mismatch is MOLECULE_A2A_PLATFORM_ENABLED: the Hermes workspace image/start path treats the platform plugin as enabled by default (molecule-ai-workspace-template-hermes/Dockerfile:166, start.sh:310), but the executor code defaults it off when the env var is absent (executor.py:133-135) and the module docstring still calls false the safe default (executor.py:1-17). That means the same image can take different A2A transports depending on whether the env survives config generation. Timeout and log-level definitions also diverge: runtime delegation polling budgets DELEGATION_TIMEOUT at 300s (molecule-ai-workspace-runtime/molecule_runtime/a2a_tools_delegation.py:59-66), Codex per-turn defaults to 600s (codex-channel-molecule/codex_channel_molecule/daemon.py:44-47), Hermes plugin reply timeout is 600s (molecule-ai-workspace-template-hermes/executor.py:109-111, :360-369), and Hermes Nix log levels are lowercase debug/info/warning only (hermes-agent/nix/nixosModules.nix:413-416) while Codex daemon accepts uppercase DEBUG/INFO/WARNING/ERROR (codex-channel-molecule/codex_channel_molecule/daemon.py:50-53) and runtime config normalizes to uppercase (molecule-ai-workspace-runtime/molecule_runtime/config.py:254, :657).

EVIDENCE: Current checkouts audited: molecule-ai-workspace-runtime@ef64a20, hermes-agent@c2aa83b, codex-channel-molecule@6963378, molecule-ai-workspace-template-hermes@a1e92e7. Concrete drift points: MOLECULE_A2A_PLATFORM_ENABLED=true in Dockerfile/start vs executor default False; A2A turn/reply ceilings split between 300s and 600s; log-level schemas differ in case and accepted values, with Hermes Nix lacking error while Codex exposes it. No code was changed.

RECOMMENDED FIX SHAPE: Treat this as a shared config contract owned by hermes-agent plus the Hermes workspace template. Define one documented schema for A2A plugin enablement, A2A turn/reply timeout names/defaults, and log-level vocabulary; then make molecule-ai-workspace-template-hermes, molecule-ai-workspace-runtime, and codex-channel-molecule consume that contract or mirror it with tests. Highest leverage first: make the Hermes plugin default unambiguous end-to-end, then align log-level enum/case and timeout env names.

MECHANISM: Shared agent-runtime configuration has drifted across the Hermes/A2A runtime surface. The highest-risk mismatch is `MOLECULE_A2A_PLATFORM_ENABLED`: the Hermes workspace image/start path treats the platform plugin as enabled by default (`molecule-ai-workspace-template-hermes/Dockerfile:166`, `start.sh:310`), but the executor code defaults it off when the env var is absent (`executor.py:133-135`) and the module docstring still calls false the safe default (`executor.py:1-17`). That means the same image can take different A2A transports depending on whether the env survives config generation. Timeout and log-level definitions also diverge: runtime delegation polling budgets `DELEGATION_TIMEOUT` at 300s (`molecule-ai-workspace-runtime/molecule_runtime/a2a_tools_delegation.py:59-66`), Codex per-turn defaults to 600s (`codex-channel-molecule/codex_channel_molecule/daemon.py:44-47`), Hermes plugin reply timeout is 600s (`molecule-ai-workspace-template-hermes/executor.py:109-111`, `:360-369`), and Hermes Nix log levels are lowercase `debug/info/warning` only (`hermes-agent/nix/nixosModules.nix:413-416`) while Codex daemon accepts uppercase `DEBUG/INFO/WARNING/ERROR` (`codex-channel-molecule/codex_channel_molecule/daemon.py:50-53`) and runtime config normalizes to uppercase (`molecule-ai-workspace-runtime/molecule_runtime/config.py:254`, `:657`). EVIDENCE: Current checkouts audited: `molecule-ai-workspace-runtime@ef64a20`, `hermes-agent@c2aa83b`, `codex-channel-molecule@6963378`, `molecule-ai-workspace-template-hermes@a1e92e7`. Concrete drift points: `MOLECULE_A2A_PLATFORM_ENABLED=true` in Dockerfile/start vs executor default `False`; A2A turn/reply ceilings split between 300s and 600s; log-level schemas differ in case and accepted values, with Hermes Nix lacking `error` while Codex exposes it. No code was changed. RECOMMENDED FIX SHAPE: Treat this as a shared config contract owned by `hermes-agent` plus the Hermes workspace template. Define one documented schema for A2A plugin enablement, A2A turn/reply timeout names/defaults, and log-level vocabulary; then make `molecule-ai-workspace-template-hermes`, `molecule-ai-workspace-runtime`, and `codex-channel-molecule` consume that contract or mirror it with tests. Highest leverage first: make the Hermes plugin default unambiguous end-to-end, then align log-level enum/case and timeout env names.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/hermes-agent#27