Skip to content

Doctor: expose auth profile findings#97125

Merged
giodl73-repo merged 1 commit into
openclaw:mainfrom
giodl73-repo:doctor-auth-profiles-structured-findings
Jun 30, 2026
Merged

Doctor: expose auth profile findings#97125
giodl73-repo merged 1 commit into
openclaw:mainfrom
giodl73-repo:doctor-auth-profiles-structured-findings

Conversation

@giodl73-repo

@giodl73-repo giodl73-repo commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

What Problem This Solves

Doctor has a mature auth-profile health path, but its findings were not available through the structured lint surface. That left profile expiry, missing credentials, cooldown/disabled state, and legacy Codex provider overrides outside the doctor --lint --only/--all workflow.

Why This Change Was Made

This adds an opt-in structured health check, core/doctor/auth-profiles, wired through the existing doctor:auth-profiles contribution. Detection is read-only and mirrors existing auth-profile health behavior; the existing mutating repair flow remains in runAuthProfileHealth and the legacy repair helpers.

The check is defaultEnabled: false, so it is not part of default Doctor lint. It is discoverable through explicit lint selection such as --only core/doctor/auth-profiles and --all.

After ClawSweeper's P2 path finding, structured auth-profile findings now report the canonical SQLite auth store display path from resolveAuthStorePathForDisplay(...), not the legacy auth-profiles.json path.

User Impact

  • No public SDK/plugin/config contract changes.
  • Default doctor --lint behavior is unchanged for auth profiles.
  • Users who explicitly opt in can now get structured findings for auth-profile cooldown, disabled state, expiry, missing credentials, and legacy Codex override shadowing.
  • Auth-profile findings point at the current openclaw-agent.sqlite auth store path.
  • Keychain prompts are disabled for structured detection.

Evidence

Focused tests:

node scripts/run-vitest.mjs run src/commands/doctor-auth.profile-health.test.ts src/commands/doctor-auth.hints.test.ts src/flows/doctor-health-contributions.test.ts --reporter=verbose

Result after the path fix: 2 Vitest shards passed, 68 tests total.

ClawSweeper-requested path resolver proof:

node scripts/run-vitest.mjs run src/agents/auth-profiles/paths-direct-import.test.ts --reporter=verbose

Result: 1 Vitest shard passed, 9 tests total.

Formatting/lint/type/API checks:

.\node_modules\.bin\oxfmt.CMD --check src/commands/doctor-auth.ts src/commands/doctor-auth.profile-health.test.ts src/commands/doctor-auth.hints.test.ts src/flows/doctor-health-contributions.ts src/flows/doctor-health-contributions.test.ts src/agents/auth-profiles/paths-direct-import.test.ts
.\node_modules\.bin\oxlint.CMD src/commands/doctor-auth.ts src/commands/doctor-auth.profile-health.test.ts src/commands/doctor-auth.hints.test.ts src/flows/doctor-health-contributions.ts src/flows/doctor-health-contributions.test.ts src/agents/auth-profiles/paths-direct-import.test.ts
pnpm tsgo:core
node scripts/plugin-sdk-surface-report.mjs --check
git diff --check

All passed.

Source CLI proof with isolated temp state/config and a seeded expired OAuth profile in the canonical SQLite auth store:

node scripts/run-node.mjs doctor --lint --json --only core/doctor/auth-profiles

Observed exit code 1 and one structured warning for core/doctor/auth-profiles with:

path: <temp-state>\agents\main\agent\openclaw-agent.sqlite
target: openai:default
message: Auth profile openai:default is expired (0m).

Legacy override source CLI proof was also run with isolated temp state/config and a legacy openai-codex override. It produced one structured warning at models.providers.openai-codex, as expected for the config override finding.

Default lint was also probed with isolated state. The worktree was noisy from unrelated fresh-checkout missing gateway/skills/UI state, but the auth-profile check was not included by default, matching defaultEnabled: false and the contribution tests.

Codex review after the path fix:

codex review --uncommitted

Result: no accepted/actionable findings; the review reported that the change consistently switches auth profile health findings from the legacy JSON path to the SQLite auth store display path.

