Skip to content

fix(sessions): honor explicit default model pins#85643

Closed
latensified wants to merge 0 commit into
openclaw:mainfrom
latensified:bea/fix-telegram-model-switch
Closed

fix(sessions): honor explicit default model pins#85643
latensified wants to merge 0 commit into
openclaw:mainfrom
latensified:bea/fix-telegram-model-switch

Conversation

@latensified

@latensified latensified commented May 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Persist explicit user selections of the configured default model as exact session model pins instead of clearing them as if they were unpinned defaults.
  • Keep /model default, session_status(model=default), and sessions.patch model:null as the explicit clear/unpin paths.
  • Carry the exact selection through reply, queued-run, agent-command, reset, status, and sessions.patch paths so channel/parent/config fallback policy cannot silently replace user intent.

Real behavior proof

Behavior addressed: Explicit /model <configured default> selections no longer lose user intent just because they match the configured primary; fallback policy treats them as strict user session selections, while /model default still clears back to unpinned behavior.
Real environment tested: Local beatrice.local source checkout at PR head 98ca4cd8b150ee0be7fcd602a01c4aed346f316c on May 30, 2026. Ran a local source-module behavior probe with node --import tsx against the current checkout; no channel credentials, provider API keys, live runtime files, or LaunchAgent state were used or modified.
Exact steps or command run after this patch:

  1. node --import tsx --input-type=module <<'EOF' ... EOF (local source-module behavior probe that applied an explicit configured-default selection, changed the configured primary, rendered /status, applied /model default, and rendered /status again)
  2. node scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/sessions/model-overrides.test.ts src/agents/openclaw-tools.session-status.test.ts src/commands/status.summary.test.ts
  3. git diff --check
    Evidence after fix:
    Terminal transcript:
$ local behavior probe: explicit /model <configured default> pin, config change, /status, /model default

Initial /status with config primary openai/gpt-5.5
🦞 OpenClaw 2026.5.30 (98ca4cd)
gateway 42s · system 24d 8h
🧠 Model: openai/gpt-5.5 · 🔑 api-key
📚 Context: 0/200k (0%) · 🧹 Compactions: 0
🧵 Session: agent:main:pr-85643-proof • updated 1m ago
⚙️ Execution: direct · Runtime: OpenClaw Default · Think: off · Fast: off · Text: low · elevated
🪢 Queue: steer (depth 0)

After explicit /model openai/gpt-5.5
{
  "providerOverride": "openai",
  "modelOverride": "gpt-5.5",
  "modelOverrideSource": "user"
}

/status after config primary changes to openai/gpt-5.4
🦞 OpenClaw 2026.5.30 (98ca4cd)
gateway 42s · system 24d 8h
🧠 Configured default: openai/gpt-5.4
📌 Session selected: openai/gpt-5.5 · 🔑 api-key
⚠️ Reason: session override
⚠️ This session is pinned to openai/gpt-5.5; config primary openai/gpt-5.4 will apply to new/unpinned sessions.
↩️ Clear with: /model default
📖 Docs: https://docs.openclaw.ai/concepts/models#selection-source-and-fallback-behavior
📚 Context: 0/200k (0%) · 🧹 Compactions: 0
🧵 Session: agent:main:pr-85643-proof • updated just now
⚙️ Execution: direct · Runtime: OpenClaw Default · Think: off · Fast: off · Text: low · elevated
🪢 Queue: steer (depth 0)

After /model default
{}

/status after /model default with config primary openai/gpt-5.4
🦞 OpenClaw 2026.5.30 (98ca4cd)
gateway 42s · system 24d 8h
🧠 Model: openai/gpt-5.4 · 🔑 api-key
📚 Context: 0/200k (0%) · 🧹 Compactions: 0
🧵 Session: agent:main:pr-85643-proof • updated just now
⚙️ Execution: direct · Runtime: OpenClaw Default · Think: off · Fast: off · Text: low · elevated
🪢 Queue: steer (depth 0)

[test] passed 4 Vitest shards in 9.69s

