fix(doctor): migrate invalid thinking formats#84626
Conversation
|
Codex review: needs maintainer review before merge. Workflow note: Future ClawSweeper reviews update this same comment in place. How this review workflow works
Summary Reproducibility: yes. Current main rejects unrecognized PR rating What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. Real behavior proof Risk before merge
Maintainer options:
Next step before merge Security Review detailsBest possible solution: Land the focused migration after required checks and maintainer review, keeping the shared Do we have a high-confidence way to reproduce the issue? Yes. Current main rejects unrecognized Is this the best way to solve the issue? Yes. Removing only invalid optional Label justifications:
What I checked:
Likely related people:
Codex review notes: model gpt-5.5, reasoning high; reviewed against d5cc0d53b7e3. |
|
ClawSweeper PR egg ✨ Hatched: 🥚 common Mossy Lint Imp Hatch commandComment Hatchability rules:
Rarity: 🥚 common. What is this egg doing here?
|
f6220f5 to
47b52b7
Compare
47b52b7 to
61a6f73
Compare
* fix(errors): dedupe identical messages when traversing error .cause chain (openclaw#84556) Merged via squash. Prepared head SHA: 46aa27f Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com> Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com> Reviewed-by: @altaywtf * fix(cli): gate exported subcli descriptors (openclaw#84519) Summary: - This PR filters exported sub-CLI descriptors through the private-QA gate, centralizes that filter, adds regr ... ge, and carries small validation repairs in workspace glob and tunnel-timeout tests plus a changelog entry. - Reproducibility: yes. Current-main source shows the raw SUB_CLI_DESCRIPTORS export can include qa while the helper surfaces filter it, and src/cli/argv.ts consumes that export for root command policy. Automerge notes: - PR branch already contained follow-up commit before automerge: fix(cli): gate exported subcli descriptors - PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8451… Validation: - ClawSweeper review passed for head ba197a6. - Required merge gates passed before the squash merge. Prepared head SHA: ba197a6 Review: openclaw#84519 (comment) Co-authored-by: Zhaocun <zhaocunsun@gmail.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com> * fix(doctor): migrate invalid thinking formats (openclaw#84626) * fix(cron-cli): bound loadCronJobForShow pagination (openclaw#83856) (openclaw#83989) Summary: - Adds a 50-page and advancing-`nextOffset` guard to `loadCronJobForShow`, exports that helper for regression tests, and adds an unreleased changelog entry. - Reproducibility: yes. Current main is source-reproducible because `loadCronJobForShow` loops while `hasMore` ... ed numeric `nextOffset`; the PR discussion also includes terminal before/after proof for the same CLI path. Automerge notes: - No ClawSweeper repair was needed after automerge opt-in. Validation: - ClawSweeper review passed for head 7828b4b. - Required merge gates passed before the squash merge. Prepared head SHA: 7828b4b Review: openclaw#83989 (comment) Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com> Approved-by: takhoffman Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com> * fix(config): accept execApprovals.enabled="auto" in zod schema * fix: honour tool error suppression for mutating tools (openclaw#81561) Merged via squash. Prepared head SHA: 7462a86 Co-authored-by: moeedahmed <5780040+moeedahmed@users.noreply.github.com> Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com> Reviewed-by: @jalehman * Add OpenRouter provider routing params (openclaw#84579) Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com> * Preserve AGENTS.md policy during bootstrap truncation (openclaw#82921) Fixes openclaw#82920 * chore: regenerate base config schema Updated after MODEL_THINKING_FORMATS changed from z.union literals to z.enum, and session/session.agentToAgent gained detailed help text. * Revert "Add OpenRouter provider routing params (openclaw#84579)" This reverts commit 53254dc. --------- Co-authored-by: Dallin Romney <dallinromney@gmail.com> Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com> Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com> Co-authored-by: Zhaocun Sun <zhaocunsun@gmail.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com> Co-authored-by: Gio Della-Libera <giodl73@gmail.com> Co-authored-by: yaoyi1222 <yaoyi_1222@163.com> Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com> Co-authored-by: Moeed Ahmed <drmoeedahmed@gmail.com> Co-authored-by: moeedahmed <5780040+moeedahmed@users.noreply.github.com> Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com> Co-authored-by: Alex Knight <aknight@atlassian.com> Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com> Co-authored-by: Galin Iliev <iliev@galcho.com>
Summary
Fixes #77803.
openclaw doctor --fixnow removes unrecognizedmodels.providers.*.models[*].compat.thinkingFormatvalues from provider model entries so stale model config can validate after upgrade. The migration is provider-generic: it was reported with Bailian config, but the stored config shape is shared by all configured model providers.This also centralizes the supported
thinkingFormatliterals insrc/config/types.models.tsand reuses that contract from:Behavior addressed
doctor --fixpreviously detected the invalid config but had no migration for stalecompat.thinkingFormatvalues, so writeback could still fail validation. After this patch, only unrecognized optionalcompat.thinkingFormatvalues are deleted and the rest ofcompatis preserved.Real environment tested
Local WSL source checkout, Node 24, with a temporary
OPENCLAW_CONFIG_PATHandOPENCLAW_STATE_DIR.Exact steps or command run after this patch
Evidence after fix
openclaw doctor --fixprinted:The repaired config preserved
supportsTools: true, removed only the invalid"bailian-legacy"value, and preserved the valid"qwen"value:{ "id": "qwen-legacy", "name": "Qwen Legacy", "compat": { "supportsTools": true } }{ "id": "qwen-valid", "name": "Qwen Valid", "compat": { "thinkingFormat": "qwen" } }Observed result after fix
The real
doctor --fixCLI path completed successfully and wrote the migrated config. The invalidcompat.thinkingFormatno longer blocks validation/writeback, while valid values remain intact.What was not tested
I did not reproduce on the reporter's Windows 10 host or with their exact private config, because the issue did not include the literal old Bailian value. The test and CLI proof exercise the same persisted config path with a representative invalid literal.
Verification
Results:
doctor --fixproof passed and wrote the repaired config.git diff --checkpassed.isModelThinkingFormattype guard. Rerun was clean: no accepted/actionable findings.Additional typecheck note:
This currently fails on
origin/main-adjacent status test data, unrelated to this patch: