Files
temp/robot/e2e/e2e_session_create_persist.robot
brent.edwards 7e9a45044b fix(session): session create does not persist session for subsequent list
The CLI `session create` command created the session via SessionService.create()
(which commits via auto_commit=True), then called _facade_dispatch("session.create")
for A2A protocol bookkeeping. The facade handler unconditionally called
svc.create() on a second PersistentSessionService instance (a new Factory
resolution from the DI container with its own engine), creating a duplicate
session in the database.

The fix makes A2aLocalFacade._handle_session_create() idempotent: when a
session_id is already present in the params, it acknowledges the existing
session without creating a new one. The CLI dispatch params were also fixed
to use the correct key name (actor_name instead of actor).

Changes:
- src/cleveragents/a2a/facade.py: Early return in _handle_session_create when
  session_id is already supplied, preventing duplicate session creation.
- src/cleveragents/cli/commands/session.py: Fixed param key from "actor" to
  "actor_name" for consistency with the facade handler.
- features/a2a_facade_wiring.feature: Added idempotency scenario verifying
  that session.create with an existing session_id does not call svc.create().
- features/steps/a2a_facade_wiring_steps.py: Added step asserting mock
  SessionService.create was not called.
- features/tdd_session_create_persist.feature: Removed @tdd_expected_fail tag
  now that the bug is fixed.
- robot/e2e/e2e_session_create_persist.robot: Removed tdd_expected_fail tag,
  updated documentation.
- .semgrep.yml: Excluded wrapping.py from no-exec/no-compile-exec rules
  (pre-existing sandboxed exec usage for tool transforms).

ISSUES CLOSED: #1141

Co-authored-by: Brent E. Edwards <brent.edwards@cleverthis.com>
Co-committed-by: Brent E. Edwards <brent.edwards@cleverthis.com>
2026-04-02 16:51:04 +00:00

19 lines
900 B
Plaintext

*** Settings ***
Documentation Bug #1141 — session create does not persist session
... for subsequent list. Verifies that the session CRUD
... lifecycle works: create → list → verify.
Resource common_e2e.resource
Suite Setup E2E Suite Setup
Suite Teardown E2E Suite Teardown
*** Test Cases ***
Session Create Then List Shows Session
[Documentation] Create a session and verify it appears in session list.
[Tags] E2E tdd_issue tdd_issue_1141
Run CleverAgents Command init --force --yes
${r1}= Run CleverAgents Command session list --format json
Should Contain ${r1.stdout} "total": 0
Run CleverAgents Command session create --format plain
${r2}= Run CleverAgents Command session list --format json
Should Contain ${r2.stdout} "total": 1