review: tests-cpp lane-wiring gate, plus two comment-hygiene rulings - #3866
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR strengthens review automation and documentation hygiene by adding a mechanical gate for tests-cpp/ lane wiring, expanding the shared CMake-parsing helpers in dastest/review_gate.das (including case-insensitive command matching), and formalizing how LAWS.md is treated (provenance only, never a shipped skill).
Changes:
- Add
tests-cpp/REVIEW.dasto verify that labeled C++ tests are wired into their correspondingtest-<lane>build targets, preventing stale/unbuilt binaries from “passing” lanes. - Move/extend CMake-reading utilities into
dastest/review_gate.das, add tests, and makecmake_command_blockscase-insensitive to match CMake behavior. - Update comment-hygiene documentation and shipped-skill gating so
LAWS.mdis treated as ruling provenance (excluded from install and rejected by the bundle gate).
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| utils/REVIEW.das | Simplifies install-block scanning now that CMake command matching is case-insensitive. |
| tests-cpp/REVIEW.das | New review gate that checks per-file lane wiring and test-target wiring for tests-cpp/ CMakeLists. |
| skills/LAWS.md | Adds ruling provenance ledger for the skills/ folder (non-skill). |
| skills/internal/skill_taxonomy.md | Documents LAWS.md as “never ships / not a skill”. |
| skills/das_formatting.md | Clarifies force_clean_comments boundary and default behavior via .lint_config. |
| skills/comment_style_hygiene.md | Adds two rules and corrects the .das kept-set boundary wording. |
| install/CLAUDE.md | Updates shipped twin comment-hygiene summary to match .lint_config mechanism. |
| dastest/tests/test_review_gate.das | Adds/updates tests for the expanded CMake helpers and case-insensitivity. |
| dastest/review_gate.das | Implements case-insensitive cmake_command_blocks and adds CMake token/label/target/command helpers. |
| dastest/README.md | Updates documentation for the expanded helper API and case-insensitive behavior. |
| CMakeLists.txt | Excludes LAWS.md from skills install rules (root + daslang installs). |
| CLAUDE.md | Updates repo-wide comment-hygiene summary to key off .lint_config mechanism. |
| ci/test_check_shipped_skills.py | Adds tests ensuring LAWS.md is treated as “not a skill” and rejected from bundles. |
| ci/check_shipped_skills.py | Introduces NOT_A_SKILL handling and rejects LAWS.md at any depth in bundle scans. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
borisbat
force-pushed
the
bbatkin/hygiene-review-followup
branch
from
August 26, 2026 06:27
e335e77 to
c75f6ee
Compare
…rulings A test whose binary its lane never builds runs stale or missing while the lane reports success - the vecmath battery shipped that way until review caught it. tests-cpp/REVIEW.das now checks two things per CMakeLists: every lane it labels tests into is wired into that lane's aggregate target, and every test binary it registers is wired into some test-<lane>. A label with no aggregate (style_lint) is a ctest filter and is skipped. The CMake reading moves into dastest/review_gate.das as tested helpers, and cmake_command_blocks now matches command names case-insensitively, as CMake itself does. skills/comment_style_hygiene.md gains Boris's two rulings, and skills/LAWS.md records them. Auditing those additions found the .das kept-set rule stated its boundary backwards: force_clean_comments is opt-in and only daslib/ arms it, so the ban read as reaching trees where nothing strips. The rule, both CLAUDE.md twins and das_formatting.md now key on the config mechanism, and the kept set holds whether or not a folder arms it. skills/LAWS.md is provenance, not a skill: the install rules drop LAWS.md by name from all three skills blocks and the shipped-skills gate rejects it at any depth, which also closes a hole where a future skills/daslang/LAWS.md would have shipped into a bundle contracted to be standalone. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ELhvojnmb6xx5p6ty3PyNk
borisbat
force-pushed
the
bbatkin/hygiene-review-followup
branch
from
August 26, 2026 06:33
c75f6ee to
164c2d0
Compare
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.
A test binary that its lane never builds runs stale, or does not run at all, while the lane still reports success. The vecmath battery shipped in that state until review caught it by hand.
tests-cpp/REVIEW.dasnow checks it mechanically, per CMakeLists: every lane the file labels tests into is wired into that lane's aggregate target, and every test binary the file registers is wired into sometest-<lane>. A label with no aggregate target, likestyle_lint, is a ctest filter, so it is skipped. The CMake reading moved intodastest/review_gate.dasas tested helpers. One behavior change there for anyone already using that library:cmake_command_blocksnow matches command names case-insensitively, the way CMake itself does, so callers no longer probe two spellings.skills/comment_style_hygiene.mdgains two rules. Auditing them turned up a real defect in a neighbouring rule: the.daskept-set ban stated its boundary backwards.force_clean_commentsis opt-in and onlydaslib/arms it, so the rule read as reaching trees where nothing strips, and two reviewers could reach opposite verdicts on the same file. That rule, bothCLAUDE.mdtwins anddas_formatting.mdnow key on the config mechanism, and the kept set holds whether or not a folder arms the key.skills/LAWS.mdis ruling provenance, not a skill. The install rules dropLAWS.mdby name from all three skills blocks, and the shipped-skills gate rejects it at any depth.Validation, claims, ledger
Validation
vecmath_backend'sadd_dependenciesat the wrong lane fires the lane check; adding a labelled executable tocapi_split_initwithout wiring it fires the target check. Both restore clean.cmake_command_blockscase-insensitive broke the existingcmake_list_entriestest, which readsetandSETas two commands and double-counted. Fixed, and pinned by a new case.NOT_A_SKILLfromci/check_shipped_skills.pyfails its test.Claims - stated, not tested
REGEX "/LAWS\.md$" EXCLUDEinstall rules are not exercised by any test. Verified by reasoning plus the gate test that models the outcome: a bundle carryingskills/LAWS.mdis rejected. Settling it for real needs a fullcmake --installfollowed byci/smoke_test_bundle.sh. A break would show up as that gate going red on the next release bundle.Not done
skills/daslang/exclusions are defensive. NoLAWS.mdexists there today, so they are unreachable until one does.foreachinstyle_lint.skills/das_formatting.mdnamed three of the six folders that declare the key. Corrected while adjacent, not part of the arc.🤖 Generated with Claude Code