feat(harness): PR-title CI lint, contexts/docs boundary, commit-body rule, and repo-root-relative refs#138
Merged
Conversation
…it-body wrap rule Completes the remaining #134 work. - .github/workflows/pr-title.yml lints the PR title (which becomes the squash-merge commit subject) as an English Conventional Commit, reusing scripts/hooks/commit_msg_check.py so the convention keeps one source. This is the server-side floor for external contributors, whom the local commit-msg git hook cannot bind because it only fires after `pre-commit install`. - contexts/README.md now states the contexts/ vs docs/ boundary explicitly: contexts/ is internal navigation and design memory for agents and maintainers; docs/ is the user-facing catalog and guides. This was the last open acceptance criterion in #134. - commit.md (both skill copies) adds the commit-body convention: follow the same no-hard-wrap prose rule as GitHub bodies, so a squash-merge keeps a clean description. This commit message follows it — one physical line per list item. - contexts/dev/harness-engineering.md records the PR-title lint in the enforcement table and notes that making it a required status check is a one-time repo-settings toggle. verify.sh passes (426 passed, 85.65% coverage). Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…/ link The commit-body rule referenced github-writing.md via `../../../../contexts/dev/github-writing.md`, matching the repo's tested clickable-link convention but reading badly. commit.md is not test-bound to that link, so use a readable repo-root-relative backtick reference instead. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…with data-mono) Skill files referenced contexts pages with deep, fragile clickable links like `../../../../contexts/dev/github-writing.md`. The sister repo llmquant-data-mono instead uses repo-root-relative backtick references (`contexts/...`) from nested files, because a clean clickable repo-root link is only possible from a root-level file — GitHub resolves a bare relative link against the current file's directory, not the repo root, so a nested file needs the ugly `../` chain to stay clickable. - SKILL.md and pull-request.md (both skill copies) now reference contexts pages as repo-root backtick paths (`contexts/README.md`, `contexts/dev/labels.md`, `contexts/dev/github-writing.md`) instead of `../../../` links. Root-level files (AGENTS.md) and sibling contexts pages keep their clean clickable links. - tests/test_contexts.py: the three route tests now check that each source references the canonical guide in the form appropriate to its location — a backtick repo-root reference for nested skill files, a clickable link for root or sibling pages — and that the guide exists at the repo root, instead of asserting a specific deep relative link path. verify.sh passes (426 passed, 85.65% coverage). Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Finishes the harness work in #134: the last open acceptance criterion (the
contexts/vsdocs/boundary) plus the server-side floor for the commit convention, and it codifies the commit-body wrapping rule we agreed on..github/workflows/pr-title.ymllints the PR title (which becomes the squash-merge commit subject) as an English Conventional Commit, reusingscripts/hooks/commit_msg_check.pyso the rule has a single source. The localcommit-msggit hook only fires for contributors who ranpre-commit install, so it cannot bind external contributors; this workflow is the server-side floor that does. Making it a required status check is a one-time repository-settings toggle, separate from this PR.contexts/vsdocs/boundary —contexts/README.mdnow states it explicitly under "Where Information Lives":contexts/is internal navigation and design memory for coding agents and maintainers;docs/is the user-facing catalog (docs/README.md) and usage guides (docs/library.md). This was the one unmet acceptance criterion in feat(harness): agent-facing context map + convention-enforcing git hooks #134.commit.md(both skill copies) adds the convention: a commit body follows the same no-hard-wrap prose rule as GitHub bodies, so a squash-merge keeps a clean description. This PR's own commit body follows it.contexts/dev/harness-engineering.mdrecords the PR-title lint in the enforcement table and replaces the earlier "planned next" note.SKILL.md,pull-request.md,commit.md) referenced contexts pages with deep, fragile links like../../../../contexts/dev/github-writing.md. A bare clickable relative link only resolves against the current file's directory, so a nested file needs that../chain to stay clickable; the sister repollmquant-data-monoavoids it by using repo-root-relative backtick references (contexts/...) from nested files. This PR adopts the same convention: nested files use backtick repo-root references, while root-level files (AGENTS.md) and sibling contexts pages keep their clean clickable links.tests/test_contexts.pynow asserts the reference in the form appropriate to each source location plus repo-root existence, instead of a specific deep relative path.Related Issue
Closes #134.
Verification
bash scripts/verify.shpasses: ruff format + ruff check + basedpyright + import-linter + pytest --cov (426 passed, 85.65% coverage). The twocommit.mdcopies stay identical, and the editedcontexts/pages keep their required structure — both enforced bytests/test_contexts.py.pr-title.ymlwas validated as YAML. The workflow itself runs on GitHub against a pull request, so its end-to-end behavior is exercised by this PR's own title check rather than locally.Checklist
type(scope): summary.bash scripts/verify.shpasses.