Hiro development journal

Hiro local runtime migrated from Gemma to Qwen 3.6

Published Machine-readable JSON

Executive summary

Completed the coordinated local-model migration that the earlier diagnosis identified as missing. Hiro now defaults to the Qwen 3.6 35B-A3B profile, uses the exact LM Studio native model identifier, and has Qwen-specific startup, preflight, health-restart, Telegram, benchmark, smoke-test, and documentation paths.

The previously loaded Gemma model was explicitly unloaded. LM Studio now reports only Qwen 3.6 loaded, idle, with an 8192-token context, one parallel slot, and maximum GPU offload. A real completion returned READY and confirmed the served Qwen identifier.

Repository validation passed 178 tests. A Qwen-labeled six-workflow stateful baseline completed twice and passed three of six workflows. The remaining failures are genuine model-behavior gaps involving mailbox query selection, approval-scope construction, and failure-recovery sequencing; they are not infrastructure failures and were preserved as immutable evidence.

The migration also corrected lifecycle handling so benchmark and lab restart paths unload LM Studio models through the supported CLI rather than relying only on a legacy llama-server process name.

Work completed

Active router and configuration migration

Completed
  • Changed the effective active profile and router fallback to qwen36. Both local routing tiers now resolve to the verified LM Studio identifier qwen_qwen3.6-35b-a3b on port 8080.
  • Removed the active Gemma profile and the incorrectly named qwen35 profile key. The legacy Qwen 3.5 dual-tier profile remains available as an explicit rollback option, but it is no longer the default.
  • Updated the example environment file, runtime documentation, setup instructions, health configuration, lab restart selection, Telegram model command, and operational boundary tests to use Qwen 3.6.

Pinned Qwen launcher and runtime identity

Completed
  • Added a Qwen 3.6 launcher pinned to the installed 35B-A3B Q4_K_M model, 8192-token context, one parallel slot, and maximum GPU offload.
  • The launcher normalizes the known Windows Path/PATH collision before child processes, uses LM Studio loaded-process JSON rather than the model catalog for identity, performs a visible warm-up completion, and writes startup metadata.
  • LM Studio's native identifier was selected after an interrupted first load left a custom alias reservation. Avoiding a custom alias makes future reloads less fragile.
  • The obsolete Gemma PowerShell and batch launchers were removed. The shutdown script continues to unload all LM Studio models and stop the local server.

Nightly, benchmark, and smoke-test repair

Completed
  • Nightly API preflight now validates and starts Qwen 3.6 before declaring the evaluation API ready.
  • The benchmark registry, nightly model comparison defaults, smoke-test identity, report names, and scheduler model list were changed from Gemma to Qwen 3.6.
  • Benchmark and lab restart lifecycle code now releases both legacy llama-server processes and LM Studio model/server state using a normalized child environment. This prevents a Qwen restart or model switch from becoming an idempotent no-op on an already occupied port.
  • New canonical and adversarial harness reports now record the active model profile and exact model identifier so future results cannot be mistaken for another runtime.

Qwen compatibility baseline

Completed with behavioral failures
  • The first Qwen-labeled six-workflow run passed three of six in 95.764 seconds. The harness's 768-token cap was consumed by Qwen's internal reasoning on several turns, producing empty visible content.
  • The harness budget was raised to 4096 tokens and the same six workflows were rerun. The second run again passed three of six in approximately 181 seconds, proving that output truncation was not the only cause.
  • The passing workflows covered read-only calendar and mailbox discovery, local task and reading-list changes, and an approval-gated simulated calendar write.
  • The failed workflows exposed incorrect mailbox search specificity, a stopped recovery path after an approval-scope mismatch, and an end-to-end flow that requested an empty email approval scope before drafting. These results are useful new Qwen-specific capability evidence and were not overwritten.

Decisions and reasoning

Validation and evidence

CheckStatusResult
Active-source reference audit passed No Gemma or qwen35 references remain in active source, scripts, tests, documentation, or configuration after excluding immutable historical research, logs, ledger evidence, and prior public journal entries.
Focused migration tests passed The launcher, nightly preflight, router budget and payload, operational boundaries, stateful harness parser, scheduler, and health-monitor suites passed in focused runs.
Full Hiro repository suite passed All 178 tests passed in 14.82 seconds with a workspace-local pytest temporary root. An earlier attempt produced 40 setup errors because the host user temp directory could not create another numbered pytest directory; 138 tests had passed in that infrastructure-limited attempt.
Real Qwen child-process and inference startup passed The finalized launcher detected the loaded Qwen model, verified model key and identifier, normalized the child environment, and completed a visible READY response. Warm-start readiness took approximately two seconds plus a 1.44-second warm-up.
Loaded-model state passed LM Studio reported Qwen 3.6 35B-A3B Q4_K_M as the only loaded model, with 8192 context, one parallel slot, idle status, and identifier qwen_qwen3.6-35b-a3b. Gemma was unloaded.
Qwen stateful capability baseline failed-behavioral Both immutable Qwen-labeled canonical reports passed three of six workflows. The second report confirmed the remaining failures after increasing the output budget, so this is behavioral evidence rather than a connection or model-identity failure.

Current state

Next steps