Skip to content

Keep core doctor health in contribution order#86627

Merged
giodl73-repo merged 5 commits into
openclaw:mainfrom
giodl73-repo:doctor-core-contribution-health
Jun 20, 2026
Merged

Keep core doctor health in contribution order#86627
giodl73-repo merged 5 commits into
openclaw:mainfrom
giodl73-repo:doctor-core-contribution-health

Conversation

@giodl73-repo

@giodl73-repo giodl73-repo commented May 25, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR integrates structured health checks with the ordered core doctor checks. The goal is to make it cheap and safe to add structured findings, dry-run previews, and diff/effect reporting to existing doctor rules without moving those rules out of the doctor order that already works.

The model is:

  • core doctor checks stay owned by resolveDoctorHealthContributions() / createDoctorHealthContribution(...), which remains the source of truth for openclaw doctor and openclaw doctor --fix ordering
  • core contributions can now declare healthChecks directly; for a single inline check the factory derives id, kind: "core", source: "doctor", and healthCheckIds
  • if a contribution still has legacy run, that legacy path remains authoritative for normal doctor and real doctor --fix mutation
  • while legacy run is still present, the structured health check should usually add detect; any structured repair / structured run should be preview-only for dry-run, diff, and effect reporting
  • the full switchover only happens when legacy run is deliberately removed; then the old repair behavior is called from the structured health check and healthChecks owns the contribution execution path
  • doctor --lint runs structured core checks in contribution order first, then appends non-core bundled/plugin registry checks
  • the shared health registry is now the extension registry surface: bundled/plugin checks register there and run after the ordered core contribution checks
  • core doctor checks do not register into that shared registry for ordering; their order comes from the doctor contribution list
  • the broad structured repair bridge is reserved for extension/plugin registry checks rather than becoming a second core repair runner
  • the temporary doctor health conversion-plan ledger is removed because contribution ordering and contribution/core-check tests now own the invariant directly

That gives us the migration ladder we wanted: keep existing doctor repair behavior in place while adding structured lint/dry-run/diff data, then move the old repair behavior behind healthChecks only when that specific core contribution is ready for full structured ownership. It also keeps the ownership boundary clear: core doctor ordering lives in contributions, while the shared health registry remains the extension point for bundled/plugin checks.

Concrete Example: #85566

#85566 is the first small rule migration that shows why this PR exists.

The merged bridge shape registered core/doctor/shell-completion as structured
health while keeping real repair in the existing positional Doctor path. That
was the safe first step: lint/dry-run data could exist without moving real
doctor --fix behavior.

This PR makes the target shape available for follow-up migrations:

createDoctorHealthContribution({
  id: "doctor:shell-completion",
  label: "Shell completion",
  healthChecks: {
    id: "core/doctor/shell-completion",
    description: "Shell completion profile and cache are ready.",
    async run(ctx, scope) {
      return runShellCompletionHealth(ctx, scope);
    },
  },
  run: runLegacyShellCompletionDoctorRepair,
})

That lets doctor --lint report core/doctor/shell-completion through the
ordered core contribution path, while openclaw doctor --fix can keep the
legacy shell-completion repair path in its original Doctor slot until that rule
intentionally moves fully behind healthChecks.

Merged bridge example: #85566, merge commit
dc17412.

Real Behavior Proof

Behavior or issue addressed:
This PR changes the doctor health execution boundary: ordered core doctor
contributions supply core lint checks first, while bundled/plugin registry
checks remain the extension surface after core checks.

Real environment tested:
WSL Ubuntu 24.04 durable OpenClaw worktree at
/root/src/openclaw-86627-core-order, behavior-proof worktree head 0b64c4ebda2c4610994b3eb46e1012c71ad28d22, with latest PR head 0928476673c7323bd7a3fba51b5a565b4fbe5d07 pending refreshed hosted checks after rebase; prior head 9b06037369ac463a914fb82702edc3e31a38fe26 was covered by green CI and ClawSweeper review,
isolated OPENCLAW_STATE_DIR, OPENCLAW_CONFIG_PATH, HOME, and workspace
under /tmp/openclaw-86627-proof-refresh-node.