Current-head refresh on June 1, 2026 at PR head 3582fabe21da45e5f1386f018480ae41fff07604:

  • node scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/sessions/model-overrides.test.ts src/agents/openclaw-tools.session-status.test.ts src/agents/agent-command.live-model-switch.test.ts
  • node --import tsx --input-type=module <<'EOF' ... EOF (minimal source-module rebase probe that confirmed the persisted explicit-default override state and /model default clear path without pulling in unrelated provider/plugin startup)
  • git diff --check
$ local behavior probe: explicit /model <configured default> pin, config change, /status, /model default

After explicit /model openai/gpt-5.5
{
  "providerOverride": "openai",
  "modelOverride": "gpt-5.5",
  "modelOverrideSource": "user"
}

/status after config primary changes to openai/gpt-5.4
🦞 OpenClaw 2026.5.31 (3582fab)
🧠 Model: openai/gpt-5.5 · 🔑 api-key
📚 Context: 0/200k (0%) · 🧹 Compactions: 0
🧵 Session: agent:main:pr-85643-proof • updated unknown
⚙️ Execution: direct · Runtime: OpenClaw Default · Think: off · Fast: off · Text: low · elevated
🪢 Queue: steer (depth 0)

After /model default
{}

/status after /model default with config primary openai/gpt-5.4
🦞 OpenClaw 2026.5.31 (3582fab)
🧠 Model: openai/gpt-5.4 · 🔑 api-key
📚 Context: 0/200k (0%) · 🧹 Compactions: 0
🧵 Session: agent:main:pr-85643-proof • updated unknown
⚙️ Execution: direct · Runtime: OpenClaw Default · Think: off · Fast: off · Text: low · elevated
🪢 Queue: steer (depth 0)

[test] passed 3 Vitest shards in 16.82s

Observed result after fix: The current PR head preserves an explicit configured-default selection as a user session pin, /status shows the pinned-session warning plus Clear with: /model default after the config primary changes, and /model default removes the persisted override so /status returns to the new configured primary. The focused session/status Vitest proof also passes on the rebased head.
What was not tested: No live Telegram or OpenAI provider turn was run, no channel delivery was exercised, and no live runtime files or LaunchAgent state were modified.

Current-head refresh on June 4, 2026 at PR head 44e618a93c692a8db6488a163146676c48757e6d:

  • node scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/sessions/model-overrides.test.ts src/agents/openclaw-tools.session-status.test.ts src/agents/agent-command.live-model-switch.test.ts
  • node --import tsx --input-type=module <<'EOF' ... EOF (local source-module probe that re-applied an explicit configured-default pin, switched the configured primary, rendered /status, applied /model default, and rendered /status again on the rebased head)
  • git diff --check
$ local behavior probe: explicit /model <configured default> pin, config change, /status, /model default

After explicit /model openai/gpt-5.5
{
  "providerOverride": "openai",
  "modelOverride": "gpt-5.5",
  "modelOverrideSource": "user"
}

/status after config primary switches to openai/gpt-5.4
🦞 OpenClaw 2026.6.2 (44e618a)
🧠 Configured default: openai/gpt-5.4
📌 Session selected: openai/gpt-5.5 · 🔑 oauth
⚠️ Reason: session override
⚠️ This session is pinned to openai/gpt-5.5; config primary openai/gpt-5.4 will apply to new/unpinned sessions.
↩️ Clear with: /model default
📖 Docs: https://docs.openclaw.ai/concepts/models#selection-source-and-fallback-behavior
📚 Context: 0/200k (0%) · 🧹 Compactions: 0
🧵 Session: agent:main:main • updated just now
⚙️ Execution: direct · Runtime: OpenClaw Default · Think: off · Fast: off · Text: low · elevated
🪢 Queue: steer (depth 0)

After /model default
{}

/status after /model default with config primary openai/gpt-5.4
🦞 OpenClaw 2026.6.2 (44e618a)
🧠 Model: openai/gpt-5.4 · 🔑 oauth
📚 Context: 0/200k (0%) · 🧹 Compactions: 0
🧵 Session: agent:main:main • updated just now
⚙️ Execution: direct · Runtime: OpenClaw Default · Think: off · Fast: off · Text: low · elevated
🪢 Queue: steer (depth 0)

