fix(doctor): clear the standing dot-doctor warnings - #5
Merged
Conversation
Four warnings were reported on every run. Three were real and one could not be answered from a non-interactive process. chezmoi drift: seven targets reported as modified outside chezmoi. Two were mode-only and permanent by construction — blackbird install writes .codex/config.toml at 0600 and pi keeps ~/.pi/agent at 0700, while the source declared 0644 and 0755, so every apply lost the race. The sources are now private, which both matches reality and is the safer mode. Renaming those sources broke three hardcoded references, in checks/pi.sh, checks/chezmoi.sh and renovate.json, which are updated here. Of the remaining drift, .zshrc and .grok/config.toml carried live edits that apply would have deleted, a kimi-code PATH export and the [models] default selection, so both are captured into source rather than reverted. The opencode plugin config, the autoresearch pin and the update-check launch agent were deliberately newer in source and are applied. gitstatusd: p10k spawns it lazily on the first prompt render, so a non-interactive doctor run can never observe it and the warning carried no signal. Counting zsh processes does not help either, since every tool-spawned subshell is one. The check now reports the daemon when running, accepts the binary being present, and warns only when the binary is missing, which is the condition that actually degrades the prompt. lstags was absent because its run_onchange build had not fired; it is built and installed. The stale .zwc was regenerated with dot-zcompile. .claude/settings.json is left drifting deliberately. Its source is a modify_ script asserting permissions.defaultMode=bypassPermissions while the live file says auto, so this is a standing disagreement about permission posture rather than drift, and it is not mine to settle. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
phall1
enabled auto-merge (squash)
August 17, 2026 01:49
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
dot-doctorreported four warnings on every run. Three were real; one could not be answered from a non-interactive process.Before: 4 warnings · After: 1, deliberately left (see below)
chezmoi drift — 7 targets → 1
Two were mode-only and permanent by construction.
blackbird installwrites.codex/config.tomlat 0600 and pi keeps~/.pi/agentat 0700, while the sources declared 0644/0755 — so every apply lost the race and the warning could never clear. Both sources are nowprivate_, matching reality and the safer mode.Renaming those sources broke three hardcoded references, fixed here:
checks/pi.sh:6,checks/chezmoi.sh:37,renovate.json:22. (Thedot_pirename is 28 files, all pure renames — no content changes, and every target path is unchanged sinceprivate_is source-side only.)The rest were handled on their merits rather than with a blanket apply:
.zshrc.grok/config.toml[models] default; apply would have deleted it.config/opencode/opencode.jsoncautoresearch/package.json@opencode-ai/plugin1.4.7 over"*"com.phux.update-check.plistgitstatusd
p10k spawns it lazily on the first prompt render, so a non-interactive
dot-doctorrun can never observe it — the warning carried no signal. Counting zsh processes doesn't help either: every tool-spawned subshell is one. The check now reports the daemon when running, accepts the binary being present, and warns only when the binary is missing — the condition that actually degrades the prompt.lstags / .zwc
lstagswas absent because itsrun_onchangebuild had never fired; built and installed fromsrc/lstags. The stale.zwcwas regenerated withdot-zcompile.Left deliberately
.claude/settings.jsonstill drifts. Its source is amodify_script assertingpermissions.defaultMode=bypassPermissionswhile the live file saysauto. That's a standing disagreement about permission posture, not drift, and it isn't mine to settle —re-addcan't capture it either, sincemodify_scripts compute their output.Verification
bash -nclean on all three checks;renovate.jsonparses;chezmoi apply --dry-runshows only.claude/settings.jsonand a pendingrun_onchangescript.🤖 Generated with Claude Code