Proof 1: real command-path ordering with a registered non-core health check.
The proof enabled the bundled Policy plugin, then used the same sequence as
doctor --lint: read config, register bundled health checks, resolve ordered
core contribution checks, then append non-core registry checks.

Output:

{"orderedSubset":["core/doctor/gateway-config","core/doctor/command-owner","policy/policy-jsonc-missing"],"coreCount":19,"extensionCount":52}

This shows the registered non-core Policy check is appended after the ordered
core Doctor checks.

Proof 2: real source-entry doctor --lint --json with selected core and
registered non-core checks.

Command shape:

OPENCLAW_STATE_DIR=/tmp/openclaw-86627-proof-refresh-node/state \
OPENCLAW_CONFIG_PATH=/tmp/openclaw-86627-proof-refresh-node/state/openclaw.json \
HOME=/tmp/openclaw-86627-proof-refresh-node/home \
CI=1 TERM=dumb \
node --import tsx src/entry.ts doctor --lint --json \
  --only core/doctor/gateway-config \
  --only core/doctor/command-owner \
  --only policy/policy-jsonc-missing

Output:

{"ok":false,"checksRun":3,"checksSkipped":68,"findings":[{"checkId":"core/doctor/gateway-config","severity":"warning","message":"gateway.mode is unset; gateway start will be blocked.","path":"gateway.mode","fixHint":"Run `openclaw configure` and set Gateway mode (local/remote), or `openclaw config set gateway.mode local`."},{"checkId":"policy/policy-jsonc-missing","severity":"warning","message":"policy.jsonc is missing for the enabled Policy plugin.","source":"policy","path":"policy.jsonc","fixHint":"Restore policy.jsonc or add the policy artifact for this workspace."},{"checkId":"core/doctor/command-owner","severity":"info","message":"No command owner is configured. Owner-only commands (/diagnostics, /export-trajectory, /config, exec approvals) have no allowed sender.","path":"commands.ownerAllowFrom","fixHint":"Set commands.ownerAllowFrom to your channel user id, e.g. `openclaw config set commands.ownerAllowFrom '[\"telegram:123456789\"]'`."}]}

Exit code: 1, expected because the selected checks intentionally report
findings.

What was not tested:
No plugin package was installed. The non-core registry proof uses the bundled
Policy plugin as the registered extension-health surface.

How A Core Rule Upgrades

Before an upgrade, a rule is just an ordered doctor contribution:

createDoctorHealthContribution({
  id: "doctor:some-rule",
  label: "Some rule",
  run: runSomeRuleHealth,
})

For the safe in-place upgrade, the rule keeps its old run and adds one inline health check beside it. Legacy run still owns real doctor behavior; healthChecks.detect supplies structured lint findings:

createDoctorHealthContribution({
  id: "doctor:some-rule",
  label: "Some rule",
  run: runSomeRuleHealth,
  healthChecks: {
    description: "Some rule is valid.",
    async detect(ctx) {
      return detectSomeRuleFindings(ctx);
    },
  },
})

If the rule can provide dry-run/diff/effect detail before the full switchover, it can add structured repair as a preview-only path while legacy run still owns real mutation:

createDoctorHealthContribution({
  id: "doctor:some-rule",
  label: "Some rule",
  run: runSomeRuleHealth,
  healthChecks: {
    description: "Some rule is valid.",
    async detect(ctx) {
      return detectSomeRuleFindings(ctx);
    },
    async repair(ctx, findings) {
      return previewSomeRuleRepair(ctx, findings);
    },
  },
})

When the rule is ready to be fully structured, remove legacy run and call the old repair behavior from the structured check. At that point healthChecks owns the contribution execution path:

createDoctorHealthContribution({
  id: "doctor:some-rule",
  label: "Some rule",
  healthChecks: {
    description: "Some rule is valid.",
    async run(ctx, scope) {
      const findings = await detectSomeRuleFindings(ctx, scope);
      if (!ctx.repair && !ctx.previewRepair) {
        return { findings };
      }
      if (ctx.previewRepair) {
        return previewSomeRuleRepair(ctx, findings);
      }
      return runSomeRuleRepairAsStructured(ctx, findings);
    },
  },
})

