Skip to content

Evidence — lint, formatting, types, markdown ​

Work item: issue #172 · captured 2026-08-07, re-run after the owner-review rebuild to the endpoint model.

The same four tools CI runs, invoked through the repository's own Makefile targets (make lint, make format-check, make typecheck) — local and CI parity is the point (hooks.prePush, reference/tooling.md). Nothing needed redaction: every line below is a tool banner or a count.

ruff check — lint ​

console
$ uv run ruff check cli hooks
All checks passed!

ruff format --check — formatting ​

console
$ uv run ruff format --check cli hooks
167 files already formatted

ruff format reflowed one file during implementation (cli/tests/test_routing.py, a chained comparison in the new pr_work_item test); the reflowed form is what is committed.

pyright — types ​

console
$ uv run pyright cli
0 errors, 0 warnings, 0 informations

Pyright's first run over the new tests flagged reportOptionalMemberAccess errors — the registry's resolvers return Optional[Session], and early drafts read attributes off them directly. Fixed at the assertions (explicit is not None narrowing), not by silencing the rule.

markdownlint — documentation ​

console
$ npx markdownlint-cli2@0.18.1 "**/*.md"
Linting: 443 file(s)
Summary: 0 error(s)

One MD051 (invalid link fragment) was raised and fixed while writing docs/cli/state.md: a cross-reference into the new Session binding heading, whose — and backticked path do not produce the anchor the plain slug rule predicts. Replaced with the file name in bold rather than guessing at an anchor that a docs-site upgrade could change.

validate_config.py — schema validation ​

console
$ uv run python scripts/validate_config.py
VALID   .the-loop/harness-config.yaml
VALID   skills/the-loop/templates/harness-config.yaml
VALID   .the-loop/collaborators.yaml
VALID   skills/the-loop/templates/collaborators.yaml
VALID   .the-loop/cli-config.yaml
VALID   skills/the-loop/templates/cli-config.yaml

One schema entry was added in this work item — routing.tmux.sessionPerPr (.the-loop/cli-config.schema.json), documented in docs/config/cli/routing-options.md; the docs-parity tests (P3/P4) pin the two against each other, and this validation run is the assertion the schema still parses and every shipped config still conforms.

Released under the MIT License.