Files changed: - CHANGES.md - VERSION - docs/how-to/README.md - docs/how-to/back-up-to-a-synced-folder.md - docs/how-to/collect-from-a-synced-folder.md - docs/how-to/export-guidelines.md - docs/how-to/export-to-a-synced-folder.md - docs/reference/commands/README.md - docs/reference/commands/exports.md - docs/reference/commands/git.md - docs/reference/commands/guideline-export.md - docs/reference/commands/instance-health.md - docs/reference/commands/raw-material-and-uploads.md - docs/reference/configuration.md - docs/reference/exit-codes.md - instructions/setup-instance.md - raw/CONTRACT.md - tools/CONTRACT.md - tools/README.md - tools/chemenu/backup.py - tools/chemenu/cli_contract.py - tools/chemenu/commands/doctor.py - tools/chemenu/commands/export_cmd.py - tools/chemenu/commands/git_publish.py - tools/chemenu/commands/raw/_common.py - tools/chemenu/commands/raw/accept.py - tools/chemenu/commands/raw/capture.py - tools/chemenu/config_shapes.py - tools/chemenu/guideline_export.py - tools/chemenu/page_export.py - tools/chemenu/reference_doc.py - tools/chemenu/repo_capture.py - tools/chemenu/tests/test_config_shapes.py - tools/chemenu/tests/test_export_run.py Co-Authored-By: Claude Code <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
7.3 KiB
7.3 KiB
Instance health
A single check of whether this instance is set up and working.
doctor
Check that this instance is correctly configured.
Synopsis
wikitool doctor [--json]
Options
--json Print the checks as JSON
-h, --help Show this message and exit.
Examples
tools/wikitool doctor
tools/wikitool doctor --json
Behaviour
- Checks dependencies (Python, ripgrep), author resolution, stack version, git identity/branch/remote, published skills, the kb/raw/reports/work/sites/instructions structure, and generated files.
- Import filters (
import-filter-<name>): one line for eachraw deriveformat that reads through a package (PDF, Outlook.msg) - aWARNnaming the package when it is missing, since that costs only its own format; fixed by runningtools/preflight.shagain. - Tool paths (
tool-paths):.wikitool-tools.jsonwritten by a preflight that finished, every tooltools/prerequisites.txtnames for this platform recorded, and every recorded path still there - aFAILotherwise, fixed by runningtools/preflight.shagain (PowerShell 7:tools/preflight.ps1). - Install folder (
install-dir): on Windows with long paths off, aFAILwhen the folder holdingtools/is longer thantools/prerequisites.txtallows (95 characters) - the limit the preflight enforces before it sets anything up. - PowerShell (
execution-policy,script-marks; Windows only,OKelsewhere): aFAILwhen the effective execution policy isRestrictedorAllSigned- the line then says whether a group policy sets it, which only whoever administers the computer can change - and aFAILwhen a script undertools/carries a Mark of the Web from the internet zone, which a browser download unpacked in Explorer leaves behind andInvoke-WebRequestplustardo not.tools/preflight.ps1checks the same two things before it stops. - Personalization:
USER.md/SOUL.mdpresent and filled - a file still carrying the template's sentinel is aFAIL. - KB conventions:
kb/CONVENTIONS.mdpresent, unsentinelled, and naming all three tool-owned section headings - aFAILon any of the three. - Environment note:
ENVIRONMENT.mdis optional, so absent isOK; a still-templated one is aWARN. - Legacy settings (
legacy-settings): oneFAILfor each per-feature settings file of an earlier version (telemetry, remotes, upload, task tracker) that is still there. Nothing reads them any more, so the settings they hold are not in effect; the fix istools/wikitool config migrate. - Synced folder (
sync-folder): aWARNwhen the git directory, links and junctions resolved, lies under a folder named byOneDrive,OneDriveCommercialorOneDriveConsumer(compared without regard to case on Windows) or under~/Library/CloudStorage/(macOS);OKotherwise, never aFAIL. - Backup (
backup): thebackupsection absent isOK, malformed is aFAIL. Configured, aWARNwhen<target>/gitis not a bare repository,origindoes not push there, or - withmachine_datatrue - no machine-data backup exists yet; otherwiseOKwith the age of the last machine-data backup. - Page export (
export): theexportsection absent isOK, malformed is aFAIL; otherwiseOKlisting each target with its handler, folder and whether it runs afterpublish. - Intake channels (
upload-intake): the channels of theintakesection with their handler, and how many submissions wait inquarantine/. Absent isOKand means no channel - nosubmittool, nothing to collect; malformed is aFAIL, and so is anmcp-upload/of an earlier version that still holds submissions (the message names the command that moves it). Afolderchannel whosepathdoes not exist is aWARN. - Task tracker: the
taskssection present, absent or malformed - absent isOK(no tracker configured), malformed is aFAIL. WhenWIKITOOL_TASKS_CONFIGis set, the profile it names is read instead of thetasks,superproductivityandcaldavsections and the finding names it; a set variable that names no file is aFAIL, neverOK. - For a configured
superproductivityprovider, the configuredaccesspath's own state:access: "api"reports whether its local REST API answersGET /healthwith a ready renderer right now,access: "snapshot"whether a backup file is ready. The other access path is never attempted, and neither state is ever aFAIL. - For a configured
caldavprovider, whether the server is reachable and Basic auth succeeds - never aFAIL; only a broken config block is. - Settings (
settings-instance,settings-checkout,settings-secrets): one line per tier.wikitool.jsonand.wikitool-local.jsoneach present or absent - absent isOK- and aFAILnaming file, key and the right tier when a value sits in the wrong file, a secret or a committed private field holds a plain value, or a value fails its field; a section this version does not read is aWARN. For the references: how many resolve, never a value - an unresolvable one is aFAIL, one 1Password will not hand out until a human unlocks it aWARN. - Session id source:
OKforWIKITOOL_SESSION_IDor a registered harness variable,WARNonly for the bare parent-pid fallback. - Telemetry: on or off and why - installation-form default, the
telemetrysection of.wikitool-local.json, orWIKI_TRACE- and the current session's count and byte total against both caps; never aFAIL. AWARNwhen that section is not read as written - unreadable JSON, not an object,enablednot a JSON boolean, a cap not a positive integer, or an unknown key - naming the field; telemetry itself drops or reinterprets such a value without a word, so this is where it shows. - Site handlers (
site-handlers): every file insites/is read against the handler schema and the rules the schema cannot state;FAILfor a file that cannot be used, naming the file and the reason, andOKlisting the instance's handlers, each one that replaces a stack handler (the same host and path) named as such. - Browser component (
browser): whether the optional Playwright component and its browser are installed in the venv -OKeither way, never aFAIL; aWARNonly when it is missing and the instance needs it: a hostfetch.routessends through the session (raw login), or a site handler that declaresrender. The user installs it withtools/preflight.sh --with browser. - Exits 1 only on a
FAIL; a missing remote, session id orVERSIONis aWARN, not a fault. - Read-only and exempt from the Iteration Budget Gate.
Properties
- Changes files: no
- Idempotent: yes
- Atomic: Read-only
- Counts toward the session call budget: no
- Can reach the network: yes
Exit codes
0- success1- At least one check reportedFAIL(aWARN, e.g. no remote or noWIKITOOL_SESSION_ID, does not exit 1)
See also
instructions/setup-instance.md- the setup steps most findings point back toinstructions/preflight.md- whattool-pathsandinstall-dirpoint back todocs/reference/configuration.md- the per-checkout configuration files and the tiered settingsdocs/explanation/telemetry-and-evaluation.md- telemetry state and capsdocs/how-to/back-up-to-a-synced-folder.md- whatsync-folderandbackuppoint toinstructions/session-setup.md- settingWIKITOOL_SESSION_ID