Repository navigation
Use qualified PHP setup in shared contract CI - #382
Conversation
|
Security PASS — exact staged-to-live equality review at The PR changes only Thus the already reviewed boundary carries forward unchanged: Ubuntu 24, credential-free checkout, clean-trust bootstrap and local Composer verifier, exact bound PHP 8.3 production/no-coverage profile, Composer 2.10.3/PHPUnit 11.5.57, APT retries disabled, and every original shared-contract/browser command retained. The protected runtime now pins the accepted policy/context source through merged #381. I also ran 430 exact-tree qualification/context/Composer/CI-trust controls locally; all passed with one declared skip. The diff is whitespace-clean. This is source/equality PASS only. Merge requires all current hosted checks, including the actual original shared-contract and Composer trust caller, to complete green at this exact head. It does not qualify Sonar's separate xdebug profile, another PHP version/extension set, or any consumer/production action. |
|
Security exact-head gate remains HOLD at Required run
The no-RECORD target did refuse, so this is not evidence of manager mutation or unsafe installation. The exact test passes on lab4 with its system manager pip 25.1.1, while the hosted runner emits the older renderer shape. That exposes an unbound system-manager diagnostic-format dependency in the test. Required correction: preserve and assert the security invariants (nonzero refusal, unchanged planted target tree, unchanged manager snapshot) while recognizing the semantic no-RECORD refusal independently of the optional diagnostic reference. Cover both renderer shapes if practical. Then rerun the complete exact-head gate; do not merge or treat a blind retry as qualification. |
|
Security counter-review PASS for the narrow test-only successor Relative to the previously reviewed source head
The live This closes the source finding only. The original failed 835-case attempt remains correctly non-passing; merge requires the fresh current-head hosted gate and every other required check to finish green. Any further source/head change requires counter-review. |
|
|
General merged #382 at Security-reviewed All three actual-main workflows passed: Repository checks, SonarQube, and main analysis. Main's actual shared-contract job passed the bound PHP setup, live Composer verifier, complete source controls, actual Composer trust tests and browser-boundary tests. The CI file remains byte-identical to reviewed fixture SHA-256 The original 835-case failed attempt remains nonpassing: stock Ubuntu24 pip refused the planted no-RECORD distribution, but its diagnostic omitted an optional reference marker. The successor requires nonzero failure plus cannot-uninstall/missing-RECORD semantics and retains target-tree and manager-identity equality. Installer/runtime code did not change. The local private-pip module passes 14 tests with one declared hosted-only skip. This completes the existing central PHP 8.3 contract caller migration, including actual main acceptance. Sonar's Xdebug profile and the other explicitly inventoried #297 profiles remain open. No new installer/profile, production operation or blanket qualification is claimed. |



Central shared-contract CI still uses the unbound PHP setup. Adopt the exact workflow fixture reviewed in #380 after the validator pin in #381: qualified helper
411a14ac, Ubuntu 24.04, production INI, the same Composer/PHPUnit literals and no coverage. Checkout credentials are no longer persisted.The file is byte-identical to accepted
tests/fixtures/ci-bound-php-source.yml(SHA-256363540f9e81e4842099f0cad394ce3fc2a83835ce1355ffef5b16722547699b4). All existing Python/PHP/Composer/Node test commands and required jobs remain. Sonar's different Xdebug profile remains tracked in #297.The first actual Ubuntu24 caller ran all 835 source cases and exposed one test-only portability failure: stock pip refused the deliberately planted no-RECORD distribution correctly, but omitted the optional
uninstall-no-record-filediagnostic marker. Assert its nonzero, cannot-uninstall/missing-RECORD semantics while preserving unchanged-target and unchanged-manager checks. Installer/runtime code is unchanged.Validation: 186 focused policy/context/workflow controls pass. The original failed attempt remains recorded; the corrected exact-head Shared contract tests job must pass the complete suite, actual setup and Composer controls before merge. The helper's earlier profile receipt does not replace this caller result. No installer or new PHP profile is introduced.
Refs #297, #380, #381.