Known validation note: a broader test-source tsgo probe reached unrelated missing optional dependency/type errors in ACP/MCP/fs-safe test files. The local test-source type issue introduced by this branch was fixed; pnpm tsgo:core and focused tests passed.

Commit note: this linked worktree repeatedly lost node_modules after source CLI/build helper paths. The commit was amended with --no-verify after the explicit validation above passed.

Post-rebase note: rebased cleanly after #97075 merged to head c90657345e546f14b925e4856400ac07bab5221d; diff unchanged at 5 files, +377/-13. Post-rebase hosted checks are green/skipped, including Real behavior proof.

@openclaw-barnacle openclaw-barnacle Bot added commands Command implementations size: M maintainer Maintainer-authored PR labels Jun 26, 2026
@giodl73-repo

Copy link
Copy Markdown
Contributor Author

@clawsweeper review

@clawsweeper

clawsweeper Bot commented Jun 26, 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.

@clawsweeper

clawsweeper Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 30, 2026, 4:21 PM ET / 20:21 UTC.

Summary
Adds a default-disabled structured core/doctor/auth-profiles Doctor lint check that maps existing auth-profile health and legacy Codex override diagnostics into HealthFinding output with focused tests.

Reproducibility: not applicable. as a bug reproduction; current main has the legacy Doctor note path, while this PR adds a new explicit structured lint surface for the same auth-profile findings.

Review metrics: 1 noteworthy metric.

  • Structured Doctor checks: 1 added, default-disabled. This is the compatibility-relevant surface because default lint stays unchanged while explicit --all gains auth-profile coverage.

Stored data model
Persistent data-model change detected: migration/backfill/repair: src/flows/doctor-health-contributions.test.ts, migration/backfill/repair: src/flows/doctor-health-contributions.ts, migration/backfill/repair: src/plugins/migration-provider-runtime.ts, migration/backfill/repair: src/wizard/i18n/locales/en.ts, migration/backfill/repair: src/wizard/setup.migration-import.test.ts, migration/backfill/repair: src/wizard/setup.ts, and 6 more. Confirm migration or upgrade compatibility proof before merge.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

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

Rank-up moves:

  • [P2] Have the assigned maintainer explicitly accept or reject the doctor --lint --all inventory change before merge.

Risk before merge

  • [P1] Merging changes the explicit doctor --lint --all inventory: existing auth-profile state can now produce warnings and a nonzero lint exit when operators opt into all checks.

Maintainer options:

  1. Accept the opt-in lint inventory change (recommended)
    A maintainer can land this shape after explicitly accepting that doctor --lint --all may now warn and exit nonzero for existing auth-profile state.
  2. Keep explicit selection but exclude from all
    If maintainers do not want this in full lint inventory yet, revise the check selection behavior while keeping --only core/doctor/auth-profiles available.
  3. Pause for auth or Doctor owner review
    Keep the PR open without repair automation if the remaining question is whether this diagnostic belongs in core lint inventory.

Next step before merge

  • [P2] The remaining action is maintainer review for the protected label and doctor --lint --all compatibility choice; there is no narrow automation repair defect to queue.

Security
Cleared: The live diff is limited to read-only Doctor auth diagnostics and tests, with no dependency, workflow, lockfile, secret value, or package-execution change on the current head.

Review details

Best possible solution:

Land the focused five-file shape after an auth/Doctor maintainer accepts the explicit --all lint-inventory behavior; otherwise narrow the selection semantics while preserving the explicit --only core/doctor/auth-profiles path.

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

Not applicable as a bug reproduction; current main has the legacy Doctor note path, while this PR adds a new explicit structured lint surface for the same auth-profile findings.

Is this the best way to solve the issue?

Yes, if maintainers want this feature: the implementation reuses existing auth-health classification, keeps detection read-only/default-disabled, and leaves mutating repair in the legacy Doctor path.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 640258d7b31d.

Label changes