When one fully structured contribution owns multiple structured checks, each check names its own ID explicitly:

createDoctorHealthContribution({
  id: "doctor:browser",
  label: "Browser",
  healthChecks: [
    {
      id: "core/doctor/browser",
      description: "Browser readiness is valid.",
      async detect(ctx) {
        return collectBrowserReadinessFindings(ctx);
      },
    },
    {
      id: "core/doctor/browser-clawd-profile-residue",
      description: "Legacy browser profile residue is absent.",
      async detect(ctx) {
        return detectBrowserResidueFindings(ctx);
      },
      async repair(ctx, findings) {
        return previewOrArchiveBrowserResidue(ctx, findings);
      },
    },
  ],
})

If a check has repair behavior, it is expected to honor the existing dry-run/diff/effects conventions.

Validation

  • Rebased cleanly onto origin/main at 1bdf210b438.
  • Current PR head: 0928476673c7323bd7a3fba51b5a565b4fbe5d07. This is a clean rebase of the previously reviewed head 9b06037369ac463a914fb82702edc3e31a38fe26; refreshed hosted checks are running.
  • Simplified the ClawSweeper follow-up by moving the shared core/extension collision guard into listExtensionHealthChecksForDoctor(...), so doctor --lint and structured extension repair use the same boundary helper.
  • Added two current-main CI alignments found after the rebase: heartbeat empty-content detection now ignores the runtime template HTML comment, and the heartbeat repair test compares against the actual runtime template file.
  • Updated the PDF model-config test expectation for the current default OpenAI fallback, openai/gpt-5.5.
  • git diff --check
  • pnpm exec oxfmt --check src/auto-reply/heartbeat.ts src/commands/doctor-heartbeat-template-repair.test.ts src/agents/tools/pdf-tool.model-config.test.ts
  • pnpm exec oxfmt docs/cli/doctor.md src/commands/doctor-lint.ts src/commands/doctor-lint.test.ts src/flows/doctor-core-checks.ts src/flows/doctor-core-checks.test.ts src/flows/doctor-health-contributions.ts src/flows/doctor-health-contributions.test.ts src/flows/doctor-repair-flow.ts src/flows/health-check-registry.ts
  • pnpm exec oxlint src/flows/health-check-registry.ts src/commands/doctor-lint.ts src/commands/doctor-lint.test.ts src/flows/doctor-core-checks.ts src/flows/doctor-core-checks.test.ts src/flows/doctor-health-contributions.ts src/flows/doctor-health-contributions.test.ts src/flows/doctor-repair-flow.ts src/auto-reply/heartbeat.ts src/commands/doctor-heartbeat-template-repair.test.ts src/agents/workspace-templates.test.ts src/agents/tools/pdf-tool.model-config.test.ts
  • pnpm exec vitest run --project commands src/commands/doctor-lint.test.ts src/commands/doctor-heartbeat-template-repair.test.ts (19 tests)
  • pnpm exec vitest run src/agents/workspace-templates.test.ts (10 tests across agents-core and agents-support)
  • pnpm exec vitest run src/agents/tools/pdf-tool.model-config.test.ts (24 tests across agents-core and agents-tools)
  • pnpm exec node scripts/run-oxlint-shards.mjs --threads=8
  • pnpm exec vitest run src/crestodian/rescue-message.test.ts (10 tests)
  • pnpm exec vitest run src/tasks/task-flow-registry.store.test.ts (8 tests)
  • pnpm exec vitest run --project unit-fast src/flows/doctor-health-contributions.test.ts src/pairing/setup-code.test.ts (74 tests)
  • pnpm exec vitest run --project unit src/flows/doctor-core-checks.test.ts (13 tests)
  • pnpm tsgo:core
  • pnpm tsgo:test:src

Updated In-Place Upgrade Stack

These are the doctor PRs in the in-place upgrade series. Each one keeps the existing contribution order and preserves legacy real repair unless that PR explicitly removes the legacy run path.

