No per-PR CI job builds or tests C++ outside the codegen paths

Table of Contents

This page is a capture in the inbox bucket of the product backlog — a pre-sprint idea, not yet pulled into a sprint as a story.

1. What

Build and test the C++ tree on a pull request, on at least one platform. The workflow that does build and test – codegen-drift.yml – is path-filtered to the inputs codegen reads, so a pull request that touches only C++ sources or tests checks out the tree, runs compass lint and stops.

2. Why

A compile break is the cheapest defect to find and the most expensive to find late. Three reached main this sprint, each reddening the continuous builds until a hotfix landed: an FSM consumer that named a symbol the protocol header no longer declared, an IAM dataset handler that named a response field the generated type does not have, and a visibility macro on an enum that only Windows reports.

That last one shows the shape of the gap most sharply. No Linux or macOS compiler reports a symbol visibility attribute on an enum, so nothing outside a Windows run can find it, and Continuous Windows runs every twelve hours and takes five to eight. Without a build on the pull request, the only gates are the static checks, and a static check has to be written for each mistake after it happens.

A build on every pull request costs a vcpkg install and a full compile of the tree. A cheaper first step is a single preset, cached, on the platform that reports the most – or a merge queue.

3. References

4. See also

  • .github/workflows/codegen-drift.yml – the path filter in question.
  • .github/workflows/header-hygiene.yml – a pull-request workflow added on 2026-09-29 for the one defect class that can be caught by reading sources.

5. Outcome

The gate this asks for was built on 2026-09-29 (commit 17ad5c5335, environment prime_origin, task 4050BF6C) as pull-request-verify.yml plus the reusable cpp-verify.yml: a classifier over the changed paths, then a configure, a build of every target, ctest, and a service start, on every pull request that could break a build.

It was removed on 2026-09-30 by decision, and this capture is discarded with it. The cost was the problem: the job takes longer than everything else on a pull request put together, and the break it catches is one the author is about to find anyway. Building and starting the services belong on the developer's machine, where compass build, compass test run and compass services start already do exactly those steps.

Do not re-add it. The scheduled Continuous Linux job still configures, builds and tests the tree, so the estate is not unverified; it is verified off the pull-request path.

Emacs 29.3 (Org mode 9.6.15)