Doctor reference

greenline doctor validates the workspace and the artifacts and is read-only. It owns the structural verdict; greenline status includes the same diagnosis alongside the work view. Both report the connectors as well. Errors exit nonzero; warnings do not. Each finding names a code, severity and message, with a file when applicable. Repository files use paths relative to the Git root; GL0140 can name an installed package file outside that root. Invalid fields appear separately in the message. This page explains the findings and their recovery steps.

Workspace (GL01xx)#

CodeMeaningWhat to do
GL0101No manifestgreenline init
GL0102Manifest invalidFix the named field using the current installed contract. Earlier pre-beta schemas are refused; no silent conversion occurs.
GL0103No lockIf a valid manifest exists, run greenline sync. If GL0101 is also present, initialize with greenline init first.
GL0104Lock invalidRestore a valid lock, or remove it and run greenline sync; occupied paths still require conflict resolution.
GL0105Not a Git repositoryrun inside a Git repo (git init first)
GL0106AGENTS.override.md presentremove or merge it; it blocks managed writes
GL0107Sync blocked by conflictsresolve the listed conflicts first
GL0108Managed block brokenrestore the block markers, then run greenline sync; broken markers cannot be forced
GL0110Installed output is staleRun greenline sync with the intended CLI version. It updates methods and instructions, not repository technology choices.
GL0111Managed file conflictThe named path contains edited managed content or an unmanaged file occupies it. Preserve needed user content first. In AGENTS.md/CLAUDE.md, move it outside the markers; whole-file outputs such as agents/openai.yaml require relocating it to a user-owned home. Then authorize replacement of that exact path with greenline sync --force-managed <path> (or init for a new workspace). Force replaces the whole generated file or the bounded managed region; it does not merge user entries.
GL0112Orphaned managed filewarningInspect the named output, then remove confirmed generated content with greenline sync --force-managed <path>. User edits need resolution first.
GL0113Unknown --force-managed targetthe exact path is absent from the managed plan; init/sync refuse before writing. Check spelling and use an orphan or conflict file path from the dry-run effects
GL0114Skill reference unresolvedwarningthe distributed skill definition links to missing support. Restore a corrected CLI build and sync. This checks the distributed definitions; user edits instead produce GL0111, missing installed files GL0110. Template placeholders are excluded
GL0116Init needs the harness treesno --targets and no terminal to ask; pass --targets codex,claude-code (either or both) or --yes for both
GL0121Workflow without a remotewarninga workflow file exists in .github/workflows but no Git remote is configured; inspect whether that workflow is intended. This diagnostic does not create or announce a workflow
GL0123Repository state invalid or another writer activeRepair the named policy/evidence file. Retry after the writer finishes; clear an interrupted lock only after confirming no writer remains.
GL0124Workspace already initializedinit runs once per workspace; use greenline sync to reconcile installed files.
GL0125Connector not ready, or its settings refusedEnabling refuses a URL that is not HTTPS (or HTTP on a loopback address), carries credentials, a query or a fragment, an executable that is neither garden nor an absolute path, and a skills.exclude naming the connector's skill; nothing is written. Doctor and status warn when garden is enabled and its executable would not run here, or GARDEN_API_KEY is not set: install the garden command or name its path with --executable, and set the key where the agent runs.

A missing or invalid installation payload is GL0140. Reinstall the intended CLI build. Status and independent doctor checks remain available without writes. Sync's orphan effects classify files that are no longer generated; the same classification is printed when a successful --force-managed invocation removes them. It is not a post-run count of files still present. Verify removal from the filesystem or a subsequent doctor run before reporting it. Empty parent directories are left in place.

Doctor and status print each connector's state. A disabled connector raises nothing: nothing is consulted and no process starts. For an enabled one they show its endpoint, the executable that would run and whether its key variable is set, and they check this without starting it; the key's value is never read or printed. garden's own failures are typed in the reply of greenline connectors call garden and recorded in its receipt (the garden connector). Doctor does not start garden, contact a service or certify its availability.

Artifacts (GL02xx)#

CodeMeaningWhat to do
GL0201Frontmatter refusedthe message teaches the shape: legal fields are enumerated, revision is required and starts at 1, only Markdown lives under work/ (raw evidence goes in work/evidence/<work-id>/), prototypes live on branches
GL0202Duplicate idtwo artifacts claim the same id; ids are bound to file slots
GL0203Reference doesn't resolvea named artifact id has no file (a consumes pin, a depends_on edge, or a review's ticket: link); fix the id or restore the file
GL0204Stale consumptionerroryou're pinned to an older revision of an upstream artifact: re-read it, confirm your content still holds, re-pin, or send yours back for rework
GL0205Consumption aheadpinned to a revision that doesn't exist yet; fix the pin
GL0206Claim conflictone worktree claims two tickets in the building window (claimed/implementing): one build at a time; park one (release its claim with a note on the ticket)
GL0207Dependency cycledepends_on loops; break the cycle
GL0208Evidence missinga status claims evidence the artifact doesn't carry: implemented needs result_commit; reviewing needs a matching review record, which may be draft; verifying needs that review completed. The review names the exact ticket, implementation account, and result. Add the evidence or correct the status
GL0209Complete unprovena complete ticket lacks result_commit or has unchecked acceptance items: complete means proven
GL0210Harvest unrecordedwarningan initiative is complete but .greenline/DECISIONS.md has no entry for it: harvest its outliving rulings into the book, pinned to their sources, or record that none remain

Execution ledger (GL03xx)#

CodeMeaningWhat to do
GL0301Required account or result identity missingBefore implemented, set resultCommit on the implementation account to the ticket’s result_commit. A completed review account needs that same implementation commit, the end of its range. Correct the named account and work identity; do not invent earlier consultations. A missing ticket result_commit is repaired on the ticket under GL0208/GL0209, not by creating a duplicate account.
GL0302Record or evidence reference unresolvedRepair the named pin, recover its historical bytes, or state the evidence limit.
GL0303Handoff accounting incompleteComplete pending retrievals and record the result actually checked.
GL0304The execution account contradicts evidencePreserve the discrepancy and correct the account. A late read cannot become an earlier one; product edits cannot be claimed as maintenance; one contribution has one account, so a rework is carried in the existing implementation account, not a second one (a warning).
GL0306Application or review remains unverifiedwarningSupply the missing support or retain the limitation. Structural validity is not semantic proof.

The installed .greenline/ledger/README.md owns the record format. Doctor and status include a compact ledger view; inspect shows generated delivery facts, annotations and application evidence separately. Completed tickets require implementation, independent review and acceptance evidence for the exact result. Acceptance checks remain in the implementation account unless independent verification was separately requested.

General (GL00xx)#

CodeMeaning
GL0001Usage error: check the command line
GL0003I/O failure: the message names the path

Doctor reports mechanical facts. It does not choose methods, change repository policy, refresh shared knowledge, or clear a semantic conflict. Use it when a diagnostic is useful; normal agent requests do not require a doctor ritual.