PDF is read with pypdf (page markers, scan warning, encrypted files refused), Outlook .msg with olefile as a container like an .eml, and a .msg attached to a mail is quoted. Both packages are in tools/requirements.txt and imported only when such a file is derived, so a missing one stops that format alone. doctor reports one import-filter line per package-backed format. Files changed: - CHANGES.md - VERSION - docs/how-to/ingest-a-source.md - docs/reference/commands/instance-health.md - docs/reference/commands/raw-material-and-uploads.md - tools/CONTRACT.md - tools/README.md - tools/chemenu/commands/doctor.py - tools/chemenu/commands/raw_cmd.py - tools/chemenu/filters/__init__.py - tools/chemenu/filters/mail.py - tools/chemenu/filters/msg.py - tools/chemenu/filters/pdf.py - tools/chemenu/tests/binary_formats.py - tools/chemenu/tests/test_raw_derive_binary.py - tools/requirements.txt Co-Authored-By: Claude Code <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
4.7 KiB
4.7 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/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. - MCP
submittool: whether.wikitool-upload.jsonis present, absent or malformed, its limits, and how many submissions wait inmcp-upload/. Absent isOKand means the write path does not exist at all; malformed is aFAIL. - Task tracker:
.wikitool-tasks.jsonpresent, absent or malformed - absent isOK(no tracker configured), malformed is aFAIL. WhenWIKITOOL_TASKS_CONFIGis set, that file is read instead 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. - 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,
.wikitool-telemetry.json, orWIKI_TRACE- and the current session's count and byte total against both caps; never aFAIL. AWARNwhen.wikitool-telemetry.jsonis 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. - 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 filesdocs/explanation/telemetry-and-evaluation.md- telemetry state and capsinstructions/session-setup.md- settingWIKITOOL_SESSION_ID