Skip to content

Add field_validator for Lever.options to handle stringified arrays#142

Merged
neoneye merged 1 commit into
PlanExeOrg:mainfrom
VoynichLabs:fix/lever-options-validator
Mar 6, 2026
Merged

Add field_validator for Lever.options to handle stringified arrays#142
neoneye merged 1 commit into
PlanExeOrg:mainfrom
VoynichLabs:fix/lever-options-validator

Conversation

@82deutschmark

Copy link
Copy Markdown
Collaborator

Problem

Local LLMs (e.g. Qwen, GLM via LM Studio) sometimes return the options field as a JSON-encoded string ("[\"opt1\", \"opt2\"]") instead of a native list. This causes a Pydantic ValidationError in IdentifyPotentialLeversTask, crashing the pipeline.

Fix

Added a @field_validator('options', mode='before') to the Lever model that transparently parses stringified JSON arrays before validation.

Scope

  • 1 file modified: worker_plan/worker_plan_internal/lever/identify_potential_levers.py
  • ~10 lines added
  • No behavioral changes for correctly-formatted responses
  • No dependencies on other PRs

Local LLMs sometimes return the options field as a JSON string instead of
a native list. This validator transparently parses stringified arrays,
preventing ValidationError crashes in IdentifyPotentialLeversTask.
@neoneye neoneye merged commit fddb9ff into PlanExeOrg:main Mar 6, 2026
3 checks passed
@neoneye neoneye deleted the fix/lever-options-validator branch March 6, 2026 19:29
huangyingting pushed a commit to repomesh/PlanExe that referenced this pull request Jun 26, 2026
Resolves Dependabot security alerts in worker_plan/pyproject.toml by bumping to the first stable patched release of each package:

- aiohttp 3.13.5 -> 3.14.1 (alerts PlanExeOrg#152,PlanExeOrg#153,PlanExeOrg#156-PlanExeOrg#164)
- tornado 6.5.4 -> 6.5.7 (alerts PlanExeOrg#113,PlanExeOrg#114,PlanExeOrg#136,PlanExeOrg#155,PlanExeOrg#165,PlanExeOrg#166,PlanExeOrg#171)
- python-multipart 0.0.22 -> 0.0.32 (alerts PlanExeOrg#142,PlanExeOrg#149,PlanExeOrg#167-PlanExeOrg#170)
- urllib3 2.6.3 -> 2.7.0 (alerts PlanExeOrg#150,PlanExeOrg#151)
- marshmallow 3.24.2 -> 3.26.2 (alert PlanExeOrg#81), staying on 3.x to avoid the breaking 4.x major

transformers alert PlanExeOrg#137 is excluded: its only fix is the 5.x major line and the vulnerable Trainer class is never imported by PlanExe (handled separately).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants