Epic: Post-MVP Server & Clients #399
Labels
No labels
auto/needs-reevaluation
controller-managed
auto/blocked-by-deps
auto/ci-timeout
auto/claimed-implementer
auto/claimed-merge
auto/claimed-reviewer
auto/driver-down
auto/invariant-violation
auto/last-attempt-tier-0
auto/last-attempt-tier-1
auto/last-attempt-tier-2
auto/last-attempt-tier-min
Automation Tracking
auto/needs-conflict-resolution
auto/needs-implementer
auto/postmortem
auto/ready-to-merge
auto/restart-throttled
auto/revert
auto/sentinel
auto/stale-inactivity
auto/unstable
Blocked
Bounty
$100
Bounty
$1000
Bounty
$10000
Bounty
$20
Bounty
$2000
Bounty
$250
Bounty
$50
Bounty
$500
Bounty
$5000
Bounty
$750
MoSCoW
Could have
MoSCoW
Must have
MoSCoW
Should have
Needs Feedback
Points
1
Points
13
Points
2
Points
21
Points
3
Points
34
Points
5
Points
55
Points
8
Points
88
Priority
Backlog
Priority
CI Blocker
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Signed-off: Owner
Signed-off: Scrum Master
Signed-off: Tech Lead
Spike
State
Completed
State
Duplicate
State
In Progress
State
In Review
State
Paused
State
Unverified
State
Verified
State
Wont Do
Type
Automation
Type
Bug
Type
Discussion
Type
Documentation
Type
Epic
Type
Feature
Type
Legendary
Type
Refactor
Type
Support
Type
Task
Type
Testing
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Blocks
Depends on
#378 Legendary: Post-MVP Deferred Work
cleveragents/cleveragents-core
#335 feat(client): add server http client
cleveragents/cleveragents-core
#336 feat(client): add plan sync and remote execution
cleveragents/cleveragents-core
#337 feat(client): add websocket updates
cleveragents/cleveragents-core
#338 feat(client): add remote project support
cleveragents/cleveragents-core
#340 feat(cli): add auth and team commands
cleveragents/cleveragents-core
#341 feat(ui): add TUI/Web interface
cleveragents/cleveragents-core
#878 feat(server): implement PostgreSQL storage backend for server mode
cleveragents/cleveragents-core
#2111 UAT:
MCPToolFilter and MCPTransport not exported from cleveragents.mcp package — public API incomplete
cleveragents/cleveragents-core
#2118 UAT:
docs/api/mcp.md contains 6 incorrect API signatures — MCPToolResult.content, MCPToolAdapter.connect()/invoke() async, McpClientConfig.auto_stop_idle_secs, McpRegistry.register(), MCPRefreshHook(), and register_tools() all wrong
cleveragents/cleveragents-core
#2152 UAT:
MCPToolResult.data typed as dict[str, Any] but MCP protocol returns content as a list — type mismatch causes Pydantic validation error with real MCP servers
cleveragents/cleveragents-core
#2158 UAT:
MCPToolAdapter.invoke() error extraction uses non-standard error key — real MCP 1.4.0 servers return errors in content, causing all error messages to be "unknown error"
cleveragents/cleveragents-core
#2163 UAT:
MCPToolAdapter.discover_tools() and invoke() hold the RLock during network I/O — causes lock contention and potential deadlock under concurrent access
cleveragents/cleveragents-core
#2164 UAT:
server.sync.auto and server.sync.interval config keys are registered but never consumed — no background entity sync scheduler exists
cleveragents/cleveragents-core
#2165 UAT:
agents plan list is missing the --namespace/-n option — spec requires namespace filtering for plan listing
cleveragents/cleveragents-core
#2215 feat(tool): add Forgejo built-in tool to the tool registry
cleveragents/cleveragents-core
#2413 BUG-HUNT: [concurrency] Race condition in
_check_idle can cause premature shutdown
cleveragents/cleveragents-core
#2482 UAT:
_cleveragents/plan/tree A2A handler always returns empty decision tree — DecisionService is never called
cleveragents/cleveragents-core
#2510 UAT:
_cleveragents/plan/diff A2A handler always returns empty changes list — PlanApplyService.diff() is never called
cleveragents/cleveragents-core
#2522 UAT:
_cleveragents/plan/explain A2A handler is a stub — always returns "Not yet implemented" instead of calling DecisionService
cleveragents/cleveragents-core
#2527 Bug:
_cleveragents/plan/correct A2A handler is a stub — always returns "status": "corrected" without calling CorrectionService
cleveragents/cleveragents-core
#2554 Bug:
_cleveragents/plan/list A2A handler ignores all filter parameters — namespace, phase, and project_name never passed to list_plans()
cleveragents/cleveragents-core
#2578 UAT:
_cleveragents/plan/apply A2A handler leaves plan in apply/queued state — never drives plan to terminal applied state
cleveragents/cleveragents-core
#2610 UAT:
_cleveragents/plan/execute A2A handler only transitions plan to execute/queued — never runs Strategize or Execute phases
cleveragents/cleveragents-core
#2743 UAT: MCPToolResult.data type annotation incompatible with MCP 1.4.0 success content format
cleveragents/cleveragents-core
#2744 UAT: MockMCPTransport success response uses non-standard content format, masking MCP 1.4.0 protocol violations
cleveragents/cleveragents-core
#2866 UAT:
Settings class missing server_url, server_token, and format fields — spec-required env vars not captured by pydantic-settings
cleveragents/cleveragents-core
#2914 UAT:
SkillRegistry.validate_plan() and validate_skill() call non-existent get_tool() on ToolRegistry — will raise AttributeError at runtime
cleveragents/cleveragents-core
#2927 UAT:
MCPToolFilter not exported from cleveragents.mcp package __init__.py — breaks plug-and-play tool provider ecosystem
cleveragents/cleveragents-core
#2946 UAT:
MCPToolAdapter.register_tools() infers resource slots but never wires them into domain Tool objects — resource binding for MCP tools is dead code
cleveragents/cleveragents-core
#2955 UAT: Non-
local/ namespace without server prefix does not resolve to default configured server — spec-required behavior not implemented
cleveragents/cleveragents-core
#2967 UAT:
MCPTransport.close() is a silent no-op while connect() and call() raise NotImplementedError — inconsistent abstract interface forces subclasses to silently skip cleanup
cleveragents/cleveragents-core
#2972 UAT:
NamespacedName and ParsedName do not reject server:local/name format — local/ namespace with server prefix should be invalid per spec
cleveragents/cleveragents-core
#3547 UAT:
agents server connect missing --token parameter — cannot set server.token authentication credential via connect command
cleveragents/cleveragents-core
#3548 UAT:
agents server missing start subcommand for background daemon mode — only foreground serve is implemented
cleveragents/cleveragents-core
#3964 UAT:
agents server serve command missing --cors-origins parameter — CORS configuration not exposed via CLI
cleveragents/cleveragents-core
#3968 UAT:
agents server serve command description is misleading — default ASGI app only serves health probes, not A2A protocol
cleveragents/cleveragents-core
#3971 UAT: A2A layer (
src/cleveragents/a2a/) has zero unit tests — critical protocol layer is untested
cleveragents/cleveragents-core
#4080 UAT: CLEVERAGENTS_FORMAT environment variable is registered in config but never read by the CLI (spec violation)
cleveragents/cleveragents-core
#4084 UAT: Multiple yaml.dump calls missing allow_unicode=True causing non-ASCII data to be escaped as \uXXXX sequences
cleveragents/cleveragents-core
#4090 UAT: _CONTROL_CHAR_RE in plain renderer strips valid 8-bit characters (U+0080–U+009F) from non-ASCII user content
cleveragents/cleveragents-core
#4152 [configuration] Configuration values are set in multiple places in Helm chart
cleveragents/cleveragents-core
Reference
cleveragents/cleveragents-core#399
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Background
Covers post-MVP server and client infrastructure: HTTP client, plan sync, websocket updates, remote project support, TUI/Web interface, and auth commands.
Expected Behavior
Post-MVP server and client infrastructure is operational: HTTP client communicates with the server, plan sync keeps local and remote state consistent, websocket updates provide real-time notifications, remote project support enables distributed workflows, and TUI/Web interfaces provide user access.
Child Issues
Definition of Done
This Epic is complete when all child issues are closed and merged.
MCPToolFilterandMCPTransportnot exported fromcleveragents.mcppackage — public API incomplete #2111MCPToolFilterandMCPTransportnot exported fromcleveragents.mcppackage — public API incomplete #2111MCPToolFilterandMCPTransportnot exported fromcleveragents.mcppackage — public API incompletedocs/api/mcp.mdcontains 6 incorrect API signatures —MCPToolResult.content,MCPToolAdapter.connect()/invoke()async,McpClientConfig.auto_stop_idle_secs,McpRegistry.register(),MCPRefreshHook(), andregister_tools()all wrong #2118docs/api/mcp.mdcontains 6 incorrect API signatures —MCPToolResult.content,MCPToolAdapter.connect()/invoke()async,McpClientConfig.auto_stop_idle_secs,McpRegistry.register(),MCPRefreshHook(), andregister_tools()all wrongMCPToolResult.datatyped asdict[str, Any]but MCP protocol returnscontentas a list — type mismatch causes Pydantic validation error with real MCP servers #2152MCPToolResult.datatyped asdict[str, Any]but MCP protocol returnscontentas a list — type mismatch causes Pydantic validation error with real MCP serversMCPToolAdapter.invoke()error extraction uses non-standarderrorkey — real MCP 1.4.0 servers return errors incontent, causing all error messages to be"unknown error"#2158MCPToolAdapter.invoke()error extraction uses non-standarderrorkey — real MCP 1.4.0 servers return errors incontent, causing all error messages to be"unknown error"MCPToolAdapter.invoke()error extraction uses non-standarderrorkey — real MCP 1.4.0 servers return errors incontent, causing all error messages to be"unknown error"#2158MCPToolAdapter.discover_tools()andinvoke()hold the RLock during network I/O — causes lock contention and potential deadlock under concurrent access #2163server.sync.autoandserver.sync.intervalconfig keys are registered but never consumed — no background entity sync scheduler exists #2164MCPToolAdapter.discover_tools()andinvoke()hold the RLock during network I/O — causes lock contention and potential deadlock under concurrent accessserver.sync.autoandserver.sync.intervalconfig keys are registered but never consumed — no background entity sync scheduler existsagents plan listis missing the--namespace/-noption — spec requires namespace filtering for plan listing #2165agents plan listis missing the--namespace/-noption — spec requires namespace filtering for plan listingserver.sync.autoandserver.sync.intervalconfig keys are registered but never consumed — no background entity sync scheduler exists #2164agents plan listis missing the--namespace/-noption — spec requires namespace filtering for plan listing #2165_check_idlecan cause premature shutdown #2413_check_idlecan cause premature shutdown_check_idlecan cause premature shutdown #2413_cleveragents/plan/treeA2A handler always returns empty decision tree —DecisionServiceis never called #2482_cleveragents/plan/treeA2A handler always returns empty decision tree —DecisionServiceis never called_cleveragents/plan/diffA2A handler always returns emptychangeslist —PlanApplyService.diff()is never called #2510_cleveragents/plan/diffA2A handler always returns emptychangeslist —PlanApplyService.diff()is never called_cleveragents/plan/explainA2A handler is a stub — always returns "Not yet implemented" instead of callingDecisionService#2522_cleveragents/plan/explainA2A handler is a stub — always returns "Not yet implemented" instead of callingDecisionService_cleveragents/plan/correctA2A handler is a stub — always returns"status": "corrected"without callingCorrectionService#2527_cleveragents/namespace/*A2A handlers are stubs — namespace operations always return"not_implemented"#2538_cleveragents/plan/correctA2A handler is a stub — always returns"status": "corrected"without callingCorrectionServiceserver.tokenconfig key andCLEVERAGENTS_SERVER_TOKENenv var missing fromSettings— server authentication cannot be configured #2541_cleveragents/plan/listA2A handler ignores all filter parameters —namespace,phase, andproject_namenever passed tolist_plans()#2554_cleveragents/plan/listA2A handler ignores all filter parameters —namespace,phase, andproject_namenever passed tolist_plans()_cleveragents/plan/applyA2A handler leaves plan inapply/queuedstate — never drives plan to terminalappliedstate #2578_cleveragents/plan/applyA2A handler leaves plan inapply/queuedstate — never drives plan to terminalappliedstate_cleveragents/plan/executeA2A handler only transitions plan toexecute/queued— never runs Strategize or Execute phases #2610_cleveragents/plan/executeA2A handler only transitions plan toexecute/queued— never runs Strategize or Execute phases_cleveragents/plan/executeA2A handler only transitions plan toexecute/queued— never runs Strategize or Execute phases #2610freemo referenced this issue2026-04-04 15:31:35 +00:00
Settingsclass missingserver_url,server_token, andformatfields — spec-required env vars not captured by pydantic-settings #2866Settingsclass missingserver_url,server_token, andformatfields — spec-required env vars not captured by pydantic-settingsSettingsclass missingserver_url,server_token, andformatfields — spec-required env vars not captured by pydantic-settings #2866freemo referenced this issue2026-04-05 02:47:29 +00:00
SkillRegistry.validate_plan()andvalidate_skill()call non-existentget_tool()onToolRegistry— will raiseAttributeErrorat runtime #2914SkillRegistry.validate_plan()andvalidate_skill()call non-existentget_tool()onToolRegistry— will raiseAttributeErrorat runtimeMCPToolFilternot exported fromcleveragents.mcppackage__init__.py— breaks plug-and-play tool provider ecosystem #2927MCPToolFilternot exported fromcleveragents.mcppackage__init__.py— breaks plug-and-play tool provider ecosystemMCPToolAdapter.register_tools()infers resource slots but never wires them into domainToolobjects — resource binding for MCP tools is dead code #2946MCPToolAdapter.register_tools()infers resource slots but never wires them into domainToolobjects — resource binding for MCP tools is dead codelocal/namespace without server prefix does not resolve to default configured server — spec-required behavior not implemented #2955local/namespace without server prefix does not resolve to default configured server — spec-required behavior not implementedMCPTransport.close()is a silent no-op whileconnect()andcall()raiseNotImplementedError— inconsistent abstract interface forces subclasses to silently skip cleanup #2967MCPTransport.close()is a silent no-op whileconnect()andcall()raiseNotImplementedError— inconsistent abstract interface forces subclasses to silently skip cleanupNamespacedNameandParsedNamedo not rejectserver:local/nameformat —local/namespace with server prefix should be invalid per spec #2972NamespacedNameandParsedNamedo not rejectserver:local/nameformat —local/namespace with server prefix should be invalid per specagents server connectmissing--tokenparameter — cannot setserver.tokenauthentication credential via connect command #3547agents server connectmissing--tokenparameter — cannot setserver.tokenauthentication credential via connect commandagents servermissingstartsubcommand for background daemon mode — only foregroundserveis implemented #3548agents servermissingstartsubcommand for background daemon mode — only foregroundserveis implementedagents servermissingstartsubcommand for background daemon mode — only foregroundserveis implemented #3548agents server connectmissing--tokenparameter — cannot setserver.tokenauthentication credential via connect command #3547agents server servecommand missing--cors-originsparameter — CORS configuration not exposed via CLI #3964agents server servecommand missing--cors-originsparameter — CORS configuration not exposed via CLIagents server servecommand description is misleading — default ASGI app only serves health probes, not A2A protocol #3968agents server servecommand description is misleading — default ASGI app only serves health probes, not A2A protocolsrc/cleveragents/a2a/) has zero unit tests — critical protocol layer is untested #3971src/cleveragents/a2a/) has zero unit tests — critical protocol layer is untestedNamespacedNameinplan.pydoes not reject provider namespaces (openai/,anthropic/, etc.) — spec requires these to be reserved #4419NamespacedNameinplan.pydoes not reject reserved namespaces (system,internal,admin,root) — spec requires these to be blocked #4423core.namespaceconfiguration key missing fromSettings— spec-required default namespace override not implemented #4425NamespacedNameinplan.pyvsParsedName/parse_namespaced_nameinproject.py) — spec requires a single universal naming scheme #4427infrastructure/database/repositories.pynamespace extraction uses naivename.split("/")[0]— incorrectly includes server qualifier for server-qualified names #4706Implementation Attempt — Tier 3: sonnet — Failed
Issue #399 is an Epic titled "Epic: Post-MVP Server & Clients", not a regular implementation issue. Epics cannot be directly implemented — they are composed of child issues that must each be implemented individually.
Epic structure:
Root cause: Issue #399 has no
## Metadatasection with a commit message or branch name, which is the required structure for implementable issues. It is an Epic-level grouping ticket.Recommendation: To progress this Epic, dispatch implementation work against the remaining open child issues:
feat(cli): add auth and team commands(branch:feature/m7-post-auth)feat(ui): add TUI/Web interface(branch:feature/m7-post-tui)Note: Both #340 and #341 are currently in State/In Review, meaning PRs may already exist. If those PRs need fixing, use
pr_fixwork type against those PR numbers instead.Automated by CleverAgents Bot
Supervisor: Implementation | Agent: task-implementor