Problem
Pull requests can become blocked after the wiki preview workflow commits the .github/wiki submodule pointer back to the PR branch. The new head commit may contain only the wiki pointer update, so .github/workflows/tests.yml can skip its pull_request run because its paths filter does not include .github/wiki.
When that happens, branch protection still expects the required matrix checks:
Run Tests (8.3)
Run Tests (8.4)
Run Tests (8.5)
GitHub then leaves those checks as Expected — Waiting for status to be reported, even when the previous commit in the same PR included PHP/source changes that already needed test validation.
Current Behavior
A PR flow can look like this:
- A maintainer pushes a commit with PHP/docs changes.
- Test workflows start for that commit.
- The wiki preview workflow runs, publishes wiki output, and commits only the
.github/wiki submodule pointer back to the PR branch.
- The PR head changes to the wiki pointer commit.
- The tests workflow is skipped by the current
pull_request.paths filter because the new commit only touches .github/wiki.
- Required test checks for the latest head SHA remain pending/expected and the PR cannot be merged without bypassing rules.
This makes an expected workflow-managed wiki pointer update block merge instead of preserving a valid test state for the PR.
Expected Behavior
Wiki pointer commits produced by the preview workflow MUST NOT leave required test checks permanently pending.
The repository should either:
- make required test checks report a deterministic skipped/successful status for wiki-only pointer commits; or
- adjust the workflow/branch-protection strategy so wiki pointer commits do not become the latest SHA requiring unavailable test contexts; or
- make the tests workflow smart enough to inspect the PR diff/base state and run when the PR contains PHP/source-sensitive changes, even if the newest commit is only
.github/wiki.
Failure Surface
Affected areas:
.github/workflows/tests.yml, especially the pull_request.paths filter.
.github/workflows/wiki-preview.yml, especially the parent repository commit that updates .github/wiki.
- Consumer workflow wrappers that inherit the same tests/wiki behavior from
resources/github-actions/.
- Branch protection rules requiring the
Run Tests (8.x) matrix checks.
Proposal
Rework the skip strategy so workflow-managed wiki pointer commits cannot strand required checks in the expected state.
A likely direction is to keep a lightweight required-check workflow or job context that always reports for pull requests, then gate expensive test execution internally based on the effective PR diff instead of relying only on top-level paths filters. The implementation should also preserve the intended optimization for truly docs/wiki-only PRs.
Implementation Strategy
Inspect the interaction between:
- the wiki preview parent commit (
Update wiki submodule pointer for PR #...);
- the tests workflow path filters;
- required check names generated by the PHP matrix; and
- GitHub branch protection behavior when a required workflow is skipped before creating any check run.
Then implement a deterministic strategy that ensures each required context is reported for every relevant PR head SHA. Candidate approaches include:
- replacing top-level
pull_request.paths with an always-triggered workflow plus internal path/diff detection;
- adding a lightweight required status job that reports when expensive tests are intentionally skipped;
- ensuring wiki pointer commits retrigger or preserve required test contexts when the PR diff includes source/test/workflow-sensitive files;
- documenting any intentionally skipped behavior for wiki-only changes.
Non-goals
- Do not remove wiki preview publication or the workflow-managed
.github/wiki pointer update.
- Do not relax branch protection by removing required test checks.
- Do not force the full test matrix for PRs that truly do not require tests unless that is the smallest reliable fix.
Acceptance Criteria
Functional Criteria
Regression Criteria
Architectural / Isolation Criteria
- MUST: The core logic MUST be isolated into dedicated classes or services instead of living inside command or controller entrypoints.
- MUST: Responsibilities MUST be separated across input resolution, domain logic, processing or transformation, and output rendering when the change is non-trivial.
- MUST: The command or controller layer MUST act only as an orchestrator.
- MUST: The implementation MUST avoid tight coupling between core behavior and CLI or framework-specific I/O.
- MUST: The design MUST allow future extraction or reuse with minimal changes.
- MUST: The solution MUST remain extensible without requiring major refactoring for adjacent use cases.
- MUST: Data gathering or transformation MUST be isolated from filesystem writes or publishing steps.
- MUST: Generated output ordering and formatting MUST remain deterministic across runs.
- MUST: Re-running the workflow MUST be idempotent or clearly bounded in its side effects.
Problem
Pull requests can become blocked after the wiki preview workflow commits the
.github/wikisubmodule pointer back to the PR branch. The new head commit may contain only the wiki pointer update, so.github/workflows/tests.ymlcan skip itspull_requestrun because itspathsfilter does not include.github/wiki.When that happens, branch protection still expects the required matrix checks:
Run Tests (8.3)Run Tests (8.4)Run Tests (8.5)GitHub then leaves those checks as
Expected — Waiting for status to be reported, even when the previous commit in the same PR included PHP/source changes that already needed test validation.Current Behavior
A PR flow can look like this:
.github/wikisubmodule pointer back to the PR branch.pull_request.pathsfilter because the new commit only touches.github/wiki.This makes an expected workflow-managed wiki pointer update block merge instead of preserving a valid test state for the PR.
Expected Behavior
Wiki pointer commits produced by the preview workflow MUST NOT leave required test checks permanently pending.
The repository should either:
.github/wiki.Failure Surface
Affected areas:
.github/workflows/tests.yml, especially thepull_request.pathsfilter..github/workflows/wiki-preview.yml, especially the parent repository commit that updates.github/wiki.resources/github-actions/.Run Tests (8.x)matrix checks.Proposal
Rework the skip strategy so workflow-managed wiki pointer commits cannot strand required checks in the expected state.
A likely direction is to keep a lightweight required-check workflow or job context that always reports for pull requests, then gate expensive test execution internally based on the effective PR diff instead of relying only on top-level
pathsfilters. The implementation should also preserve the intended optimization for truly docs/wiki-only PRs.Implementation Strategy
Inspect the interaction between:
Update wiki submodule pointer for PR #...);Then implement a deterministic strategy that ensures each required context is reported for every relevant PR head SHA. Candidate approaches include:
pull_request.pathswith an always-triggered workflow plus internal path/diff detection;Non-goals
.github/wikipointer update.Acceptance Criteria
Functional Criteria
.github/wikino longer leavesRun Tests (8.3),Run Tests (8.4), orRun Tests (8.5)stuck asExpected — Waiting for status to be reported.Regression Criteria
.github/wikibecomes the latest head change.Architectural / Isolation Criteria