Skip to content

fix(ci): Windows task tests and Telegram setup promotion surface#60630

Closed
Tianworld wants to merge 16 commits into
openclaw:mainfrom
Tianworld:contrib/ci-test-policy-fixes
Closed

fix(ci): Windows task tests and Telegram setup promotion surface#60630
Tianworld wants to merge 16 commits into
openclaw:mainfrom
Tianworld:contrib/ci-test-policy-fixes

Conversation

@Tianworld

@Tianworld Tianworld commented Apr 4, 2026

Copy link
Copy Markdown
Contributor

Summary

Tasks (Windows CI)

  • task-executor.test.ts: Avoid triggering outbound sendMessage in the blocked-flow retry test (dynamic import can bypass the Vitest mock on Windows CI and hang until timeout).
  • task-registry.test.ts: Close the task-flow registry SQLite handle in withTaskRegistryTempDir before removing the temp state dir (persist: false on flow reset), alongside the existing task-registry reset. Prevents Windows CI from stalling on fs.rm when tests use createManagedTaskFlow.

Telegram (setup / multi-account promotion)

  • Export namedAccountPromotionKeys and resolveSingleAccountPromotionTarget from extensions/telegram/contract-api.ts (aligned with the Matrix-style bundled contract surface).
  • Wire the same fields on the runtime ChannelPlugin.setup in extensions/telegram/src/shared.ts so getChannelSetupPromotionSurface matches production (not only the bundled contract module).
  • Keep dmPolicy / allowFrom at the channel root when named accounts already exist; honor defaultAccount when resolving the promotion target.
  • Add patchChannelConfigForAccount regression tests in src/channels/plugins/setup-wizard-helpers.test.ts (test registry mirrors the runtime setup surface).

Branch

  • Merged latest origin/main so protocol-generated artifacts and CI expectations stay aligned with upstream.

Notes

  • Task changes are tests only (no production task runtime changes).
  • Telegram changes include contract exports, runtime plugin setup, plugin-sdk facade re-exports for tests, and setup-wizard-helpers regressions.

Testing

  • pnpm exec vitest run --config vitest.unit.config.ts src/tasks/task-registry.test.ts src/tasks/task-executor.test.ts
  • node scripts/run-vitest.mjs run --config vitest.channels.config.ts src/channels/plugins/setup-wizard-helpers.test.ts -t "telegram:"
    (src/channels/**/*.test.ts is not in the unit Vitest project; CI runs these under the channels config—same as pnpm test:channels.)
  • pnpm protocol:check

@greptile-apps

greptile-apps Bot commented Apr 4, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR stabilizes two test files for Windows CI by avoiding Windows-specific file-lock and dynamic-import mock-bypass issues. The task-executor.test.ts change drops requesterOrigin from a blocked-flow test to avoid triggering a sendMessage path that relies on a dynamic import Vitest can't reliably mock on Windows. The task-registry.test.ts change adds persist: false to the resetTaskFlowRegistryForTests call in the finally block so persistFlowRegistry() is skipped, allowing the SQLite file handle to close cleanly before the temp directory is removed.

Confidence Score: 5/5

Safe to merge — tests-only PR with targeted, well-commented fixes for Windows CI flakiness.

Both changes are narrowly scoped and correct: skipping persist before close is exactly right for the finally-block teardown pattern, and dropping the unused requesterOrigin removes a real Windows CI hang vector. No production logic is touched.

No files require special attention.

Reviews (1): Last reviewed commit: "test(tasks): close flow registry sqlite ..." | Re-trigger Greptile

…y tests

- Export namedAccountPromotionKeys + resolveSingleAccountPromotionTarget from contract-api (Matrix-style).
- Keep dmPolicy/allowFrom at channel root when named accounts exist; honor defaultAccount for promotion target.
- Add patchChannelConfigForAccount regression tests in setup-wizard-helpers.test.ts.

Made-with: Cursor
@Tianworld
Tianworld force-pushed the contrib/ci-test-policy-fixes branch from ea67883 to 4883c92 Compare April 7, 2026 03:08
@openclaw-barnacle openclaw-barnacle Bot added channel: telegram Channel integration: telegram size: S and removed size: XS labels Apr 7, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4883c92159

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

accounts: { alerts: { botToken: "tok" } },
},
});
expect(keys).not.toContain("dmPolicy");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Fix Telegram promotion test fixture wiring

This assertion assumes Telegram exposes named-account promotion metadata, but the test registry in beforeEach still registers Telegram with only singleAccountKeysToMove. Under that fixture, resolveSingleAccountKeysToMove will still include dmPolicy/allowFrom from the common key set, and the adjacent promotion-target test will also resolve to default, so these new cases fail deterministically instead of validating the intended behavior. Please wire namedAccountPromotionKeys and resolveSingleAccountPromotionTarget into the Telegram test setup (or adjust expectations).

