Task: Classify changes and run targeted local checks in the submit-PR skills

Table of Contents

This page documents a task in the Absorb PR checks locally: targeted checks, local review, CDash submissions story. It captures the goal, current status, acceptance, and any notes or results.

Goal

The pr-raise skill now mandates the full build and ctest for every PR, even doc-only ones. Replace that: classify the changed files, run only the checks the class needs, and record the verification in the PR description. pr-address-review reuses the classification for its per-round verification.

Status

Field Value
State DONE
Parent story Absorb PR checks locally: targeted checks, local review, CDash submissions
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-08-11

Acceptance

  • The pr-raise skill classifies the changed files into docs / code (C++) / ci / python tooling; a mixed change runs the union of its classes.
  • Only the checks that match the class run locally: a doc-only change runs the site build and nothing heavier.
  • The classification rules live in one place that both submit-PR skills read, resolving the shared-rules open question.
  • The change class and the verification are recorded in the PR description as a –change bullet.
  • pr-address-review applies the same classification to its per-round local verification.

Plan

  • The classification rule table lives in pr-raise (one place both submit-PR skills read); pr-address-review links to it.
  • ctest goes via compass, never raw: the new compass test run acquires the host-wide build lock and runs ctest; --cdash GROUP runs the CTest.cmake script form (the same shape CI uses) for CDash submissions.
  • The knowledge doc's local-flow step 3 records the refined CDash invocation; the shared-rules open question resolves to "the skill owns the rules" until the gate-reduction task decides whether pr.yml needs its own copy.

Notes

Test Scenarios

Manual QA scenarios (scaffolded via compass add test_scenario, run through the QA Validation Runner panel) that verify this task. Link new ones here as they're created; the scenario doc itself links back via its "Verifies task" field.

Scenario State Notes
     

PRs

PR Title
#1966 [agile] Classify changes and run targeted checks in submit-PR skills

Review

# Comment summary File Decision Notes
1 _cmd_test_run crashes when the build lock is unavailable (no fcntl): unguarded lock_file.close() and a ores-build.log.None path compass.py accepted Guarded like cmd_build; regression test test_run_degrades_without_fcntl added
2 Knowledge doc local-flow step 2 still says "build + ctest --preset" ci-workflows-and-local-checks.org accepted Now: compass build + compass test run
3 ctest runs twice per PR (plain run + CDash script form) pr-raise/SKILL.org declined Intentional: plain run for fast feedback; the script form rebuilds incrementally and submits for CDash visibility (story acceptance)
4 Codegen-drift step runs build --direct codegen_templates, a target that does not exist (only tangle_codegen_templates) — following the skill skips the check pr-raise/SKILL.org accepted Added codegen_templates alias to BUILD_TARGET_ALIASES; test_direct_build.py asserts every alias resolves to a known direct-build target
5 Classification table has no catch-all bucket, unlike pr.yml's classify *) code=true default — unmatched paths map to zero classes and skip all checks pr-raise/SKILL.org, ci-workflows-and-local-checks.org accepted Added "anything else" row (code class checks) to both tables
6 _cmd_test_run duplicates cmd_build's lock/log lifecycle; factor into a shared helper compass.py declined Two call sites only; factoring awaits a third caller (reviewer: not blocking)

Result

pr-raise now classifies the diff (docs / code (C++) / ci / python tooling; mixed = union) and runs only the matching checks. The rule table lives in pr-raise alone; pr-address-review links to it. ctest goes via the new compass test run (host-wide build lock; --cdash GROUP for the CTest.cmake script form), never raw.

Verification for this change (python tooling + docs classes): compass suite 114 passed / 1 skipped; regenerate + codegen drift clean (no in-tree changes); local site build clean. All acceptance bullets met. The story stays STARTED: the gate-reduction task (pr.yml) and the local-review task follow.

Emacs 29.3 (Org mode 9.6.15)