fix: sync doc with extraction scope, remove boundary violation, add ProviderRegistryPort #5
No reviewers
Labels
No labels
auto/blocked-by-deps
auto/ci-timeout
auto/claimed-implementer
auto/claimed-merge
auto/claimed-reviewer
auto/driver-down
auto/invariant-violation
auto/last-attempt-tier-0
auto/last-attempt-tier-1
auto/last-attempt-tier-2
auto/last-attempt-tier-min
Automation Tracking
auto/needs-conflict-resolution
auto/needs-implementer
auto/postmortem
auto/ready-to-merge
auto/restart-throttled
auto/revert
auto/sentinel
auto/stale-inactivity
auto/unstable
Blocked
Bounty
$100
Bounty
$1000
Bounty
$10000
Bounty
$20
Bounty
$2000
Bounty
$250
Bounty
$50
Bounty
$500
Bounty
$5000
Bounty
$750
MoSCoW
Could have
MoSCoW
Must have
MoSCoW
Should have
Needs Feedback
Points
1
Points
13
Points
2
Points
21
Points
3
Points
34
Points
5
Points
55
Points
8
Points
88
Priority
Backlog
Priority
CI Blocker
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Signed-off: Owner
Signed-off: Scrum Master
Signed-off: Tech Lead
Spike
State
Completed
State
Duplicate
State
In Progress
State
In Review
State
Paused
State
Unverified
State
Verified
State
Wont Do
Type
Automation
Type
Bug
Type
Discussion
Type
Documentation
Type
Epic
Type
Feature
Type
Legendary
Type
Refactor
Type
Support
Type
Task
Type
Testing
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
#4 Design doc gaps and boundary violations in cleveractors-core
cleveragents/cleveractors-core
Reference
cleveragents/cleveractors-core!5
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/doc-sync"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
This PR addresses documentation gaps and code issues identified after the LLM-assisted extraction of
cleveractors-corefromcleveragents-core.When the library was extracted, the LLM failed to properly scope it. Three categories of problems were found and fixed here:
acms/index.py) was copied into the library in violation of ADR-001.ProviderRegistryPort) was referenced in docs but never implemented, leaving graphs unable to resolve LLM agents at execution time.cleveragents-corebut had no equivalent here.The PR has been squashed to a single commit and all review feedback has been addressed (see review responses below).
Changes
Documentation fixes (post-review)
docs/reference/actors_schema.md: Addedproviderfield to LLM Actor and GRAPH Actor required fields; added fullproviderfield definition with description, common values, and ADR-005 cross-reference; addedproviderto all YAML examples; added missingprovidervalidation error message.docs/reference/actor_config.md: Addedprovideralongsidemodelin basic structure and hierarchical graph examples; fixed error message to match actual validator output; added missingprovidererror case.Boundary fix —
acms/index.pydeletedsrc/cleveractors/acms/index.pycontainedACMSIndex,FileTraversalEngine,IndexEntry,FileType, andTierLevel. ADR-001 is explicit:The implementation is bound to the CLI use case of
cleveragents-coreand has no relationship to actor YAML parsing or LangGraph compilation. It already exists incleveragents-coreatcleveragents/acms/index.py; it is deleted here and all re-exports removed fromacms/__init__.py.ProviderRegistryPort— new portNew file
src/cleveractors/ports/provider_registry.py, following the same structural-typing pattern asToolRegistryPort(ADR-002):Returns
Agent(the library's own minimal ABC) rather thanBaseChatModelto avoid coupling to a specific LangChain version. Host applications wrap their concrete models in anAgentsubclass and return it fromget().Compiler —
actor/compiler.py_map_nodenow acceptsactor_provider/actor_modelas defaults and merges them into AGENT nodemetadataviasetdefault, so per-node config values still take precedence.compile_actorpassesconfig.provider/config.modelthrough.Node executor —
langgraph/nodes.pyNode.__init__gains an optionalprovider_registry: ProviderRegistryPort | None = Noneparameter._execute_agentresolution order is:agentsdict — existing behaviour, unchanged.provider_registry.get(provider, model)using values from nodemetadata— new; allows hosts to supply LLM models without pre-building an agents dict."Agent {provider}/{model} not found"response — fallback format now matches ADR-005 specification.BDD coverage —
features/(7 scenarios, 30 steps)New scenarios beyond the original ProviderRegistryPort happy-path test:
provider_registry.get()returnsNoneprovider_registryis suppliedDocumentation
docs/adr/ADR-003-actor-abstraction-definition.mdcleveragents-coreADR-031docs/adr/ADR-004-jinja2-yaml-template-preprocessing.mdcleveragents-coreADR-032docs/adr/ADR-005-provider-registry-protocol.mdProviderRegistryPortdocs/reference/actors_schema.mddocs/reference/actor_compiler.mddocs/reference/actor_config.mddocs/reference/actor_hierarchy.mddocs/reference/actors_examples.mddocs/api/actor.mdmkdocs.ymlQuality gates
Checklist
acms/index.pyboundary violation removedProviderRegistryPortprotocol created and wired into the node executormkdocs.ymlnav updatedproviderfield added to reference docs (post-review fix)# type: ignoredirective removed from smoke_steps.py (post-review fix)ISSUES CLOSED: #4footeracms/index.pyback intocleveragents-coreif needed — tracked separately; the file already exists thereCLOSE #4
7084e175a26d24090ee0WIP: Sync doc with extraction scope, remove boundary violation, add ProviderRegistryPortto fix: sync doc with extraction scope, remove boundary violation, add ProviderRegistryPort6d24090ee07084e175a27084e175a24870db28064870db28061265efc7511265efc75115e81e58f1