Skip to content

review: tests-cpp lane-wiring gate, plus two comment-hygiene rulings - #3866

Merged
borisbat merged 1 commit into
masterfrom
bbatkin/hygiene-review-followup
Aug 26, 2026
Merged

review: tests-cpp lane-wiring gate, plus two comment-hygiene rulings#3866
borisbat merged 1 commit into
masterfrom
bbatkin/hygiene-review-followup

Conversation

@borisbat

Copy link
Copy Markdown
Collaborator

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.das now 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 some test-<lane>. A label with no aggregate target, like style_lint, is a ctest filter, so it is skipped. The CMake reading moved into dastest/review_gate.das as tested helpers. One behavior change there for anyone already using that library: cmake_command_blocks now matches command names case-insensitively, the way CMake itself does, so callers no longer probe two spellings.

skills/comment_style_hygiene.md gains two rules. Auditing them turned up a real defect in a neighbouring rule: the .das kept-set ban stated its boundary backwards. force_clean_comments is opt-in and only daslib/ 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, 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 the key.

skills/LAWS.md is ruling 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.

Validation, claims, ledger

Validation

  • CI can only ever run the new gate against a clean tree, so the red paths were negative-controlled locally. Pointing both of vecmath_backend's add_dependencies at the wrong lane fires the lane check; adding a labelled executable to capi_split_init without wiring it fires the target check. Both restore clean.
  • Making cmake_command_blocks case-insensitive broke the existing cmake_list_entries test, which read set and SET as two commands and double-counted. Fixed, and pinned by a new case.
  • Removing NOT_A_SKILL from ci/check_shipped_skills.py fails its test.

Claims - stated, not tested

  • The three REGEX "/LAWS\.md$" EXCLUDE install rules are not exercised by any test. Verified by reasoning plus the gate test that models the outcome: a bundle carrying skills/LAWS.md is rejected. Settling it for real needs a full cmake --install followed by ci/smoke_test_bundle.sh. A break would show up as that gate going red on the next release bundle.

Not done

  • The two skills/daslang/ exclusions are defensive. No LAWS.md exists there today, so they are unreachable until one does.
  • The gate joins a test to its labels by the literal name text, so a name built from a CMake variable joins only to itself. That is enough for every shape in the tree, including the foreach in style_lint.
  • skills/das_formatting.md named three of the six folders that declare the key. Corrected while adjacent, not part of the arc.

🤖 Generated with Claude Code

Copilot AI lite review requested due to automatic review settings August 26, 2026 06:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.das to verify that labeled C++ tests are wired into their corresponding test-<lane> build targets, preventing stale/unbuilt binaries from “passing” lanes.
  • Move/extend CMake-reading utilities into dastest/review_gate.das, add tests, and make cmake_command_blocks case-insensitive to match CMake behavior.
  • Update comment-hygiene documentation and shipped-skill gating so LAWS.md is 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.

Comment thread dastest/review_gate.das
Comment thread dastest/tests/test_review_gate.das
Copilot AI review requested due to automatic review settings August 26, 2026 06:27
@borisbat
borisbat force-pushed the bbatkin/hygiene-review-followup branch from e335e77 to c75f6ee Compare August 26, 2026 06:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 2 comments.

Comment thread skills/LAWS.md
Comment thread tests-cpp/REVIEW.das Outdated
…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
Copilot AI review requested due to automatic review settings August 26, 2026 06:33
@borisbat
borisbat force-pushed the bbatkin/hygiene-review-followup branch from c75f6ee to 164c2d0 Compare August 26, 2026 06:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated no new comments.

@borisbat
borisbat merged commit f0d5e0d into master Aug 26, 2026
37 checks passed
@borisbat
borisbat deleted the bbatkin/hygiene-review-followup branch August 26, 2026 07:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants