Skip to content

fix: catalog previews cut Chinese and Japanese summaries at the first Latin word - #3362

Merged
Patrick-Erichsen merged 2 commits into
openclaw:mainfrom
Yigtwxx:fix/catalog-preview-cjk
Aug 5, 2026
Merged

fix: catalog previews cut Chinese and Japanese summaries at the first Latin word#3362
Patrick-Erichsen merged 2 commits into
openclaw:mainfrom
Yigtwxx:fix/catalog-preview-cjk

Conversation

@Yigtwxx

@Yigtwxx Yigtwxx commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

What Problem This Solves

Fixes an issue where visitors browsing the catalog see Chinese, Japanese and Korean
summaries cut down to a handful of characters. The trigger is a summary that opens
with a Latin token — a product name, a protocol, a version number — followed by text
in a script that does not separate words with spaces.

The affected surface is every catalog card rendered through truncateText: the home
listing sections, the skills and plugins catalogs, the search results list, publisher
cards, and the dashboard catalog view.

Why This Change Was Made

truncateText slices to the budget and then backtracks to the last space inside that
slice, so a preview never ends mid-word. The rule assumes spaces mark word boundaries
throughout the text. In Chinese, Japanese and Korean they usually do not, and often the
only space in an entire summary sits immediately after an opening Latin token — so the
backtrack rewinds past everything else.

Taking 5gc-automation from fixtures/public-corpus/corpus.jsonl: the summary is 104
characters and its only space follows 5GC. At the 100-character budget the card
renders 5GC…. huangli-query-cn is worse — its preview is the single character |.

The word-boundary rule is still right for space-separated text, so it is kept and only
skipped when two conditions hold at once: honouring it would discard most of the slice,
and the part being discarded is actually non-spacing script. The second condition keeps
the fallback off Latin text, and the character class it tests is the one the catalog
search tokenizer already uses (CJK_RE in convex/lib/searchText.ts, character for
character). When the fallback does apply, the preview is cut at the budget, which is what
the repository's other two truncators already do:

  • convex/publisherAbuse.tsvalue.slice(0, maxLength).trimEnd()
  • convex/lib/skillSummary.tscompact.slice(0, MAX_SUMMARY_CHARS - 3).trimEnd()

src/lib/truncateText.ts is the only place in the repository that backtracks to a
space; git grep 'lastIndexOf(" ")' returns one hit.

Non-goals, kept out to hold the change to one concern:

  • Grapheme-aware or width-aware truncation. The budget stays a UTF-16 length, unchanged.
  • Sharing one truncation helper across src/ and convex/. The three call sites now
    agree on behavior; consolidating them is a separate refactor.

User Impact

Catalog cards for Chinese, Japanese and Korean skills now show the same amount of text
as cards for English ones. Previously a publisher whose summary opened with a Latin
product name got a preview that carried none of their description, and a visitor
scanning the catalog had nothing to read on those rows. Cards for space-separated text
are byte-for-byte unchanged.

Evidence

Base commit: a9d04bb0. The fix is not on maintruncateText there still applies
lastIndexOf(" ") unconditionally, and the file has no test.

Measured against the repository's own corpus

fixtures/public-corpus/corpus.jsonl, 1250 real catalog records, run through the actual
call budgets (displayName 70, summary 80 and 100):

corpus records                        : 1250
preview outputs changed by the fix    : 40
distinct catalog entries improved     : 25
space-separated previews in the corpus: 1362
  ... of those, unchanged by the fix  : 1362

worst previews on main (characters kept out of the budget):
  budget  kept  entry                      rendered on main
      80     1  huangli-query-cn          |…
     100     1  huangli-query-cn          |…
      80     1  zhongguo-nongli-query     |…
      80     3  5gc-automation            5GC…
     100     3  5gc-automation            5GC…
      80     8  claude-code-evolution     实施Claude…
     100     8  claude-code-evolution     实施Claude…
      80     8  cmz-token-optimizer       智能模型路由 -…
     100     8  cmz-token-optimizer       智能模型路由 -…
      80     8  long57777-continuous-learning  持续学习套件 -…
      70     8  trading-plan-generator    基于 Brent…
      80     8  trading-plan-generator    基于 Brent…