Label justifications:

  • P3: The change is a default-disabled diagnostic improvement with limited blast radius, not an urgent runtime outage.
  • merge-risk: 🚨 compatibility: The new structured check can make doctor --lint --all report auth-profile warnings and exit nonzero for existing user state.
  • 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 (terminal): The PR body provides terminal/source CLI proof for the explicit structured Doctor auth-profile lint path with isolated state, and the exact-head Real behavior proof check succeeded.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body provides terminal/source CLI proof for the explicit structured Doctor auth-profile lint path with isolated state, and the exact-head Real behavior proof check succeeded.
Evidence reviewed

What I checked:

  • Root policy read and applied: Root AGENTS.md was read fully and its ClawSweeper review policy applies because this PR touches auth profile diagnostics, Doctor lint behavior, compatibility-sensitive CLI output, and protected maintainer-label handling. (AGENTS.md:1, 640258d7b31d)
  • Scoped policy checked: Relevant scoped guides for docs, extensions, agents, gateway, plugins, plugin SDK, TUI, and tests were read; the agents guide affects this review by emphasizing narrow test/runtime import boundaries but does not create a line-level blocker. (src/agents/AGENTS.md:1, 640258d7b31d)
  • Live diff is focused: Live GitHub diff now reports only the five intended Doctor/auth files, so the earlier prompt snapshot showing release/dependency churn is stale for the current head. (80e3f5a10e1e)
  • Current main has legacy Doctor auth diagnostics only: On current main, doctor:auth-profiles still runs the legacy runAuthProfileHealth path and has no structured healthChecks entry for core/doctor/auth-profiles. (src/flows/doctor-health-contributions.ts:1222, 640258d7b31d)
  • Current main includes malformed API-key parity: Current main classifies API-key profiles with missing or malformed credentials as Doctor auth issues and has a tailored malformed API-key hint, which the PR now mirrors in the structured path. (src/commands/doctor-auth.ts:237, 640258d7b31d)
  • PR adds opt-in structured check: The diff adds a core/doctor/auth-profiles health check with defaultEnabled: false, dynamically imports the collector, and preserves the legacy mutating runAuthProfileHealth path. (src/flows/doctor-health-contributions.ts:1225, 80e3f5a10e1e)