Useful? React with 👍 / 👎.

@Tianworld Tianworld changed the title test(tasks): stabilize Windows CI for task registry and executor fix(ci): Windows task tests and Telegram setup promotion surface Apr 7, 2026
Codex P1: getChannelSetupPromotionSurface reads plugin registry setup; Telegram mock only had singleAccountKeysToMove, so namedAccountPromotionKeys/resolveSingleAccountPromotionTarget were missing and the new assertions did not match production wiring.

- Re-export namedAccountPromotionKeys + resolveSingleAccountPromotionTarget from plugin-sdk/telegram facade.
- Register them on the Telegram test plugin alongside Matrix.

Made-with: Cursor
@Tianworld
Tianworld force-pushed the contrib/ci-test-policy-fixes branch from ae6ac47 to 9ab5d38 Compare April 7, 2026 03:25

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9ab5d38588

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +104 to +105
namedAccountPromotionKeys: telegramNamedAccountPromotionKeys,
resolveSingleAccountPromotionTarget: resolveTelegramSingleAccountPromotionTarget,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep Telegram setup tests aligned with runtime plugin setup

This fixture now injects namedAccountPromotionKeys and resolveSingleAccountPromotionTarget into the Telegram test plugin, but the real Telegram plugin setup surface still only provides singleAccountKeysToMove (see extensions/telegram/src/shared.ts:226-229). That mismatch means the new promotion tests can pass while production still uses the old promotion behavior (including moving root dmPolicy/allowFrom when named accounts already exist), so this change gives false confidence that the runtime fix landed.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in f45ae18: createTelegramPluginBase now mirrors Matrix and exposes the same promotion fields on ChannelPlugin.setup.

getChannelSetupPromotionSurface reads plugin.setup at runtime; contract-api alone is not enough. Mirror Matrix by wiring namedAccountPromotionKeys + resolveSingleAccountPromotionTarget into createTelegramPluginBase (addresses Codex P1 on false-positive tests).

Made-with: Cursor
@Tianworld

Tianworld commented Apr 8, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the reviews!

  • Codex P1 (fixture wiring): addressed in 9ab5d38 — the Telegram test plugin registry now includes namedAccountPromotionKeys and resolveSingleAccountPromotionTarget (via plugin-sdk/telegram re-exports), so the promotion tests match how getChannelSetupPromotionSurface reads plugin setup.
  • Codex P1 (runtime setup mismatch): addressed in f45ae18createTelegramPluginBase now mirrors Matrix and exposes the same promotion fields on ChannelPlugin.setup (not only via contract-api).