All 1362 space-separated previews in that corpus produce identical output before and
after, so the word-boundary behavior English summaries rely on is untouched.

Read out of a mounted SkillCard

SkillCard rendered with @testing-library/react, reading .skill-card-title and
.skill-card-summary from the DOM. Same props on both sides; only truncateText
differs.

entry field on main with this change
5gc-automation summary (budget 100, source 104) 5GC… — 4 chars full 100 chars
claude-code-evolution summary (budget 100, source 145) 实施Claude… — 9 chars full 100 chars
deploy-helper title (budget 70, source 80) 68 chars 68 chars, identical
deploy-helper summary (budget 100, source 123) 85 chars 85 chars, identical

Rendered summary on main:

slug: 5gc-automation
  summary(budget 100, source 104 chars): 5GC…
         rendered length: 4

and with this change:

slug: 5gc-automation
  summary(budget 100, source 104 chars): 5GC Web仪表自动化技能,支持AMF/UDM/AUSF/SMF/PGW-C/UPF/PGW-U/GNB/UE/PCF/NRF/QoS/TC/PCC/smpolicy的批量添加与编辑及PCF默认规…
         rendered length: 100

Real-browser before/after on a running ClawHub

The measurements above are source-level. This one is the rendered catalog in a real
browser, against real catalog data - no jsdom, no fixture stubbing.

Setup: bun run build then bun run preview, pointed at the same public Convex
deployment the repository's own Playwright job uses
(VITE_CONVEX_URL=https://wry-manatee-359.convex.cloud). Chromium via Playwright then
loads /skills?tab=trending, /skills?tab=new and /, and reads back every rendered
preview that ends in an ellipsis. Both arms are full rebuilds of the same tree; the only
difference is src/lib/truncateText.ts.

Two comparisons were run against the same three pages.

main (a9d04bb) against this branch — the CJK repair on real cards. Three rendered
previews differ, all three CJK, each one going from a truncated fragment to the full
80-character budget of the card that renders them:

main (29 chars): ## 使用方法 将本技能包导入支持 `SKILL.md`…
fix  (80 chars): ## 使用方法 将本技能包导入支持 `SKILL.md` 的技能环境后,在需要制作抖音卖书视频时调用本技能,并提供书名、作者、出版社、版本或商品链接、封面、目…

main (25 chars): 定位:顶级摄影指导 + 跨平台AI提示词专家 +…
fix  (80 chars): 定位:顶级摄影指导 + 跨平台AI提示词专家 + 一键直接生图引擎。融合《完美摄影摆姿》、《拍出绝世光线》与《50张人像摄影背后的故事与技法》三部名著摄影理论…

main (38 chars): 思维永生 · MindVault — Agent 对话归档与思考辅助系统。…
fix  (80 chars): 思维永生 · MindVault — Agent 对话归档与思考辅助系统。 提供对话备份(JSONL)+规则萃取+项目快照三层记忆能力,以及DRAS-V五步思…

Every one of them is a live catalog record cut at the Latin space that follows its opening
token. No Latin-script preview differs between these two arms, so the word-boundary
behavior English cards rely on is untouched on real data as well.

The reviewed head (0b51dc3) against this branch — the review finding on real cards.
Both arms captured 31 truncated previews, 8 of them CJK. Exactly one preview differs,
and it is a real catalog record rather than a constructed string:

BEFORE (0b51dc30, the reviewed head)
  # <emoji> Reddit Automation *Built by the team at [doany.ai](https://doany.ai/?utm_s…

AFTER (c53b7860)
  # <emoji> Reddit Automation *Built by the team at…

The reviewed head cut inside a URL query string; the boundary is restored. The other 22
Latin previews were already ending on a word and are unchanged, and all 8 CJK previews are
byte-identical across these two arms - which is the point: the CJK repair shown in the
first comparison survives this revision untouched. The record opens with an emoji, redacted to <emoji> above; everything
else in those two lines is reproduced exactly as rendered, including the trailing
ellipsis the helper emits.

Focused tests

src/lib/truncateText.test.ts is new — the module had no test file, despite being
inside the coverage include glob. On the parent commit the three budget assertions
fail and the five contract assertions pass:

 FAIL  src/lib/truncateText.test.ts > truncateText > keeps the preview budget for Chinese summaries carrying an early Latin space
 FAIL  src/lib/truncateText.test.ts > truncateText > keeps the preview budget when a Latin product name opens a Chinese summary
AssertionError: expected '实施Claude…' to be '实施Claude Code架构的5阶段进化计划,将OpenClaw系统升级…'
 FAIL  src/lib/truncateText.test.ts > truncateText > keeps the preview budget for Japanese summaries carrying an early Latin space
AssertionError: expected 'Claude…' to be 'Claude Code向けのワークフロー自動化スキルパックです。日々のリリ…'

 Test Files  1 failed (1)
      Tests  3 failed | 5 passed (8)

With the change:

 Test Files  1 passed (1)
      Tests  10 passed (10)

The two tests added in the latest revision cover the review finding on the kept-ratio
fallback: one asserts a long Latin word keeps its boundary, the other asserts a short CJK
tail is still discarded in favour of that boundary. Both halves of the condition are
load-bearing - replacing keepsMostOfSlice || !discardsCJK with either half alone turns
exactly one of them red:

control (unmutated)             : 10 passed (10)
mutant A: keepsMostOfSlice only : 1 failed - keeps the word boundary when a long Latin word ends the slice
mutant B: !discardsCJK only     : 1 failed - keeps the Latin word boundary when only a short CJK tail is discarded
restored                        : 10 passed (10)

CI

  • bun run lint, bun run deadcode:ci, bun run check:peers, bun audit,
    bun run llms:check, bun run check:release-workflow-action-pins — all pass.
  • bun run format:check fails on CLAUDE.md and
    .agents/skills/autoreview/CLAUDE.md. That is pre-existing: the same two files, and
    only those two, fail on main at a9d04bb0. The two files in this PR are formatted
    with oxfmt.
  • VITE_CONVEX_URL=https://example.invalid bun run ci:unit on this branch:
    14 failed | 431 passed | 1 skipped (446) files, 24 failed | 5781 passed tests.
    On main: 14 failed | 430 passed | 1 skipped (445) files,
    24 failed | 5773 passed tests. The sorted list of failing files is identical on both
    sides — they are the suites that shell out to bun, plus
    convex/lib/githubAccount.test.ts and src/routes/-management.test.tsx. This branch
    adds one file and ten passing tests and introduces no new failure.

The Vercel check on this PR stays pending OpenClaw Foundation authorization, as it does
on every fork PR.

Written with AI assistance. I ran the focused tests, the corpus measurement and the
mounted-component render above myself, diffed the full unit suite against main, and
can maintain this code.

… Latin word

truncateText backtracks to the last space in the slice unconditionally. Scripts
that do not separate words with spaces usually carry a single Latin space near
the start of a summary, so that backtrack discards nearly the whole preview:
across fixtures/public-corpus/corpus.jsonl, 25 catalog entries render with a
handful of characters instead of their budget, one of them as just "|".

Honour the word boundary only when it keeps most of the slice. All 1362
space-separated previews in the same corpus are unchanged.
@vercel

vercel Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

@Yigtwxx is attempting to deploy a commit to the OpenClaw Foundation Team on Vercel.

A member of the Team first needs to authorize it.

@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. P2 Normal backlog priority with limited blast radius. labels Aug 5, 2026
@clawsweeper

clawsweeper Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed August 5, 2026, 5:43 PM ET / 21:43 UTC.

ClawSweeper review

What this changes

This PR changes catalog preview truncation so CJK summaries with an early Latin-space token retain the available preview text, and adds regression tests.

Merge readiness

⚠️ Ready for maintainer review - 1 item remains

Keep open. Current main and the latest release retain the unconditional space-backtracking behavior; this PR supplies a bounded shared-helper fix, regression tests, and sufficient real-browser evidence for ordinary maintainer merge review.

Priority: P2
Reviewed head: c53b78604415574465d80dbed273e71021717477

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused, regression-tested repair with direct live catalog evidence and no blocking findings.
Proof confidence 🦞 diamond lobster (5/6) Sufficient (live_output): The PR includes copied after-fix live Chromium output from real catalog pages, with before/after CJK previews and a follow-up boundary comparison.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (live_output): The PR includes copied after-fix live Chromium output from real catalog pages, with before/after CJK previews and a follow-up boundary comparison.
Evidence reviewed 6 items Current main still has the reported behavior: The shared helper always backs up to the last ASCII space, so a CJK summary whose only early space follows a Latin token can collapse to that prefix.
Shared catalog surface: Current card, home-listing, search-result, publisher, and dashboard components call this helper at their respective preview budgets, making this the central repair point.
Bounded proposed repair: The PR retains word-boundary truncation for ordinary space-separated text and bypasses the early boundary only when the discarded portion is CJK and the boundary would discard most of the slice; it adds ten focused helper tests.
Findings None None.
Security None None.

How this fits together

Catalog skill and plugin records feed shared card, search, publisher, home, and dashboard views. Those views use one frontend truncation helper to turn names and summaries into compact rendered previews.

flowchart LR
  A[Catalog records] --> B[Card and search views]
  B --> C[Shared preview truncation]
  C --> D[Word-boundary decision]
  D --> E[Rendered catalog previews]
Loading

Before merge

  • Complete next step (P2) - No mechanical repair remains; the bounded, proof-backed PR is ready for ordinary maintainer merge review.
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Production versus test delta production +13/-1, tests +84; 2 files affected The implementation is confined to the shared truncator and is accompanied by focused regression coverage.

Technical review

Best possible solution:

Land the shared-helper repair so every catalog preview surface handles CJK summaries consistently without duplicating per-card logic.

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

Yes—current main’s unconditional last-space backtrack is source-proven, and the PR provides a concrete real-browser before/after path using live catalog records.

Is this the best way to solve the issue?

Yes—the shared helper is the narrowest maintainable layer because all affected card and listing views already route through it, while tests preserve the established word-boundary behavior for space-separated text.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 6381d789ab18.

Labels

Label changes:

  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • remove rating: 🦞 diamond lobster: Current PR rating is rating: 🐚 platinum hermit, so this older rating label is no longer current.

Label justifications:

  • P2: This is a bounded catalog-preview correctness fix affecting discoverability across several catalog views.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR includes copied after-fix live Chromium output from real catalog pages, with before/after CJK previews and a follow-up boundary comparison.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR includes copied after-fix live Chromium output from real catalog pages, with before/after CJK previews and a follow-up boundary comparison.

Evidence

What I checked:

  • Current main still has the reported behavior: The shared helper always backs up to the last ASCII space, so a CJK summary whose only early space follows a Latin token can collapse to that prefix. (src/lib/truncateText.ts:7, 6381d789ab18)
  • Shared catalog surface: Current card, home-listing, search-result, publisher, and dashboard components call this helper at their respective preview budgets, making this the central repair point. (src/components/SkillCard.tsx:76, 6381d789ab18)
  • Bounded proposed repair: The PR retains word-boundary truncation for ordinary space-separated text and bypasses the early boundary only when the discarded portion is CJK and the boundary would discard most of the slice; it adds ten focused helper tests. (src/lib/truncateText.ts:17, c53b78604415)
  • Feature-history provenance: Blame attributes the current helper implementation to the current release-preparation commit; earlier history also shows the helper entering this area in the preceding download-retry work. (src/lib/truncateText.ts:7, 87ca030c30f3)
  • Release and current-main check: The latest release tag v0.23.3 contains the current helper commit, and no change to this file exists between the PR base and current main; the fix is therefore neither shipped nor already present on main. (src/lib/truncateText.ts:7, 87ca030c30f3)
  • After-fix behavior proof: The PR documents a real Chromium run against the public read backend, showing affected live CJK card previews expanding from short prefixes to the full 80-character budget while the compared Latin previews remain unchanged. (src/lib/truncateText.test.ts:45, c53b78604415)

Likely related people:

  • Patrick Erichsen: History and current-line blame connect both the helper’s initial introduction and its current release-era copy to this area. (role: introduced and recently carried the shared-helper implementation; confidence: high; commits: 4187c7dd1c6e, 87ca030c30f3; files: src/lib/truncateText.ts)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
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.

Workflow

  • 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.

History

Review history (18 earlier review cycles; latest 8 shown)
  • reviewed 2026-08-05T14:04:02.472Z sha c53b786 :: needs maintainer review before merge. :: none
  • reviewed 2026-08-05T16:03:57.395Z sha c53b786 :: needs maintainer review before merge. :: none
  • reviewed 2026-08-05T16:31:37.620Z sha c53b786 :: needs maintainer review before merge. :: none
  • reviewed 2026-08-05T18:04:43.900Z sha c53b786 :: needs maintainer review before merge. :: none
  • reviewed 2026-08-05T18:22:05.452Z sha c53b786 :: needs maintainer review before merge. :: none
  • reviewed 2026-08-05T19:51:40.466Z sha c53b786 :: needs maintainer review before merge. :: none
  • reviewed 2026-08-05T19:58:41.713Z sha c53b786 :: needs maintainer review before merge. :: none
  • reviewed 2026-08-05T21:18:38.706Z sha c53b786 :: needs maintainer review before merge. :: none

@Patrick-Erichsen Patrick-Erichsen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This fixes CJK catalog previews by avoiding a space backtrack when that boundary would discard most of the summary. The shared-helper implementation and regression coverage look correct, but the user-visible result has not been proven in ClawHub.

LOC: +77/-1 (2 files)

Finding: add a real-browser before/after capture from a running ClawHub instance with representative Chinese and Japanese fixtures.

Best-fix verdict: best pending visual proof. The shared preview helper is the right layer and preserves the old word-boundary behavior when it still yields a substantial preview.

Alternatives considered: special-casing CJK call sites duplicates formatting logic; disabling word-boundary truncation globally regresses Latin previews.

Code read: shared catalog preview helper, its established consumers, and added jsdom/corpus cases.

Remaining uncertainty: actual card layout and CSS behavior in the browser.

@clawsweeper clawsweeper Bot added merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. 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 Aug 5, 2026
The kept-ratio fallback was added for CJK summaries whose only Latin space
sits near the start, but it applied to every script. A space-separated
summary ending in a long token — a URL, a compound word — lost its word
boundary and was cut mid-token instead.

Gate the ratio on the discarded tail actually being non-spacing script,
reusing the character class the catalog search tokenizer already relies on
in convex/lib/searchText.ts.
@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. 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: 🧂 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 Aug 5, 2026
@Yigtwxx

Yigtwxx commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

@Patrick-Erichsen thanks for the review. The real-browser capture you asked for is now in the PR, added in c53b786 under Evidence -> Real-browser before/after on a running ClawHub.

How it was produced: bun run build then bun run preview, pointed at the same public Convex deployment this repository's own Playwright job uses (VITE_CONVEX_URL=https://wry-manatee-359.convex.cloud). Chromium via Playwright loads /skills?tab=trending, /skills?tab=new and /, and reads back every rendered preview that ends in an ellipsis. Both arms are full rebuilds of the same tree; the only difference is src/lib/truncateText.ts. No jsdom and no fixture stubbing - these are live catalog records rather than constructed strings.

Two comparisons are included:

  • main (a9d04bb) against this branch. Three rendered previews differ, all three CJK, each going from a truncated fragment to the full budget of its call site - for example a summary that renders as 29 characters on main renders the full 80 characters the card allows with this change. No Latin-script preview differs between these two arms, so the word-boundary behavior English cards rely on is untouched on real data as well.
  • The reviewed head (0b51dc3) against this branch. Both arms captured 31 truncated previews, 8 of them CJK. Exactly one differs: the reviewed head cut inside a URL query string, and c53b786 restores that boundary. All 8 CJK previews are byte-identical across these two arms, which is the point - the repair shown in the first comparison survives this revision.

That second commit also tightened the kept-ratio condition itself. Both halves of keepsMostOfSlice || !discardsCJK are load-bearing: replacing the condition with either half alone turns exactly one of the ten tests red, and each half has a dedicated test - a long Latin word keeping its boundary, and a short CJK tail still being discarded in favour of that boundary.

Ready for another look when you have time.

@clawsweeper clawsweeper Bot added rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. labels Aug 5, 2026
@Patrick-Erichsen
Patrick-Erichsen merged commit 4b30839 into openclaw:main Aug 5, 2026
94 of 96 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal backlog priority with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants