UAT: ActionConfigSchema accepts inputs_schema field not present in spec's formal JSON Schema (additionalProperties: false) #4680

Open
opened 2026-04-08 18:00:17 +00:00 by HAL9000 · 0 comments
Owner

Bug Report

Feature Area

ActionConfigSchema — schema completeness vs. spec JSON Schema

What Was Tested

Code-level analysis of src/cleveragents/action/schema.py vs. docs/specification.md Action Configuration Files JSON Schema.

Expected Behavior (from spec)

The spec (docs/specification.md, Action Configuration Files JSON Schema) defines the action schema with "additionalProperties": false and lists these top-level properties:

{
  "properties": {
    "name", "description", "long_description",
    "strategy_actor", "execution_actor", "estimation_actor",
    "review_actor", "apply_actor", "invariant_actor",
    "definition_of_done", "reusable", "read_only", "state",
    "arguments", "automation_profile", "invariants"
  },
  "additionalProperties": false
}

inputs_schema is NOT in the spec's formal JSON Schema. With additionalProperties: false, any YAML file containing inputs_schema should be rejected.

Actual Behavior (from code)

ActionConfigSchema in src/cleveragents/action/schema.py includes inputs_schema as a valid field:

class ActionConfigSchema(BaseModel):
    ...
    # ─── Inputs Schema (Advanced) ──────────────────────────
    inputs_schema: dict[str, Any] | None = Field(
        default=None,
        description="Optional JSON Schema for advanced input validation.",
    )
    ...
    model_config = ConfigDict(
        str_strip_whitespace=True,
        extra="forbid",  # <-- additionalProperties: false
    )

This means:

  1. A YAML file with inputs_schema: is accepted by ActionConfigSchema (no error)
  2. But the spec's formal JSON Schema says additionalProperties: false and doesn't list inputs_schema
  3. The docs/schema/action.schema.yaml file also doesn't include inputs_schema in its fields

The Action domain model does have inputs_schema, and it's used in _action_spec_dict in the CLI. But the YAML configuration schema (the user-facing interface) should match the spec's formal definition.

Code Location

src/cleveragents/action/schema.py:

  • ActionConfigSchema.inputs_schema field (line ~220)

docs/specification.md:

  • Action Configuration Files JSON Schema (line ~33133) — no inputs_schema property

docs/schema/action.schema.yaml:

  • No inputs_schema field listed

Impact

Users who include inputs_schema in their action YAML files will have it silently accepted and stored, but this field is not part of the spec's formal schema. This creates a hidden extension that:

  1. May not be supported in all contexts (e.g., server mode)
  2. Is not documented in the spec
  3. Creates a divergence between the spec and implementation

Fix Required

Either:

  1. Add inputs_schema to the spec's formal JSON Schema (if it's an intentional feature) — update docs/specification.md and docs/schema/action.schema.yaml
  2. Remove inputs_schema from ActionConfigSchema (if it's not spec-compliant) — users should use arguments for typed inputs

The current state is ambiguous and should be resolved explicitly.


Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: uat-tester

## Bug Report ### Feature Area `ActionConfigSchema` — schema completeness vs. spec JSON Schema ### What Was Tested Code-level analysis of `src/cleveragents/action/schema.py` vs. `docs/specification.md` Action Configuration Files JSON Schema. ### Expected Behavior (from spec) The spec (docs/specification.md, Action Configuration Files JSON Schema) defines the action schema with `"additionalProperties": false` and lists these top-level properties: ```json { "properties": { "name", "description", "long_description", "strategy_actor", "execution_actor", "estimation_actor", "review_actor", "apply_actor", "invariant_actor", "definition_of_done", "reusable", "read_only", "state", "arguments", "automation_profile", "invariants" }, "additionalProperties": false } ``` **`inputs_schema` is NOT in the spec's formal JSON Schema.** With `additionalProperties: false`, any YAML file containing `inputs_schema` should be rejected. ### Actual Behavior (from code) `ActionConfigSchema` in `src/cleveragents/action/schema.py` includes `inputs_schema` as a valid field: ```python class ActionConfigSchema(BaseModel): ... # ─── Inputs Schema (Advanced) ────────────────────────── inputs_schema: dict[str, Any] | None = Field( default=None, description="Optional JSON Schema for advanced input validation.", ) ... model_config = ConfigDict( str_strip_whitespace=True, extra="forbid", # <-- additionalProperties: false ) ``` This means: 1. A YAML file with `inputs_schema:` is accepted by `ActionConfigSchema` (no error) 2. But the spec's formal JSON Schema says `additionalProperties: false` and doesn't list `inputs_schema` 3. The `docs/schema/action.schema.yaml` file also doesn't include `inputs_schema` in its fields The `Action` domain model does have `inputs_schema`, and it's used in `_action_spec_dict` in the CLI. But the YAML configuration schema (the user-facing interface) should match the spec's formal definition. ### Code Location `src/cleveragents/action/schema.py`: - `ActionConfigSchema.inputs_schema` field (line ~220) `docs/specification.md`: - Action Configuration Files JSON Schema (line ~33133) — no `inputs_schema` property `docs/schema/action.schema.yaml`: - No `inputs_schema` field listed ### Impact Users who include `inputs_schema` in their action YAML files will have it silently accepted and stored, but this field is not part of the spec's formal schema. This creates a hidden extension that: 1. May not be supported in all contexts (e.g., server mode) 2. Is not documented in the spec 3. Creates a divergence between the spec and implementation ### Fix Required Either: 1. **Add `inputs_schema` to the spec's formal JSON Schema** (if it's an intentional feature) — update `docs/specification.md` and `docs/schema/action.schema.yaml` 2. **Remove `inputs_schema` from `ActionConfigSchema`** (if it's not spec-compliant) — users should use `arguments` for typed inputs The current state is ambiguous and should be resolved explicitly. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.5.0 milestone 2026-04-08 18:05:38 +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#4680
No description provided.