lobes-cli 0.89.1__tar.gz → 0.89.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- lobes_cli-0.89.2/.agex/data/pr/323/await.json +13 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.agex/data/pr/events.jsonl +6 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/CHANGELOG.md +7 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/CLAUDE.md +7 -1
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/PKG-INFO +1 -1
- lobes_cli-0.89.2/docs/evidence/2026-10-18-accept-vllm-031-spark-cortex.txt +71 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3.6-27b-text-nvfp4-mtp.md +18 -1
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/assess.py +15 -4
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/docker-compose.yml +2 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/vllm_plugins/__init__.py +5 -3
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/vllm_plugins/qwen3_thinking_tool_parser.py +63 -7
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/pyproject.toml +1 -1
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_assess.py +30 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_vllm_plugin_thinking.py +117 -2
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/uv.lock +1 -1
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/ask-colleague/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/ask-colleague/prompts/explore.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/ask-colleague/prompts/review.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/ask-colleague/prompts/write.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/challenge/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/cicd/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/cicd/scripts/workflow.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/communicate/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/deviate/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/lobes-deploy/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/lobes-deploy/scripts/lobes-compose.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/model-runner/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/model-runner/scripts/model-runner.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/recall/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/recall/scripts/recall.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/remember/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/remember/scripts/remember.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/run-tests/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/run-tests/scripts/test.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/scope/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/sonarclaude/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/spec-to-plan/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/summarize-delivery/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/think/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/think/scripts/think.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/validate-delivery/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/version-bump/SKILL.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills/version-bump/scripts/bump.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.claude/skills.local.yaml.example +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/current +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/current_plan +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/capacity-relative-pool-routing.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/cortex-replica-pool-199.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/deployment-lock-per-box.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/dspark-speculation-on-the-spark-cortex.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/every-lobe-in-the-mesh-can-see-the-spark-reaches-t.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/flash-next-worker-on-thor.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/hand-lobe-lfm2-5-1-2b.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/hebrew-realtime.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/innereye-lobes-hosts-comfyui.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/lane-safety-and-quality-304-307-308-309.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/lightning-on-orin.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/lobes-capabilities-tells-you-where-a-lobe-is-serve.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/mesh-boot-window-and-capabilities-advert.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/mesh-brain-join.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/mesh-pool-load-sharing.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/nemotron-lightning-worker.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/orin-associate-at-1m.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/orin-decision-models.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/orin-embedding-specialist.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/qwen3-8-gguf-llamacpp.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/realtime-voice-to-voice-astro-test-site-151.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/reranker-calibration-227.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/thor-cortex-speculation.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/thor-worker-arm-qwen3-6-35b-a3b-recipes.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/deliveries/unsloth-qat-senses-first-class-orin-variation.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/capacity-relative-pool-routing.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/chatterbox-on-thor-sm-110.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/compose-chain-unification-init-repair-doctor-stale.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/cortex-replica-pool-199.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/deployment-lock-per-box.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/dspark-speculation-on-the-spark-cortex.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/every-lobe-in-the-mesh-can-see-the-spark-reaches-t.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/flash-next-on-vllm.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/flash-next-worker-on-thor.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/hand-lobe-lfm2-5-1-2b.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/hebrew-realtime.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/innereye-lobes-hosts-comfyui.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lane-safety-and-quality-304-307-308-309.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lightning-on-orin.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lightning-on-thor.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-adds-a-third-middle-model-tier-and-pressure.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-capabilities-tells-you-where-a-lobe-is-serve.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-exposes-the-full-colleague-runtime-stack-as.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-fits-the-machine-it-lands-on-one-command-det.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-gateway-relays-sse-streams-frame-by-frame-th.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-never-advertises-a-capability-it-cannot-serv.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-now-defaults-to-a-spark-duo-the-qwen3-6-27b.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-preserves-qwen-thinking-traces-across-multi.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-serves-strict-grammar-constrained-tool-calls.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-serves-the-brain-shape-you-choose-machine-as.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-serves-the-mesh-brain-end-state-one-lobe-per.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-ships-a-custom-vllm-image-from-nvcr-io-nvidi.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-ships-a-minor-lobe-a-cheap-warm-co-resident.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-ships-a-per-lobe-benchmark-suite-speed-paral.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-tells-clients-the-truth-about-a-fleet-a-cons.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/lobes-unifies-its-generate-lane-on-one-vllm-nightl.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/mesh-boot-window-and-capabilities-advert.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/mesh-brain-join.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/mesh-pool-load-sharing.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/model-gear-now-serves-an-embedding-gear-qwen3-embe-2.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/model-gear-now-serves-an-embedding-gear-qwen3-embe.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/model-gear-owns-the-audio-i-o-surface-end-to-end-m.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/nemotron-lightning-worker.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/orin-associate-at-1m.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/orin-decision-models.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/orin-embedding-specialist.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/peer-only-replica-pools.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/proxy-lobes-pairwise-auth.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/public-lobes-and-hebrew-site.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/quick-wins-finish-the-rename.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/qwen3-8-27b-gguf-on-the-spark.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/qwen3-8-cortex-upgrade.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/qwen3-8-flash-next-gguf-candidate.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/qwen3-8-flash-next-on-thor.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/qwen3-8-gguf-llamacpp.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/realtime-voice-to-voice-astro-test-site-151.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/realtime-ws-server-vad-149.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/reranker-calibration-227.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/stt-readiness-truth-155.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/targeted-ops-and-honest-streams.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/the-gemma-4-12b-gear-gets-speculative-decoding-lob.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/thor-cortex-speculation.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/thor-worker-arm-qwen3-6-35b-a3b-recipes.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/thor-worker-lobe-qwen3-6-35b-a3b.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/under-pressure-lobes-tells-you-the-cortex-model-is.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/unsloth-qat-senses-first-class-orin-variation.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/frames/vllm-0-31-0-fleet.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/capacity-relative-pool-routing.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/compose-chain-unification-init-repair-doctor-stale.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/cortex-replica-pool-199.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/deployment-lock-per-box.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/dspark-speculation-on-the-spark-cortex.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/every-lobe-in-the-mesh-can-see-the-spark-reaches-t.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/flash-next-worker-on-thor.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/hand-lobe-lfm2-5-1-2b.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/hebrew-realtime.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/innereye-lobes-hosts-comfyui.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lane-safety-and-quality-304-307-308-309.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lightning-on-orin.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-adds-a-third-middle-model-tier-and-pressure.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-capabilities-tells-you-where-a-lobe-is-serve.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-exposes-the-full-colleague-runtime-stack-as.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-fits-the-machine-it-lands-on-one-command-det.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-gateway-relays-sse-streams-frame-by-frame-th.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-never-advertises-a-capability-it-cannot-serv.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-now-defaults-to-a-spark-duo-the-qwen3-6-27b.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-preserves-qwen-thinking-traces-across-multi.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-serves-strict-grammar-constrained-tool-calls.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-serves-the-brain-shape-you-choose-machine-as.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-serves-the-mesh-brain-end-state-one-lobe-per.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-ships-a-custom-vllm-image-from-nvcr-io-nvidi.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-ships-a-minor-lobe-a-cheap-warm-co-resident.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-ships-a-per-lobe-benchmark-suite-speed-paral.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-tells-clients-the-truth-about-a-fleet-a-cons.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/lobes-unifies-its-generate-lane-on-one-vllm-nightl.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/mesh-boot-window-and-capabilities-advert.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/mesh-brain-join.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/mesh-pool-load-sharing.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/model-gear-now-serves-an-embedding-gear-qwen3-embe-2.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/model-gear-owns-the-audio-i-o-surface-end-to-end-m.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/nemotron-lightning-worker.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/orin-associate-at-1m.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/orin-decision-models.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/orin-embedding-specialist.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/peer-only-replica-pools.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/proxy-lobes-pairwise-auth.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/quick-wins-finish-the-rename.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/qwen3-8-cortex-upgrade.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/qwen3-8-flash-next-gguf-candidate.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/qwen3-8-gguf-llamacpp.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/realtime-voice-to-voice-astro-test-site-151.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/realtime-ws-server-vad-149.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/reranker-calibration-227.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/stt-readiness-truth-155.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/the-gemma-4-12b-gear-gets-speculative-decoding-lob.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/thor-cortex-speculation.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/thor-worker-arm-qwen3-6-35b-a3b-recipes.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/thor-worker-lobe-qwen3-6-35b-a3b.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/under-pressure-lobes-tells-you-the-cortex-model-is.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/unsloth-qat-senses-first-class-orin-variation.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.devague/plans/vllm-0-31-0-fleet.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.eidetic/memory/colleague__public.jsonl +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.eidetic/memory/default__public.jsonl +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.eidetic/memory/lobes__public.jsonl +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.flake8 +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.github/workflows/publish.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.github/workflows/tests.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.gitignore +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/.markdownlint-cli2.yaml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/AGENTS.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/LICENSE +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/QWEN.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/README.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/culture.yaml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/README.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/VARIATION.template.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-orin__orin-embed/Dockerfile.embed-st +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-orin__orin-embed/Dockerfile.gateway +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-orin__orin-embed/VARIATION.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-orin__orin-embed/deployment.lock.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-orin__orin-embed/docker-compose.embed.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-orin__orin-embed/docker-compose.gpu.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-orin__orin-embed/docker-compose.override.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-orin__orin-embed/docker-compose.shape.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-orin__orin-embed/docker-compose.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-orin__orin-embed/mg-logwrap.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-orin__orin-embed/qwen3_reranker.jinja +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-orin__orin-embed/qwen3_thinking_tool_parser.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-thor__thor-worker/Dockerfile.gateway +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-thor__thor-worker/Dockerfile.vllm-gemma4 +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-thor__thor-worker/VARIATION.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-thor__thor-worker/deployment.lock.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-thor__thor-worker/docker-compose.override.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-thor__thor-worker/docker-compose.shape.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-thor__thor-worker/docker-compose.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-thor__thor-worker/mg-logwrap.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-thor__thor-worker/qwen3_reranker.jinja +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/deployments/jetson-agx-thor__thor-worker/qwen3_thinking_tool_parser.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/chatterbox-tts.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/colleague-stack.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/comfyui-innereye.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/contracts/README.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/contracts/lane-safety-runtime.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/contracts/machine-cli-window.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/contracts/realtime-tool-calling.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/decider.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-07-16-proxy-lobes-pairwise-auth.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-07-21-realtime-voice-to-voice-astro-test-site-151.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-08-04-unsloth-qat-senses-first-class-orin-variation.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-08-10-hand-lobe-lfm2-5-1-2b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-08-20-nemotron-lightning-worker.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-08-22-qwen3-8-gguf-llamacpp.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-08-23-qwen3-8-gguf-llamacpp-deviation-ledger.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-08-24-dspark-speculation-on-the-spark-cortex.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-08-25-cortex-replica-pool-199.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-08-25-lightning-on-orin.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-08-25-thor-cortex-speculation.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-08-29-deployment-lock-per-box.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-08-30-peer-only-replica-pools.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-08-31-quick-wins-finish-the-rename.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-09-10-thor-worker-arm-qwen3-6-35b-a3b-recipes.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-09-11-mesh-brain-join.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-09-12-mesh-boot-window-and-capabilities-advert.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-09-13-orin-associate-at-1m.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-09-16-innereye-lobes-hosts-comfyui.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-09-18-hebrew-realtime.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-10-06-mesh-pool-load-sharing.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-10-07-orin-embedding-specialist.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-10-14-orin-decision-models.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deliveries/2026-10-17-lane-safety-and-quality-304-307-308-309.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deployment-lock.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/deployment-shapes.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/dspark-speculation.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/durable-logs.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/embeddinggemma-2.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-14-accept-referral-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-14-accept-spark-lobe-gb10.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-14-accept-thor-lobe-live-referral-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-14-accept-thor-lobe-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-14-strict-tools-spark-lobe-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-16-proxy-lobes-live-spark-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-17-accept-muse-tool-calling-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-20-accept-embed-deep-gb10.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-21-accept-realtime-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-21-accept-voice-loop-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-22-accept-realtime-voice-to-voice-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-25-accept-by-proxy-spark-f8a9.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-31-accept-multimodal-cortex-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-31-accept-worker-proxy-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-07-31-accept-worker-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-04-accept-senses-unsloth-orin.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-10-hand-lobe-budget-derivation.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-10-partial-hand-orin.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-10-partial-hand-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-19-accept-qwen38-1m-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-19-baseline-qwen3.6-cortex-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-19-spike-qwen3.8-official-nightly-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-20-accept-cortex-local-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-20-accept-cortex-repoint-orin.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-20-accept-cortex-repoint-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-20-accept-dual-cortex-mesh.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-20-accept-hand-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-20-accept-worker-hand-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-20-baseline-worker-qwen35b-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-20-hand-thor-blocked-reattributed.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-20-spike-lightning-thor-no-go.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-20-spike-nightly-sm110-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-21-measure-reasoning-effort-cortex-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-23-spike-qwen38-gguf-llamacpp-orin.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-24-spike-dspark-cortex-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-25-accept-cortex-replica-pool-spark-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-25-accept-spark-lobe-dspark-render.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-25-baseline-cortex-single-owner.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-25-measure-associate-budget-orin.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-25-orin-board-state-lightning-spikes.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-25-spike-lightning-llamacpp-orin.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-25-spike-lightning-vllm-orin.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-25-spike-thor-cortex-speculation.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-26-accept-orin-associate.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-26-associate-gateway-auth-front.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-28-accept-capacity-relative-pool-thor-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-30-accept-peer-only-pool-orin.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-30-accept-reranker-template-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-30-baseline-orin-cortex-pinned.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-08-30-baseline-reranker-untemplated-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-10-accept-nvidia-35b-a3b-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-10-accept-thor-worker-flip.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-10-baseline-thor-cortex-pre-244.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-10-spike-nvidia-35b-a3b-preboot-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-10-sweep-mtp-depth-nvidia-35b-a3b-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-10-thor-backup-and-rollback-dryrun-244.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-10-thor-pressure-floor-244.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-11-accept-thor-reranker-template-senses-unproxy.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-11-accept-worker-proxy-spark-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-12-accept-mesh-boot-window-fleet.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-12-accept-mesh-brain-join-fleet.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-12-baseline-mesh-cutover.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-13-accept-orin-associate-1m.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-13-measure-associate-budget-orin-1m.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-13-spike-lightning-thor-v029.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-16-accept-innereye-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-16-baseline-comfyui-venv-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-16-innereye-render-via-thor.png +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-16-t2-comfyui-container-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-19-accept-multimodal-gemma26b-native-context-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-23-spike-flash-next-worker-thor.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-hebrew-realtime-audio-hardware-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-hebrew-realtime-first-loop-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-hebrew-realtime-spike-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-hebrew-realtime-streaming-bluetts-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-hebrew-realtime-vad-ab-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-hebrew-stt-spike-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-hebrew-tts-ab-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-09-hebrew-voice-lane-senses12b-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-06-accept-mesh-member-lanes.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-07-accept-innereye-replace-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-07-accept-orin-embed.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-07-h2h/run1.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-07-h2h/run1.table.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-07-h2h/run2-nomic.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-07-h2h/run2-nomic.table.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-07-h2h/run3-qwen3vl.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-07-h2h/run3-qwen3vl.table.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-07-h2h-code-retrieval-orin.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-07-rollback-orin-embed-to-orin-associate.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-07-spike-embeddinggemma2-sidecar-orin.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-07-spike-orin-embed-vllm-8b.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-14-ab-clef-vllm-vs-sidecar-orin.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-14-accept-clef-bf16-interim-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-14-accept-decider-2b-spark2.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-14-accept-orin-decider.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-14-build-clef-sets.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-14-spike-clef-nf4-transformers-orin.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-14-verify-clef-quants.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-17-accept-lane-safety-hardware.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-17-baseline-nightly-spark2.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-17-dryrun-r1-rollout-spark-copy.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/2026-10-17-verify-cpucap-running-vllm-spark.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/README-dspark-arms.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/README-realtime-acceptance.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/arm-a16-dspark-262k.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/arm-a16-none-262k.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/arm-dspark-262k.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/arm-dspark-768k.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/arm-mtp-n2-262k.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/arm-mtp-n2-768k.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/arm-mtp-n2.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/arm-none-262k.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/evidence/arm-none-768k.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/experiments/README.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/experiments/qwen3.8-flash-next-gguf-llamacpp-vllm.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/experiments/qwen3.8-flash-next-nvfp4-thor-reference.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/gateway-fleet.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/gemma-4-12b-nvfp4.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/gemma-4-12b-qat-w4a16.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/gemma-4-31b-nvfp4.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/gemma4-mtp-draft.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/hebrew-realtime.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/image-ledger.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/lfm2.5-1.2b-hand.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/machine-profiles.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/measuring-lane-performance.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/mistral-small-3.2-24b-nvfp4.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/model-switch-playbook.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/nemotron-3-embed-8b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/nemotron-3.5-lightning-30b-a3b-nvfp4.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/nomic-embed-code.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/nvidia-qwen3.6-35b-a3b-nvfp4.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/openai-api.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/operating-a-deployment.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/orin-associate-deployment.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/orin-embed-deployment.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/orin-profiles.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/parakeet-stt.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-06-12-model-gear-owns-the-audio-i-o-surface-end-to-end-m.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-06-19-model-gear-now-serves-an-embedding-gear-qwen3-embe-2.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-06-26-lobes-ships-a-minor-lobe-a-cheap-warm-co-resident.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-06-26-lobes-ships-a-per-lobe-benchmark-suite-speed-paral.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-06-29-lobes-adds-a-third-middle-model-tier-and-pressure.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-06-30-lobes-now-defaults-to-a-spark-duo-the-qwen3-6-27b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-06-30-lobes-ships-a-custom-vllm-image-from-nvcr-io-nvidi.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-01-gemma-4-12b-gear-gets-speculative-decoding-draft.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-01-lobes-unifies-its-generate-lane-on-one-vllm-nightl.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-03-lobes-exposes-the-full-colleague-runtime-stack-as.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-03-under-pressure-lobes-tells-you-the-cortex-model-is.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-04-lobes-tells-clients-the-truth-about-a-fleet-a-cons.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-07-lobes-preserves-qwen-thinking-traces-across-multi.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-09-lobes-never-advertises-a-capability-it-cannot-serv.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-10-lobes-gateway-relays-sse-streams-frame-by-frame-th.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-13-lobes-fits-the-machine-it-lands-on-one-command-det.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-14-lobes-serves-strict-grammar-constrained-tool-calls.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-14-lobes-serves-the-brain-shape-you-choose-machine-as.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-14-lobes-serves-the-mesh-brain-end-state-one-lobe-per.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-16-proxy-lobes-pairwise-auth.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-17-compose-chain-unification-init-repair-doctor-stale.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-21-realtime-voice-to-voice-astro-test-site-151.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-21-realtime-ws-server-vad-149.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-24-stt-readiness-truth-155.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-25-lobes-capabilities-tells-you-where-a-lobe-is-serve.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-31-every-lobe-in-the-mesh-can-see-the-spark-reaches-t.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-07-31-thor-worker-lobe-qwen3-6-35b-a3b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-04-unsloth-qat-senses-first-class-orin-variation.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-10-hand-lobe-lfm2-5-1-2b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-19-qwen3-8-cortex-upgrade.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-20-nemotron-lightning-worker.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-22-qwen3-8-gguf-llamacpp.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-24-dspark-speculation-on-the-spark-cortex.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-25-cortex-replica-pool-199.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-25-lightning-on-orin.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-25-thor-cortex-speculation.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-27-capacity-relative-pool-routing.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-29-deployment-lock-per-box.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-30-peer-only-replica-pools.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-30-reranker-calibration-227.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-08-31-quick-wins-finish-the-rename.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-10-thor-worker-arm-qwen3-6-35b-a3b-recipes-split.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-10-thor-worker-arm-qwen3-6-35b-a3b-recipes.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-11-mesh-brain-join-split.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-11-mesh-brain-join.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-12-mesh-boot-window-and-capabilities-advert-split.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-12-mesh-boot-window-and-capabilities-advert.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-13-orin-associate-at-1m-split.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-13-orin-associate-at-1m.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-16-innereye-lobes-hosts-comfyui-split.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-16-innereye-lobes-hosts-comfyui.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-18-hebrew-realtime-HANDOFF.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-18-hebrew-realtime-split.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-18-hebrew-realtime.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-09-23-flash-next-worker-on-thor.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-10-06-mesh-pool-load-sharing-split.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-10-06-mesh-pool-load-sharing.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-10-07-orin-embedding-specialist-split.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-10-07-orin-embedding-specialist.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-10-14-orin-decision-models-split.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-10-14-orin-decision-models.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-10-17-lane-safety-HANDOFF.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-10-17-lane-safety-and-quality-304-307-308-309-split.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-10-17-lane-safety-and-quality-304-307-308-309.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-10-17-vllm-0-31-0-fleet-split.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/plans/2026-10-17-vllm-0-31-0-fleet.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3-14b-nvfp4.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3-32b-nvfp4.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3-embedding-0.6b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3-embedding-4b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3-reranker-0.6b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3-vl-embedding-8b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3-vl-reranker-8b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3.5-4b-minor.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3.6-27b-nvfp4-multimodal.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3.6-27b-nvfp4.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3.6-35b-a3b-nvfp4.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3.8-27b-gguf-llamacpp.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen3.8-27b-nvfp4.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/qwen38-rollout-notes.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/realtime-pipeline.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/runbooks/lane-safety-r1-rollout.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/secret-rotation.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/skill-sources.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-06-12-model-gear-owns-the-audio-i-o-surface-end-to-end-m.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-06-19-model-gear-now-serves-an-embedding-gear-qwen3-embe-2.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-06-26-lobes-ships-a-minor-lobe-a-cheap-warm-co-resident.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-06-26-lobes-ships-a-per-lobe-benchmark-suite-speed-paral.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-06-29-lobes-adds-a-third-middle-model-tier-and-pressure.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-06-30-lobes-now-defaults-to-a-spark-duo-the-qwen3-6-27b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-06-30-lobes-ships-a-custom-vllm-image-from-nvcr-io-nvidi.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-01-gemma-4-12b-gear-gets-speculative-decoding-draft.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-01-lobes-unifies-its-generate-lane-on-one-vllm-nightl.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-03-lobes-exposes-the-full-colleague-runtime-stack-as.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-03-under-pressure-lobes-tells-you-the-cortex-model-is.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-04-lobes-tells-clients-the-truth-about-a-fleet-a-cons.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-07-lobes-preserves-qwen-thinking-traces-across-multi.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-09-lobes-never-advertises-a-capability-it-cannot-serv.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-10-lobes-gateway-relays-sse-streams-frame-by-frame-th.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-13-lobes-fits-the-machine-it-lands-on-one-command-det.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-14-lobes-serves-strict-grammar-constrained-tool-calls.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-14-lobes-serves-the-brain-shape-you-choose-machine-as.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-14-lobes-serves-the-mesh-brain-end-state-one-lobe-per.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-16-proxy-lobes-pairwise-auth.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-17-compose-chain-unification-init-repair-doctor-stale.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-21-realtime-voice-to-voice-astro-test-site-151.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-21-realtime-ws-server-vad-149.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-24-stt-readiness-truth-155.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-25-lobes-capabilities-tells-you-where-a-lobe-is-serve.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-31-every-lobe-in-the-mesh-can-see-the-spark-reaches-t.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-07-31-thor-worker-lobe-qwen3-6-35b-a3b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-04-unsloth-qat-senses-first-class-orin-variation.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-09-hand-lobe-lfm2-5-1-2b.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-19-qwen3-8-cortex-upgrade.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-20-nemotron-lightning-worker.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-22-qwen3-8-gguf-llamacpp.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-24-dspark-speculation-on-the-spark-cortex.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-25-cortex-replica-pool-199.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-25-lightning-on-orin.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-25-thor-cortex-speculation.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-27-capacity-relative-pool-routing.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-27-flash-next-on-vllm.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-27-qwen3-8-flash-next-gguf-candidate.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-29-deployment-lock-per-box.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-30-peer-only-replica-pools.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-30-reranker-calibration-227.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-08-31-quick-wins-finish-the-rename.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-09-10-thor-worker-arm-qwen3-6-35b-a3b-recipes.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-09-11-mesh-brain-join.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-09-12-mesh-boot-window-and-capabilities-advert.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-09-13-orin-associate-at-1m.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-09-16-innereye-lobes-hosts-comfyui.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-09-18-hebrew-realtime.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-09-23-flash-next-worker-on-thor.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-10-06-mesh-pool-load-sharing.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-10-07-orin-embedding-specialist.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-10-14-orin-decision-models.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-10-17-lane-safety-and-quality-304-307-308-309.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/specs/2026-10-17-vllm-0-31-0-fleet.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/superpowers/plans/2026-05-22-scaffold-cli-sibling.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/superpowers/specs/2026-05-22-scaffold-cli-sibling-design.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/tensorrt-llm-investigation.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/thor-worker-flip-rollout-notes.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/tuning-profiles.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/validate-tiers.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/vllm-nightly-migration.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/docs/worker-lightning-rollout-notes.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/examples/minor-evals/smoke.jsonl +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/__main__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/_metrics.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/bench/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/bench/cat_probe.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/bench/cat_score.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/bench/compare.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/bench/report.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/catalog.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/_doctor_lane_safety.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/_doctor_plugin.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/_role_probe.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/assess.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/benchmark.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/calibrate.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/capabilities.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/cli.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/doctor.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/eval.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/explain.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/fleet.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/governor.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/init.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/learn.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/logs.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/measure.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/mesh.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/overview.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/route.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/run.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/serve.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/status.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/stop.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/switch.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/tunnel.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/up.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/watcher.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_commands/whoami.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_errors.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_live.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_output.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_role_swap.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/cli/_runtime_ops.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/decider_sidecar/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/decider_sidecar/clef_vllm.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/decider_sidecar/server.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/embed_lanes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/embed_sidecar/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/embed_sidecar/server.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/explain/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/explain/catalog.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/__main__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_authlog.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_config.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_mesh_config.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_mesh_roster.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_mesh_routes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_mesh_routing.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_mesh_wire.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_pressure_policy.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_readiness.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_realtime.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_replicas.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_routing.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_selection.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/_tier_request.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/gateway/server.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/lane_keys.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/machines/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/machines/_registry.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/machines/_strategy.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/machines/_traits.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/machines/blackwell.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/machines/generic.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/machines/orin.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/machines/spark.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/machines/thor.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/minor/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/minor/_client.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/minor/governance.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin/base.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin/orin.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin/spark.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin/thor.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/gateway-only.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/machine-as-brain.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/orin-associate.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/orin-cortex.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/orin-decider.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/orin-embed.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/orin-lobe.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/orin-small.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/spark-innereye.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/spark-lobe.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/thor-lobe.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/thor-muse.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/builtin_shapes/thor-worker.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/loader.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/render.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/schema.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/shape_render.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/profiles/shapes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/__main__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_conversation.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_floor.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_pcm.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_readiness.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_segmenter.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_sentences.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_session.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_settings.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_speculation.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_timings.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_tts_text.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_turn.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_vocalize.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/_wire.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/app.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/audio_facade.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/bluetts_server.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/chatterbox_multilingual_server.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/chatterbox_server.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/protocol.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/realtime/tts_client.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/roles.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/roles_measure.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_buildability.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_compose.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_detect.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_env.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_governor.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_health.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_lanes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_lock.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_machine.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_parser.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_pressure.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_tunnel.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/runtime/_window.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/cf-tunnel.env.example +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/docker-compose.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/env.example +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/Dockerfile.bluetts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/Dockerfile.chatterbox +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/Dockerfile.chatterbox-ml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/Dockerfile.comfyui +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/Dockerfile.decider +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/Dockerfile.decider-vllm +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/Dockerfile.embed-st +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/Dockerfile.gateway +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/Dockerfile.parakeet +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/Dockerfile.realtime +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/Dockerfile.vllm-gemma4 +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/Dockerfile.whisper-stt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/_readiness.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/docker-compose.audio-he.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/docker-compose.audio.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/docker-compose.embed.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/env.audio-he.example +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/env.audio.example +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/env.example +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/listen_server.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/listen_server_whisper.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/fleet/qwen3_reranker.jinja +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/lobes-watcher.service.in +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/templates/mg-logwrap.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/variation.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/variation_catalog.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/watcher/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/watcher/_install.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/lobes/watcher/_run.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/packaging/model-gear/README.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/packaging/model-gear/pyproject.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/accept-by-proxy.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/accept-shape.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/audio-smoke.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/clef_eval/compare.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/clef_eval/run_nf4_probe.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/clef_eval/run_probe.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/clef_quant/quantize.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/clef_sets/build_sets.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/clef_sets/calibration.manifest.jsonl +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/clef_sets/incidents.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/clef_sets/probe.manifest.jsonl +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/clef_sets/routing.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/concurrency-probe.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/embed_h2h/README.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/embed_h2h/build_corpus.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/embed_h2h/build_queries.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/embed_h2h/corpus.jsonl +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/embed_h2h/h2h.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/embed_h2h/prompts.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/embed_h2h/queries.jsonl +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/gen-api-key.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/live-check.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/prefill-depth-curve.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/probe_reranker_calibration.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/realtime-he-accept.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/realtime-smoke.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/realtime-voice-loop.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/scan_deployment_secrets.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/spec-arms.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/spike-preflight.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/stream-measure.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/scripts/validate-tiers.sh +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/.env.example +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/.gitignore +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/.nvmrc +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/README.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/astro.config.mjs +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/package-lock.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/package.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/proxy/gateway-proxy.mjs +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/public/favicon.svg +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/public/worklets/pcm-capture-processor.js +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/components/ConnectionPanel.astro +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/components/ConversationView.astro +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/components/EventStream.astro +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/components/Footer.astro +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/components/Header.astro +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/components/MicIsland.astro +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/components/SignalMesh.astro +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/layouts/Layout.astro +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/pages/dev-connection.astro +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/pages/dev-events.astro +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/pages/dev-mic.astro +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/pages/index.astro +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/audio-graph.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/audio-playback.test.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/audio-playback.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/audio-test-doubles.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/connection-panel.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/conversation-view.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/demo-tools.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/dev-mic-harness.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/event-fixtures.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/event-icons.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/event-log.test.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/event-log.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/mic-capture.test.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/mic-capture.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/mic-island.test.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/mic-island.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/no-mic-mute.test.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/pcm-wire.test.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/pcm-wire.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/realtime-connection.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/scripts/realtime-events.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/src/styles/global.css +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/test/connection-panel.test.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/test/conversation-view.test.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/test/demo-tools.test.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/test/gateway-proxy.test.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/test/realtime-connection.test.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/tsconfig.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/site/vitest.config.ts +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/sonar-project.properties +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/conftest.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/deployments/fixture-card/Dockerfile.gateway +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/deployments/fixture-card/VARIATION.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/deployments/fixture-card/deployment.lock.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/deployments/fixture-card/docker-compose.override.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/deployments/fixture-card/docker-compose.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/deployments/fixture-card__fixture-shape/VARIATION.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/deployments/fixture-card__fixture-shape/deployment.lock.toml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/deployments/fixture-card__fixture-shape/docker-compose.override.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/deployments/fixture-card__fixture-shape/docker-compose.shape.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/deployments/fixture-card__fixture-shape/docker-compose.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/upgrade_compat/README.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/upgrade_compat/fleet/docker-compose.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/upgrade_compat/fleet/env.example +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/upgrade_compat/single/docker-compose.yml +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/fixtures/upgrade_compat/single/env.example +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/README.md +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/__init__.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/no-pool-gateway.json +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/overlays/audio-he-defaults.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/regen.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/gateway-only__base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/gateway-only__orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/gateway-only__spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/gateway-only__thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-associate__base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-associate__orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-associate__spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-associate__thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-cortex__base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-cortex__orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-cortex__spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-cortex__thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-decider__base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-decider__orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-decider__spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-decider__thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-embed__base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-embed__orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-embed__spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-embed__thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-lobe__base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-lobe__orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-lobe__spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-lobe__thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-small__base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-small__orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-small__spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/orin-small__thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/spark-innereye__base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/spark-innereye__orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/spark-innereye__spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/spark-innereye__thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/spark-lobe__base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/spark-lobe__orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/spark-lobe__spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/spark-lobe__thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/thor-lobe__base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/thor-lobe__orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/thor-lobe__spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/thor-lobe__thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/thor-muse__base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/thor-muse__orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/thor-muse__spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/thor-muse__thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/thor-worker__base.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/thor-worker__orin.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/thor-worker__spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/shapes/thor-worker__thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/spark.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/switch-plans.txt +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/template-defaults.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/goldens/thor.env +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_assess_perf.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_associate_compose.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_associate_exposure.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_associate_gateway_boundaries.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_associate_role.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_audio_he_compose_chain.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_audio_he_goldens.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_audio_he_stt_compose.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_audio_he_tts_compose.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_bench_compare.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_bench_report.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_benchmark_all_lobes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_benchmark_window.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_bluetts_dockerfile.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_bluetts_server.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_boundary_serves_only.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_buildability_guard.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_calibration_knee.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_capabilities_member_lanes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cat_probe.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cat_score.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_catalog.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_catalog_embed_lanes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_catalog_tiers.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_chatterbox_ml_dockerfile.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_chatterbox_multilingual_server.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_chatterbox_pcm16.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_chatterbox_readiness.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_clef_eval.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_clef_quant_index.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_clef_sets.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_benchmark_profiles.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_calibrate.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_capabilities.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_capabilities_replicas.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_eval.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_eval_cat.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_fleet.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_gateway_auth.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_introspection.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_lanes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_logs.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_measure.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_mesh.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_route.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_run.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_runtime.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_tunnel.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_up.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_up_replace.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_cli_wiring.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_client_reasoning_roundtrip.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_colleague_contract.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_comfyui_compose.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_comfyui_dockerfile.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_comfyui_volumes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_compose_chain.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_decider_render.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_decider_sidecar.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_decider_sidecar_vllm.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_deployment_lock.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_deployment_lock_doc.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_detect.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_doctor.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_doctor_audio_he.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_doctor_fix.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_doctor_lane_safety.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_doctor_machine_profile.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_doctor_mesh_retirement.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_doctor_passthrough.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_doctor_refresh_plugin.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_doctor_repin_version.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_doctor_role_command.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_doctor_role_probe.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_dropped_lobe_honesty.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_embed_finetune.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_embed_h2h.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_embed_lanes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_embed_lanes_import.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_embed_overlay.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_embed_sidecar.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_fleet_audio_vad_env.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_fleet_compose_mounts.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_fleet_minor.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_fleet_per_machine_knobs.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_fleet_secrets_env_file.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_fleet_template_gateway_env.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_audio_peer.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_audio_routing.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_auth.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_auth_rejection_log.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_busy_e2e.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_capabilities.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_config_proxy.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_config_replicas.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_config_wiring.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_decider.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_decider_mesh.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_embed_deep.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_embed_lanes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_env_passthrough_guard.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_feasibility.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_fleet_doc.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_force_strict.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_get_relay.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_hand_adapters.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_member_lanes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_no_lifecycle_actuator.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_peer_advert.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_peer_only_pool.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_pool.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_pool_capacity_wiring.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_pool_pressure.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_pool_saturation.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_proxy.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_readiness.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_realtime_ws.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_render_facade.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_replicas.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_routing.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_selection.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_serve_mesh_wiring.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_server.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_status.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_stream_termination.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gateway_tiers.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gemma4_compose.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gemma4_dockerfile.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gen_api_key.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_gitignore_convention.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_governor.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_init.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_init_audio_he.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_init_coresidency.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_init_from_lock.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_init_gpu_access.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_init_profile.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_init_shape.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_innereye_ui_port.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_lane_safety_compose.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_lane_safety_knobs_documented.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_lane_state_dir.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_lifecycle_cache_clear.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_listen_server_whisper.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_live_capabilities.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_lobes_compose_wrapper.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_lock_drift.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_logwrap_backoff.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_logwrap_held.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_logwrap_hold.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_machine_adapter.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_machines.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_config.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_flap_per_name.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_heartbeat_live.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_lanes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_member_lanes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_naming.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_roster.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_routes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_routing.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_routing_wiring.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_templates.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_verify_reason.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_mesh_wire.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_minor_client.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_minor_governance.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_minor_integration.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_minor_logprobs.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_nightly_migration_doc.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_no_config_byte_identity.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_orin_associate_boot_order.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_orin_associate_shape.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_orin_cortex_shape.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_orin_decider_shape.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_orin_embed_shape.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_orin_gateway_read_timeout.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_orin_lobe_shape.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_overview_live.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_parser.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_peer_referral.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_preserve_thinking_diagnostic.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_pressure.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_pressure_policy.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_profile_goldens.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_profile_render.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_profile_schema.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_profiles.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_proxy_integration.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_readiness_peer_probe.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_app_stream_structure.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_audio_env_coverage.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_audio_facade.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_continuation.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_conversation.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_conversation_stream.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_floor.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_floor_segments.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_generate_failure_surfacing.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_generate_stream_settings.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_he_accept_helpers.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_imports.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_parallel_tool_calls.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_pcm.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_protocol.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_readiness.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_segmenter.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_segmenter_eager.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_segmenter_level_gate.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_sentences.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_session.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_settings.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_smoke_helpers.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_speculation.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_stt_forward.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_timings.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_tts_gate.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_tts_text.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_turn.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_turn_stream.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_vocalize.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_realtime_wire.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_role_probes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_roles.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_roles_audio_advert.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_roles_audio_language.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_roles_proxied.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_roles_replicas.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_routing_models_member_lanes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_scan_deployment_secrets.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_senses_speculative_config.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_shape_budgets.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_shape_contract_matrix.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_shape_gateway_only.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_shape_goldens.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_shape_host_env_rerender.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_shapes.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_smoke_duo.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_spec_arms.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_spike_preflight.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_status_fleet.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_status_pressure.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_switch_bf16.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_switch_plan_goldens.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_templates_preserve_thinking.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_tier_request.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_tool_parser_plugin.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_tts_client_hebrew_diacritizer.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_tts_pause_and_truncation.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_up_no_deps_isolation.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_upgrade_compat.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_variation.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_variation_catalog.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_watcher.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_wheel_excludes_deployments.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_whisper_stt_dockerfile.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_worker_compose.py +0 -0
- {lobes_cli-0.89.1 → lobes_cli-0.89.2}/tests/test_worker_recipe_knobs.py +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": 1,
|
|
3
|
+
"state": "done",
|
|
4
|
+
"pr": 323,
|
|
5
|
+
"exit_code": 0,
|
|
6
|
+
"outcome": "clean",
|
|
7
|
+
"started_at": "2026-10-18T11:10:48.671094+00:00",
|
|
8
|
+
"finished_at": "2026-10-18T11:11:56.545796+00:00",
|
|
9
|
+
"briefing": "# `agex pr read` \u2014 PR #323\n\n- State: **OPEN** (fix: qwen3_coder_thinking passes reasoning=False on vLLM >= 0.30 (strict+thinking repeat) \u2014 #310 d5)\n- Branch: `fix/plugin-reasoning-gate` \u2192 `main`\n- URL: https://github.com/agentculture/lobes-cli/pull/323\n\n## CI checks\n\n| Check | Status | Conclusion |\n|---|---|---|\n| test | in_progress | \u2014 |\n| test | in_progress | \u2014 |\n| lint | completed | success |\n| secrets-scan | completed | success |\n| site-build | completed | success |\n| version-check | completed | success |\n| GitGuardian Security Checks | completed | success |\n\n\n## SonarCloud\n\n_Project not on SonarCloud (skipped)._\n\n## Comments\n\n- **[top-level]** `OriNachum`: /agentic_review\n- **[top-level]** `qodo-code-review[bot]`: <!-- qodo:billing-blocked -->\n\n**\u24d8 Qodo reviews are paused because the subscription is no longer active.** Ask your workspace admin to reactivate the subscription to resume reviews. [Manage...\n- **[top-level]** `qodo-code-review[bot]`: <!-- qodo:billing-blocked -->\n\n**\u24d8 Qodo reviews are paused because the subscription is no longer active.** Ask your workspace admin to reactivate the subscription to resume reviews. [Manage...\n\n\n## Qodo review\n\n_No Qodo review found._\n\n## Readiness\n\nAll required reviewers have posted feedback.\n\n---\n**Next step:** PR #323 is ready \u2014 wait for human merge.\n",
|
|
10
|
+
"gate_status": null,
|
|
11
|
+
"threads_unresolved": 0,
|
|
12
|
+
"ci_state": "ok"
|
|
13
|
+
}
|
|
@@ -239,3 +239,9 @@
|
|
|
239
239
|
{"ts":"2026-10-07T00:01:53.296199+00:00","type":"pr_webhook_posted","pr":293,"event":"pr_opened"}
|
|
240
240
|
{"ts":"2026-10-07T00:02:56.775080+00:00","type":"readiness_arrived","pr":293,"waited_secs":60}
|
|
241
241
|
{"ts":"2026-10-07T00:03:01.419898+00:00","type":"pr_read","pr":293,"comment_count":3,"threads_unresolved":0,"ci_state":"ok"}
|
|
242
|
+
{"ts":"2026-10-18T11:10:46.372078+00:00","type":"pr_opened","pr":323,"title":"fix: qwen3_coder_thinking passes reasoning=False on vLLM >= 0.30 (strict+thinking repeat) \u2014 #310 d5"}
|
|
243
|
+
{"ts":"2026-10-18T11:10:47.900887+00:00","type":"pr_review_triggered","pr":323,"command":"/agentic_review"}
|
|
244
|
+
{"ts":"2026-10-18T11:10:48.656513+00:00","type":"pr_webhook_posted","pr":323,"event":"pr_opened"}
|
|
245
|
+
{"ts":"2026-10-18T11:10:48.671713+00:00","type":"pr_await_detach_spawned","pr":323,"max_wait":1800}
|
|
246
|
+
{"ts":"2026-10-18T11:11:52.039761+00:00","type":"readiness_arrived","pr":323,"waited_secs":60}
|
|
247
|
+
{"ts":"2026-10-18T11:11:56.546218+00:00","type":"pr_await_detach_done","pr":323,"outcome":"clean","exit_code":0}
|
|
@@ -4,6 +4,13 @@ All notable changes to this project are documented here. The format is based on
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
|
|
5
5
|
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.89.2] - 2026-10-18
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- `qwen3_coder_thinking` plugin: on vLLM >= 0.30.0, which starts the structured-output grammar only after reasoning ends, the plugin now passes vLLM's own `reasoning` flag through (`False` on every engine measured) instead of deriving it per request, and logs which mode it chose at import. The thinking-prefixed grammar it built before masked EOS there, so a strict tool call with thinking repeated until `max_tokens` (measured on 0.30.0, 0.31.0 and 0.32.0rc1). Older engines keep the per-request derivation; an unreadable `vllm.__version__` refuses to boot (#310 deviation d5).
|
|
12
|
+
- `lobes assess --strict-tools`: a strict leg that hits `max_tokens` (`finish_reason=length`) is no longer counted as a clean call, so the matrix now catches the repeat-until-`max_tokens` failure.
|
|
13
|
+
|
|
7
14
|
## [0.89.1] - 2026-10-17
|
|
8
15
|
|
|
9
16
|
### Added
|
|
@@ -145,7 +145,13 @@ tool-parser plugin (`lobes/vllm_plugins/`, loaded via vLLM's own
|
|
|
145
145
|
`--tool-parser-plugin` file-path surface, cortex/main lane only — mirrors
|
|
146
146
|
the `preserve_thinking` #93 scoping) — it derives the grammar's `reasoning`
|
|
147
147
|
flag from the request's own `enable_thinking` instead of the hardcoded
|
|
148
|
-
`False`.
|
|
148
|
+
`False`. **That derivation is engine-dependent (#310 deviation d5,
|
|
149
|
+
2026-10-18):** vLLM 0.30.0 and later start the grammar only after reasoning
|
|
150
|
+
ends, so a thinking-prefixed grammar masks EOS and a strict call repeats until
|
|
151
|
+
`max_tokens`; on those engines the plugin passes vLLM's own `reasoning` flag
|
|
152
|
+
through (`False` on every engine measured) (measured on 0.30.0, 0.31.0 and 0.32.0rc1;
|
|
153
|
+
`docs/evidence/2026-10-18-accept-vllm-031-spark-cortex.txt`). The boundary is
|
|
154
|
+
the measured one, chosen by the plugin from `vllm.__version__`. A separate, default-off gateway knob (`GATEWAY_FORCE_STRICT_TOOLS`)
|
|
149
155
|
opts existing callers into strict schemas without a client-side change, with
|
|
150
156
|
a retry-without-strict fallback on a grammar-compile failure. See
|
|
151
157
|
`docs/qwen3.6-27b-text-nvfp4-mtp.md`, `docs/openai-api.md`, and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: lobes-cli
|
|
3
|
-
Version: 0.89.
|
|
3
|
+
Version: 0.89.2
|
|
4
4
|
Summary: lobes — run, assess, and switch the local vLLM model.
|
|
5
5
|
Project-URL: Homepage, https://github.com/agentculture/lobes-cli
|
|
6
6
|
Project-URL: Issues, https://github.com/agentculture/lobes-cli/issues
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
ACCEPTANCE — DGX Spark cortex on vLLM 0.31.0 (v0.31.0-ubuntu2404), with the d5 plugin fix
|
|
2
|
+
Issue #310 · plan vllm-0-31-0-fleet task t12 · 2026-10-18 · operator: lobes (Claude)
|
|
3
|
+
Continues docs/evidence/2026-10-17-accept-vllm-031-spark-cortex.txt (partial), whose three findings are closed:
|
|
4
|
+
(1) governor GPU loss -> explicit GPU devices (d2), governor re-attached and verified below;
|
|
5
|
+
(2) strict+thinking regression -> ROOT CAUSE is the lobes plugin, not the engine (d5), fixed and verified below;
|
|
6
|
+
(3) hot acpitz zones -> thermal shed raised to 98/94 C (c55), active on the re-imaged 0.89.1 gateway below.
|
|
7
|
+
Status: ACCEPTED on the official pin. Deviations d3 (split pin) and d4 (eugr exception) are withdrawn (d6).
|
|
8
|
+
|
|
9
|
+
STRICT + THINKING — ROOT CAUSE (d5)
|
|
10
|
+
Request: tools=[finish(summary: string), strict: true], tool_choice auto, temperature 0, max_tokens 2048,
|
|
11
|
+
thinking on (template default). Reproduced on three engines, 3/3 runs each, through cortex-spark:
|
|
12
|
+
v0.30.0-ubuntu2404 and v0.31.0-ubuntu2404 (2026-10-17/18, partial transcript): ~78 calls, finish=length.
|
|
13
|
+
eugr GB10 nightly (vLLM 0.32.0rc1.dev301, ghcr.io/spark-arena/dgx-vllm-eugr-nightly@sha256:cc47adc1...):
|
|
14
|
+
run 1: calls=78 finish=length completion_tokens=2048 first_args={"summary": "hello"}
|
|
15
|
+
run 2: calls=78 finish=length completion_tokens=2048
|
|
16
|
+
run 3: calls=77 finish=length completion_tokens=2048
|
|
17
|
+
Same image, DSpark speculative config removed (isolation): 78 / 78 / 78 calls, finish=length.
|
|
18
|
+
-> DSpark ruled out.
|
|
19
|
+
Offline (CPU, xgrammar matcher, Qwen3.8 tokenizer), the plugin's thinking-prefixed grammar
|
|
20
|
+
(tag "" ... "</think>", then "\n\n", then triggered_tags <tool_call>):
|
|
21
|
+
fed the full text (thinking + </think> + one call): EOS allowed after the call.
|
|
22
|
+
fed only the text AFTER </think> (one call): EOS NOT allowed; another <tool_call> allowed.
|
|
23
|
+
Same on all four combinations of {nightly grammar, new grammar} x {nightly xgrammar, eugr xgrammar}.
|
|
24
|
+
Reading: vLLM >= 0.30 starts the structured-output grammar only after reasoning ends, so the matcher sits
|
|
25
|
+
inside the plugin's thinking tag, accepts each tool call as thinking text, and masks EOS until max_tokens.
|
|
26
|
+
(The 2026-10-18 handoff's "grammar identical across engines" was wrong: the new engines add
|
|
27
|
+
excludes [<think>, </think>] to the thinking block's any_text. It does not change the result; lapse l11.)
|
|
28
|
+
Live test of the fix: the deployed plugin copy hand-patched to pass reasoning=False (backup
|
|
29
|
+
qwen3_thinking_tool_parser.py.bak-*-reasonfalse), eugr image:
|
|
30
|
+
DSpark off: 1 / 1 / 1 calls, finish=tool_calls, 45 tokens each; reasoning kept (72 chars)
|
|
31
|
+
DSpark on: 1 / 1 / 1 calls, finish=tool_calls, 65 tokens each
|
|
32
|
+
enforcement control, summary maxLength=3, prompt demands a 43-char string:
|
|
33
|
+
strict=True -> {"summary": "the"} (grammar enforced)
|
|
34
|
+
strict=False -> {"summary": "the quick brown fox jumps over the lazy dog"} (unconstrained)
|
|
35
|
+
(an enum control did not discriminate: the model obeyed the enum with and without strict)
|
|
36
|
+
|
|
37
|
+
ENGINE COMPARISON (cortex, DSpark n=7, 262144 window, util 0.58; lobes benchmark 1000 in / 1000 out)
|
|
38
|
+
eugr 0.32.0rc1.dev301: decode 17.2 / 17.2 tok/s, prefill 887 tok in 1.12 s (1 run; hottest zone 87.1 C)
|
|
39
|
+
official 0.31.0: decode 15.9 / 15.9 tok/s, prefill 887 tok in 0.83 s (2 runs, identical; 85.2 C)
|
|
40
|
+
spark2 nightly baseline (t11): 17.0 / 16.9 tok/s.
|
|
41
|
+
0.31.0 = ~92% of eugr, ~94% of the nightly baseline. The 2026-10-17 0.31.0 run measured 14.0 / 14.4; that does
|
|
42
|
+
not reproduce today and the difference is not isolated (that run's zones idled near 88 C; today's peaked 85 C).
|
|
43
|
+
Operator decision (d6): official 0.31.0 on the Sparks too; eugr stays a measured, unadopted candidate.
|
|
44
|
+
|
|
45
|
+
ACCEPTANCE ON 0.31.0 (VLLM_NIGHTLY_IMAGE=vllm/vllm-openai@sha256:3fb023cc..., plugin patched per d5)
|
|
46
|
+
boot: `lobes up cortex --apply` 04:2xZ, healthy 04:25:32Z, engine (v0.31.0), KV cache 754,621 tokens.
|
|
47
|
+
strict+thinking replay: 1 / 1 / 1 calls, finish=tool_calls, 65 tokens each.
|
|
48
|
+
strict, thinking off: 1 call, 26 tokens. non-strict + thinking: 1 call, reasoning 204 chars.
|
|
49
|
+
maxLength=3 control: strict -> "the"; non-strict -> the full 43-char string.
|
|
50
|
+
lobes assess --tools: 17*23=391 PASS, train 145 min PASS, reasoning field present, tool_choice:auto PASS.
|
|
51
|
+
lobes assess --strict-tools: strict_thinking PASS, strict_nothink PASS, matrix PASS.
|
|
52
|
+
lobes assess --preserve-thinking: +47 prompt tokens -> preserve_thinking LIVE.
|
|
53
|
+
vision colour controls (solid PNGs, 64 and 224 px, red/blue/green), gateway cortex-spark and lane direct: 12/12.
|
|
54
|
+
|
|
55
|
+
GOVERNOR (d2)
|
|
56
|
+
vllm-primary devices: /dev/nvidia0 /dev/nvidiactl /dev/nvidia-modeset /dev/nvidia-uvm /dev/nvidia-uvm-tools.
|
|
57
|
+
`lobes governor run --container model-gear-vllm-primary --apply --bands "92:12,95:8,98:4" --pause-c 101
|
|
58
|
+
--resume-c 95` (lobes 0.89.1): first tick 04:53:48Z cpus=16 tz=62.4C; container NanoCpus=16000000000 after the
|
|
59
|
+
docker update; a fresh `nvidia-smi` exec inside the lane still reports NVIDIA GB10; /health 200.
|
|
60
|
+
It runs as a session background process, not a durable unit (follow-up).
|
|
61
|
+
|
|
62
|
+
GATEWAY
|
|
63
|
+
`lobes doctor --repin-version --apply`: MODEL_GEAR_VERSION 0.86.0.dev642 -> 0.89.1.
|
|
64
|
+
`lobes up gateway --build --apply`: chain kept docker-compose.audio.yml; healthy; lobes-cli 0.89.1 in-container;
|
|
65
|
+
LOBES_THERMAL_SHED_C=98, LOBES_THERMAL_RESUME_C=94; AUDIO_URL set; /capabilities cortex ready=true.
|
|
66
|
+
First mesh reannounce reported "Connection reset by peer"; afterwards cortex-spark, cortex-spark2 and plain
|
|
67
|
+
cortex all answered 200 through this gateway.
|
|
68
|
+
|
|
69
|
+
END STATE (04:5xZ): Spark cortex on official v0.31.0-ubuntu2404 with DSpark, explicit GPU devices, governor
|
|
70
|
+
attached, hand-patched plugin (reasoning=False; the packaged engine-aware fix lands in R2, t14), gateway 0.89.1
|
|
71
|
+
with the 98/94 C shed. innereye down by design. spark2 untouched (nightly) until t13.
|
|
@@ -237,7 +237,24 @@ heavier co-resident agents need the headroom.
|
|
|
237
237
|
rebuild (the pin is unchanged) and no served-model change — this
|
|
238
238
|
constrains *around* the template drift, it does not fix the drift itself
|
|
239
239
|
(out of scope here; filing the `reasoning=False` hardcode upstream is a
|
|
240
|
-
tracked follow-up).
|
|
240
|
+
tracked follow-up).
|
|
241
|
+
|
|
242
|
+
**The derivation is engine-dependent (#310 deviation d5, 2026-10-18).**
|
|
243
|
+
It is right only on an engine that applies the grammar from the first
|
|
244
|
+
generated token, which the nightlies did. vLLM 0.30.0 and later start the
|
|
245
|
+
grammar only **after** reasoning ends. A thinking-prefixed grammar then
|
|
246
|
+
sits inside its thinking tag: every tool call is accepted as thinking
|
|
247
|
+
text, EOS stays masked, and a strict request repeats the call until
|
|
248
|
+
`max_tokens` (about 78 calls in 2048 tokens, on 0.30.0, 0.31.0 and
|
|
249
|
+
0.32.0rc1, with and without DSpark). On those engines the plugin passes
|
|
250
|
+
vLLM's own `reasoning` flag through (`False` on every engine measured),
|
|
251
|
+
chosen from `vllm.__version__` at import and logged; an unreadable version
|
|
252
|
+
refuses to boot. A `0.29.x` dev build is classified as pre-0.30. Measured on the DGX Spark:
|
|
253
|
+
one call with reasoning kept, and a `maxLength=3` control still enforced
|
|
254
|
+
under strict (`docs/evidence/2026-10-18-accept-vllm-031-spark-cortex.txt`).
|
|
255
|
+
The 0.30.0 boundary is the measured one, not a proven upstream change
|
|
256
|
+
point: 0.27-0.29 are unmeasured and keep the derivation, and the vLLM
|
|
257
|
+
change behind it is not isolated. A companion, independent gateway knob
|
|
241
258
|
(`GATEWAY_FORCE_STRICT_TOOLS`) that injects `strict: true` for existing
|
|
242
259
|
callers who don't set it themselves is documented in
|
|
243
260
|
[`docs/openai-api.md`](openai-api.md) and
|
|
@@ -433,7 +433,9 @@ def _strict_matrix_leg(url: str, model: str, *, strict: bool, enable_thinking: b
|
|
|
433
433
|
|
|
434
434
|
A CLEAN call means: at least one ``tool_calls`` entry, every name one of
|
|
435
435
|
the offered tools (a parser-salvage mangle shows up as e.g.
|
|
436
|
-
``'finish"'``),
|
|
436
|
+
``'finish"'``), every ``arguments`` string parsing as a JSON object, and a
|
|
437
|
+
``finish_reason`` other than ``length`` (a call repeated until
|
|
438
|
+
``max_tokens`` is well-formed call by call, #310 d5).
|
|
437
439
|
The baseline (non-strict) leg only requires an answer — unconstrained
|
|
438
440
|
decoding is allowed to drift; that is exactly why the strict legs exist.
|
|
439
441
|
"""
|
|
@@ -449,14 +451,23 @@ def _strict_matrix_leg(url: str, model: str, *, strict: bool, enable_thinking: b
|
|
|
449
451
|
choice = (d.get("choices") or [{}])[0]
|
|
450
452
|
msg = choice.get("message") or {}
|
|
451
453
|
names, args_ok = _parse_leg_tool_calls(msg)
|
|
452
|
-
|
|
454
|
+
finish = choice.get("finish_reason")
|
|
455
|
+
# A strict leg that ran out of tokens is not clean even when every call
|
|
456
|
+
# is well-formed: that is the #310 d5 repeat-until-max_tokens failure.
|
|
457
|
+
ran_out = finish == "length"
|
|
458
|
+
clean = bool(names) and args_ok and all(n in offered for n in names) and not ran_out
|
|
453
459
|
answered = bool(names) or bool(msg.get("content"))
|
|
460
|
+
error = (
|
|
461
|
+
f"hit max_tokens with {len(names)} tool call(s) (finish_reason=length)"
|
|
462
|
+
if strict and ran_out
|
|
463
|
+
else None
|
|
464
|
+
)
|
|
454
465
|
return {
|
|
455
466
|
"ok": clean if strict else answered,
|
|
456
467
|
"clean": clean,
|
|
457
468
|
"tool_calls": names,
|
|
458
|
-
"finish":
|
|
459
|
-
"error":
|
|
469
|
+
"finish": finish,
|
|
470
|
+
"error": error,
|
|
460
471
|
}
|
|
461
472
|
except (KeyError, IndexError, TypeError, AttributeError) as exc:
|
|
462
473
|
return _leg_error(f"unexpected response shape ({exc.__class__.__name__}: {exc})")
|
|
@@ -189,6 +189,8 @@ services:
|
|
|
189
189
|
# registers this name from the mounted file. Falls back to plain
|
|
190
190
|
# upstream qwen3_coder if an operator overrides PRIMARY_TOOL_CALL_PARSER
|
|
191
191
|
# in .env (e.g. to run a non-thinking primary here).
|
|
192
|
+
# On vLLM >= 0.30.0 the grammar starts only after reasoning ends, so the
|
|
193
|
+
# plugin passes vLLM's own reasoning flag through instead (#310 d5).
|
|
192
194
|
#
|
|
193
195
|
# --enable-prefix-caching Mamba prefix caching is experimental for this
|
|
194
196
|
# hybrid 27B; functional, watch for drift.
|
|
@@ -25,9 +25,11 @@ Public modules:
|
|
|
25
25
|
|
|
26
26
|
- :mod:`lobes.vllm_plugins.qwen3_thinking_tool_parser` — registers the
|
|
27
27
|
``qwen3_coder_thinking`` tool-call parser (a reasoning-aware variant of the
|
|
28
|
-
upstream ``qwen3_coder`` parser) for the cortex/main generate lane
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
upstream ``qwen3_coder`` parser) for the cortex/main generate lane. On an
|
|
29
|
+
engine that applies the grammar from the first token it derives the
|
|
30
|
+
structural-tag grammar's ``reasoning`` flag from the request's own effective
|
|
31
|
+
``enable_thinking`` state; on vLLM >= 0.30.0, which starts the grammar only
|
|
32
|
+
after reasoning ends, it passes vLLM's own flag through (#310 d5).
|
|
31
33
|
|
|
32
34
|
See ``docs/`` for the full story on why the served vLLM build's hardcoded
|
|
33
35
|
``reasoning=False`` breaks strict tool calling for a thinking model.
|
|
@@ -21,13 +21,26 @@ Qwen3.6 thinking model that produces a grammar that cannot accept the
|
|
|
21
21
|
``reasoning=True`` fixes the grammar, but then REQUIRES a closing
|
|
22
22
|
``</think>`` in the output — so ``reasoning`` must track whether the request
|
|
23
23
|
actually has thinking enabled, not just be flipped on unconditionally.
|
|
24
|
+
|
|
25
|
+
That per-request derivation is right only on an engine that applies the
|
|
26
|
+
grammar from the first generated token. vLLM 0.30.0 and later (measured on
|
|
27
|
+
0.30.0, 0.31.0 and 0.32.0rc1, #310 deviation d5) start it only AFTER reasoning
|
|
28
|
+
ends, so a thinking-prefixed grammar sits inside its thinking tag forever:
|
|
29
|
+
every tool call is accepted as thinking text, EOS stays masked, and a strict
|
|
30
|
+
request repeats the call until ``max_tokens``. There the plugin passes
|
|
31
|
+
``reasoning=False`` for every request. The boundary is the measured one, not a
|
|
32
|
+
proven upstream change point: 0.27-0.29 are unmeasured and keep the
|
|
33
|
+
derivation, and the vLLM change behind it is not isolated.
|
|
24
34
|
"""
|
|
25
35
|
|
|
26
36
|
from __future__ import annotations
|
|
27
37
|
|
|
28
38
|
import inspect
|
|
39
|
+
import logging
|
|
40
|
+
import re
|
|
29
41
|
from typing import Any
|
|
30
42
|
|
|
43
|
+
import vllm
|
|
31
44
|
from vllm.tool_parsers import ToolParserManager
|
|
32
45
|
from vllm.tool_parsers import qwen3_engine_tool_parser as _qwen3_engine_tool_parser_module
|
|
33
46
|
|
|
@@ -63,6 +76,45 @@ def effective_reasoning(request: Any) -> bool:
|
|
|
63
76
|
return bool(chat_template_kwargs["enable_thinking"])
|
|
64
77
|
|
|
65
78
|
|
|
79
|
+
#: First engine measured to start the structured-output grammar after reasoning.
|
|
80
|
+
_POST_REASONING_GRAMMAR_FROM = (0, 30)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def grammar_starts_after_reasoning(version: str) -> bool:
|
|
84
|
+
"""Return whether vLLM ``version`` applies the grammar only after reasoning.
|
|
85
|
+
|
|
86
|
+
Parses the leading ``major.minor`` (``"0.31.0+cu130"``, ``"0.31+cu130"``,
|
|
87
|
+
``"0.30rc1"``, ``"0.32.0rc1.dev301+g..."`` and ``"0.26.1rc1.dev942+g..."``
|
|
88
|
+
all parse) and raises ``RuntimeError`` on anything else, so an engine whose
|
|
89
|
+
version cannot be read fails at boot instead of silently getting the wrong
|
|
90
|
+
grammar. A dev build is classified by its base release: a ``0.29.x`` nightly
|
|
91
|
+
keeps the per-request derivation even if it already carries the (not
|
|
92
|
+
isolated) upstream change, which is why the chosen mode is logged at import.
|
|
93
|
+
"""
|
|
94
|
+
match = re.match(r"(\d+)\.(\d+)(?!\d)", version or "")
|
|
95
|
+
if match is None:
|
|
96
|
+
raise RuntimeError(
|
|
97
|
+
"qwen3_thinking_tool_parser: cannot read the vLLM version "
|
|
98
|
+
f"({version!r}), so it cannot tell whether the engine applies the "
|
|
99
|
+
"strict-tool grammar before or after reasoning; refusing to load."
|
|
100
|
+
)
|
|
101
|
+
return (int(match.group(1)), int(match.group(2))) >= _POST_REASONING_GRAMMAR_FROM
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
_VLLM_VERSION = getattr(vllm, "__version__", "")
|
|
105
|
+
_GRAMMAR_AFTER_REASONING = grammar_starts_after_reasoning(_VLLM_VERSION)
|
|
106
|
+
|
|
107
|
+
logging.getLogger("vllm.lobes.qwen3_coder_thinking").info(
|
|
108
|
+
"qwen3_coder_thinking: vLLM %s -> structural-tag reasoning flag %s",
|
|
109
|
+
_VLLM_VERSION,
|
|
110
|
+
(
|
|
111
|
+
"passed through from vLLM (grammar starts after reasoning)"
|
|
112
|
+
if _GRAMMAR_AFTER_REASONING
|
|
113
|
+
else "derived per request from enable_thinking"
|
|
114
|
+
),
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
|
|
66
118
|
# --- Loud import-surface assert --------------------------------------------
|
|
67
119
|
# Pinned to the get_structural_tag surface of the nightly (0.26.1rc1:
|
|
68
120
|
# `reasoning` only) and vLLM 0.31.0 (`reasoning` + `strict_level`), both in
|
|
@@ -128,16 +180,20 @@ _UNSET: Any = object()
|
|
|
128
180
|
|
|
129
181
|
@ToolParserManager.register_module("qwen3_coder_thinking")
|
|
130
182
|
class Qwen3ThinkingToolParser(Qwen3EngineToolParser):
|
|
131
|
-
"""``Qwen3EngineToolParser`` with
|
|
183
|
+
"""``Qwen3EngineToolParser`` with an engine- and request-aware ``reasoning`` flag.
|
|
132
184
|
|
|
133
185
|
vLLM always calls ``get_structural_tag(request, reasoning=False)``
|
|
134
|
-
(abstract_parser._apply_structural_tag)
|
|
135
|
-
|
|
136
|
-
thinking
|
|
137
|
-
|
|
138
|
-
|
|
186
|
+
(abstract_parser._apply_structural_tag). On an engine that applies the
|
|
187
|
+
grammar from the first token that breaks strict tool calling for a
|
|
188
|
+
thinking model, so ``reasoning`` tracks the request's own thinking state.
|
|
189
|
+
On an engine that starts the grammar after reasoning (vLLM >= 0.30.0) the
|
|
190
|
+
grammar must not include the thinking block, so the caller's own
|
|
191
|
+
``reasoning`` (``False`` from every engine measured) is passed through.
|
|
192
|
+
0.31.0 also passes ``strict_level``; it is forwarded untouched when present
|
|
193
|
+
and left out when absent (nightly parent has no such parameter).
|
|
139
194
|
"""
|
|
140
195
|
|
|
141
196
|
def get_structural_tag(self, request, *, reasoning: bool = False, strict_level=_UNSET):
|
|
142
197
|
extra = {} if strict_level is _UNSET else {"strict_level": strict_level}
|
|
143
|
-
|
|
198
|
+
derived = reasoning if _GRAMMAR_AFTER_REASONING else effective_reasoning(request)
|
|
199
|
+
return super().get_structural_tag(request, reasoning=derived, **extra)
|
|
@@ -297,6 +297,36 @@ def test_strict_matrix_fails_on_mangled_strict_call(monkeypatch) -> None:
|
|
|
297
297
|
assert r["legs"]["strict_thinking"]["clean"] is False
|
|
298
298
|
|
|
299
299
|
|
|
300
|
+
def _repeated_calls_response(n: int = 78):
|
|
301
|
+
# The #310 d5 failure shape: a valid call repeated until max_tokens.
|
|
302
|
+
call = {"type": "function", "function": {"name": "finish", "arguments": '{"summary": "hello"}'}}
|
|
303
|
+
return {
|
|
304
|
+
"choices": [
|
|
305
|
+
{
|
|
306
|
+
"message": {"content": None, "tool_calls": [call] * n},
|
|
307
|
+
"finish_reason": "length",
|
|
308
|
+
}
|
|
309
|
+
]
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
def test_strict_matrix_fails_when_a_strict_leg_runs_to_max_tokens(monkeypatch) -> None:
|
|
314
|
+
# Every call is well-formed, so only finish_reason == "length" exposes it.
|
|
315
|
+
post, _ = _matrix_post(
|
|
316
|
+
{
|
|
317
|
+
(False, None): _clean_call_response(),
|
|
318
|
+
(True, None): _repeated_calls_response(),
|
|
319
|
+
(True, False): _clean_call_response(),
|
|
320
|
+
}
|
|
321
|
+
)
|
|
322
|
+
monkeypatch.setattr(A, "_post", post)
|
|
323
|
+
r = A.run_strict_tool_matrix("http://localhost:8001", "cortex")
|
|
324
|
+
assert r["passed"] is False
|
|
325
|
+
assert r["legs"]["strict_thinking"]["clean"] is False
|
|
326
|
+
assert r["legs"]["strict_thinking"]["finish"] == "length"
|
|
327
|
+
assert "max_tokens" in (r["legs"]["strict_thinking"]["error"] or "")
|
|
328
|
+
|
|
329
|
+
|
|
300
330
|
def test_strict_matrix_cli_exit_codes(monkeypatch, capsys) -> None:
|
|
301
331
|
post, _ = _matrix_post(
|
|
302
332
|
{
|
|
@@ -162,12 +162,22 @@ class _FakeToolParserManager:
|
|
|
162
162
|
return decorator
|
|
163
163
|
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
#: The served nightly's version string — an engine that applies the grammar from
|
|
166
|
+
#: the first token, so the plugin must derive ``reasoning`` per request.
|
|
167
|
+
NIGHTLY_VERSION = "0.26.1rc1.dev942+g4d2a1b0c3"
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def _install_stub_vllm(
|
|
171
|
+
get_structural_tag, *, define_class: bool = True, version: str | None = NIGHTLY_VERSION
|
|
172
|
+
) -> _FakeToolParserManager:
|
|
166
173
|
"""Inject fake ``vllm``/``vllm.tool_parsers``/``...qwen3_engine_tool_parser``
|
|
167
174
|
modules into ``sys.modules`` and return the fake ToolParserManager class
|
|
168
|
-
used, so callers can inspect ``.registered``.
|
|
175
|
+
used, so callers can inspect ``.registered``. ``version`` becomes
|
|
176
|
+
``vllm.__version__`` (``None`` leaves it unset).
|
|
169
177
|
"""
|
|
170
178
|
vllm_mod = types.ModuleType("vllm")
|
|
179
|
+
if version is not None:
|
|
180
|
+
vllm_mod.__version__ = version
|
|
171
181
|
tool_parsers_mod = types.ModuleType("vllm.tool_parsers")
|
|
172
182
|
qwen3_engine_mod = types.ModuleType("vllm.tool_parsers.qwen3_engine_tool_parser")
|
|
173
183
|
|
|
@@ -371,3 +381,108 @@ def test_import_surface_assert_raises_on_unknown_required_keyword(clean_vllm_stu
|
|
|
371
381
|
|
|
372
382
|
with pytest.raises(RuntimeError, match="mode"):
|
|
373
383
|
importlib.import_module(PLUGIN_MODULE_NAME)
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
# ---------------------------------------------------------------------------
|
|
387
|
+
# Engines that start the grammar only after reasoning ends (vLLM >= 0.30.0)
|
|
388
|
+
# ---------------------------------------------------------------------------
|
|
389
|
+
# Measured 2026-10-18 on the DGX Spark (#310 deviation d5,
|
|
390
|
+
# docs/evidence/2026-10-18-accept-vllm-031-spark-cortex.txt): on 0.30.0, 0.31.0
|
|
391
|
+
# and 0.32.0rc1 a thinking-prefixed grammar makes strict tool calls repeat until
|
|
392
|
+
# max_tokens; reasoning=False gives one call with reasoning kept.
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
@pytest.mark.parametrize(
|
|
396
|
+
"version",
|
|
397
|
+
[
|
|
398
|
+
"0.30.0",
|
|
399
|
+
"0.31.0",
|
|
400
|
+
"0.31.0+cu130",
|
|
401
|
+
"0.32.0rc1.dev301+g1ac942555.d20261016",
|
|
402
|
+
"1.0.0",
|
|
403
|
+
"0.30rc1",
|
|
404
|
+
"0.31+cu130",
|
|
405
|
+
"0.30.dev1",
|
|
406
|
+
],
|
|
407
|
+
)
|
|
408
|
+
@pytest.mark.parametrize("thinking", [None, {"enable_thinking": True}, {"enable_thinking": False}])
|
|
409
|
+
def test_post_reasoning_engine_always_gets_reasoning_false(
|
|
410
|
+
clean_vllm_stubs, version, thinking
|
|
411
|
+
) -> None:
|
|
412
|
+
calls = []
|
|
413
|
+
|
|
414
|
+
def fake_get_structural_tag(self, request, *, reasoning: bool = False, strict_level="auto"):
|
|
415
|
+
calls.append(reasoning)
|
|
416
|
+
|
|
417
|
+
_install_stub_vllm(fake_get_structural_tag, version=version)
|
|
418
|
+
mod = importlib.import_module(PLUGIN_MODULE_NAME)
|
|
419
|
+
|
|
420
|
+
mod.Qwen3ThinkingToolParser().get_structural_tag(
|
|
421
|
+
_AttrRequest(chat_template_kwargs=thinking), reasoning=False
|
|
422
|
+
)
|
|
423
|
+
|
|
424
|
+
assert calls == [False]
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
@pytest.mark.parametrize(
|
|
428
|
+
"version", [NIGHTLY_VERSION, "0.23.1rc1.dev672+g93d8f834d", "0.29.9", "0.29.1rc1.dev500+gabc"]
|
|
429
|
+
)
|
|
430
|
+
def test_pre_030_engine_keeps_per_request_derivation(clean_vllm_stubs, version) -> None:
|
|
431
|
+
calls = []
|
|
432
|
+
|
|
433
|
+
def fake_get_structural_tag(self, request, *, reasoning: bool = False):
|
|
434
|
+
calls.append(reasoning)
|
|
435
|
+
|
|
436
|
+
_install_stub_vllm(fake_get_structural_tag, version=version)
|
|
437
|
+
mod = importlib.import_module(PLUGIN_MODULE_NAME)
|
|
438
|
+
parser = mod.Qwen3ThinkingToolParser()
|
|
439
|
+
|
|
440
|
+
parser.get_structural_tag(_AttrRequest(chat_template_kwargs=None), reasoning=False)
|
|
441
|
+
parser.get_structural_tag(
|
|
442
|
+
_AttrRequest(chat_template_kwargs={"enable_thinking": False}), reasoning=False
|
|
443
|
+
)
|
|
444
|
+
|
|
445
|
+
assert calls == [True, False]
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
@pytest.mark.parametrize("version", [None, "", "nightly", "v0.31.0"])
|
|
449
|
+
def test_import_refuses_an_unreadable_engine_version(clean_vllm_stubs, version) -> None:
|
|
450
|
+
def fake_get_structural_tag(self, request, *, reasoning: bool = False):
|
|
451
|
+
return None
|
|
452
|
+
|
|
453
|
+
_install_stub_vllm(fake_get_structural_tag, version=version)
|
|
454
|
+
|
|
455
|
+
with pytest.raises(RuntimeError, match="version"):
|
|
456
|
+
importlib.import_module(PLUGIN_MODULE_NAME)
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
def test_post_reasoning_engine_passes_the_callers_reasoning_through(clean_vllm_stubs) -> None:
|
|
460
|
+
# vLLM passes reasoning=False today; if a later engine passes True on
|
|
461
|
+
# purpose, the plugin must not hardcode it back to False.
|
|
462
|
+
calls = []
|
|
463
|
+
|
|
464
|
+
def fake_get_structural_tag(self, request, *, reasoning: bool = False, strict_level="auto"):
|
|
465
|
+
calls.append(reasoning)
|
|
466
|
+
|
|
467
|
+
_install_stub_vllm(fake_get_structural_tag, version="0.31.0")
|
|
468
|
+
mod = importlib.import_module(PLUGIN_MODULE_NAME)
|
|
469
|
+
parser = mod.Qwen3ThinkingToolParser()
|
|
470
|
+
|
|
471
|
+
parser.get_structural_tag(_AttrRequest(chat_template_kwargs=None), reasoning=True)
|
|
472
|
+
parser.get_structural_tag(_AttrRequest(chat_template_kwargs=None))
|
|
473
|
+
|
|
474
|
+
assert calls == [True, False]
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
def test_plugin_logs_which_grammar_mode_it_chose(clean_vllm_stubs, caplog) -> None:
|
|
478
|
+
def fake_get_structural_tag(self, request, *, reasoning: bool = False):
|
|
479
|
+
return None
|
|
480
|
+
|
|
481
|
+
_install_stub_vllm(fake_get_structural_tag, version=NIGHTLY_VERSION)
|
|
482
|
+
with caplog.at_level("INFO"):
|
|
483
|
+
importlib.import_module(PLUGIN_MODULE_NAME)
|
|
484
|
+
|
|
485
|
+
assert any(
|
|
486
|
+
NIGHTLY_VERSION in r.getMessage() and "per request" in r.getMessage()
|
|
487
|
+
for r in caplog.records
|
|
488
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|