[test] passed 3 Vitest shards in 32.86s

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation gateway Gateway runtime commands Command implementations agents Agent runtime and tooling size: M triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 23, 2026
@clawsweeper

clawsweeper Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 15, 2026, 10:05 AM ET / 14:05 UTC.

Summary
The PR persists explicit configured-default model selections as user session pins across /model, session_status, resets, reply and agent fallback paths, selected sessions.patch paths, status output, docs, and tests.

PR surface: Source +269, Tests +1114, Docs 0. Total +1383 across 34 files.

Reproducibility: yes. Current main source shows isDefault selections clear session overrides, while the PR body and Mantis proof show explicit configured-default selections persisting as user pins and /model default clearing them.

Review metrics: 2 noteworthy metrics.

  • Default-selection semantics: 1 behavior changed. The PR changes explicit configured-default selections from clearing session state to persisting a user model pin, which maintainers should accept before merge.
  • sessions.patch behavior split: 1 split API behavior. Ordinary sessions keep the default-ref clear alias while subagent and ACP sessions pin the same ref, which affects Gateway and SDK callers.

Stored data model
Persistent data-model change detected: serialized state: src/agents/tools/session-status-tool.ts, serialized state: src/auto-reply/reply/session-reset-model.ts, serialized state: src/config/sessions/reset-preserved-selection.test.ts, serialized state: src/gateway/sessions-patch.test.ts, serialized state: src/gateway/sessions-patch.ts, serialized state: src/sessions/model-overrides.test.ts, and 4 more. Confirm migration or upgrade compatibility proof before merge.

Merge readiness
Overall: 🦞 diamond lobster
Proof: 🦀 challenger crab ✨ media proof bonus
Patch quality: 🦞 diamond lobster
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Risk before merge

  • [P1] Existing users or scripts that used /model <configured-default> as an unpin path will stay pinned until they use /model default, session_status(model=default), or sessions.patch with model: null.
  • [P2] Strict explicit-default pins can surface provider, auth, or model failures where an unpinned configured default would previously have followed configured fallback behavior.
  • [P1] The same configured-default ref now has intentionally different sessions.patch behavior for ordinary sessions versus subagent and ACP session keys, which is a compatibility-sensitive Gateway/API contract.
  • [P1] Related open PRs at fix: allow user-switched model to use agent fallback chain #84867 and fix: user-pinned model falls back to global chain on quota exhaustion #88329 propose allowing user-pinned models to use fallbacks, so maintainers should settle that policy before merging this strict-pin direction.

Maintainer options:

  1. Accept Strict Default Pins
    Maintainers can accept that /model <configured-default> is now a sticky user pin and rely on /model default, session_status(model=default), and model: null as clear paths.
  2. Preserve Legacy Clear Semantics
    If existing clear behavior must remain the default, ask for a revised patch that keeps /model <configured-default> unpinned and adds a separate explicit pin path.
  3. Pause For Model Policy
    If strict pins versus user-pin fallback behavior is not settled, keep this PR open without automated merge until the model-selection policy is decided alongside the related open fallback PRs.

Next step before merge

  • [P2] The remaining action is maintainer acceptance of the strict explicit-default pin and fallback compatibility contract, not a narrow automated code repair.

Security
Cleared: No concrete security or supply-chain concern found; the diff changes session/model routing code, docs, and tests without new dependencies, workflow permissions, package scripts, lockfiles, or secret-handling surface.

Review details

Best possible solution:

Land only if maintainers accept strict explicit-default pins as the supported contract; otherwise preserve legacy clear behavior and design a separate explicit pin path.

Do we have a high-confidence way to reproduce the issue?

Yes. Current main source shows isDefault selections clear session overrides, while the PR body and Mantis proof show explicit configured-default selections persisting as user pins and /model default clearing them.

Is this the best way to solve the issue?

Unclear until maintainers decide the compatibility contract. The implementation is coherent and covers sibling paths if strict explicit-default pins are desired, but preserving legacy clear semantics is the safer alternative if that contract is not accepted.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 66079161d72a.

Label changes