PR Area Shape
#85566 Shell completion Structured lint health is owned by the existing doctor:shell-completion contribution.
#84290 UI freshness Structured lint/dry-run effects report missing or stale Control UI assets, while real build/rebuild stays on the existing doctor UI freshness path.
#84366 Session locks Structured lint/dry-run effects report stale lock cleanup, while real cleanup stays on the existing session-lock doctor path.
#84450 Config audit scrub Next small config/state slice: structured lint/dry-run effects report historical config-audit argv redaction cleanup, while real scrub stays on the existing config-audit doctor path.
#84326 Sandbox registry Structured lint/dry-run effects report legacy sandbox registry migrate/remove/quarantine work, while real migration stays on the existing sandbox doctor path.
#84340 Gateway extra services Structured lint/dry-run effects report extra gateway-like services and legacy cleanup previews, while real cleanup stays on the existing gateway-services doctor path.

The remaining older doctor repair drafts should be rebased onto this PR and reduced to this same in-place shape before they are presented as part of the series.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation commands Command implementations size: M maintainer Maintainer-authored PR labels May 25, 2026
@giodl73-repo

Copy link
Copy Markdown
Contributor Author

@clawsweeper review

@clawsweeper

clawsweeper Bot commented May 25, 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 commented May 25, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper review: did not complete due to Codex infrastructure failure. Reviewed June 20, 2026, 1:57 PM ET / 17:57 UTC.

Summary
Review failed before ClawSweeper could summarize the requested change.

PR surface: Source -91, Tests +664, Docs +2, Other +1. Total +576 across 14 files.

Reproducibility: unclear. The review failed before ClawSweeper could establish a reproduction path.

Review metrics: none identified.

Stored data model
Persistent data-model change detected: migration/backfill/repair: docs/cli/doctor.md, migration/backfill/repair: src/commands/doctor-lint.test.ts, migration/backfill/repair: src/commands/doctor-lint.ts, migration/backfill/repair: src/flows/doctor-core-checks.test.ts, migration/backfill/repair: src/flows/doctor-health-contributions.test.ts, migration/backfill/repair: src/flows/doctor-health-contributions.ts, and 12 more. Confirm migration or upgrade compatibility proof before merge.

Merge readiness
Not assessed.
Failure reason: timeout.

This is a ClawSweeper/Codex infrastructure failure, not a PR readiness or patch-quality verdict.
Keep any merge decision on the normal maintainer review path until ClawSweeper can complete a fresh review.

Risk before merge

  • [P1] No close action taken because the review did not complete.

Maintainer options:

  1. Decide the mitigation before merge
    Retry the Codex review after fixing the execution failure.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • Review did not complete, so no work-lane recommendation was made.
Review details

Best possible solution:

Retry the Codex review after fixing the execution failure.

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

Unclear. The review failed before ClawSweeper could establish a reproduction path.

Is this the best way to solve the issue?

Unclear. Retry the review first so ClawSweeper can evaluate the actual issue and fix direction.

AGENTS.md: unclear because the file could not be read completely.

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

Label changes

Label changes:

  • remove proof: sufficient: Current real behavior proof status is not_applicable, not sufficient.
  • remove P2: Current review triage priority is none.
  • remove rating: 🐚 platinum hermit: Current review failed before PR readiness was assessed, so no rating label should remain.
  • remove merge-risk: 🚨 compatibility: Current PR review selected no merge-risk labels.
  • remove status: 👀 ready for maintainer look: Current PR status no longer selects a status label.
Evidence reviewed

PR surface:

Source -91, Tests +664, Docs +2, Other +1. Total +576 across 14 files.

View PR surface stats
Area Files Added Removed Net
Source 7 241 332 -91
Tests 5 802 138 +664
Docs 1 6 4 +2
Config 0 0 0 0
Generated 0 0 0 0
Other 1 2 1 +1
Total 14 1051 475 +576

What I checked:

  • failure reason: timeout.
  • codex failure detail: Codex review failed for this PR: Codex process timed out after 1200000ms.
  • codex stderr: No stderr captured.
  • codex stdout: {"type":"thread.started","thread_id":"019ee61b-e90f-7d41-9136-2c7817809e22"}.
  • process error code: ETIMEDOUT.

Likely related people:

  • unknown: Codex failed before it could trace repository history. (role: review did not complete; confidence: low)
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. P2 Normal backlog priority with limited blast radius. labels May 25, 2026
@clawsweeper

clawsweeper Bot commented May 25, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

✨ Hatched: 🥚 common Neon Test Hopper

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: 🥚 common.
Trait: sleeps inside passing CI.
Image traits: location flaky test forest; accessory proof snapshot camera; palette rose quartz and slate; mood watchful; pose holding its accessory up for inspection; shell soft velvet shell; lighting moonlit rim light; background tiny shells and proof notes.
Share on X: post this hatch
Copy: My PR egg hatched a 🥚 common Neon Test Hopper 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.

@giodl73-repo
giodl73-repo force-pushed the doctor-core-contribution-health branch from 4df9d7e to 5102ad1 Compare May 25, 2026 21:08
@clawsweeper clawsweeper Bot added merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. 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 25, 2026
@giodl73-repo
giodl73-repo force-pushed the doctor-core-contribution-health branch 5 times, most recently from 581f965 to 3d02e2c Compare May 26, 2026 02:05
@giodl73-repo

Copy link
Copy Markdown
Contributor Author

@clawsweeper review

@clawsweeper

clawsweeper Bot commented May 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.

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: 🧂 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 26, 2026
@giodl73-repo
giodl73-repo force-pushed the doctor-core-contribution-health branch from 3d02e2c to 71b8c16 Compare May 26, 2026 02:29
@clawsweeper

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

Copy link
Copy Markdown
Contributor Author

