UAT: A2aLocalFacade missing registry show, add, update, remove extension methods — only list is implemented for each entity type #2384

Closed
opened 2026-04-03 17:27:42 +00:00 by freemo · 1 comment
Owner

Metadata

  • Branch: fix/a2a-facade-registry-crud-extension-methods
  • Commit Message: fix(a2a): implement missing registry show, add, update, remove extension methods in A2aLocalFacade
  • Milestone: v3.4.0
  • Parent Epic: #933

Bug Report

Feature Area: API Endpoints / A2A Protocol

What was tested

The _cleveragents/registry/{entity}/* A2A extension methods in A2aLocalFacade (src/cleveragents/a2a/facade.py).

Expected behavior (from spec)

Per docs/specification.md (line 23460 and lines 43279-43283), the spec defines the following registry extension method pattern for each entity type (actor, skill, tool, validation, resource, resource_type, project, action, automation_profile, invariant, lsp):

_cleveragents/registry/{entity}/list    → {Entity}Service.list()
_cleveragents/registry/{entity}/show    → {Entity}Service.show()
_cleveragents/registry/{entity}/add     → {Entity}Service.add()
_cleveragents/registry/{entity}/update  → {Entity}Service.update()
_cleveragents/registry/{entity}/remove  → {Entity}Service.remove()

The spec states: "Every CLI command maps to either a standard A2A operation or a _cleveragents/ extension method." This means all CRUD operations for all entity types must be routable through the A2A facade.

Actual behavior (from code analysis)

In src/cleveragents/a2a/facade.py, only list operations are registered in _EXTENSION_OPERATIONS and the handler map:

# Only these are registered:
"_cleveragents/registry/tool/list"
"_cleveragents/registry/resource/list"
"_cleveragents/registry/actor/list"
"_cleveragents/registry/skill/list"
"_cleveragents/registry/action/list"
"_cleveragents/registry/project/list"

The following operations are completely absent from both _EXTENSION_OPERATIONS and the handler map:

  • _cleveragents/registry/{entity}/show (for all entity types)
  • _cleveragents/registry/{entity}/add (for all entity types)
  • _cleveragents/registry/{entity}/update (for all entity types)
  • _cleveragents/registry/{entity}/remove (for all entity types)

Additionally, list operations for validation, resource_type, automation_profile, invariant, and lsp entity types are also missing.

Dispatching any of these missing methods returns A2aOperationNotFoundError (which maps to an error response), breaking the spec requirement that "every CLI command maps to an A2A operation."

Steps to reproduce

from cleveragents.a2a.facade import A2aLocalFacade
from cleveragents.a2a.models import A2aRequest

facade = A2aLocalFacade()
# This raises A2aOperationNotFoundError:
response = facade.dispatch(A2aRequest(method="_cleveragents/registry/actor/show", params={"name": "test"}))

Code location

  • src/cleveragents/a2a/facade.py_EXTENSION_OPERATIONS list (lines 62-87) and _handlers() method (lines 230-295)

Severity

High — The A2A facade is the sole communication protocol boundary. Missing CRUD operations mean CLI commands for actor show, skill show, tool show, resource show, action show, automation-profile show, invariant list, lsp show, etc. cannot be routed through A2A as the spec requires.

Subtasks

  • Audit _EXTENSION_OPERATIONS in facade.py against the full entity type list from the spec (actor, skill, tool, validation, resource, resource_type, project, action, automation_profile, invariant, lsp)
  • Add missing show handler entries to _EXTENSION_OPERATIONS and _handlers() for all entity types
  • Add missing add handler entries to _EXTENSION_OPERATIONS and _handlers() for all entity types
  • Add missing update handler entries to _EXTENSION_OPERATIONS and _handlers() for all entity types
  • Add missing remove handler entries to _EXTENSION_OPERATIONS and _handlers() for all entity types
  • Add missing list handler entries for validation, resource_type, automation_profile, invariant, and lsp entity types
  • Wire each new handler to the corresponding {Entity}Service method (show(), add(), update(), remove())
  • Tests (Behave): Add scenarios for each new _cleveragents/registry/{entity}/{operation} extension method
  • Tests (Robot): Add integration tests verifying all CRUD operations are routable through A2aLocalFacade
  • 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.
  • All 11 entity types (actor, skill, tool, validation, resource, resource_type, project, action, automation_profile, invariant, lsp) have all 5 CRUD operations (list, show, add, update, remove) registered in _EXTENSION_OPERATIONS and _handlers() in A2aLocalFacade.
  • A2aOperationNotFoundError is no longer raised for any spec-defined registry extension method.
  • A Git commit is created where the first line of the commit message matches the Commit Message in Metadata exactly, followed by a blank line, then additional lines providing relevant details about the implementation.
  • The commit is pushed to the remote on the branch matching the Branch in Metadata exactly.
  • The commit is submitted as a pull request to master, reviewed, and merged before this issue is marked done.
  • All nox stages pass
  • Coverage >= 97%

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: ca-new-issue-creator

## Metadata - **Branch**: `fix/a2a-facade-registry-crud-extension-methods` - **Commit Message**: `fix(a2a): implement missing registry show, add, update, remove extension methods in A2aLocalFacade` - **Milestone**: v3.4.0 - **Parent Epic**: #933 ## Bug Report **Feature Area**: API Endpoints / A2A Protocol ### What was tested The `_cleveragents/registry/{entity}/*` A2A extension methods in `A2aLocalFacade` (`src/cleveragents/a2a/facade.py`). ### Expected behavior (from spec) Per `docs/specification.md` (line 23460 and lines 43279-43283), the spec defines the following registry extension method pattern for **each entity type** (actor, skill, tool, validation, resource, resource_type, project, action, automation_profile, invariant, lsp): ``` _cleveragents/registry/{entity}/list → {Entity}Service.list() _cleveragents/registry/{entity}/show → {Entity}Service.show() _cleveragents/registry/{entity}/add → {Entity}Service.add() _cleveragents/registry/{entity}/update → {Entity}Service.update() _cleveragents/registry/{entity}/remove → {Entity}Service.remove() ``` The spec states: "Every CLI command maps to either a standard A2A operation or a `_cleveragents/` extension method." This means all CRUD operations for all entity types must be routable through the A2A facade. ### Actual behavior (from code analysis) In `src/cleveragents/a2a/facade.py`, only `list` operations are registered in `_EXTENSION_OPERATIONS` and the handler map: ```python # Only these are registered: "_cleveragents/registry/tool/list" "_cleveragents/registry/resource/list" "_cleveragents/registry/actor/list" "_cleveragents/registry/skill/list" "_cleveragents/registry/action/list" "_cleveragents/registry/project/list" ``` The following operations are **completely absent** from both `_EXTENSION_OPERATIONS` and the handler map: - `_cleveragents/registry/{entity}/show` (for all entity types) - `_cleveragents/registry/{entity}/add` (for all entity types) - `_cleveragents/registry/{entity}/update` (for all entity types) - `_cleveragents/registry/{entity}/remove` (for all entity types) Additionally, `list` operations for `validation`, `resource_type`, `automation_profile`, `invariant`, and `lsp` entity types are also missing. Dispatching any of these missing methods returns `A2aOperationNotFoundError` (which maps to an error response), breaking the spec requirement that "every CLI command maps to an A2A operation." ### Steps to reproduce ```python from cleveragents.a2a.facade import A2aLocalFacade from cleveragents.a2a.models import A2aRequest facade = A2aLocalFacade() # This raises A2aOperationNotFoundError: response = facade.dispatch(A2aRequest(method="_cleveragents/registry/actor/show", params={"name": "test"})) ``` ### Code location - `src/cleveragents/a2a/facade.py` — `_EXTENSION_OPERATIONS` list (lines 62-87) and `_handlers()` method (lines 230-295) ### Severity **High** — The A2A facade is the sole communication protocol boundary. Missing CRUD operations mean CLI commands for `actor show`, `skill show`, `tool show`, `resource show`, `action show`, `automation-profile show`, `invariant list`, `lsp show`, etc. cannot be routed through A2A as the spec requires. ## Subtasks - [ ] Audit `_EXTENSION_OPERATIONS` in `facade.py` against the full entity type list from the spec (actor, skill, tool, validation, resource, resource_type, project, action, automation_profile, invariant, lsp) - [ ] Add missing `show` handler entries to `_EXTENSION_OPERATIONS` and `_handlers()` for all entity types - [ ] Add missing `add` handler entries to `_EXTENSION_OPERATIONS` and `_handlers()` for all entity types - [ ] Add missing `update` handler entries to `_EXTENSION_OPERATIONS` and `_handlers()` for all entity types - [ ] Add missing `remove` handler entries to `_EXTENSION_OPERATIONS` and `_handlers()` for all entity types - [ ] Add missing `list` handler entries for `validation`, `resource_type`, `automation_profile`, `invariant`, and `lsp` entity types - [ ] Wire each new handler to the corresponding `{Entity}Service` method (`show()`, `add()`, `update()`, `remove()`) - [ ] Tests (Behave): Add scenarios for each new `_cleveragents/registry/{entity}/{operation}` extension method - [ ] Tests (Robot): Add integration tests verifying all CRUD operations are routable through `A2aLocalFacade` - [ ] 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. - All 11 entity types (actor, skill, tool, validation, resource, resource_type, project, action, automation_profile, invariant, lsp) have all 5 CRUD operations (`list`, `show`, `add`, `update`, `remove`) registered in `_EXTENSION_OPERATIONS` and `_handlers()` in `A2aLocalFacade`. - `A2aOperationNotFoundError` is no longer raised for any spec-defined registry extension method. - A Git commit is created where the **first line** of the commit message matches the Commit Message in Metadata exactly, followed by a blank line, then additional lines providing relevant details about the implementation. - The commit is pushed to the remote on the branch matching the **Branch** in Metadata exactly. - The commit is submitted as a **pull request** to `master`, reviewed, and **merged** before this issue is marked done. - All nox stages pass - Coverage >= 97% --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: ca-new-issue-creator
freemo added this to the v3.4.0 milestone 2026-04-03 17:27:48 +00:00
Author
Owner

Closing as duplicate of #2146.

This issue ("A2aLocalFacade missing registry show, add, update, remove extension methods") is identical to the already-verified #2146 ("Bug: A2aLocalFacade missing registry CRUD extension methods — spec requires show, add, update, remove for all entity types"). Both describe the same missing CRUD operations in the A2A facade. #2146 is already State/Verified with MoSCoW/Should Have.


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

Closing as duplicate of #2146. This issue ("A2aLocalFacade missing registry show, add, update, remove extension methods") is identical to the already-verified #2146 ("Bug: A2aLocalFacade missing registry CRUD extension methods — spec requires show, add, update, remove for all entity types"). Both describe the same missing CRUD operations in the A2A facade. #2146 is already State/Verified with MoSCoW/Should Have. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
freemo 2026-04-03 17:36:55 +00:00
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.

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