Label justifications:

  • P2: This is a normal-priority session/model behavior fix with limited surface but meaningful compatibility impact.
  • merge-risk: 🚨 compatibility: Merging changes the user-visible meaning of /model <configured-default> and selected sessions.patch calls for existing users and scripts.
  • merge-risk: 🚨 auth-provider: Strict pins can prevent configured provider/model/auth fallback from rescuing sessions that previously behaved as unpinned defaults.
  • merge-risk: 🚨 session-state: The PR changes how persisted session model override state is stored, cleared, reset, inherited, and reported.
  • rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦀 challenger crab and patch quality is 🦞 diamond lobster.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (recording): The PR body includes redacted terminal source-module proof, and Mantis supplied before/after Telegram Desktop recording proof for the visible /model acknowledgement.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes redacted terminal source-module proof, and Mantis supplied before/after Telegram Desktop recording proof for the visible /model acknowledgement.
  • proof: 🎥 video: Contributor real behavior proof includes video or recording evidence. The PR body includes redacted terminal source-module proof, and Mantis supplied before/after Telegram Desktop recording proof for the visible /model acknowledgement.
  • mantis: telegram-visible-proof: Mantis should capture Telegram visible proof. The PR changes visible Telegram /model acknowledgement behavior, and the Mantis Telegram Desktop proof already demonstrates that surface.
Evidence reviewed

PR surface:

Source +269, Tests +1114, Docs 0. Total +1383 across 34 files.

View PR surface stats
Area Files Added Removed Net
Source 18 346 77 +269
Tests 14 1119 5 +1114
Docs 2 4 4 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 34 1469 86 +1383

What I checked:

  • Repository policy applied: Root AGENTS.md and scoped docs/gateway/agents/plugin-SDK guidance were read; the repository treats provider routing, auth/session state, persisted preferences, config/defaults, and fallback behavior as compatibility-sensitive review surfaces. (AGENTS.md:12, 66079161d72a)
  • Current main clears configured-default selections: On current main, applyModelOverrideToSessionEntry deletes providerOverride, modelOverride, and modelOverrideSource whenever selection.isDefault is true, so an explicit configured-default selection acts as a clear/unpin path today. (src/sessions/model-overrides.ts:42, 66079161d72a)
  • PR stores explicit default pins: The PR adds preserveDefaultSelectionSource and, when true for a user selection, persists the configured-default provider/model with modelOverrideSource: "user" instead of clearing the override. (src/sessions/model-overrides.ts:44, 8ea169413076)
  • Explicit clear path remains: /model default now sets preserveDefaultSelectionSource: false, preserving a clear command separate from explicit /model <configured-default> pins. (src/auto-reply/reply/directive-handling.model-selection.ts:72, 8ea169413076)
  • sessions.patch compatibility split: The PR preserves configured-default sessions.patch selections only for subagent and ACP session keys, while ordinary session patches keep the configured-default clear alias. (src/gateway/sessions-patch.ts:148, 8ea169413076)
  • Fallback strictness contract: Current fallback policy returns no configured fallback chain for user-sourced model overrides, so the PR’s new strict default pins can surface provider, auth, or model failures where unpinned defaults would have followed fallback policy. (src/agents/agent-scope.ts:547, 66079161d72a)

Likely related people:

  • Galin Iliev: Current-main blame on the central model override helper and fallback helper points to commit 50c82b3, which shaped the session override/fallback code this PR changes. (role: recent source-shape contributor; confidence: medium; commits: 50c82b302006; files: src/sessions/model-overrides.ts, src/agents/agent-scope.ts, src/auto-reply/reply/agent-runner-execution.ts)
  • Mason Huang: Recent status work changed the pinned-model clear hint and stale context-window behavior in the status surfaces this PR rebases through. (role: recent status behavior contributor; confidence: medium; commits: 3ce3ed668d92, 4029fbd2b238; files: src/status/status-text.ts, src/status/status-message.ts, src/auto-reply/status.test.ts)
  • Peter Steinberger: Recent adjacent agents work touched agent-command and agent-runner session/fallback behavior, and history shows repeated ownership of these runtime paths. (role: recent adjacent agents/session contributor; confidence: medium; commits: 0314819f918a; files: src/agents/agent-command.ts, src/auto-reply/reply/agent-runner-execution.ts)
  • Eva H: Commit 3b13986 added the user model override fallback-persistence guard that this PR’s strict user-pin behavior builds on. (role: introduced related fallback protection; confidence: medium; commits: 3b139862142d; files: src/auto-reply/reply/agent-runner-execution.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. mantis: telegram-visible-proof Mantis should capture Telegram visible proof. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. labels May 23, 2026
@clawsweeper

clawsweeper Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

✨ Hatched: ✨ glimmer Neon Lint Imp

Hatch command

Comment @clawsweeper hatch when this PR is hatchable.

Hatchability rules:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.

Rarity: ✨ glimmer.
Trait: keeps receipts.
Image traits: location workflow harbor; accessory little merge flag; palette pearl, teal, and neon green; mood curious; pose balancing on a branch marker; shell starlit enamel shell; lighting soft underwater shimmer; background soft code-shaped tiles.
Share on X: post this hatch
Copy: My PR egg hatched a ✨ glimmer Neon Lint Imp in ClawSweeper.

What is this egg doing here?
  • Eggs appear after the PR passes real-behavior proof. It is here for vibes, not verdicts: it does not change labels, ratings, merge decisions, or automation.
  • The shell reacts to review momentum: open follow-up work warms it up, re-review makes it wobble, and a clean final review lets it hatch.
  • Hatchability usually comes from sufficient real-behavior proof, no blocking P0/P1/P2 findings, no security attention needed, and clean correctness. A merged PR is already final, so merge makes the egg hatchable independently.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels May 23, 2026
@latensified

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Addressed the compatibility finding without undoing the explicit-default pin behavior across the rest of the branch.

What changed:

  • sessions.patch now keeps the historical exact-configured-default string as a clear alias for regular sessions.
  • spawned/internal session keys (subagent:*, acp:*) still preserve exact configured-default selections as strict user pins.
  • added a gateway regression test for the sessions.patch clear-alias behavior.

Verification:

  • node scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/sessions/model-overrides.test.ts
  • git diff --check

Note: the repo-local autoreview helper was attempted after the patch but stalled inside its internal codex exec subprocess without returning findings.

@clawsweeper

clawsweeper Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@latensified
latensified force-pushed the bea/fix-telegram-model-switch branch 2 times, most recently from 7c12035 to 0ba6718 Compare May 23, 2026 21:05
@latensified

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Added redacted after-fix behavior proof for the current head.

What changed in the PR body:

  • Added a terminal transcript from a local source-checkout behavior probe on the built PR head.
  • The transcript shows explicit /model <configured default> pinning, the pinned /status warning after the config primary changes, and /model default clearing back to the new configured primary.
  • Kept the existing targeted Vitest proof and noted that no live channel/provider delivery was exercised.

@clawsweeper

clawsweeper Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@latensified

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Corrected the PR body to use the exact ## Real behavior proof section heading that the proof policy expects.

The current body now validates locally with evaluateRealBehaviorProof(...).status === "passed" and includes the redacted terminal transcript showing:

  • explicit /model <configured default> persisted as a user pin,
  • the pinned /status warning after the configured primary changes, and
  • /model default clearing back to the new configured primary.

@clawsweeper

clawsweeper Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Command router queued. I will update this comment with the next step.

Re-review progress:

@openclaw-barnacle openclaw-barnacle Bot removed the triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. label May 23, 2026
@clawsweeper clawsweeper Bot added status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels May 29, 2026
@latensified

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Refreshed the PR body proof on the current head db1dedaec551105902546072c0db9fba0d38e914 after the rebase/test-fix follow-up.

Verification:

  • node --import tsx --input-type=module ... local source-module behavior probe covering explicit /model <configured default>, config-primary drift, /status, and /model default
  • git diff --check

No source files changed in this follow-up; this only refreshes the public current-head proof.

@clawsweeper

clawsweeper Bot commented May 29, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels May 29, 2026
@latensified

Copy link
Copy Markdown
Contributor Author

Rebased this branch onto current main to clear the Dependency Guard / merge-conflict backfill blocker.

Verification on the rebased head 6382bd9b3f505a84f31f199925074092bd25d781:

  • node scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/sessions/model-overrides.test.ts (4 files, 166 tests passed)
  • git diff --check

The full GitHub check suite is rerunning automatically on this push. I did not refresh the separate local source-module /status transcript in the PR body in this follow-up, so the remaining reviewer focus is the current CI run plus the existing semantic/compatibility decision on explicit configured-default pins.

@latensified

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Refreshed the ## Real behavior proof section on the current head 6382bd9b3f505a84f31f199925074092bd25d781.

Verification:

  • node --import tsx --input-type=module <<'EOF' ... EOF local source-module behavior probe covering explicit /model <configured default>, config-primary drift, /status, and /model default
  • git diff --check

No source files changed in this follow-up; this only refreshes the public current-head proof. The remaining red checks-node-core-fast shard is an unrelated timeout in src/security/audit-sandbox-browser.test.ts, outside this PR diff.

@clawsweeper

clawsweeper Bot commented May 30, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@latensified

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased onto current main and force-pushed the current head 3582fabe21da45e5f1386f018480ae41fff07604 to clear the June 1, 2026 DIRTY / CONFLICTING branch state.

Verification on the rebased head:

  • node scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/sessions/model-overrides.test.ts src/agents/openclaw-tools.session-status.test.ts src/agents/agent-command.live-model-switch.test.ts
  • node --import tsx --input-type=module <<'EOF' ... EOF minimal source-module rebase probe for explicit configured-default pin persistence plus /model default clear
  • git diff --check

I also refreshed the ## Real behavior proof section with a June 1 current-head addendum so the public proof no longer stops at the old 98ca4cd8... head.

@clawsweeper

clawsweeper Bot commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@latensified

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased onto current main, force-pushed the current head 44e618a93c692a8db6488a163146676c48757e6d, and refreshed the ## Real behavior proof section for that head.

Verification:

  • node scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/sessions/model-overrides.test.ts src/agents/openclaw-tools.session-status.test.ts src/agents/agent-command.live-model-switch.test.ts
  • node --import tsx --input-type=module ... local source-module probe covering explicit configured-default pin persistence, config-primary drift, /status, and /model default on the rebased head
  • git diff --check

@clawsweeper

clawsweeper Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@latensified

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased onto current main, force-pushed the current head 1ace3022354d06c1c3ead162fa137711fda11ccd, and cleared the DIRTY / CONFLICTING branch state.

This follow-up also fixed one rebased test harness regression in src/agents/agent-command.live-model-switch.test.ts so the mocked session-key helpers still treat agent:...:subagent:... keys as subagent sessions and keep exercising the intended spawn-lane thinking clamp path after the rebase.

Verification:

  • pnpm install --frozen-lockfile
  • node scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/sessions/model-overrides.test.ts src/agents/openclaw-tools.session-status.test.ts src/agents/agent-command.live-model-switch.test.ts src/auto-reply/reply/get-reply.fast-path.test.ts src/auto-reply/status.test.ts
  • .agents/skills/autoreview/scripts/autoreview --mode local
  • git diff --check

No runtime source files changed in this follow-up; remaining reviewer focus should be the refreshed CI run plus the existing maintainer decision on strict explicit-default pins.

@clawsweeper

clawsweeper Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@openclaw-mantis

Copy link
Copy Markdown
Contributor

Mantis Telegram Desktop Proof

Summary: Mantis captured native Telegram Desktop before/after GIFs showing the configured-default /model command acknowledgement change.

Main screenshot This PR screenshot
Baseline native Telegram Desktop screenshot Candidate native Telegram Desktop screenshot
Main This PR
Baseline native Telegram Desktop proof GIF Candidate native Telegram Desktop proof GIF

Motion-trimmed clips:

Raw QA files: https://artifacts.openclaw.ai/mantis/telegram-desktop/pr-85643/run-27523027881-1/index.json

@latensified

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased onto current main, force-pushed the current head 8ea16941307625c51d26e98de04eddb10b96b161, and cleared the DIRTY / CONFLICTING branch state.

This refresh kept the branch narrow and resolved the rebase drift in the existing status/docs seams:

  • docs/concepts/models.md now keeps the strict explicit-default pin contract while preserving the newer sessions.patch compatibility wording.
  • src/status/status-text.ts keeps the rebased live-status/session-entry handling together with the explicit configured-context-token logic.
  • src/auto-reply/reply/commands-status.test.ts keeps both the stale-live-context coverage and the newer live-model/session-warning coverage after the rebase.

Verification:

  • node scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/sessions/model-overrides.test.ts src/agents/openclaw-tools.session-status.test.ts src/agents/agent-command.live-model-switch.test.ts src/auto-reply/reply/get-reply.fast-path.test.ts src/auto-reply/status.test.ts src/auto-reply/reply/commands-status.test.ts src/commands/status.summary.test.ts
  • .agents/skills/autoreview/scripts/autoreview --mode local
  • git diff --check

No new contributor-facing blocker surfaced in this refresh; remaining reviewer focus should be the rerun CI plus the existing maintainer decision on strict explicit-default pins.

@clawsweeper

clawsweeper Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@latensified

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased onto current main, force-pushed the current head 26142f556a7551c389cc840257cb4039de63636d, and cleared the GitHub DIRTY / CONFLICTING branch state.

This refresh kept the existing branch behavior and only resolved rebase drift against newer status/plugin-health changes on main:

  • src/status/status-text.ts now keeps both the live-session model reporting path and the newer compact plugin-health import/runtime path after the rebase.
  • No new contributor-facing blocker surfaced in this refresh; the remaining reviewer focus is still the maintainer decision on strict explicit-default pins.

Verification:

  • node scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/sessions/model-overrides.test.ts src/agents/openclaw-tools.session-status.test.ts src/agents/agent-command.live-model-switch.test.ts src/auto-reply/reply/get-reply.fast-path.test.ts src/auto-reply/status.test.ts src/auto-reply/reply/commands-status.test.ts src/commands/status.summary.test.ts
  • .agents/skills/autoreview/scripts/autoreview --mode local
  • git diff --check

@clawsweeper

clawsweeper Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@latensified

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased onto current main, force-pushed the current head ea705c8e66c0942c8d95ef5570b7bae2f1e8b384, and cleared the GitHub DIRTY / CONFLICTING branch state.

This refresh stayed narrow. The only real rebase conflict was in src/auto-reply/reply/get-reply-directives-apply.ts, where the branch kept the explicit-default model ack export while preserving the newer main helper import/runtime shape.

Verification:

  • node scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/sessions/model-overrides.test.ts src/agents/openclaw-tools.session-status.test.ts src/agents/agent-command.live-model-switch.test.ts src/auto-reply/reply/get-reply.fast-path.test.ts src/auto-reply/status.test.ts src/auto-reply/reply/commands-status.test.ts src/commands/status.summary.test.ts
  • .agents/skills/autoreview/scripts/autoreview --mode local
  • git diff --check

No new contributor-facing blocker surfaced in this refresh; remaining reviewer focus is still the maintainer decision on strict explicit-default pins plus the fresh CI rerun.

@clawsweeper

clawsweeper Bot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@latensified

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased onto current main, force-pushed the current head 007d8c3112fbfb6adde828eb95939eb80dba0962, and cleared the branch drift that had built up since the June 17 refresh.

This refresh stayed narrow and did not change branch intent. The 14-commit stack rebased cleanly onto current origin/main with no manual conflict resolution needed.

Verification:

  • node scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/sessions/model-overrides.test.ts src/agents/openclaw-tools.session-status.test.ts src/agents/agent-command.live-model-switch.test.ts src/auto-reply/reply/get-reply.fast-path.test.ts src/auto-reply/status.test.ts src/auto-reply/reply/commands-status.test.ts src/commands/status.summary.test.ts
  • .agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main

No new contributor-facing blocker surfaced in this refresh; remaining reviewer focus is still the maintainer decision on strict explicit-default pins plus the fresh CI rerun on the rebased head.

@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling commands Command implementations docs Improvements or additions to documentation gateway Gateway runtime mantis: telegram-visible-proof Mantis should capture Telegram visible proof. merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. P2 Normal backlog priority with limited blast radius. proof: 🎥 video Contributor real behavior proof includes video or recording evidence. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. size: XS status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants