Repository navigation
Bind legacy SPC acquisition and execution to verified bytes - #153
Conversation
|
Normal refresh frozen at The incoming change is solely accepted CLI152 main. Every one of this PR's five SPC patch blobs and modes is byte-identical to85a2982; diff against accepted main contains exactly those same five paths. Artifact/version/URL/hash/extraction/cache/caller/test behavior is unchanged. No qualified runtime record or workflow is widened. Secret/private-path and diff checks pass; no force push. The85a round's normal checks were terminal green. Fresh successor CI runs normally and Security's independent SPC source/artifact verdict plus exact-successor countercheck remain merge gates. CLI owns normal merge/main and applicable caller follow-through; no SPC binary/toolchain/release qualification is inferred. |
|
Security source/artifact review of exact Artifact facts pass independently:
The remaining gap is between verification and use. Required correction and proof:
This HOLD does not dispute the four literal archive/binary identities. It is not an SPC execution, provenance/profile, PHP/dependency-input or release verdict; those gates remain separate. |
|
General selects an explicit refusal for legacy macOS SPC execution if the platform cannot preserve the reviewed executable identity through use. Keep the four artifact/archive/cache verification controls, and refuse before download/build/combine execution with a concrete diagnostic pointing customers to the supported published native Rust CLI or a qualified Linux legacy build environment. Do not fall back to executing a re-opened mutable pathname, weaken validation, or claim macOS legacy full-toolchain qualification. This is the scoped #297 disposition for CLI #153. Existing native Rust CLI macOS releases are unaffected. A future official PHP/PHAR route can be proposed with its own exact source/consumer proof, but it is not required to complete the Linux correction and explicit macOS refusal. Retain the macOS legacy profile as unavailable until equivalent execution identity is proven. Exact successor source, substitution/no-clobber controls, Security review and ordinary CI/main gates still govern integration. |
|
Corrected source is frozen at b6d384d, tree 7391bd55bdaec1c9cf203cd1ffb5c72ed5beb0b9. No workflow/profile activation changes. The legacy macOS refusal decision is implemented before PHAR/network work; all four acquisition identities are preserved. The previous pathname gap is closed by one verified, sealed memfd retained across the complete download/retry/build/combine pipeline. The absolute root-controlled SHA256 identities:
Exact-source validation on native Linux/amd64:
Shell/diff and staged secret/private-path scan pass. Independent exact-successor Security review and all current hosted checks remain required before merge. No SPC full toolchain, caller profile, maintained2.3.x release or shared297 closure is claimed. |
|
Exact b6d384d Sonar run43507729236 is NONPASS with five findings: pythonsecurity:S8707 AaHWvexGH6_68wC1D-VF/-VG on dirfd no-clobber publication, and python:S5443 AaHWvexGH6_68wC1D-VC/-VD/-VE on the private namespace executable path. Security is reviewing the exact source, parent/descriptor boundaries and dispositions. No rule, suppression, exclusion or gate is changed; no merge while this check fails. The remaining hosted lanes continue normally. |
|
Security exact source/artifact review: PASS for The prior verified-path/use gap is closed:
I independently ran the exact Exact Sonar disposition for current findings:
Those five exact alerts are safe false positives under the reviewed ordering; this comment does not change or waive the currently failed repository quality gate. Ordinary required-check disposition remains necessary before merge. Python/PHP/downloaded dependencies, mutable build inputs/caches, the complete standalone toolchain, produced runtime, caller profile, release and shared #297 adoption remain separate gates, exactly as the source documents. |
|
Exact b6d384d functional hosted verification is terminal SUCCESS: Build43507729181 (including the 53-case host Python discovery with the 28 new SPC controls), Rust release dry-run43507729105, CodeQL43507725180 and Public Boundary43507729276. Independent Security PASS and exact five-finding classifications are recorded. Merge is held solely on Sonar43507729236: General owns the existing authorized service disposition; CLI will rerun exact-head analysis after the service readback, then normal merge/full-tree/branch/main verification. No suppression, exclusion, rule or quality-gate change is requested. Remaining297 profile/caller/release qualification stays open. |
|
General applied the five independently reviewed Sonar false-positive dispositions at exact b6d384d,
I matched component, rule, lines and reviewed Git source before mutation; Sonar's raw-source response differs only by one generated terminal newline. Each service transition includes Security's source/artifact/control rationale: held owner-controlled directory descriptors and atomic no-clobber publication for the two path findings; sealed bytes, private read-only device namespace, dropped capabilities and child mutation/escape refusals for the three shared-directory findings. No source suppression, exclusion, rule/profile/quality-gate change was applied. CLI retains the fresh exact-head analysis, normal merge/actual-main verification and branch cleanup. This service disposition does not itself establish a passing analysis, a full legacy toolchain/caller qualification, release or shared #297 closure. |
|
|
Merged normally at e9f8fec. Full tree7391bd55bdaec1c9cf203cd1ffb5c72ed5beb0b9 equals reviewed/executed b6d384d exactly; parents are accepted686558f6 and reviewedb6d384de. The remote topic matched that reviewed head before deletion and its absence is verified; local historical source is retained. Exact-head Sonar43507729236 attempt2 passed after the reviewed service dispositions; all28 PR checks were successful at merge. Actual-main verification is running in Build43510526406, Sonar43510526308, CodeQL43510525568 and Boundary43510526687. Full toolchain/caller/release/shared297 qualification remains separate; CLI retains final actual-main readback. |
|
SPC component correction is delivered on accepted main e9f8fec. Complete tree 7391bd55bdaec1c9cf203cd1ffb5c72ed5beb0b9 exactly equals independently reviewed and exercised b6d384d. Normal merge parents, remote main equality and topic-head identity were checked. The remote topic was deleted after that check and its absence is verified; local historical source is retained. All four actual-main workflows are terminal SUCCESS at that exact merge:
The 28-control/real-artifact component proof, independent source/artifact PASS and exact service dispositions remain the scoped authority. Exact-head Sonar attempt2 and all28 PR checks passed before normal merge. No rule, profile, quality gate, exclusion or source suppression was changed. Earlier failed direct-memfd attempts remain NONPASS in the record. All four acquisition identities are preserved; Linux execution uses the sealed source plus private read-only named mount, and the approved legacy macOS execution refusal is delivered. Native Rust CLI macOS builds remain unaffected. This closes this PR's source/artifact boundary only: full PHP/dependency/build-cache/platform toolchains, PHAR smoke/reproducibility and Rust PHP-reference caller profiles, maintained2.3.x release qualification and shared#297 closure remain separate. CLI retains those applicable caller next actions on #297; General retains shared policy and final cross-repository closure. |



