Skip to content

Evidence — lint, types and schema (issue-174) ​

The repository's own quality gates, run from the root on the work item's branch. These are the same commands CI runs (pre-commit run --all-files), so a local pass is a CI pass. Output contains tool names, counts and file paths only.

make check — the whole gate ​

console
$ make check
uv run ruff check cli hooks
All checks passed!
npx --yes markdownlint-cli2@0.18.1 "**/*.md"
markdownlint-cli2 v0.18.1 (markdownlint v0.38.0)
Finding: **/*.md !**/node_modules/** !cli/node_modules/** !**/.venv/** !docs/.vitepress/dist/** !docs/.vitepress/cache/** !docs/operating-model/reference/**
Linting: 451 file(s)
Summary: 0 error(s)
uv run ruff format --check cli hooks
170 files already formatted
uv run pyright cli
0 errors, 0 warnings, 0 informations
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
uv run pytest
1424 passed, 1 skipped in 50.04s

T6 — markdownlint over every changed file ​

markdownlint runs over the whole tree (451 files), so every file this work item touched is covered by the run above. One finding was raised during implementation and fixed:

console
$ npx --yes markdownlint-cli2@0.18.1 "**/*.md"
Summary: 4 error(s)
docs/specs/issue-174/testing-plan.md:85:1  MD049/emphasis-style  Expected: asterisk; Actual: underscore
docs/specs/issue-174/testing-plan.md:85:19 MD049/emphasis-style  Expected: asterisk; Actual: underscore
docs/specs/issue-174/testing-plan.md:91:19 MD049/emphasis-style  Expected: asterisk; Actual: underscore
docs/specs/issue-174/testing-plan.md:91:52 MD049/emphasis-style  Expected: asterisk; Actual: underscore

_Not yet executed._ → *Not yet executed.*; clean thereafter.

The site's rendering constraints ​

docs/capabilities/documentation.md records three constraints the VitePress build cannot check for itself (markdown.html: false, ignoreDeadLinks: true, and VitePress's slugify). Checked by inspection on every page this work item changed:

ConstraintResult
No raw HTML in any pagePass — the only markup added is fenced mermaid and text blocks, plus <br/> inside mermaid node labels, which the Vue template compiler never sees because fenced code is not compiled
No em dash in a heading (it survives into the anchor id)Pass — every heading added uses plain words; the em dashes are all in prose and table cells
Same-page fragment links target dot-free ## headingsPass — this work item adds no same-page fragment links

Link resolution is verified in docs-review.md, because ignoreDeadLinks: true means the build does not catch a broken internal link.

Released under the MIT License.