Client or integration
CI only.
Area
CI and release
Summary
A pull request that touches only structure/ runs no test or gate legs at all, which means tests/ci-workflows/structure-ssot.test.ts does not execute — and that test is the only thing in CI that runs bun run structure:check. The folder whose entire purpose is a gate is the one folder whose changes the gate never sees.
The cause is the changes job's ci path filter in .github/workflows/ci.yml, which does not list structure/**. On #4999, a pure doc split, every expensive leg reported skipped: windows, macos, macos control, test 1/4 through 4/4, gates, npm-global, docker smoke, keyring, api usage, storage policy and docs site build. Only select-windows-runner, changes and the aggregate ci job ran. The aggregate reports success, so the pull request looks green while nothing was verified.
This survived because it is invisible in the normal case. The ownership rule in structure/AGENTS.md means a change to structure/ almost always accompanies a change to src/, so the filter matches on the source side and the gate runs. Three pull requests hit the structure/runtime.md line budget earlier the same evening and all three were correctly caught, precisely because they also touched src/. A pure doc split is the rare shape that exposes the gap, and it took a doc reaching its size budget to produce one.
Reproduction
Open a pull request that changes only files under structure/. Observe that every test and gate job reports skipped while the aggregate ci check reports success. #4999 and its run are a live example.
A workflow_dispatch of ci.yml with lane=all does force the expensive legs and is the current workaround, but it is manual and nothing requires it.
Version
2.59.0 (dev).
Operating system
Not OS-specific.
Provider and model
Not provider-specific.
Logs or error output
Not applicable; the defect is the absence of execution rather than a failure.
Screenshots and supporting files
Not applicable.
Redacted configuration
Not applicable.
On the fix, recorded as analysis rather than as a decision: adding structure/** to the ci filter would close it and would be self-verifying, since ci.yml is already inside its own filter. But it would start the full cross-platform matrix on every prose edit, which is the cost the workflow's own comments argue against for docs-site. A narrower job that runs only the structure gate on structure/** is the better shape. Either way this is a GitHub Actions workflow change and falls under the explicit security-review boundary in AGENTS.md, so it belongs in its own pull request with its own reasoning.
Client or integration
CI only.
Area
CI and release
Summary
A pull request that touches only
structure/runs no test or gate legs at all, which meanstests/ci-workflows/structure-ssot.test.tsdoes not execute — and that test is the only thing in CI that runsbun run structure:check. The folder whose entire purpose is a gate is the one folder whose changes the gate never sees.The cause is the
changesjob'scipath filter in.github/workflows/ci.yml, which does not liststructure/**. On #4999, a pure doc split, every expensive leg reportedskipped: windows, macos, macos control, test 1/4 through 4/4, gates, npm-global, docker smoke, keyring, api usage, storage policy and docs site build. Onlyselect-windows-runner,changesand the aggregatecijob ran. The aggregate reports success, so the pull request looks green while nothing was verified.This survived because it is invisible in the normal case. The ownership rule in
structure/AGENTS.mdmeans a change tostructure/almost always accompanies a change tosrc/, so the filter matches on the source side and the gate runs. Three pull requests hit thestructure/runtime.mdline budget earlier the same evening and all three were correctly caught, precisely because they also touchedsrc/. A pure doc split is the rare shape that exposes the gap, and it took a doc reaching its size budget to produce one.Reproduction
Open a pull request that changes only files under
structure/. Observe that every test and gate job reportsskippedwhile the aggregatecicheck reports success. #4999 and its run are a live example.A
workflow_dispatchofci.ymlwithlane=alldoes force the expensive legs and is the current workaround, but it is manual and nothing requires it.Version
2.59.0 (dev).
Operating system
Not OS-specific.
Provider and model
Not provider-specific.
Logs or error output
Not applicable; the defect is the absence of execution rather than a failure.
Screenshots and supporting files
Not applicable.
Redacted configuration
Not applicable.
On the fix, recorded as analysis rather than as a decision: adding
structure/**to thecifilter would close it and would be self-verifying, sinceci.ymlis already inside its own filter. But it would start the full cross-platform matrix on every prose edit, which is the cost the workflow's own comments argue against fordocs-site. A narrower job that runs only the structure gate onstructure/**is the better shape. Either way this is a GitHub Actions workflow change and falls under the explicit security-review boundary inAGENTS.md, so it belongs in its own pull request with its own reasoning.