UAT: Node-level LSP bindings dropped during actor schema validation #6962

Open
opened 2026-04-10 06:04:48 +00:00 by HAL9000 · 0 comments
Owner

What was tested

  • Parsed an actor YAML containing a graph node with lsp_bindings per the specification (docs/specification.md §LSP Integration → Per-Node LSP Binding) using ActorConfigSchema.

Expected behavior

  • The node-level lsp_bindings list should survive schema validation so that actor.compiler._extract_lsp_bindings can emit LspBinding entries and the runtime activates the configured LSP servers.

Actual behavior

  • ActorConfigSchema drops the lsp_bindings entry entirely. The resulting NodeDefinition.config lacks the lsp_bindings key and node.lsp_binding stays None, so the compiler never sees any bindings. As a consequence per-node LSP activation cannot work despite matching the spec.

Steps to reproduce

  1. From the repo root, run:
    python3 - <<'PY'
    import yaml
    from cleveragents.actor.schema import ActorConfigSchema
    
    sample = '''\
    name: local/test
    type: graph
    description: test actor
    model: gpt-4
    route:
      nodes:
        - id: plan
          type: agent
          name: plan
          description: plan node
          config:
            agent: local/strategist
          lsp_bindings:
            - server: local/pyright
      edges: []
      entry_node: plan
      exit_nodes: [plan]
    '''
    config = ActorConfigSchema.model_validate(yaml.safe_load(sample))
    node = config.route.nodes[0]
    print('node.config =', node.config)
    print('node.lsp_binding =', node.lsp_binding)
    PY
    
  2. Observe the output:
    node.config = {'agent': 'local/strategist'}
    node.lsp_binding = None
    
    The lsp_bindings list is silently discarded, so the compiler never receives the binding data.

Code locations

  • src/cleveragents/actor/schema.py (NodeDefinition): no field captures lsp_bindings, so extra data is dropped.
  • src/cleveragents/actor/compiler.py::_extract_lsp_bindings: expects node.config['lsp_bindings'], but it will always be empty.

This breaks the documented "Actor Graph Nodes with LSP bindings" feature of the Actor System.

**What was tested** - Parsed an actor YAML containing a graph node with `lsp_bindings` per the specification (docs/specification.md §LSP Integration → Per-Node LSP Binding) using `ActorConfigSchema`. **Expected behavior** - The node-level `lsp_bindings` list should survive schema validation so that `actor.compiler._extract_lsp_bindings` can emit `LspBinding` entries and the runtime activates the configured LSP servers. **Actual behavior** - `ActorConfigSchema` drops the `lsp_bindings` entry entirely. The resulting `NodeDefinition.config` lacks the `lsp_bindings` key and `node.lsp_binding` stays `None`, so the compiler never sees any bindings. As a consequence per-node LSP activation cannot work despite matching the spec. **Steps to reproduce** 1. From the repo root, run: ```bash python3 - <<'PY' import yaml from cleveragents.actor.schema import ActorConfigSchema sample = '''\ name: local/test type: graph description: test actor model: gpt-4 route: nodes: - id: plan type: agent name: plan description: plan node config: agent: local/strategist lsp_bindings: - server: local/pyright edges: [] entry_node: plan exit_nodes: [plan] ''' config = ActorConfigSchema.model_validate(yaml.safe_load(sample)) node = config.route.nodes[0] print('node.config =', node.config) print('node.lsp_binding =', node.lsp_binding) PY ``` 2. Observe the output: ``` node.config = {'agent': 'local/strategist'} node.lsp_binding = None ``` The `lsp_bindings` list is silently discarded, so the compiler never receives the binding data. **Code locations** - `src/cleveragents/actor/schema.py` (`NodeDefinition`): no field captures `lsp_bindings`, so extra data is dropped. - `src/cleveragents/actor/compiler.py::_extract_lsp_bindings`: expects `node.config['lsp_bindings']`, but it will always be empty. This breaks the documented "Actor Graph Nodes with LSP bindings" feature of the Actor System.
HAL9000 self-assigned this 2026-04-10 06:21:49 +00:00
HAL9000 added this to the v3.5.0 milestone 2026-04-10 06:21:49 +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.

Dependencies

No dependencies set.

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