Task: Fix the nightly include-hygiene bot push rejection
Table of Contents
This page documents a task in the Hotfix: Continuous Linux gcc jobs red on further gcc-only diagnostics story. It captures the goal, current status, acceptance, and any notes or results.
1. Goal
The Nightly Include Hygiene job pushes its bot branch again. The bot commit holds only the sources the checker rewrites, not the build artefacts that live inside the checkout.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Hotfix: Continuous Linux gcc jobs red on further gcc-only diagnostics |
| Now | Nothing. |
| Waiting on | The next nightly run, at 03:00 UTC. |
| Next | Nothing. |
| Last touched | 2026-09-15 |
3. Acceptance
- The bot commit stages only paths under
projects/. - The nightly run pushes
bot/nightly-includesand opens its pull request. - No file over GitHub's 100 MB limit enters the commit.
4. Plan
The pull-request action stages the whole workspace when add-paths
is unset. Two directories in that workspace are large and untracked:
llvm/, whereKyleMayes/install-llvm-actionunpacks LLVM 19 into the checkout root.vcpkg-cache/, the binary cache the workflow asksactions/cacheto keep inside the workspace.
So the bot commit carries LLVM shared objects and vcpkg zips, and GitHub refuses the push.
- Pin
add-pathstoprojects/. Every source the checker rewrites and that belongs in a commit sits there. The fewbuild/entries incompile_commands.jsonare CMake-generated PCH stubs and a generatedversion.cpp; the pin keeps those out of the commit. - Say why in a comment, so the pin does not read as noise.
The checkout stays as it is. Moving the LLVM install or the vcpkg cache out of the workspace would touch every other workflow that shares them.
5. Notes
Evidence from run 34945022191, job misc-include-cleaner,
step "Create pull request if files changed":
Install location: /home/runner/work/OreStudio/OreStudio/llvm
remote: error: File llvm/lib/libclang-cpp.so.19.1 is 226.14 MB; this
exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected.
error: failed to push some refs to 'https://github.com/OreStudio/OreStudio'
The job has failed on every nightly run since 2026-09-09. Earlier runs stopped earlier, in the configure step, before the Qt6 fix landed.
6. 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 |
|---|---|---|
7. PRs
| PR | Title |
|---|---|
8. Review
| # | Comment summary | File | Decision | Notes |
|---|---|---|---|---|
| 1 | Stated that every compile_commands.json entry sits under projects/, so that path is the whole rewrite surface. |
task_fix-nightly-includes-bot-push.org, nightly-includes.yml | Accepted | False: 37 of 4162 entries in the gcc debug tree sit under build/. They are generated PCH stubs and a generated version.cpp, so the pin still stages the right set. Corrected in 0d699527b3. |
9. Result
nightly-includes.yml now passes add-paths to the pull-request
action, so the bot commit holds projects/ and nothing else. The YAML
parses and the key reads back as projects.
Two acceptance bullets hold by inspection: the pin limits staging to
projects/, and no file over 100 MB can therefore enter the commit.
The bullet that asks the nightly run to push bot/nightly-includes and
open its pull request is not yet observed. The job runs on a cron
schedule at 03:00 UTC and cannot be triggered from here, so that bullet
is verified only on the next nightly run.