Fix ActorConfiguration.from_blob() to tolerate missing provider for v3 TOOL actors #9971

Open
opened 2026-04-16 09:29:49 +00:00 by hurui200320 · 2 comments
Member

Metadata

  • Commit Message: fix(actor): tolerate missing provider in from_blob for v3 TOOL actors
  • Branch: bugfix/m8-v3-tool-actor-no-provider-from-blob

Background and context

v3 TOOL actors do not require a provider field per ActorConfigSchema — the schema validates and accepts TOOL actors without provider. However, the legacy v2 canonicalization layer (ActorConfiguration.from_blob()) requires a provider field and rejects TOOL actors that omit it.

This means a user who registers a v3 TOOL actor without a provider via agents actor add --config will see a confusing rejection from the legacy layer after schema validation passes.

Current behavior

A v3 TOOL actor YAML without provider passes ActorConfigSchema.model_validate() but is subsequently rejected by ActorConfiguration.from_blob() in both actor.py and registry.py with an error about missing provider/model.

Expected behavior

ActorConfiguration.from_blob() should tolerate a missing provider field for v3 TOOL actors (detected by is_v3_yaml()) and proceed with an empty/sentinel provider value, allowing the actor to be registered successfully.

Acceptance criteria

  • ActorConfiguration.from_blob() accepts v3 TOOL actors without provider field
  • The CLI (agents actor add) successfully registers a v3 TOOL actor YAML without provider
  • Existing tests for v2 actors and LLM/GRAPH actors requiring provider remain green
  • New BDD scenario covers CLI-level registration of a TOOL actor without provider

Subtasks

  • Identify exact rejection site in ActorConfiguration.from_blob()
  • Gate provider requirement on is_v3_yaml() and actor type
  • Update registry.py:add() empty-string provider handling for v3 TOOL
  • Add CLI-level BDD scenario for TOOL actor without provider (currently deferred)
  • Verify coverage >= 97% via nox -s coverage_report
  • Run nox (all default sessions), fix any errors

Definition of Done

This issue is complete when:

  • All subtasks above are completed and checked off.
  • A Git commit is created where the first line matches the Commit Message in Metadata exactly.
  • The commit is pushed to the branch matching the Branch in Metadata exactly.
  • The commit is submitted as a PR to master, reviewed, and merged.
## Metadata - **Commit Message:** `fix(actor): tolerate missing provider in from_blob for v3 TOOL actors` - **Branch:** `bugfix/m8-v3-tool-actor-no-provider-from-blob` ## Background and context v3 TOOL actors do not require a `provider` field per `ActorConfigSchema` — the schema validates and accepts TOOL actors without provider. However, the legacy v2 canonicalization layer (`ActorConfiguration.from_blob()`) requires a provider field and rejects TOOL actors that omit it. This means a user who registers a v3 TOOL actor without a provider via `agents actor add --config` will see a confusing rejection from the legacy layer after schema validation passes. ## Current behavior A v3 TOOL actor YAML without `provider` passes `ActorConfigSchema.model_validate()` but is subsequently rejected by `ActorConfiguration.from_blob()` in both `actor.py` and `registry.py` with an error about missing provider/model. ## Expected behavior `ActorConfiguration.from_blob()` should tolerate a missing `provider` field for v3 TOOL actors (detected by `is_v3_yaml()`) and proceed with an empty/sentinel provider value, allowing the actor to be registered successfully. ## Acceptance criteria - [ ] `ActorConfiguration.from_blob()` accepts v3 TOOL actors without `provider` field - [ ] The CLI (`agents actor add`) successfully registers a v3 TOOL actor YAML without `provider` - [ ] Existing tests for v2 actors and LLM/GRAPH actors requiring provider remain green - [ ] New BDD scenario covers CLI-level registration of a TOOL actor without provider ## Subtasks - [ ] Identify exact rejection site in `ActorConfiguration.from_blob()` - [ ] Gate provider requirement on `is_v3_yaml()` and actor type - [ ] Update `registry.py:add()` empty-string provider handling for v3 TOOL - [ ] Add CLI-level BDD scenario for TOOL actor without provider (currently deferred) - [ ] Verify coverage >= 97% via `nox -s coverage_report` - [ ] Run `nox` (all default sessions), fix any errors ## Definition of Done This issue is complete when: - All subtasks above are completed and checked off. - A Git commit is created where the first line matches the Commit Message in Metadata exactly. - The commit is pushed to the branch matching the Branch in Metadata exactly. - The commit is submitted as a PR to master, reviewed, and merged.
Owner

