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)#
| Code | Meaning | What to do |
|---|---|---|
| GL0101 | No manifest | greenline init |
| GL0102 | Manifest invalid | Fix the named field using the current installed contract. Earlier pre-beta schemas are refused; no silent conversion occurs. |
| GL0103 | No lock | If a valid manifest exists, run greenline sync. If GL0101 is also present, initialize with greenline init first. |
| GL0104 | Lock invalid | Restore a valid lock, or remove it and run greenline sync; occupied paths still require conflict resolution. |
| GL0105 | Not a Git repository | run inside a Git repo (git init first) |
| GL0106 | AGENTS.override.md present | remove or merge it; it blocks managed writes |
| GL0107 | Sync blocked by conflicts | resolve the listed conflicts first |
| GL0108 | Managed block broken | restore the block markers, then run greenline sync; broken markers cannot be forced |
| GL0110 | Installed output is stale | Run greenline sync with the intended CLI version. It updates methods and instructions, not repository technology choices. |
| GL0111 | Managed file conflict | The 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. |
| GL0112 | Orphaned managed filewarning | Inspect the named output, then remove confirmed generated content with greenline sync --force-managed <path>. User edits need resolution first. |
| GL0113 | Unknown --force-managed target | the 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 |
| GL0114 | Skill reference unresolvedwarning | the 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 |
| GL0116 | Init needs the harness trees | no --targets and no terminal to ask; pass --targets codex,claude-code (either or both) or --yes for both |
| GL0121 | Workflow without a remotewarning | a 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 |
| GL0123 | Repository state invalid or another writer active | Repair the named policy/evidence file. Retry after the writer finishes; clear an interrupted lock only after confirming no writer remains. |
| GL0124 | Workspace already initialized | init runs once per workspace; use greenline sync to reconcile installed files. |
| GL0125 | Connector not ready, or its settings refused | Enabling 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)#
| Code | Meaning | What to do |
|---|---|---|
| GL0201 | Frontmatter refused | the 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 |
| GL0202 | Duplicate id | two artifacts claim the same id; ids are bound to file slots |
| GL0203 | Reference doesn't resolve | a 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 |
| GL0204 | Stale consumptionerror | you'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 |
| GL0205 | Consumption ahead | pinned to a revision that doesn't exist yet; fix the pin |
| GL0206 | Claim conflict | one 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) |
| GL0207 | Dependency cycle | depends_on loops; break the cycle |
| GL0208 | Evidence missing | a 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 |
| GL0209 | Complete unproven | a complete ticket lacks result_commit or has unchecked acceptance items: complete means proven |
| GL0210 | Harvest unrecordedwarning | an 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)#
| Code | Meaning | What to do |
|---|---|---|
| GL0301 | Required account or result identity missing | Before 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. |
| GL0302 | Record or evidence reference unresolved | Repair the named pin, recover its historical bytes, or state the evidence limit. |
| GL0303 | Handoff accounting incomplete | Complete pending retrievals and record the result actually checked. |
| GL0304 | The execution account contradicts evidence | Preserve 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). |
| GL0306 | Application or review remains unverifiedwarning | Supply 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)#
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.