Maintainer acceptance for final landing: I accept the ordered-core doctor health boundary in this PR, including reserving the core/doctor/* health-check namespace and keeping the deprecated plugin-sdk/health export compatibility story. Please let the exact-head required checks gate the final merge on head 856cac9a9825cd93f21e4997cfa8dca9228dbaf4.

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased #86627 onto current origin/main (fddfcbe10e) and force-with-lease pushed new head 115768a15c.

Maintainer compatibility acceptance is recorded above for the reserved core/doctor/* namespace and deprecated plugin-sdk/health export story.

Local validation after this rebase:

  • pnpm exec node scripts/test-projects.mjs src/commands/doctor-lint.test.ts src/flows/doctor-core-checks.test.ts src/flows/doctor-health-contributions.test.ts src/commands/doctor-heartbeat-template-repair.test.ts - passed 3 Vitest shards.
  • pnpm plugin-sdk:surface:check - passed on prior rebased head before the final clean rebase; the final rebase had no conflicts in the surface budget commit.
  • pnpm tsgo:core:test and pnpm tsgo:extensions:test - passed in throttled local mode on prior rebased head; the final rebase was clean.
  • pnpm exec oxfmt --check --threads=1 <PR-touched files> - passed on 115768a15c.
  • pnpm exec oxlint <PR-touched JS/TS files> - passed on 115768a15c.
  • git diff --check origin/main...HEAD - passed on 115768a15c.

Please let exact-head GitHub checks gate final merge.

@clawsweeper

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

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased #86627 again onto current origin/main (ecac665bf3) because main moved through merge-critical scripts/* paths while exact-head checks were queued. Force-with-lease pushed new head e5cfa1e4b2.

Local validation on this exact head:

  • pnpm exec node scripts/test-projects.mjs src/commands/doctor-lint.test.ts src/flows/doctor-core-checks.test.ts src/flows/doctor-health-contributions.test.ts src/commands/doctor-heartbeat-template-repair.test.ts - passed 3 Vitest shards.
  • pnpm exec oxfmt --check --threads=1 <PR-touched files> - passed.
  • pnpm exec oxlint <PR-touched JS/TS files> - passed.
  • git diff --check origin/main...HEAD - passed.

Earlier after today's rebase loop, pnpm plugin-sdk:surface:check passed and pnpm tsgo:core:test / pnpm tsgo:extensions:test passed in throttled local mode. Please let exact-head GitHub checks gate final merge.

@clawsweeper

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

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased #86627 onto current origin/main (fce5db415b) after another merge-critical scripts change landed. Force-with-lease pushed new head 8bd61b37f8.

Validation after this final rebase:

  • Focused doctor Vitest passed immediately before this rebase on the same PR commit stack.
  • pnpm exec oxfmt --check --threads=1 <PR-touched files> - passed on 8bd61b37f8.
  • pnpm exec oxlint <PR-touched JS/TS files> - passed on 8bd61b37f8.
  • git diff --check origin/main...HEAD - passed on 8bd61b37f8.

Earlier today in the same rebase loop, pnpm plugin-sdk:surface:check passed and pnpm tsgo:core:test / pnpm tsgo:extensions:test passed in throttled local mode. Exact-head GitHub checks should gate final merge.

@clawsweeper

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

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased #86627 onto current origin/main (2454acc287) after another merge-critical scripts change landed. Force-with-lease pushed new head d0447d5617.

Validation after this rebase:

  • pnpm exec oxfmt --check --threads=1 <PR-touched files> - passed on d0447d5617.
  • pnpm exec oxlint <PR-touched JS/TS files> - passed on d0447d5617.
  • git diff --check origin/main...HEAD - passed on d0447d5617.

Focused doctor Vitest passed earlier in this same rebase loop, and the prior exact head reached CLEAN before main moved again. Please let exact-head GitHub checks gate final merge.

@clawsweeper

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

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased #86627 onto current origin/main (3632c62f85) after main moved through merge-critical scripts/test paths again. Force-with-lease pushed new head c62cc3b990.

Validation after this rebase:

  • pnpm exec node scripts/test-projects.mjs src/commands/doctor-lint.test.ts src/flows/doctor-core-checks.test.ts src/flows/doctor-health-contributions.test.ts src/commands/doctor-heartbeat-template-repair.test.ts passed (3 Vitest shards, 82 tests).
  • pnpm exec oxfmt --check --threads=1 <PR-touched files> passed.
  • pnpm exec oxlint <PR-touched JS/TS files> passed.
  • git diff --check origin/main...HEAD passed.

Maintainer compatibility acceptance for the reserved core/doctor/* namespace and deprecated plugin-sdk/health export story is recorded above. Requesting a fresh exact-head review for c62cc3b99096c1555e6c9eccb1fc5405301a5075.

@clawsweeper

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

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased #86627 onto current origin/main (e1fc4683bb) after additional merge-critical scripts/* drift landed. Force-with-lease pushed new head f1c766cdbd.

Validation after this rebase:

  • pnpm exec node scripts/test-projects.mjs src/commands/doctor-lint.test.ts src/flows/doctor-core-checks.test.ts src/flows/doctor-health-contributions.test.ts src/commands/doctor-heartbeat-template-repair.test.ts passed (3 Vitest shards, 82 tests).
  • pnpm exec oxfmt --check --threads=1 <PR-touched files> passed.
  • pnpm exec oxlint <PR-touched JS/TS files> passed.
  • git diff --check origin/main...HEAD passed.

Maintainer compatibility acceptance for the reserved core/doctor/* namespace and deprecated plugin-sdk/health export story is recorded above. Requesting a fresh exact-head review for f1c766cdbd9dbc9f28c234272826fe175db82534.

@clawsweeper

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

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased #86627 onto current origin/main (141fb2b119) after additional merge-critical scripts/* drift landed. Force-with-lease pushed new head aeaba43346.

Validation after this rebase:

  • pnpm exec node scripts/test-projects.mjs src/commands/doctor-lint.test.ts src/flows/doctor-core-checks.test.ts src/flows/doctor-health-contributions.test.ts src/commands/doctor-heartbeat-template-repair.test.ts passed (3 Vitest shards, 82 tests).
  • pnpm exec oxfmt --check --threads=1 <PR-touched files> passed.
  • pnpm exec oxlint <PR-touched JS/TS files> passed.
  • git diff --check origin/main...HEAD passed.

Maintainer compatibility acceptance for the reserved core/doctor/* namespace and deprecated plugin-sdk/health export story is recorded above. Requesting a fresh exact-head review for aeaba4334673342ed2268c3bd553b85560f62bb1.

@clawsweeper

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

Copy link
Copy Markdown
Contributor Author

Merged via squash.

Thanks @giodl73-repo!

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

Labels

commands Command implementations docs Improvements or additions to documentation maintainer Maintainer-authored PR merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P2 Normal backlog priority with limited blast radius. scripts Repository scripts size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants