Expose stale plugin runtime symlink doctor lint findings#98729
Conversation
|
@clawsweeper review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Codex review: needs maintainer review before merge. Reviewed July 3, 2026, 1:12 PM ET / 17:12 UTC. Summary PR surface: Source +46, Tests +186. Total +232 across 4 files. Reproducibility: yes. from source: the PR maps existing stale symlink detector output into structured lint findings, and the contribution test covers default skip plus explicit selection. I did not run tests in this read-only review. Review metrics: 1 noteworthy metric.
Stored data model Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the lint-only diagnostic after maintainer approval and green exact-head checks, keeping symlink deletion in the existing Do we have a high-confidence way to reproduce the issue? Yes, from source: the PR maps existing stale symlink detector output into structured lint findings, and the contribution test covers default skip plus explicit selection. I did not run tests in this read-only review. Is this the best way to solve the issue? Yes. The lint-only shape is the narrow maintainable fix because existing AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 0ad58848b399. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +46, Tests +186. Total +232 across 4 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
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
|
2f55e3b to
c4d8fee
Compare
|
@clawsweeper re-review current head c4d8fee. Added structured dry-run repair effects for selected stale plugin-runtime symlink cleanup and reran focused proof listed in the PR body. |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Codex review finding: The structured repair path added here is not reachable from the supported Doctor CLI. The contribution registers Best fix: either add a real core structured repair selection path, or make this PR lint-only and remove the dead repair hook/tests/body claim. The existing legacy repair sequence remains the runtime owner for stale symlink cleanup. |
|
Addressed Omar's reachability finding by making this PR lint-only again. What changed:
Validation on
I also reran @clawsweeper review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
@clawsweeper review final lint-only wording/body synced after Omar fix |
304b477 to
4dd79b7
Compare
|
@clawsweeper re-review exact head 4dd79b7. Rebased onto current main, kept the PR lint-only after Omar reachability feedback, and gated real directory-symlink tests on filesystem capability to address the Windows EPERM finding. Focused proof and SDK surface check passed. |
|
🦞🧹 I asked ClawSweeper to review this item again. |
4dd79b7 to
287d223
Compare
|
@clawsweeper re-review exact head 287d223. Fixed the CI no-unnecessary-type-assertion lint finding after marking ready; focused Vitest, changed-file oxfmt, changed-file oxlint with core tsconfig, SDK surface report, and diff-check passed. |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Maintainer note for ClawSweeper P1s: accepted.
|
|
Merged by head-pinned squash. Source head: Verification before merge:
Maintainer note: ClawSweeper's P1 maintainer-acceptance items were accepted above. The local prepare wrapper still fails |
) Adds a default-disabled Doctor lint check for stale plugin-runtime symlinks while keeping real deletion in the existing legacy doctor --fix cleanup path. Verification: - Focused plugin-runtime-symlink/contribution Vitest passed (65 tests). - Changed-file oxfmt passed. - Changed-file oxlint with core tsconfig passed. - SDK surface report passed. - git diff --check passed. - Exact-head hosted checks passed/skipped on 287d223. Maintainer notes: - ClawSweeper platinum hermit / ready for maintainer look. - Accepted the new opt-in lint check id and warning copy on the PR. - Local prepare wrapper pnpm check still fails on the npm shrinkwrap guard, and the same failure reproduces on current origin/main; treated as baseline local gate noise, not PR-caused.
Summary
core/doctor/stale-plugin-runtime-symlinkslint findingsdoctor --fixcleanup path; this PR is lint-only and does not add a structured repair/dry-run hookContract / compatibility
doctor --lintbehavior is unchanged;--only core/doctor/stale-plugin-runtime-symlinksand--allcan select it.Real behavior proof
Source-harness proof with real temporary directories and directory symlinks showed one
core/doctor/stale-plugin-runtime-symlinkswarning and confirmed the symlink still existed after detection. Contribution-level proof verifies default lint skips this default-disabled check and explicit--onlyruns it.Validation after rebase and symlink test gating
node scripts/run-vitest.mjs src/commands/doctor/shared/plugin-runtime-symlinks.test.ts src/flows/doctor-health-contributions.test.ts(65 tests)oxfmt --checkoxlint --tsconfig config/tsconfig/oxlint.core.jsonnode scripts/plugin-sdk-surface-report.mjs --checkgit diff --check origin/main...HEADNote: the real-symlink tests now gate on directory-symlink filesystem capability, so restricted Windows hosts skip those real filesystem assertions instead of failing with
EPERM.