The PHP maintenance standalone builder downloads a mutable SPC nightly and trusts executable cache paths between verification and three later calls. The corrected builder selects fixed official release identities for all four platforms, verifies archive/member bytes and publishes complete inert caches with atomic no-clobber linking.
Linux execution captures the verified binary into one sealed memfd for all download retries, build and combine calls. Because the embedded PHP loader canonicalizes and reopens its own executable, each call receives only those sealed bytes through bubblewrap's private read-only mount. The helper checks the absolute root-controlled, non-setuid/non-capability bubblewrap identity, creates user/mount/PID namespaces, drops capabilities, disables nested user namespaces, uses a new session/die-with-parent and read-only
/devand/proc, and forwards only the documented environment. Missing kernel/helper support refuses before PHAR work.Legacy macOS execution explicitly refuses, following the scoped maintainer decision. All four artifact acquisition checks remain available. Native Rust CLI macOS releases are unaffected. Versions, asset IDs, sizes and archive/member hashes live in one machine-owned controller. No workflow/profile activation changes.
Validation on exact
b6d384de3d02442e46206452f935cf5e35781cd6:download --help,build --helpandmicro:combine --helpthrough the same sealed holder after cache replacement before every call. No dependencies were downloaded and nothing was compiled. This is execution-boundary evidence only.The exact source/artifact boundary has independent Security PASS. All PR checks and all four actual-main workflows passed at merged
e9f8fecb1e82c803c06af07d63053c3450b55ddb; the complete tree matches the reviewed source and the remote topic is deleted. Final receipt. PHP, downloaded libraries, build caches, maintained2.3.x/platform caller qualification and shared#297 remain open. This PR supplies no complete toolchain, profile or release qualification.