Skip to content

v0.1.67 — doctor for plugin installs, clock check

Choose a tag to compare

@mitchjablonski mitchjablonski released this 12 Oct 20:49
a3eaa23

v0.1.67 ships the 3 PRs merged on main since v0.1.66: two merge commits (#524, #527) and one squash merge (#526).

What ships

Doctor for marketplace plugin installs (#527, closes #525)

Marketplace installs ship no npm CLI, so you couldn't run doctor. Now /deeppairing:doctor works, backed by a self-contained server/doctor.mjs inside the plugin. It shares the diagnostic code with the npm doctor (clock, daemon, hook, ledger and session-lock checks), and INSTALL.md has terminal instructions.

  • Report-only by default: it names the project it resolved and rejects unsupported arguments. A non-interactive --fix cancels.
  • --fix --yes stays local: it repairs local metadata, gitignore, checkpoint registration and verified local dead locks. It never kills daemons, removes global locks, or touches shared or user hook rows. It also never removes local Stop, PreToolUse or Bash ask rows, because installation can't prove the plugin is enabled for this project. Removing those needs interactive consent, with a warning. Mixed rows keep unrelated commands.
  • Settings backups first: before any consented settings write, doctor saves an exact-byte backup under a unique name, prints its path, and refuses to write if the backup fails. Report-only, cancelled and no-op runs create none.
  • One npm-side change: the npm doctor's ledger diagnosis is now read-only, so it no longer creates a corrupt-file snapshot. Other repair behavior there is unchanged.

Doctor warns about a stepping or drifting clock (#524, closes #500)

Doctor samples the wall clock against the monotonic clock for about 400 ms. It warns, in second person with the fix, if the wall clock steps backwards or drifts. On WSL, the fix is the Windows Time service plus wsl --shutdown. It is warning-only, with no exit-code change and no network. The CONTRIBUTING doc has a "WSL: clock drift" section. This adds the diagnostic for #500; it doesn't claim the flaky tests are gone.

Delegate-first design: packet recovery no longer depends on the clock (#526, docs only)

The design now orders packet recovery by a durable per-debrief Ask generation instead of timestamps. Equal timestamps and backward clock steps can no longer hide a later answered question. No runtime behavior changes.

Not in this release: the delegate slices S1–S6, #430 and #434.

Review provenance

  • #527: Implemented by Codex. Per the coordination board, Mitch assigned #525 to Sol 6.1; the GitHub record shows only the shared account. An independent reviewer's two P2 findings were fixed (stale-daemon kill and global-lock repair now need confirmation), and Sol re-approved ea625bf0 and 9cf629af. An independent Claude Opus review approved 9cf629af, and Astra held the merge to address its recommendations (disabled-plugin handling and settings backups). Sol approved the delta at 3233c478. A post-merge Claude verification with a real packaged probe found nothing new. Integrated by Astra.
  • #524: a Sonnet builder and an independent Sonnet review (approve at 1952509d).
  • #526: Codex-authored, per the codex/ branch and the coordination board (it follows Astra's final audit of #507). Sol approved 8a1357a1 and the delta 0f2c3c5e, a Claude Opus review approved 8a1357a1, and a Claude delta ack approved 0f2c3c5e.
  • Every round is recorded on its PR.

Verification

Measured on a fresh native clone, branch release/v0.1.67 off main a67e04ef:

  • Version sources: all four read 0.1.67.
  • Diff vs main: 7 files, 7 insertions and 7 deletions (the four version sources plus the daemon.js, standalone.js and doctor.mjs stamps).
  • Cold build: pnpm install --frozen-lockfile, then pnpm build:clean; the regenerated stamps are committed.
  • Typecheck: 3 of 3 tasks clean.
  • Lint: 0 errors; mcp-server 218 warnings (cap 240), shared 3.
  • Tests: full FORCE_COLOR=0 NO_COLOR=1 pnpm test passes on the first run, in the foreground: mcp-server 389 files and 5,861 tests, shared 15 files and 321 tests. No timing failures.
  • Checks: version-lockstep and plugin-bundle-boot pass (2 files, 5 tests).
  • Rebuild: a second cold pnpm build:clean leaves git status clean, and grep -rF "0.1.66" claude-plugin/server returns nothing.
  • Conflict markers: none.