Skip to content

fix: resilience fixes for local LLM structured output#152

Closed
82deutschmark wants to merge 5 commits intoPlanExeOrg:mainfrom
VoynichLabs:fix/local-model-structured-output
Closed

fix: resilience fixes for local LLM structured output#152
82deutschmark wants to merge 5 commits intoPlanExeOrg:mainfrom
VoynichLabs:fix/local-model-structured-output

Conversation

@82deutschmark
Copy link
Collaborator

Summary

Two bug fixes discovered during local model QA testing on Mac Mini M4 Pro 64GB with Qwen 3.5-35B-A3B via LM Studio.

Fix 1: SelectScenarioTask — holistic_profile_of_the_plan field

Problem: SelectScenarioTask fails with Pydantic validation error on holistic_profile_of_the_plan field in PlanCharacteristics. Field is defined last in the schema; local LLMs with constrained output budgets close the JSON object before generating it.

Confirmed root cause: LMStudio default num_output=4096 causes silent truncation. Reproduced deterministically with Qwen 3.5-35B-A3B (2 consecutive failures, 0 retries succeed).

Fix: default='' makes the field resilient — pipeline continues with an empty holistic profile rather than failing entirely. Downstream scenarios_markdown.py (line 71) uses f-string interpolation so empty string renders cleanly.

Verified fix: With num_output=8192, SelectScenarioTask passes. default='' adds a second layer of resilience for other local models.

Fix 2: CreateScheduleTask — KeyError on server_iso_utc

Problem: CreateScheduleTask raises KeyError: 'server_iso_utc' during CLI runs.

Fix: Safe dict access with .get().

Test environment

  • Mac Mini M4 Pro, 64GB unified memory
  • LM Studio + Qwen 3.5-35B-A3B (MoE, 35B active params)
  • PlanExe pipeline: ALL_DETAILS_BUT_SLOW

82deutschmark and others added 5 commits March 3, 2026 14:24
- select_scenario.py: make holistic_profile_of_the_plan optional with
  default='' to handle LLMs that truncate output before last field in
  nested JSON objects (confirmed fix: SelectScenarioTask now passes with
  Qwen 3.5-35B-A3B at num_output=8192)
- CreateScheduleTask: fix KeyError on server_iso_utc for CLI runs

Tested on Mac Mini M4 Pro 64GB with LM Studio + Qwen 3.5-35B-A3B.
Root cause: LMStudio default num_output=4096 causes silent truncation
of last fields in structured JSON output.
@82deutschmark
Copy link
Collaborator Author

Closing — PR contains local config files and run outputs that should not be in upstream. Reopening with only the relevant code fixes.

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.

1 participant