UAT: ActorConfigSchema name validator rejects server-qualified names (server:namespace/name) — spec requires full [[server:]namespace/]name format #5075

Closed
opened 2026-04-09 00:54:59 +00:00 by HAL9000 · 2 comments
Owner

Bug Report

Feature Area: Actor System — Actor namespacing
Severity: High
Discovered by: UAT Testing (uat-pool-1, worker: Actor System)


What Was Tested

Reviewed the ActorConfigSchema.validate_name validator in src/cleveragents/actor/schema.py against the spec's namespace format requirements.

Expected Behavior (from spec)

The spec defines the full actor name format as:

[[server:]namespace/]name

This means all of the following should be valid actor names:

  • local/my-actor (local namespace)
  • myorg/my-actor (org namespace)
  • myserver:local/my-actor (server-qualified local)
  • myserver:myorg/my-actor (server-qualified org)

The spec states:

"Non-local/ namespaces with server omitted assume the default configured server."
"Built-in LLM actors use provider prefixes (e.g., openai/, anthropic/)."

Server-qualified names are required for multi-server deployments where actors from remote servers need to be referenced.

Actual Behavior

The ActorConfigSchema.validate_name validator rejects server-qualified names because it enforces exactly one slash:

# src/cleveragents/actor/schema.py
@field_validator("name")
@classmethod
def validate_name(cls, v: str) -> str:
    """Ensure actor name follows namespace/name format."""
    if "/" not in v:
        msg = f"Actor name must be namespaced (namespace/name): {v}"
        raise ValueError(msg)

    # Check for exactly one slash
    parts = v.split("/")
    if len(parts) != 2:
        msg = (
            f"Actor name must be namespaced with exactly one slash "
            f"(namespace/name): {v}"
        )
        raise ValueError(msg)

Attempting to use a server-qualified name like myserver:local/my-actor raises:

ValueError: Actor name must be namespaced with exactly one slash (namespace/name): myserver:local/my-actor

This also affects the ActorRegistry._ensure_namespaced() method which only handles the simple namespace/name format.

Code Location

  • src/cleveragents/actor/schema.pyActorConfigSchema.validate_name()
  • src/cleveragents/actor/registry.pyActorRegistry._ensure_namespaced()

Impact

  • Server-qualified actor names cannot be registered or used
  • Multi-server deployments cannot reference remote actors
  • The [[server:]namespace/]name format defined in the spec is not fully supported

Steps to Reproduce

from cleveragents.actor.schema import ActorConfigSchema

# This should work per spec but raises ValueError
config = ActorConfigSchema(
    name="myserver:local/my-actor",  # server-qualified name
    type="llm",
    description="Test actor",
    model="gpt-4"
)
# ValueError: Actor name must be namespaced with exactly one slash

Suggested Fix

Update the validate_name validator to accept the full [[server:]namespace/]name format:

@field_validator("name")
@classmethod
def validate_name(cls, v: str) -> str:
    """Ensure actor name follows [[server:]namespace/]name format."""
    # Strip optional server prefix (server:namespace/name)
    name_part = v
    if ":" in v:
        server, name_part = v.split(":", 1)
        if not server:
            raise ValueError(f"Server prefix cannot be empty: {v}")
    
    # Validate namespace/name format
    if "/" not in name_part:
        raise ValueError(f"Actor name must be namespaced (namespace/name): {v}")
    
    parts = name_part.split("/")
    if len(parts) != 2:
        raise ValueError(f"Actor name must have exactly one slash after server prefix: {v}")
    
    namespace, name = parts
    if not namespace or not name:
        raise ValueError(f"Actor name must have non-empty namespace and name: {v}")
    
    return v

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: uat-tester

## Bug Report **Feature Area:** Actor System — Actor namespacing **Severity:** High **Discovered by:** UAT Testing (uat-pool-1, worker: Actor System) --- ## What Was Tested Reviewed the `ActorConfigSchema.validate_name` validator in `src/cleveragents/actor/schema.py` against the spec's namespace format requirements. ## Expected Behavior (from spec) The spec defines the full actor name format as: ``` [[server:]namespace/]name ``` This means all of the following should be valid actor names: - `local/my-actor` (local namespace) - `myorg/my-actor` (org namespace) - `myserver:local/my-actor` (server-qualified local) - `myserver:myorg/my-actor` (server-qualified org) The spec states: > "Non-`local/` namespaces with server omitted assume the default configured server." > "Built-in LLM actors use provider prefixes (e.g., `openai/`, `anthropic/`)." Server-qualified names are required for multi-server deployments where actors from remote servers need to be referenced. ## Actual Behavior The `ActorConfigSchema.validate_name` validator **rejects** server-qualified names because it enforces exactly one slash: ```python # src/cleveragents/actor/schema.py @field_validator("name") @classmethod def validate_name(cls, v: str) -> str: """Ensure actor name follows namespace/name format.""" if "/" not in v: msg = f"Actor name must be namespaced (namespace/name): {v}" raise ValueError(msg) # Check for exactly one slash parts = v.split("/") if len(parts) != 2: msg = ( f"Actor name must be namespaced with exactly one slash " f"(namespace/name): {v}" ) raise ValueError(msg) ``` Attempting to use a server-qualified name like `myserver:local/my-actor` raises: ``` ValueError: Actor name must be namespaced with exactly one slash (namespace/name): myserver:local/my-actor ``` This also affects the `ActorRegistry._ensure_namespaced()` method which only handles the simple `namespace/name` format. ## Code Location - `src/cleveragents/actor/schema.py` — `ActorConfigSchema.validate_name()` - `src/cleveragents/actor/registry.py` — `ActorRegistry._ensure_namespaced()` ## Impact - Server-qualified actor names cannot be registered or used - Multi-server deployments cannot reference remote actors - The `[[server:]namespace/]name` format defined in the spec is not fully supported ## Steps to Reproduce ```python from cleveragents.actor.schema import ActorConfigSchema # This should work per spec but raises ValueError config = ActorConfigSchema( name="myserver:local/my-actor", # server-qualified name type="llm", description="Test actor", model="gpt-4" ) # ValueError: Actor name must be namespaced with exactly one slash ``` ## Suggested Fix Update the `validate_name` validator to accept the full `[[server:]namespace/]name` format: ```python @field_validator("name") @classmethod def validate_name(cls, v: str) -> str: """Ensure actor name follows [[server:]namespace/]name format.""" # Strip optional server prefix (server:namespace/name) name_part = v if ":" in v: server, name_part = v.split(":", 1) if not server: raise ValueError(f"Server prefix cannot be empty: {v}") # Validate namespace/name format if "/" not in name_part: raise ValueError(f"Actor name must be namespaced (namespace/name): {v}") parts = name_part.split("/") if len(parts) != 2: raise ValueError(f"Actor name must have exactly one slash after server prefix: {v}") namespace, name = parts if not namespace or not name: raise ValueError(f"Actor name must have non-empty namespace and name: {v}") return v ``` --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.2.0 milestone 2026-04-09 01:01:27 +00:00
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: High — Spec compliance bug that breaks documented behavior
  • Milestone: v3.2.0
  • Story Points: 3 — M
  • MoSCoW: Must Have — Spec compliance is required

Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: project-owner

Issue triaged by project owner: - **State**: Verified - **Priority**: High — Spec compliance bug that breaks documented behavior - **Milestone**: v3.2.0 - **Story Points**: 3 — M - **MoSCoW**: Must Have — Spec compliance is required --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner
Author
Owner

Closing as duplicate of #4697 — both issues report the same problem: ActorConfigSchema.validate_name() rejects server-qualified actor names. See also #4810.


Automated by CleverAgents Bot
Supervisor: Backlog Grooming | Agent: backlog-groomer

Closing as duplicate of #4697 — both issues report the same problem: `ActorConfigSchema.validate_name()` rejects server-qualified actor names. See also #4810. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: backlog-groomer
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cleveragents/cleveragents-core#5075
No description provided.