Align the product language and API surface with LLM-native delegation workflows while preserving emergent domain behavior.
Current internals are strong, but public language (identity, context, metaprogramming-heavy framing) is not aligned with how LLMs naturally reason about delegation:
- role selection
- memory handoff
- tool delegation
- answer synthesis
The plan is to add a coordination-layer vocabulary that matches this mental model without sacrificing dynamic domain API emergence.
- Preserve emergent domain methods.
- Keep
method_missingbehavior as the domain surface. - Do not predefine domain verbs like
cosine,solve,diagnose.
- Add explicit coordination primitives.
- Introduce stable orchestration methods (
for,remember,memory,delegate). - Coordination API should be predictable and testable.
- Keep naming and runtime semantics aligned.
Recurgentis the canonical project/runtime name.Agentis the canonical operational object for LLM usage (Agent.for(...)).
- Separate naming from runtime semantics.
- Runtime behavior should not depend on branding terms.
- Coordination vocabulary should stay minimal to reduce semantic drift for LLM users.
- Codify tolerant delegation semantics.
- Use tolerant interaction semantics as the canonical runtime path.
- Use outcome envelopes for multi-tool Tool Builder workflows.
- Pros: zero implementation risk.
- Cons: does not improve LLM-native ergonomics; mismatch persists.
- Pros: clean slate.
- Pros: removes conceptual drift immediately and simplifies long-term language.
- Cons: breaks old code immediately.
- Add
Agentfacade and coordination API while keepingActuatorintact. - Introduce
Recurgentnaming via docs/module aliasing first. - Evaluate adoption, then decide deprecation timeline.
- Publish ADRs for coordination surface and naming transition.
- Define ubiquitous language map in docs.
- Capture non-goals and compatibility promises.
- Add
Agentfacade with:Agent.for(role, **opts)#remember(**entries)#memory#delegate(role, **opts)
- Keep dynamic domain method dispatch unchanged.
ask(...) is explicitly deferred. It may be added later after usage evidence.
- Unit tests for coordination methods.
- Acceptance tests for LLM-delegation flows:
- agent creates tool delegate
- memory handoff and retrieval
- domain method still emergent (
calculator.cosine(60))
- Define Tool Builder/Tool vocabulary and outcome envelope model.
- Add contract profile and scenarios for tolerant delegations.
- Remove strict/raise-only ambiguity from runtime-facing contracts.
- Remove
Actuatornaming from runtime/docs/examples. - Canonical names:
- project/runtime:
Recurgent - operational object:
Agent
- project/runtime:
- Update gem/module/entrypoint naming accordingly.
- Define runtime-agnostic spec for
Agent,role,memory,delegate, and emergent domain methods. - Use same spec as the contract for upcoming Lua implementation.
- Documentation
- Add ubiquitous language section to
README.md. - Add migration guide under
docs/. - Keep docs index and retrieval index updated.
- API
- Implement
Agentconcrete class withAgent.for(...). - Keep dynamic domain runtime behavior unchanged.
- Test coverage
- Unit tests for facade behavior.
- BDD acceptance scenarios for delegation orchestration.
- Contract scenarios for tolerant delegation behavior and synthesis continuity.
- Observability
- Keep current log fields and add any facade-level metadata only if needed.
- Overly large fixed API causing LLM semantic drift.
- Mitigation: keep fixed coordination vocabulary minimal.
- Drift between facade and core behavior.
- Mitigation: ensure facade delegates directly to core methods and add contract tests.
- Hard-cut rename integration churn.
- Mitigation: execute rename atomically across code, tests, docs, and examples in one phase.
- LLM orchestration can be expressed in coordination vocabulary without losing dynamic domain API.
Agent.for(...)is canonical and documented.- Tests cover coordination primitives plus emergent domain behavior.
- Documentation clearly explains coordination methods vs emergent domain methods.
- Documentation and contracts define canonical tolerant delegation semantics.
Agentis a concrete class.- Canonical constructor is
Agent.for(role, **opts). ask(...)is deferred until usage evidence warrants it.- Rename is a hard cut: remove
Actuatornaming now. - Tool Builder/Tool language is canonical for multi-agent problem-solving flows.
- Tolerant delegation interfaces are a codified design value.