@hurui200320 — Thank you for filing issue #9971.

This is a clear and well-structured bug report. The root cause is correctly identified: the legacy v2 canonicalization layer in ActorConfiguration.from_blob() enforces a provider requirement that is not present in the v3 schema for TOOL actors. This creates a confusing user experience where schema validation passes but registration fails.

Triage Assessment

  • Type: Bug
  • Severity: High — affects user-facing CLI behavior (agents actor add) for v3 TOOL actors
  • Milestone: v3.2.0 (actor/CLI functionality)
  • MoSCoW: Must Have — core actor registration must work correctly for all supported actor types

Next Steps

The autonomous agent system will:

  1. Apply labels: Type/Bug, Priority/High, MoSCoW/Must have, State/Open
  2. Assign milestone: v3.2.0
  3. Queue for implementation

The fix should gate the provider requirement on is_v3_yaml() and actor type in ActorConfiguration.from_blob(), with corresponding updates to registry.py and a new BDD scenario for CLI-level TOOL actor registration without provider.

If you are planning to implement this fix yourself (as suggested by the branch name bugfix/m8-v3-tool-actor-no-provider-from-blob), please proceed and submit a PR when ready. The review pool will conduct a code review upon submission.


Automated by CleverAgents Bot
Supervisor: Human Liaison | Agent: human-liaison-pool-supervisor
Worker: [AUTO-HUMAN-3]

@hurui200320 — Thank you for filing issue #9971. This is a clear and well-structured bug report. The root cause is correctly identified: the legacy v2 canonicalization layer in `ActorConfiguration.from_blob()` enforces a provider requirement that is not present in the v3 schema for TOOL actors. This creates a confusing user experience where schema validation passes but registration fails. ## Triage Assessment - **Type**: Bug - **Severity**: High — affects user-facing CLI behavior (`agents actor add`) for v3 TOOL actors - **Milestone**: v3.2.0 (actor/CLI functionality) - **MoSCoW**: Must Have — core actor registration must work correctly for all supported actor types ## Next Steps The autonomous agent system will: 1. Apply labels: `Type/Bug`, `Priority/High`, `MoSCoW/Must have`, `State/Open` 2. Assign milestone: v3.2.0 3. Queue for implementation The fix should gate the provider requirement on `is_v3_yaml()` and actor type in `ActorConfiguration.from_blob()`, with corresponding updates to `registry.py` and a new BDD scenario for CLI-level TOOL actor registration without provider. If you are planning to implement this fix yourself (as suggested by the branch name `bugfix/m8-v3-tool-actor-no-provider-from-blob`), please proceed and submit a PR when ready. The review pool will conduct a code review upon submission. --- **Automated by CleverAgents Bot** Supervisor: Human Liaison | Agent: human-liaison-pool-supervisor Worker: [AUTO-HUMAN-3]
HAL9000 added this to the v3.2.0 milestone 2026-04-16 10:05:06 +00:00
HAL9000 modified the milestone from v3.2.0 to v3.4.0 2026-04-16 11:49:48 +00:00
Owner

Triage Decision

Status: Verified
Type: Bug
MoSCoW: Must Have
Priority: High
Milestone: v3.4.0
Points: 2

Rationale: The ActorConfiguration.from_blob() rejection of valid v3 TOOL actors creates a confusing user experience where schema validation passes but the legacy layer rejects the actor — this is a Must Have fix for v3.4.0 actor registration correctness.


Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: [AUTO-OWNR-3]

## Triage Decision Status: Verified Type: Bug MoSCoW: Must Have Priority: High Milestone: v3.4.0 Points: 2 Rationale: The ActorConfiguration.from_blob() rejection of valid v3 TOOL actors creates a confusing user experience where schema validation passes but the legacy layer rejects the actor — this is a Must Have fix for v3.4.0 actor registration correctness. --- Automated by CleverAgents Bot Supervisor: Project Owner | Agent: [AUTO-OWNR-3]
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#9971
No description provided.