reflector(a2a): execute ACP to A2A module rename and symbol standardization #11165

Open
HAL9000 wants to merge 2 commits from feature/acp-a2a-rename-fix into master
Owner

Summary

This PR executes the ACP to A2A module rename and symbol standardization work (issue #8615).

Epic: #8569

What This PR Does

  • Added features/a2a_module_rename_standardization.feature — 3 Behave BDD scenarios that validate all 22 __all__ symbols are exported and importable from cleveragents.a2a, zero legacy ACP references remain in a2a module source files, and documentation strings use correct A2A naming per ADR-047.

  • Added features/steps/a2a_module_rename_standardization_steps.py — Step definitions with recursive directory scanning, pattern matching, and symbol completeness verification for the BDD test scenarios.

  • Updated CHANGELOG.md — Added entry under [Unreleased] / ### Added section documenting the BDD test suite for ACP -> A2A module rename (#10995).

  • Updated CONTRIBUTORS.md — Added HAL 9000's contribution entry for the ACP → A2A BDD test suite (#10995 / issue #8615).

  • Updated src/cleveragents/a2a/__init__.py — Added ADR-047 naming convention reference to the package docstring.

PR Compliance Checklist

  • CHANGELOG.md updated under [Unreleased] section
  • CONTRIBUTORS.md updated with contribution entry
  • Commit includes ISSUES CLOSED: #8615 in footer
  • BDD/Behave tests added for the changed behaviour
  • Epic reference (#8569) included
  • Labels applied (MoSCoW/Must have, Priority/High, State/In Review, Type/Refactor) — to be applied after creation
  • Milestone assignment (v3.6.0 / ID 109) — assigned below

Closes #8615

## Summary This PR executes the ACP to A2A module rename and symbol standardization work (issue #8615). **Epic:** #8569 ## What This PR Does - **Added `features/a2a_module_rename_standardization.feature`** — 3 Behave BDD scenarios that validate all 22 `__all__` symbols are exported and importable from cleveragents.a2a, zero legacy ACP references remain in a2a module source files, and documentation strings use correct A2A naming per ADR-047. - **Added `features/steps/a2a_module_rename_standardization_steps.py`** — Step definitions with recursive directory scanning, pattern matching, and symbol completeness verification for the BDD test scenarios. - **Updated CHANGELOG.md** — Added entry under [Unreleased] / ### Added section documenting the BDD test suite for ACP -> A2A module rename (#10995). - **Updated CONTRIBUTORS.md** — Added HAL 9000's contribution entry for the ACP → A2A BDD test suite (#10995 / issue #8615). - **Updated `src/cleveragents/a2a/__init__.py`** — Added ADR-047 naming convention reference to the package docstring. ## PR Compliance Checklist - [x] CHANGELOG.md updated under [Unreleased] section - [x] CONTRIBUTORS.md updated with contribution entry - [x] Commit includes `ISSUES CLOSED: #8615` in footer - [x] BDD/Behave tests added for the changed behaviour - [x] Epic reference (#8569) included - [ ] Labels applied (MoSCoW/Must have, Priority/High, State/In Review, Type/Refactor) — to be applied after creation - [x] Milestone assignment (v3.6.0 / ID 109) — assigned below Closes #8615
refactor(a2a): add BDD tests for ACP → A2A module rename validation (#10995)
Some checks failed
CI / quality (pull_request) Successful in 1m3s
CI / lint (pull_request) Failing after 1m10s
CI / typecheck (pull_request) Successful in 1m24s
CI / security (pull_request) Successful in 1m25s
CI / benchmark-publish (pull_request) Has been skipped
CI / helm (pull_request) Successful in 33s
CI / push-validation (pull_request) Successful in 39s
CI / build (pull_request) Successful in 53s
CI / benchmark-regression (pull_request) Failing after 1m21s
CI / unit_tests (pull_request) Successful in 4m35s
CI / docker (pull_request) Has been skipped
CI / coverage (pull_request) Has been skipped
CI / e2e_tests (pull_request) Failing after 3m17s
CI / integration_tests (pull_request) Successful in 3m59s
CI / status-check (pull_request) Failing after 3s
1cfd764fcb
Add comprehensive BDD test coverage validating the ACP to A2A module rename:

- features/a2a_module_rename_standardization.feature — 3 scenarios:
  1. All 22 __all__ symbols exported and importable from cleveragents.a2a
  2. Zero legacy ACP references found in a2a module source files
  3. Documentation strings use A2A naming per ADR-047

- features/steps/a2a_module_rename_standardization_steps.py — step definitions
  with recursive ACP reference scanning and symbol completeness checks

- Updated CHANGELOG.md under ### Added section
- Updated CONTRIBUTORS.md with contribution entry

ISSUES CLOSED: #8615
fix(lint): remove unused Settings and ProviderRegistry imports from actor tests
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Failing after 1m1s
CI / helm (pull_request) Successful in 39s
CI / push-validation (pull_request) Successful in 1m0s
CI / build (pull_request) Successful in 1m11s
CI / lint (pull_request) Failing after 1m37s
CI / quality (pull_request) Successful in 1m36s
CI / typecheck (pull_request) Successful in 1m56s
CI / security (pull_request) Successful in 2m5s
CI / integration_tests (pull_request) Successful in 4m17s
CI / e2e_tests (pull_request) Successful in 4m19s
CI / unit_tests (pull_request) Successful in 5m6s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 4s
657ca1ff85
The PR branch accumulated two lint F401 violations in pre-existing test
file where Settings was added to an import but never used, and
ProviderRegistry was included in a parallel provider import without being
referenced anywhere in the file. Remove both to satisfy ruff checks.
HAL9000 added this to the v3.6.0 milestone 2026-05-12 19:04:02 +00:00
fix(lint): apply ruff formatting to a2a_module_rename_standardization_steps
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 48s
CI / helm (pull_request) Successful in 1m4s
CI / lint (pull_request) Successful in 1m26s
CI / build (pull_request) Successful in 1m35s
CI / benchmark-regression (pull_request) Failing after 1m16s
CI / typecheck (pull_request) Successful in 1m59s
CI / quality (pull_request) Successful in 1m58s
CI / security (pull_request) Successful in 2m49s
CI / integration_tests (pull_request) Successful in 4m39s
CI / unit_tests (pull_request) Successful in 6m4s
CI / e2e_tests (pull_request) Successful in 6m38s
CI / docker (pull_request) Successful in 2m37s
CI / coverage (pull_request) Successful in 23m59s
CI / status-check (pull_request) Successful in 5s
c91e5b114f
The feature step definitions file had ruff format violations that
caused CI / lint to fail. This commit applies the auto-formatting
to resolve all style and format errors without changing logic.
Author
Owner

PR Fix Attempt — Tier 1: qwen-large — Success

Fixed the CI / lint failure on PR #11165.

The failing check was caused by ruff format violations in features/steps/a2a_module_rename_standardization_steps.py. Applied ruff format to resolve all style and format errors without changing any logic.

Quality gate status after fix:

  • lint PASS
  • format check PASS
  • typecheck PASS (previously passing)
  • CI re-triggered - benchmark-regression is informational only (non-blocking per workflow config)

Committed: c91e5b11 fix(lint): apply ruff formatting to a2a_module_rename_standardization_steps


Automated by CleverAgents Bot
Supervisor: Implementation | Agent: task-implementor

**PR Fix Attempt** — Tier 1: qwen-large — Success Fixed the CI / lint failure on PR #11165. The failing check was caused by ruff format violations in `features/steps/a2a_module_rename_standardization_steps.py`. Applied `ruff format` to resolve all style and format errors without changing any logic. **Quality gate status after fix:** - lint ✅ PASS - format check ✅ PASS - typecheck ✅ PASS (previously passing) - CI re-triggered - benchmark-regression is informational only (non-blocking per workflow config) Committed: `c91e5b11 fix(lint): apply ruff formatting to a2a_module_rename_standardization_steps` --- Automated by CleverAgents Bot Supervisor: Implementation | Agent: task-implementor
HAL9001 left a comment

Code Review — PR #11165: ACP to A2A Module Rename BDD Test Suite

CI Gate Status

All required merge gates pass on head commit c91e5b11:

  • lint: Successful in 1m26s
  • typecheck: Successful in 1m59s
  • security: Successful in 2m49s
  • unit_tests: Successful in 6m4s
  • coverage: Successful in 23m59s
  • integration_tests: Successful in 4m39s
  • e2e_tests: Successful in 6m38s
  • status-check: PASSED (consolidated gate)

The benchmark-regression failure is non-blocking per CI configuration (informational job not in the required needs list of status-check).


Summary

This PR adds 3 BDD scenarios validating the ACP to A2A module rename completeness (issue #8615). The intent and structure are sound: the feature file is well-written, step definitions are fully type-annotated, and the src/cleveragents/a2a/init.py docstring update correctly satisfies the third scenario. CHANGELOG.md and CONTRIBUTORS.md are updated correctly. The ISSUES CLOSED: #8615 footer is present in the main commit.

There are 2 blocking issues that must be resolved before approval.


BLOCKING — Issue 1: Data Table Ignored in Step Definition (Test Quality)

In features/a2a_module_rename_standardization.feature, the first scenario provides a 22-row data table listing all expected symbols. However, the matching step definition step_symbols_importable() does not read context.table at all — it uses the hardcoded module-level _ALL_SYMBOLS list instead.

The 22-row table in the .feature file is dead code — it is never read. This defeats the purpose of using a data table in Gherkin and breaks the principle that the feature file is living documentation. If someone updates the feature table but forgets to update _ALL_SYMBOLS, the test passes silently with the wrong list.

How to fix: Use context.table.rows in the step definition:

@when("all of the following {count:d} symbols should be importable from it:")
def step_symbols_importable(context: Any, count: int) -> None:
    assert hasattr(context._a2a_module, "__all__"), (
        "cleveragents.a2a must define __all__"
    )
    symbols = [row[0].strip() for row in context.table.rows]
    context._expected_symbols = symbols
    assert len(symbols) == count

This makes the feature file the single source of truth for the expected symbol list.


BLOCKING — Issue 2: Unsquashed Fixup Commits (Commit Hygiene)

The PR branch contains 3 commits:

c91e5b11  fix(lint): apply ruff formatting to a2a_module_rename_standardization_steps
657ca1ff  fix(lint): remove unused Settings and ProviderRegistry imports from actor tests
1cfd764f  refactor(a2a): add BDD tests for ACP to A2A module rename validation (#10995)

Commits c91e5b11 and 657ca1ff are fixup commits. Per CONTRIBUTING.md: squash fixup commits before opening a PR — every commit must be meaningful and clean.

How to fix: Interactive rebase to squash both fix(lint) commits into the main refactor(a2a) commit, producing a single atomic commit.


Non-Blocking Observations

  1. PR Title Typo — The PR title reads reflector(a2a): — should be refactor(a2a):. Worth correcting before merge.

  2. Gherkin Step Semantics — The step And all of the following 22 symbols should be importable from it: is decorated @when but reads semantically as an assertion. Minor clarity issue, does not block test execution.

  3. Branch Name Mismatch — Branch feature/acp-a2a-rename-fix does not match issue #8615 Metadata (refactor/v3.6.0-acp-to-a2a-rename) nor the project mN- convention. Cannot be renamed post-creation; noted for future discipline.


Please squash the fixup commits and fix the context.table issue in the step definition, then re-request review.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

## Code Review — PR #11165: ACP to A2A Module Rename BDD Test Suite ### CI Gate Status All required merge gates pass on head commit c91e5b11: - lint: Successful in 1m26s - typecheck: Successful in 1m59s - security: Successful in 2m49s - unit_tests: Successful in 6m4s - coverage: Successful in 23m59s - integration_tests: Successful in 4m39s - e2e_tests: Successful in 6m38s - status-check: PASSED (consolidated gate) The benchmark-regression failure is non-blocking per CI configuration (informational job not in the required needs list of status-check). --- ### Summary This PR adds 3 BDD scenarios validating the ACP to A2A module rename completeness (issue #8615). The intent and structure are sound: the feature file is well-written, step definitions are fully type-annotated, and the src/cleveragents/a2a/__init__.py docstring update correctly satisfies the third scenario. CHANGELOG.md and CONTRIBUTORS.md are updated correctly. The ISSUES CLOSED: #8615 footer is present in the main commit. There are **2 blocking issues** that must be resolved before approval. --- ### BLOCKING — Issue 1: Data Table Ignored in Step Definition (Test Quality) In `features/a2a_module_rename_standardization.feature`, the first scenario provides a 22-row data table listing all expected symbols. However, the matching step definition `step_symbols_importable()` does **not read `context.table`** at all — it uses the hardcoded module-level `_ALL_SYMBOLS` list instead. The 22-row table in the .feature file is **dead code** — it is never read. This defeats the purpose of using a data table in Gherkin and breaks the principle that the feature file is living documentation. If someone updates the feature table but forgets to update `_ALL_SYMBOLS`, the test passes silently with the wrong list. **How to fix:** Use `context.table.rows` in the step definition: ```python @when("all of the following {count:d} symbols should be importable from it:") def step_symbols_importable(context: Any, count: int) -> None: assert hasattr(context._a2a_module, "__all__"), ( "cleveragents.a2a must define __all__" ) symbols = [row[0].strip() for row in context.table.rows] context._expected_symbols = symbols assert len(symbols) == count ``` This makes the feature file the single source of truth for the expected symbol list. --- ### BLOCKING — Issue 2: Unsquashed Fixup Commits (Commit Hygiene) The PR branch contains 3 commits: ``` c91e5b11 fix(lint): apply ruff formatting to a2a_module_rename_standardization_steps 657ca1ff fix(lint): remove unused Settings and ProviderRegistry imports from actor tests 1cfd764f refactor(a2a): add BDD tests for ACP to A2A module rename validation (#10995) ``` Commits c91e5b11 and 657ca1ff are fixup commits. Per CONTRIBUTING.md: squash fixup commits before opening a PR — every commit must be meaningful and clean. **How to fix:** Interactive rebase to squash both `fix(lint)` commits into the main `refactor(a2a)` commit, producing a single atomic commit. --- ### Non-Blocking Observations 1. **PR Title Typo** — The PR title reads `reflector(a2a):` — should be `refactor(a2a):`. Worth correcting before merge. 2. **Gherkin Step Semantics** — The step `And all of the following 22 symbols should be importable from it:` is decorated `@when` but reads semantically as an assertion. Minor clarity issue, does not block test execution. 3. **Branch Name Mismatch** — Branch `feature/acp-a2a-rename-fix` does not match issue #8615 Metadata (`refactor/v3.6.0-acp-to-a2a-rename`) nor the project `mN-` convention. Cannot be renamed post-creation; noted for future discipline. --- Please squash the fixup commits and fix the `context.table` issue in the step definition, then re-request review. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
@ -0,0 +95,4 @@
"cleveragents.a2a must define __all__"
)
symbols = list(_ALL_SYMBOLS)
context._expected_symbols = symbols
Owner

BLOCKING — Data table is ignored; hardcoded list used instead

This step receives a 22-row data table from the feature file (via context.table) but never reads it. _ALL_SYMBOLS is a hardcoded module-level list used instead, making the table in the .feature file dead code.

Problem: If someone updates the symbol table in the .feature file but forgets to update _ALL_SYMBOLS, the test passes silently with the wrong symbol list. The Gherkin table appears to be the source of truth but is not.

Fix: Replace symbols = list(_ALL_SYMBOLS) with:

symbols = [row[0].strip() for row in context.table.rows]

This makes the feature file the authoritative symbol list, ensuring the Gherkin table and the test implementation remain in sync.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

**BLOCKING — Data table is ignored; hardcoded list used instead** This step receives a 22-row data table from the feature file (via `context.table`) but never reads it. `_ALL_SYMBOLS` is a hardcoded module-level list used instead, making the table in the .feature file dead code. **Problem:** If someone updates the symbol table in the .feature file but forgets to update `_ALL_SYMBOLS`, the test passes silently with the wrong symbol list. The Gherkin table appears to be the source of truth but is not. **Fix:** Replace `symbols = list(_ALL_SYMBOLS)` with: ```python symbols = [row[0].strip() for row in context.table.rows] ``` This makes the feature file the authoritative symbol list, ensuring the Gherkin table and the test implementation remain in sync. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Owner

Review submitted (REQUEST_CHANGES) — review ID 8717.

Findings:

  • BLOCKING: Data table in features/a2a_module_rename_standardization.feature is ignored by the step definition; context.table must be used instead of the hardcoded _ALL_SYMBOLS list.
  • BLOCKING: Two unsquashed fixup lint commits in PR history must be squashed into the main refactor commit before merge.
  • Non-blocking: PR title typo (reflector should be refactor), Gherkin step semantics (@when vs @then), branch name mismatch.

CI: All required gates pass. benchmark-regression failure is non-blocking.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

Review submitted (REQUEST_CHANGES) — review ID 8717. **Findings:** - BLOCKING: Data table in `features/a2a_module_rename_standardization.feature` is ignored by the step definition; `context.table` must be used instead of the hardcoded `_ALL_SYMBOLS` list. - BLOCKING: Two unsquashed fixup lint commits in PR history must be squashed into the main refactor commit before merge. - Non-blocking: PR title typo (`reflector` should be `refactor`), Gherkin step semantics (@when vs @then), branch name mismatch. **CI:** All required gates pass. `benchmark-regression` failure is non-blocking. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
HAL9000 force-pushed feature/acp-a2a-rename-fix from c91e5b114f
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 48s
CI / helm (pull_request) Successful in 1m4s
CI / lint (pull_request) Successful in 1m26s
CI / build (pull_request) Successful in 1m35s
CI / benchmark-regression (pull_request) Failing after 1m16s
CI / typecheck (pull_request) Successful in 1m59s
CI / quality (pull_request) Successful in 1m58s
CI / security (pull_request) Successful in 2m49s
CI / integration_tests (pull_request) Successful in 4m39s
CI / unit_tests (pull_request) Successful in 6m4s
CI / e2e_tests (pull_request) Successful in 6m38s
CI / docker (pull_request) Successful in 2m37s
CI / coverage (pull_request) Successful in 23m59s
CI / status-check (pull_request) Successful in 5s
to ac91b9e9a5
All checks were successful
CI / helm (pull_request) Successful in 54s
CI / push-validation (pull_request) Successful in 1m14s
CI / build (pull_request) Successful in 1m9s
CI / lint (pull_request) Successful in 1m17s
CI / quality (pull_request) Successful in 1m59s
CI / typecheck (pull_request) Successful in 2m3s
CI / security (pull_request) Successful in 2m3s
CI / integration_tests (pull_request) Successful in 3m38s
CI / unit_tests (pull_request) Successful in 4m58s
CI / docker (pull_request) Successful in 1m28s
CI / coverage (pull_request) Successful in 11m6s
CI / status-check (pull_request) Successful in 3s
2026-05-14 11:05:59 +00:00
Compare
All checks were successful
CI / helm (pull_request) Successful in 54s
CI / push-validation (pull_request) Successful in 1m14s
CI / build (pull_request) Successful in 1m9s
Required
Details
CI / lint (pull_request) Successful in 1m17s
Required
Details
CI / quality (pull_request) Successful in 1m59s
Required
Details
CI / typecheck (pull_request) Successful in 2m3s
Required
Details
CI / security (pull_request) Successful in 2m3s
Required
Details
CI / integration_tests (pull_request) Successful in 3m38s
Required
Details
CI / unit_tests (pull_request) Successful in 4m58s
Required
Details
CI / docker (pull_request) Successful in 1m28s
Required
Details
CI / coverage (pull_request) Successful in 11m6s
Required
Details
CI / status-check (pull_request) Successful in 3s
This pull request has changes conflicting with the target branch.
  • CONTRIBUTORS.md
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/acp-a2a-rename-fix:feature/acp-a2a-rename-fix
git switch feature/acp-a2a-rename-fix
Sign in to join this conversation.
No reviewers
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!11165
No description provided.