ci: documentation-only changes skip CI - #4163
Merged
Merged
Conversation
- Add llms.txt (the exact root path, not **/*.txt) to the docs allowlist. - Remove README.md and Lite/README.md from the lite and lite_shard filters (kept byte-equal by CrossAppGuardCiGateTests), so a README-only PR no longer runs the Lite suite. LiteRuntimePrerequisiteDocsTests now runs on every code PR and in the nightly instead. - darling-tree-guards no longer runs the whole Darling suite when the build job's own classify step engaged the docs fast path; the build job now publishes that decision as a job output (docs-fastpath) alongside its existing darling-tests outcome output. - push and merge_group no longer force the restore back on for a docs-only change: nothing that restore validates (lock files, Directory.Packages.props, global.json) is reachable from a change that is entirely on the docs allowlist, since all of those sit on the root filter which vetoes the fast path.
Owner
Author
|
Probe result. #4165, a one-line README.md change against dev after this merged, was closed unmerged.
|
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.
What changes at PR time
A documentation-only pull request (every changed file on the
docsallowlist: markdown,LICENSE,CITATION.cff,.gitignore,.gitattributes,docs/,Screenshots/, and nowllms.txt) no longer:buildjob (unchanged from before — that fast path already existed),README.mdorLite/README.md(that trigger is removed),darling-tree-guards(new: the job now reads the build job's own fast-path decision and skips).A code pull request still runs everything it ran before — the fast path only engages when every changed file is documentation, and this PR's own diff (
build.yml, a.csfile) proves that: it is not docs-only, so it runs the full set below.A push or merge_group to
dev/mainalso takes the fast path now when the change is docs-only. Previously those events forced the restore back on unconditionally as "cheap insurance." Nothing that restore validates — lock files,Directory.Packages.props,global.json— is reachable from a change that is entirely on the docs allowlist: all of those sit on therootfilter, which vetoes the fast path via the existing "any lit area vetoes it" guard. So the insurance bought nothing on a docs-only push specifically, and this PR removes the push/merge_group carve-out.Where it's still caught
LiteRuntimePrerequisiteDocsTests,LlmsTxtCollectorCensusTests, andReadmeDerivedCountPinTests(the pins that read these docs against the built artifacts) run on every code pull request — because those always build Lite/Darling — and in the nightly. A stale doc landing through a docs-only PR is caught at the next code PR or by the next nightly run, not at PR time. This is the trade Erik accepted ("i don't want docs changes going through ci").Changes
docsfilter: addedllms.txt(the exact root path, not**/*.txt—Darling/Darling.Tests/McpToolsListBudget/*.txtand Lite's copy are test inputs, not docs).litefilter (build job) andlite_shardfilter (Lite matrix job, kept byte-equal byCrossAppGuardCiGateTests.TheShardJobsFilters_AreByteForByteCopiesOfTheBuildJobs): removedREADME.mdandLite/README.md. Rewrote the#2489comment to say what changed and why.buildjob: added adocs-fastpathoutput (steps.fastpath.outputs.engaged) alongside the existingdarling-testsoutput, sodarling-tree-guardscan tell "skipped because docs-only" apart from "skipped because the area filters didn't fire for another reason."darling-tree-guards: new gate arm — whendocs-fastpath == 'true', skip with a notice, checked before the existingdarling-tests == 'skipped'arm.Classify change for the docs fast path: removed thepush/merge_groupearly-exit that forcedengaged=false; rewrote the comment block above it to explain why (see "What changes" above).Lite.Tests/LiteRuntimePrerequisiteDocsTests.cs: updated the stale doc-comment note about the two READMEs being named in thelitefilter — it's a comment only, the test itself does not parsebuild.yml's filters.Not changed
LockedModeRestoreCoverageTests.cs,CommentFilterAdoptionTests.cs,DocCommentHygieneTests.cs,ReadmeDerivedCountPinTests.cs— read, none of them assert on the exact filter-list contents this PR touches (only ondarling-tree-guards' own gating wiring, which theTheDarlingSuite_RunsWhereTheAreaFiltersDoNotReachpin still holds because the newdocs-fastpatharm sits before the existingskippedarm and doesn't touch theneeds.build.outputs.darling-tests/BackstopRunLinewiring that test pins).claude-review,description-drift,check-branches,Claude review guard) — explicitly out of scope per the brief.Verification
dotnet build Darling/Darling.Tests/Darling.Tests.csproj -c Release -p:EnableWindowsTargeting=true— succeeded, 0 warnings/errors.dotnet build Lite.Tests/Lite.Tests.csproj -c Release— succeeded (execution is Windows-only CI, not run here per lane rig rules).CrossAppGuardCiGateTests,LockedModeRestoreCoverageTests,CommentFilterAdoptionTests,DocCommentHygieneTests,ReadmeDerivedCountPinTests— all green (111 total, 0 failed).Darling.Testssuite once,DARLING_TEST_PGunset:Total: 13585, Failed: 214, Skipped: 723. All 214 failures are the known Mac baseline (Microsoft.WindowsDesktop.App/PresentationFrameworkunavailable on macOS —AgTopologyCardsTests,ViewerDrillDownTests, etc.), none new.DOCS FAST PATH ENGAGEDnotice on a live run. Per the brief, a throwaway docs-only probe PR proves this on GitHub Actions directly (Windows runners aren't available locally). That probe PR is tracked separately and will be closed, never merged, after its checks are read.Lite.Testsexecution (WPF, Windows-only). CI proves it on this PR's own diff since it touchesLite.Tests/LiteRuntimePrerequisiteDocsTests.cs.Coordination note
Another lane (issue-4160) is editing this same
build.ymlin the Darling PG test job (the throwaway-cluster step). This PR does not touch that job. Before any further push here,origin/devwill be merged in (not rebased) to pick up that lane's changes.CHANGELOG entry
N/A — maintainer ruling / CI wiring only, no user-facing change. Per lane rules, this PR carries no CHANGELOG entry and CHANGELOG.md is not edited.
Update: probe PR status at handoff (context-wall, ~20 min)
Probe PR: #4164 (
ci/docs-skip-ci-probe, based onci/docs-skip-ci, retargeted todevafter an initial base-branch mistake). At the 20-minute context wall,check-branchesanddescription-drifthad reported success on it, but theBuildworkflow itself had not yet appeared in the run list for that PR/SHA — unclear whether it is still queued behind the shared Windows runner pool or something is wrong. Not yet verified: theDOCS FAST PATH ENGAGEDnotice, thatbuild/Darling PostgreSQL tests/Lite tests (result)all report success, and the measured job times. Whoever picks this up next should re-checkgh pr checks 4164andgh run list --workflow=build.ymlfiltered to that PR before trusting the fast path live, then close #4164 without merging.This PR (#4163) itself is unaffected by that gap: its own local verification (build + targeted/full Darling.Tests run) stands as reported above.
Coordinator verification
llms.txt(the exact root path) is added to the docs allowlist.README.mdandLite/README.mdare out of bothlitefilters, which stay byte-equal.docs-fastpathjob output comes from the classify step's own decision, anddarling-tree-guardsskips on it.releaseis untouched.LiteRuntimePrerequisiteDocsTests,LlmsTxtCollectorCensusTestsand the README count pins, on a docs-only PR. They still run on every code PR and in the nightly.