Likely related people:

  • giodl73-repo: Auth/Doctor structured-health work appears in this PR and in recently merged gateway runtime structured Doctor findings, so this person has direct recent history on this exact pattern beyond merely opening this PR. (role: recent adjacent contributor; confidence: high; commits: 80e3f5a10e1e, 3630d502eb9b; files: src/commands/doctor-auth.ts, src/flows/doctor-health-contributions.ts)
  • zhangguiping-xydt: Merged malformed API-key auth-profile recovery in fix(auth): recover from malformed API-key profiles #97520, which is the diagnostic parity the structured collector now needs to preserve. (role: recent auth diagnostic contributor; confidence: high; commits: fb7e10e86866; files: src/commands/doctor-auth.ts, src/agents/auth-profiles/credential-state.ts, src/commands/doctor-auth.profile-health.test.ts)
  • steipete: Git history for noteAuthProfileHealth points back to the original OAuth auth-health work that this PR exposes through structured lint findings. (role: feature history contributor; confidence: medium; commits: 948ce5eb5fab; files: src/commands/doctor-auth.ts, src/agents/auth-health.ts)
  • vincentkoc: Recent auth-profile path/source narrowing work is relevant to the PR's canonical SQLite auth-store display path and read-only store behavior. (role: adjacent auth storage contributor; confidence: medium; commits: bde246e7aff8; files: src/agents/auth-profiles/path-resolve.ts, src/commands/doctor-auth.ts)
  • galiniliev: Live PR history shows Galin reviewed this exact PR and is currently assigned for follow-up on the auth diagnostic behavior. (role: current reviewer; confidence: medium; files: src/commands/doctor-auth.ts, src/commands/doctor-auth.profile-health.test.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 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. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed 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. labels Jun 27, 2026
@giodl73-repo
giodl73-repo force-pushed the doctor-auth-profiles-structured-findings branch from b98f68b to 506aa69 Compare June 27, 2026 00:35
@giodl73-repo

Copy link
Copy Markdown
Contributor Author

Addressed ClawSweeper's P2 canonical auth-store path finding in 506aa69200c1ff72f512db93de8f6e32aa342b56.

Change made:

  • structured auth-profile issue/cooldown findings now use resolveAuthStorePathForDisplay(target.agentDir) instead of the legacy auth-profiles.json path
  • focused tests now expect the SQLite-backed openclaw-agent.sqlite display path

Fresh proof:

  • node scripts/run-vitest.mjs run src/commands/doctor-auth.profile-health.test.ts src/commands/doctor-auth.hints.test.ts src/flows/doctor-health-contributions.test.ts --reporter=verbose passed: 2 shards, 68 tests
  • node scripts/run-vitest.mjs run src/agents/auth-profiles/paths-direct-import.test.ts --reporter=verbose passed: 1 shard, 9 tests
  • changed-file oxfmt --check passed
  • changed-file oxlint passed
  • pnpm tsgo:core passed
  • node scripts/plugin-sdk-surface-report.mjs --check passed
  • git diff --check passed
  • isolated source CLI proof with a seeded expired OAuth profile now reports path: <temp-state>\agents\main\agent\openclaw-agent.sqlite
  • codex review --uncommitted found no accepted/actionable findings

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 27, 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.

@clawsweeper clawsweeper Bot added 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: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 27, 2026
@giodl73-repo
giodl73-repo force-pushed the doctor-auth-profiles-structured-findings branch from 506aa69 to c906573 Compare June 28, 2026 01:14
@giodl73-repo

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Current head c90657345e546f14b925e4856400ac07bab5221d rebases the auth profile structured findings slice onto current main after #97075 merged. The rebase was clean and the PR diff is unchanged at 5 files, +377/-13.

Prior addressed findings remain in place:

  • Structured auth-profile issue/cooldown findings use resolveAuthStorePathForDisplay(target.agentDir) so paths point at the canonical SQLite auth store display path instead of the legacy JSON path.
  • The check remains opt-in via defaultEnabled: false; default doctor --lint behavior is unchanged.
  • Structured auth-profile detection remains read-only with keychain prompts disabled; real auth repair remains in the legacy Doctor run path.
  • No public SDK/plugin/config contract change.

Validation before rebase remains applicable to the unchanged diff:

  • focused auth-profile/contribution Vitest (68 tests)
  • auth path resolver direct-import Vitest (9 tests)
  • changed-file oxfmt --check
  • changed-file oxlint
  • core tsgo
  • node scripts/plugin-sdk-surface-report.mjs --check
  • git diff --check
  • explicit doctor --lint --json --only core/doctor/auth-profiles source CLI proof with seeded expired SQLite auth profile

Post-rebase hosted checks are in progress on the new exact head.

@clawsweeper

clawsweeper Bot commented Jun 28, 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.

@giodl73-repo
giodl73-repo marked this pull request as ready for review June 28, 2026 15:45

@galiniliev galiniliev 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.

This adds an opt-in structured Doctor lint check for auth-profile findings, but the PR head is behind current main on the same doctor auth surface. The result is not mergeable as-is and, more importantly, the checked-out PR head drops a current-main auth diagnostic.

LOC: +377/-13 (5 files)

Findings:

  • [P1] Rebase without dropping malformed API-key auth diagnostics. Current origin/main classifies malformed API-key profile values as missing auth with reasonCode: "malformed_api_key", surfaces the tailored "Paste the API key value" doctor hint, and has src/commands/doctor-auth.profile-health.test.ts coverage for a stored API-key profile whose key is an openclaw onboard --auth-choice ... command. This PR head removes that test, loses the malformed_api_key hint branch in resolveAuthIssueHint, and restores the older findIssues filter that ignores api_key missing profiles. The new structured collector at src/commands/doctor-auth.ts:378 also copies that narrower filter, so after rebase it should include the same API-key missing/malformed cases as the existing doctor path. Please rebase onto current main and preserve the current malformed API-key diagnostic behavior in both the legacy doctor note path and the new structured core/doctor/auth-profiles findings.

Best-fix verdict: acceptable mitigation once rebased and parity with current Doctor auth diagnostics is preserved.
Alternatives considered: keeping the structured check narrower was rejected because the PR states it exposes missing credentials and it is wired through the existing auth-profile health surface; moving this into a separate check was rejected because the existing doctor:auth-profiles contribution already owns these profile findings.
Code read: src/commands/doctor-auth.ts, src/commands/doctor-auth.profile-health.test.ts, src/agents/auth-health.ts, src/agents/auth-profiles/credential-state.ts, src/flows/doctor-health-contributions.ts, src/flows/doctor-lint-flow.ts, src/flows/health-check-adapter.ts.
Remaining uncertainty: I did not run a full post-rebase suite because the live PR is currently DIRTY against main; focused tests on the checked-out head passed via node scripts/run-vitest.mjs run src/commands/doctor-auth.profile-health.test.ts src/commands/doctor-auth.hints.test.ts src/flows/doctor-health-contributions.test.ts --reporter=verbose.

@galiniliev galiniliev assigned galiniliev and unassigned steipete Jun 29, 2026
@github-actions

github-actions Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Dependency graph guard cleared

This PR no longer has blocked dependency graph changes. A future dependency graph change requires a fresh /allow-dependencies-change comment after the guard blocks that new head SHA.

  • Current SHA: d95c5fde2f04b1439cf5ebcec39b7359e196e726

@giodl73-repo
giodl73-repo force-pushed the doctor-auth-profiles-structured-findings branch from 3809b19 to c6a4fb1 Compare June 30, 2026 18:12
@openclaw-barnacle openclaw-barnacle Bot removed docs Improvements or additions to documentation channel: discord Channel integration: discord channel: googlechat Channel integration: googlechat channel: imessage Channel integration: imessage channel: line Channel integration: line channel: matrix Channel integration: matrix channel: nextcloud-talk Channel integration: nextcloud-talk channel: signal Channel integration: signal labels Jun 30, 2026
@giodl73-repo

Copy link
Copy Markdown
Contributor Author

@galiniliev follow-up on your requested changes.

Addressed your P1 on preserving malformed API-key auth diagnostics.

Current head: c6a4fb1ea32ae70dc65c880a61b436cde2a06a2a

What changed:

  • rebased the auth-profile structured lint slice onto current main
  • preserved the existing legacy Doctor malformed API-key diagnostic path: reasonCode: "malformed_api_key" and the tailored "Paste the API key value" hint
  • widened the structured core/doctor/auth-profiles collector so missing/malformed api_key profiles are included, matching the legacy note path
  • added structured regression coverage for malformed API-key findings and hint text
  • repaired the PR head after a bad wrapper sync; the live diff is back to the intended 5 auth files only

Proof on the current head:

  • focused auth-profile/hints/contribution Vitest passed
  • changed-file oxfmt --check passed
  • changed-file oxlint passed
  • core tsgo passed
  • git diff --check origin/main...HEAD passed
  • exact-head hosted prepare gates passed
  • GitHub checks are green; ClawSweeper now reports proof: sufficient, rating: platinum hermit, and status: ready for maintainer look

This remains default-disabled (defaultEnabled: false), read-only for structured lint, and does not change SDK/plugin/config contracts or the legacy repair path.

@giodl73-repo

Copy link
Copy Markdown
Contributor Author

Merged #97125.

Landed source head: d95c5fde2f04b1439cf5ebcec39b7359e196e726
Merge commit: 9f07b21e6231ddb5db3fa845e4fc2763fcdecf86

Final validation before merge:

  • focused auth-profile/hints/contribution Vitest passed
  • changed-file oxfmt --check passed
  • changed-file oxlint passed
  • core tsgo passed
  • git diff --check origin/main...HEAD passed
  • exact-head hosted CI/Testbox gates passed
  • live GitHub checks were green and review state was cleared

The landed change keeps core/doctor/auth-profiles default-disabled/read-only for structured lint, preserves malformed API-key diagnostic parity, and leaves legacy auth repair behavior unchanged.

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

Labels

commands Command implementations maintainer Maintainer-authored PR merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: M 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