PR body / testing notes were also updated to reflect the Vitest project that actually runs the src/channels/** tests.

- Keep Telegram promotion surface exports (namedAccountPromotionKeys + resolveSingleAccountPromotionTarget) while also retaining mergeTelegramAccountConfig export.
- Keep runtime ChannelPlugin.setup wired to promotion surface.

Made-with: Cursor

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f95ca00396

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".


export const singleAccountKeysToMove = ["streaming"];
export const namedAccountPromotionKeys = ["botToken", "tokenFile"] as const;
export const namedAccountPromotionKeys = [...TELEGRAM_NAMED_ACCOUNT_PROMOTION_KEYS];

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Sync Telegram fallback promotion keys with expanded contract

This commit broadens Telegram namedAccountPromotionKeys, but fallback promotion still hard-codes only botToken/tokenFile in src/channels/plugins/setup-helpers.ts for paths where the setup surface is unavailable (as noted by the fallback comment there). In those fallback paths (for example legacy/default-account seeding flows), keys newly added here like webhookUrl, webhookSecret, token, and account are not promoted into the target account, so migrated multi-account configs can end up with incomplete account auth/transport state.

Useful? React with 👍 / 👎.

Use /usr/bin/env to avoid hostedtoolcache node permission checks in gateway hot-reload tests, and mock remote environment detection for deterministic models auth context.

Made-with: Cursor
@openclaw-barnacle openclaw-barnacle Bot added gateway Gateway runtime commands Command implementations labels Apr 9, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8d0cbb9233

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@@ -1,2 +1,60 @@
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/setup";

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Import account-id helpers from routing facade

Switching this module to openclaw/plugin-sdk/setup pulls in the full setup barrel on Telegram startup, because extensions/telegram/src/shared.ts imports setup-contract.ts in the hot channel path. The setup barrel re-exports setup-wizard/setup-helper modules, so this eager import increases runtime load cost and weakens lazy-loading boundaries for normal channel execution. This file only needs DEFAULT_ACCOUNT_ID and normalizeAccountId, so it should use the narrow routing facade instead (as Matrix does).

Useful? React with 👍 / 👎.

Use a mockable remote-environment detector in models auth tests, and use exec secret provider settings that tolerate CI node path permissions during gateway reload tests.

Made-with: Cursor
Update cliBackends test configs to include a minimal command field so tsgo passes when CliBackendConfig requires it.

Made-with: Cursor
@openclaw-barnacle openclaw-barnacle Bot removed the gateway Gateway runtime label Apr 9, 2026
Replace tmpdir and raw fetch callsites, remove channel literal comparisons, align skill types, and update protocol Swift models.

Made-with: Cursor

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 69c0964f13

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +193 to +198
const { response: res, release } = await fetchWithSsrFGuard({
url,
init: { ...init, signal: ctrl.signal },
timeoutMs,
auditContext: "extensions/browser client-fetch",
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Allow loopback browser-control URLs in guarded fetch path

This new fetchWithSsrFGuard call runs with no SSRF policy override, so absolute browser-control URLs on loopback/private hosts (for example http://127.0.0.1:...) are now blocked before the request is sent. That regresses the absolute-URL path in fetchBrowserJson (used when a baseUrl is provided), even though withLoopbackBrowserAuth is explicitly built to support loopback control endpoints. Please pass an explicit private-network policy for this trusted control-plane fetch (or conditionally allow loopback) so these requests keep working.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2ec7108c47

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +188 to +191
const { response: res, release } = await fetchWithSsrFGuard({
url,
init,
signal: ctrl.signal,
init: { ...init, signal: ctrl.signal },
timeoutMs,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Forward abort signal to guarded browser fetch

fetchHttpJson now passes ctrl.signal inside init, but fetchWithSsrFGuard only composes cancellation from its top-level signal option and then overwrites init.signal when timeoutMs is set. In practice, any caller-provided abort (for example fetchBrowserJson(..., { signal })) will no longer cancel the in-flight request promptly and will wait until timeout instead, which regresses cancellation behavior for browser-control calls.

Useful? React with 👍 / 👎.

Provide synthetic sourceInfo in local-loader and tests; use as Skill so SkillSnapshot stays assignable from upstream Skill[] while satisfying builds that require sourceInfo.

Made-with: Cursor
@Tianworld

Copy link
Copy Markdown
Contributor Author

Hi maintainers — latest push (\2b890f28) is green across the full CI matrix I can see (including \check, \check-additional, \�uild-artifacts, \checks-fast-contracts-protocol, Windows node tests, and extension shards). Branch is merged with current \main\ and ready for review whenever you have bandwidth. Thanks!

…ntext

- Strip null bytes from inbound JSON blocks before stringify (spawn safety)
- Prefer gemini-3.1-* CLI template IDs with 3.0 fallbacks for older catalogs
- Default anthropic/claude-sonnet-4-6 to 1M context when not overridden in models.providers
- Add regression tests (inbound-meta, provider-models, context, status)

Made-with: Cursor

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e189a58f71

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +25 to +26
export const namedAccountPromotionKeys: FacadeModule["namedAccountPromotionKeys"] =
loadFacadeModule().namedAccountPromotionKeys;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep Telegram facade promotion keys lazy-loaded

namedAccountPromotionKeys is initialized with loadFacadeModule().namedAccountPromotionKeys, which eagerly loads @openclaw/telegram/contract-api.js during module import. Any consumer that imports openclaw/plugin-sdk/telegram now pays synchronous facade loading cost (and can fail early if that bundled surface is unavailable) even when it only needs unrelated exports like parseTelegramTopicConversation. This regresses the lazy-loading boundary used by adjacent facade exports and should use the same lazy array wrapper pattern.

Useful? React with 👍 / 👎.

@clawsweeper

clawsweeper Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

Thanks for the context here. I did a careful shell check against current main, and the useful part of this older PR is already implemented there.

Current main already has the central useful Windows test stabilization and Telegram setup-promotion behavior, while this older PR is conflicting, lacks external real behavior proof, and carries stale broad churn that should not be used as the landing path.

So I’m closing this older PR as already covered on main rather than keeping a mostly-duplicated branch open.

Review details

Best possible solution:

Keep current main's narrower implementation and close this stale branch; any remaining Telegram promotion-key expansion should come back as a fresh focused PR with real setup proof.

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

Yes for the cleanup decision: current-main source shows the Windows test and Telegram promotion paths already covered, and the stale PR is live-conflicting. I did not rerun the original Windows CI flake or a live Telegram setup flow in this read-only review.

Is this the best way to solve the issue?

No, this PR is no longer the best way to solve the issue. Current main has a narrower implementation and the remaining branch should be closed or replaced with a focused current-main PR if a small Telegram key-list gap remains.

Security review:

Security review cleared: No concrete security or supply-chain regression was found beyond the functional availability and compatibility risks already called out for the stale branch.

AGENTS.md: found and applied where relevant.

What I checked:

  • Root AGENTS.md read and applied: Repository review policy was read fully and applied, including scoped policy for extensions, plugin SDK, channels, agents, and Telegram maintainer notes. (AGENTS.md:1, e7ee1c55b433)
  • Live PR is stale and conflicting: Live GitHub state reports the PR head e189a58, mergeable=CONFLICTING, mergeStateStatus=DIRTY, and maintainerCanModify=true.
  • Current main covers the task-executor hang path: Current main keeps the blocked-flow retry test on a local notifychat fixture instead of Telegram delivery, avoiding the bundled-channel dynamic import path while still exercising requester-origin delivery state. (src/tasks/task-executor.test.ts:390, e7ee1c55b433)
  • Current main covers Windows registry cleanup: Current main closes both task registries with persist:false before temporary directory cleanup, matching the Windows SQLite-handle fix intent. (src/tasks/task-registry.test.ts:436, e7ee1c55b433)
  • Current main has setup-promotion filtering: Current main filters named-account promotion through loaded or bundled plugin setup metadata so root-only channel settings do not move when a channel declares named-account promotion keys. (src/channels/plugins/setup-promotion-helpers.ts:110, e7ee1c55b433)
  • Current main exposes Telegram promotion metadata at runtime: Telegram's runtime ChannelPlugin.setup already includes namedAccountPromotionKeys and singleAccountKeysToMove on current main, so the central runtime-surface mismatch from earlier review is covered. (extensions/telegram/src/shared.ts:255, e7ee1c55b433)

Likely related people:

  • RomneyDa: Merged current-main PR test(reply): seed channel fixtures for dedupe tests #93104 whose grafted proof commit owns the current task, setup-promotion, and browser-fetch source lines used for this cleanup decision. (role: recent area contributor; confidence: medium; commits: cae64ee360a8; files: src/tasks/task-executor.test.ts, src/tasks/task-registry.test.ts, src/channels/plugins/setup-promotion-helpers.ts)
  • steipete: Recent setup-promotion commits derive plugin-owned promotion rules, preserve fallbacks, and gate setup promotion by manifest feature, which are central to the current-main replacement path. (role: recent setup-promotion contributor; confidence: high; commits: 0c863124bb0a, b619d39e54ba, 4fbd314e1f5e; files: src/channels/plugins/setup-promotion-helpers.ts, src/channels/plugins/setup-helpers.ts, src/channels/plugins/bundled.ts)
  • gumadeiras: Introduced the original single-account config migration into accounts.default in Channels: move single-account config into accounts.default #27334, the behavior family behind the Telegram promotion portion of this PR. (role: introduced behavior; confidence: high; commits: dfa0b5b4fc72; files: src/channels/plugins/setup-helpers.ts, docs/cli/channels.md)

Codex review notes: model internal, reasoning high; reviewed against e7ee1c55b433; fix evidence: commit cae64ee360a8, main fix timestamp 2026-06-14T18:09:26-07:00.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels May 19, 2026
@openclaw-barnacle openclaw-barnacle Bot added the triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. label May 19, 2026
@clawsweeper clawsweeper Bot added P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. labels May 19, 2026
@clawsweeper

clawsweeper Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

🎁 Pass real behavior proof to wake the egg and unlock a hatchable treat.

Where did the egg go?
  • The egg game starts only after the PR passes the real-behavior proof check.
  • Before that, no creature or rarity is rolled. The treat waits for real proof.
  • This is still just collectible flavor: proof affects review readiness, not creature quality.

@openclaw-barnacle

Copy link
Copy Markdown

This pull request has been automatically marked as stale due to inactivity.
Please add updates or it will be closed.

@openclaw-barnacle openclaw-barnacle Bot added the stale Marked as stale due to inactivity label Jun 10, 2026
@clawsweeper clawsweeper Bot added rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 10, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the stale Marked as stale due to inactivity label Jun 11, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. and removed rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. labels Jun 14, 2026
@clawsweeper

clawsweeper Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper applied the proposed close for this PR.

@clawsweeper clawsweeper Bot closed this Jun 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling channel: msteams Channel integration: msteams channel: qqbot channel: signal Channel integration: signal channel: telegram Channel integration: telegram commands Command implementations extensions: codex extensions: memory-core Extension: memory-core extensions: memory-wiki merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P2 Normal backlog priority with limited blast radius. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. size: L status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant