Repository navigation
Avoid repeating Shared fixtures for unchanged merge groups #830
Description
PHP-only merge groups repeat every Shared Server fixture job even when the existing PR classifier reports that none of its inputs changed. For example, #828's merge-group run 40619988435 executed 43 jobs and took about 22 minutes. This consumes runner capacity alongside the full PHP qualification and delays the queue.
Extend the existing single-list input classification to merge groups conservatively. A group may skip the shared fixtures only when its checked-out head matches the event, its base is verified against current main, and the complete base-to-head range changes none of the existing shared inputs. Preserve full execution for native/frozen-input changes, including queued predecessors, and whenever identity/history cannot be established.
Acceptance:
- Keep the existing required terminal result, all fixture jobs/matrices/commands, all existing input patterns plus any missing actual shared inputs, permissions, resource limits and failure handling. PR, push and manual behavior remain intact.
- Prove PHP-only and documentation-only fast paths with real Git fixtures. Prove native changes, preceding native queue entries, fixture moves, stale/malformed event identities, unavailable main, incomplete history and unclassifiable paths all retain full qualification.
- Run normal CI and verify an actual unchanged-input merge-group result after merge. Record job selection, timings and limits of the measurement before claiming an improvement.
This follows the CI-first delivery work in #325 and #826. No Rust runtime, shared fixture expectation or published artifact changes are proposed.
Completed: #831 merged as 1bc585205d18cecb9fd2b05ca02b3770eb9d5828, preserving all jobs, matrices, commands, limits and the required aggregate. All 78 source contract cases pass; original-classifier and inherited-input counterfactuals fail six and 16 controls respectively. Head qualification passed 56 checks with one conditional skip, and all 43 combined Shared jobs passed.
Actual unchanged-input acceptance is complete in merged #835 at 536c41dedb8e140fb066ed86961c049d80992dc9. The complete group diff contains only two PHP files. Shared40688000135 passed with two running jobs and six skipped groups in 17s. PHP40688000274 passed in 14m56s, and boundary passed in 1m04s. The successful group took 16m37s from start to merge. The earlier PHP-only #828 Shared stage used 43 jobs and 21m39s. Measurement, conservative predecessor fallback and limitations. This establishes selection and sampled stage timing, not sustained throughput or billing savings.
The earlier failed group 30ee67fd5 remains recorded. Its MariaDB restart failure was resolved by the scoped #834 legacy-marker correction, included in the qualified source. The separate #789 PHP payload-race repair is merged in #835. The first #835 group behind unmerged native #837 correctly forced full qualification and was cancelled for CI efficiency; after #837 became verified main, the normal requeued group produced the unchanged-input result above.
Activity
rmcdaniel commentedon Oct 28, 2026
#831 merged as
1bc585205d18cecb9fd2b05ca02b3770eb9d5828, with all 43 combined Shared jobs and the normal PHP/boundary checks successful. The real unchanged-input merge-group observation is now available from #835.The #835 group is
536c41dedb8e140fb066ed86961c049d80992dc9, based on verified current main90d7ecbf35c34c88cab7f1c4076c27836f7af709. Its complete base-to-head diff contains onlyapp/Support/ExternalPayloadRetentionCleanup.phpandtests/Feature/WorkflowStreamPayloadRaceTest.php. Input classification took six seconds; the unchanged required terminal result took five seconds. None of the expensive shared fixture jobs started. Normal PHP qualification and boundary qualification remain scheduled separately; PHP is still running.The first #835 group,
49ce16eb4, entered behind unmerged native #837 while main was still55fe2274. It correctly selected full qualification. I dequeued only #835 and cancelled only its own Shared40687267330/PHP40687267193 runs to avoid duplicating the predecessor's matrix; both are terminal cancelled and remain evidence. Boundary40687267428 had already passed. After #837 merged and main was independently verified as90d7ecbf, #835 re-entered normally and produced the successful unchanged-input result above. No failed test was bypassed or reclassified.These are individual recorded workflow runs, with different source revisions and fixture catalogs. They establish the intended job selection and the measured Shared-stage reduction, not a controlled comparison of native execution speed, a billing calculation, sustained throughput, or the final end-to-end queue reduction. Keep #830 open until #835's remaining required checks and merge finish, then record the whole-group timing and cleanup.
rmcdaniel commentedon Oct 28, 2026
Independent final hosted acceptance check: #835 is actually merged at
536c41dedb8e140fb066ed86961c049d80992dc9on 2026-10-28T12:44:26Z. Its exact merge-group workflows are all terminal successful: Shared40688000135, PHP40688000274 and Boundary40688000177.This independently confirms the selection in General's measured receipt: two successful Shared jobs and six skipped downstream job definitions before matrix expansion. The input job took6seconds and required terminal result5seconds. The actual main-to-group comparison contains only the two PHP files recorded there; it includes no shared input.
The recorded workflow creation-to-terminal-update intervals are 17seconds Shared and 14minutes56seconds PHP. The group was created12:27:49UTC and actually merged12:44:26UTC, 16minutes37seconds later. Those timestamps describe this observed group; the Shared reduction is not a controlled end-to-end queue-speed comparison, execution-speed benchmark or billing estimate. Full Shared qualification also remains demonstrated by the classifier-changing #831 and the cancelled predecessor-containing #835 group remains a cancelled result, not acceptance.
The remaining PHP/merge gate named in the prior receipt is now satisfied. General retains the owning issue/branch-cleanup disposition; this check made no source, queue, runner-limit or required-check change. No new local test or Rust execution was performed.
rmcdaniel commentedon Oct 28, 2026
Completed through merged #831 and the actual PHP-only #835 merge group. #835 merged as
536c41dedb8e140fb066ed86961c049d80992dc9at 12:44:26 UTC after its normal required checks passed.The measured job-selection evidence shows the intended result: the Shared stage executed two jobs and skipped six groups in 17 seconds, compared with all 43 successful jobs and 21m39s for the earlier PHP-only #828 group. Native/classifier changes retain the full matrix, demonstrated by #831's 43 successful combined jobs. The 78 contract cases and both original-source/input-list counterfactuals remain recorded above.
The successful #835 group started at 12:27:49 UTC. Its required PHP workflow passed at 12:42:45 (14m56s); the feature job itself took 14m30s. Boundary passed in 1m04s. Time from this group's start to merge was 16m37s. The PHP workflow now determines this group's critical path. These timings exclude the initial cancelled #835 attempt behind #837, whose Shared workflow ran 12:22:29–12:26:50 before cancellation; that attempt is preserved separately and is not a qualification pass.
This completes the requested classification, conservative fallback, preserved checks and real hosted selection/timing acceptance. The individual source revisions and fixture catalogs differ, so this does not establish a controlled native-runtime benchmark, billing savings or sustained queue throughput. The completed remote source branch is deleted with an exact-head lease and verified absent; task scratch and the completed local worktree are being removed. No shared image or another owner's resource is part of this cleanup.