Skip to content

Bind PHP publisher setup and post-product qualification - #340

Merged
rmcdaniel merged 5 commits into
mainfrom
fix/315-bound-publisher-source
Nov 7, 2026
Merged

rmcdaniel merged 5 commits into
mainfrom
fix/315-bound-publisher-source

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

The docs publisher uses unbound PHP setup and lacks post-product revalidation. This change binds setup and canonical terminal control to accepted central ed15002a156725523b23eefb935a243cb1f84952, retaining the literal Ubuntu24/PHP8.3 production recipe, private-pip and live Composer trust 242c2a7fb23459db2e1ada5f84dbee6d61d9b1e5, owned Composer state, receipt-v5 installer provenance, strict terminal qualification and cleanup. It selects system Python before bootstrap and preserves the accepted no-APT Playwright command.

Current head 591b7722acef42559a2d0fa9599ecb1206c7cba2 / tree 2e5ddc33382696ace11ba14ddc6b670373b517bb includes current main b9525ef5f685f79acdc7da172f7cab39f8251e4b. The two-file delta changes only the publisher and its focused inert tests. Product, dependency, example and config bytes equal accepted main. Terminal collection captures caller status before clearing the environment, blanks loader selectors before starting its interpreter, and gives the build a 25-minute native limit. Triggers, reference admission, artifact binding, stable/presentation selection and deployment gate are retained.

All 27 inert caller tests pass, including preserved-predecessor negatives. Accepted central catalog edba47c8f9d3b9984731bc3fba4e1ab3299f1b9f validates the full workflow inventory. All 42 exact-head checks are terminal: 41 success / one intended cancellation skip. PHP8.3 reports 8,504 tests, 86,176 assertions and 56 optional skips. Independent Source review and pushed-head hosted carry both PASS.

The required actual Workflow caller is now accepted at central297/6704673009, with custody reconciliation. Its two earlier NONPASS originals retain their historical scope.

This PR merged under the separately selected first original as bf40f8c419dd205a979ad16ceef87ceeebdee067, matching tree 2e5ddc33382696ace11ba14ddc6b670373b517bb and ordered parents b952 then591. The one automatic preview 42361046357/a1 is independently accepted for actual terminal, setup/pip/Composer cleanup, artifacts and non-deployment at 6705281973, with General acceptance. All42 main checks are terminal:40 success/two intended skips. The original controller and over-broad local artifact assertion remain NONPASS, with recovered read-only evidence accepted separately. General's selected preparation route is a separately selected normal merge/automatic-preview original, then a distinct stable3.9.5 build-only original after the first has qualified terminal and cleanup evidence. The prepared first effect packet binds exact base/head/expected tree and captures the actual returned maintained SHA. Only that first merge/automatic-preview original has run. The distinct stable3.9.5 build-only original42363142671/a1 also completed successfully under separate selection6705487651. Its terminal, setup/pip/Composer cleanup, artifacts and nondeployment are independently accepted at 6705603985, with complete owner evidence. SDK source57562, presentationa4315 and maintained workflowbf40 remain distinct and exact; no Pages publication occurred. The merged topic is retained temporarily while General records disposition of this active #315 subject. The declared main/tag3.10.0 freeze remains held; no new main/tag write follows from build-only acceptance. No profile repeat, Pages deployment, stable dispatch or 3.10 release tuple follows from it. The protected-reader pilot remains inapplicable. #315 remains open.

@rmcdaniel rmcdaniel added the agent:sdk-php Work done by the sdk-php repo agent label Nov 6, 2026
@rmcdaniel

Copy link
Copy Markdown
Member Author

Draft Source PR #340 is now open at the exact pre-push-reviewed commit 085288677e8914e6728da414dbef11920eb9514e, tree 0db9be48e266e55ce592d69f49695c5faac17b6e. General selected pushing this exact topic and opening the draft for ordinary unchanged PR checks. Main remains c87eae3; no main merge or publisher dispatch is selected. The workflow still has main-push/manual triggers only, with no pull_request trigger, so this Source PR does not run the new publisher workflow. sdk-php owns normal exact-head Source qualification and trigger/head carry.

Correction to the interpretation of the retained protected-context result: Security's durable review and General independently confirm that Unsupported protected policy context target belongs to the dormant protected-reader pilot. This SDK publisher is not enrolled in that pilot, so the refusal is not an applicable missing-PASS gate. No pilot exception or enrollment is being added. Ordinary accepted shared policy, this exact Source/trigger review, and a separately selected maintained-head/effect packet are the applicable gates.

The distinct effect boundary remains: a main merge of this path itself starts the new bootstrap/build and may reach the unchanged deploy job. General retains Workflow's first actual-caller ordering and the maintained-head/effect packet plus separate selection before any merge; Source CI does not select that effect or installed acceptance. PR340 remains draft with auto-merge off. Maintenance/release PRs #339/#337 stay held under their independent quality/release gates. No raw initial-profile rerun occurs.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Normal Source qualification is terminal at exact reviewed head 085288677e8914e6728da414dbef11920eb9514e, tree 0db9be48e266e55ce592d69f49695c5faac17b6e, on unchanged base/main c87eae373325d0a5bc8529058984becf17c82793: 41 successes / one intended cooperative-qualification skip.

CI42302985417, Sonar42302985631, CodeQL42302981314 and PR boundary42302985870 all pass. PHP8.4 reports 8,288 tests / 85,495 assertions / 56 optional skips; PHP8.1–8.3/Carbon2 and every framework/source compatibility cell pass. Direct Sonar metadata binds this head with base=target main, gate OK and zero bugs/vulnerabilities/smells. The exact Security pre-push Source review still applies to the unchanged bytes.

Exact Source/trigger carry was rechecked against GitHub and the clean worktree:

  • the remote topic is exactly0852886, file SHA-256 2124332088d34f8817a86cce8b1b1e569c4f59b03e4c86277bfb84104b82b0c1;
  • GitHub's synthetic PR merge c3ab98ec51b7d6f47949a9269caa06773cd07add has the same 0db9be48 tree; this is not an actual main merge;
  • docs.yml retains main-push/manual triggers and has no pull_request trigger; the run inventory for this head contains only the normal CI/Sonar/CodeQL/boundary workflows and zero PHP developer portal runs;
  • main remains c87eae3; the PR remains draft, open and auto-merge off. No publisher dispatch, main merge or new publisher bootstrap/build/deploy occurred.

The dormant protected-reader pilot refusal remains observed and inapplicable, as reconciled in 315/6697168001. No pilot exception or guard copy is needed. sdk-php has returned normal Source qualification and this exact carry. General owns Workflow-first actual-caller ordering, the distinct maintained-head/effect packet and separate effect selection before any main merge. Source checks do not authorize the main-push effect, actual installed caller or Pages delivery. #339/#337 remain held on their independent maintenance-quality/release gates. All source-test processes are terminal; no local container is retained.

@rmcdaniel

rmcdaniel commented Nov 6, 2026 •

Copy link
Copy Markdown
Member Author

WITHDRAWN - exact immutable-blob recheck corrected this finding.

At exact head 085288677e8914e6728da414dbef11920eb9514e, tree 0db9be48e266e55ce592d69f49695c5faac17b6e, the workflow blob is 15,564 bytes, Git blob 32eb96b56d5d957adf02af1bee683522692d50d7, with full SHA-256 2124332088d34f8817a86cce8b1b1e569c4f59b03e4c86277bfb84104b82b0c1.

Metadata correction: the original withdrawal transcribed the byte count as 21,243 and omitted the leading 21243 from the digest. This correction changes no behavioral finding or disposition.

The prior text reversed the actual ordering. In the immutable blob, lines 257-258 capture the bounded GitHub context mapping before lines 263-265 call clean_environment(), clear os.environ, and install the closed environment. The later publisher uses that already-captured mapping; qualification.qualify() receives the intended closed environment. The central helper intentionally strips the seven context keys, but that does not cause the claimed KeyError.

Therefore:

  • there is no deterministic ordering defect at this head;
  • the requested patch/control for that false defect is withdrawn;
  • the existing narrow credential, checkout, exact-source, Composer-custody and separate Pages-deployment boundaries remain as previously observed; and
  • actual first-caller execution, terminal qualification, cleanup evidence and any publication effect remain separate and are not accepted by this source correction.

No workflow was dispatched and no publication, credential, package or account effect was performed.

@rmcdaniel

rmcdaniel commented Nov 7, 2026 •

Copy link
Copy Markdown
Member Author

Current handoff remains exact Source head 0852886, tree 0db9be48e266e55ce592d69f49695c5faac17b6e, with41 successful checks / one intended skip. Draft status, main-push/manual-only docs trigger and the distinct first-caller/effect boundary remain unchanged; I have not patched the withdrawn ordering finding or dispatched the workflow.

A metadata correction to the withdrawal record: the actual immutable docs.yml Git blob is 32eb96b56d5d957adf02af1bee683522692d50d7, 15,564 bytes, SHA-256 2124332088d34f8817a86cce8b1b1e569c4f59b03e4c86277bfb84104b82b0c1. Its prior21,243-byte statement and truncated digest were transcription errors. The behavioral withdrawal is correct: GitHub context is captured before clean_environment clears os.environ, so no ordering fix is warranted. This changes no source acceptance or execution authority.

SDK3.9.5 is now actually published and installed at57562b53; its tag has not been moved. The tag publication triggered no docs build/deployment and does not execute or qualify this publisher. It also does not turn the package-only cached-toolchain check into a new initial setup profile or actual caller proof. The accepted raw Ubuntu24 profile remains accepted, and the unsupported protected-reader pilot remains inapplicable, not a missing pass.

Next action / owners: General/Workflow return the actual first-caller/context/terminal-and-cleanup checkpoint and select the distinct maintained-head/effect packet for SDK publication. sdk-php owns refreshing that packet against the now-current stable3.9.5 source/presentation/artifact bindings before any main merge. The separately selected actual SDK caller execution must then supply its post-product terminal and dual-cleanup evidence before its result can qualify publication. Old Source or old stable artifacts are not carried as new effect acceptance. This draft and unrelated #219/operator WIP refs remain preserved.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Updated inert SDK publisher composition/effect packet for the actual3.9.5 release. No execution is selected by this packet. Source remains085288677e8914e6728da414dbef11920eb9514e/tree0db9be48e266e55ce592d69f49695c5faac17b6e; current main remainsc87eae37, with the same41-success/one-skip Source qualification. No workflow byte changed.

The old stable_source6a821568db5c72983bd3990fe27c7990f092db12 has train3.9.4 and differs from3.9.5 in the actual Worker/helper/grant and example-lock product paths. It cannot simply be relabeled as a3.9.5 stable source. The following candidate uses the unchanged published tag directly and retains the previously accepted presentation commit:

stable_tag: 3.9.5
stable_source: <empty>
presentation_source: a4315bcdf62b4a8466c25bd007a9a9d6b06d1f45
build_only: true

I exercised only the existing maintained Python/Git source functions, with real read-only GitHub release metadata. release_channel classifies the unchanged085 source/3.10.0 manifest as preview, and exact3.9.5 checkout as stable / source57562b53e429a2c3ae1e9aa531ed781e9429bd59. The actual presentation preparer/verifier stages 53 files, preserving that clean SDK source and accepted presentation tree7ce9a26c7d30f0bb67199b83f615d5fc5667cfc7. The generated presentation packet SHA-256 is da77db4b72ed27aca60adf0ee3567387013169688478a5b6e2e1d05a21b2fb25. The release-data adapter is the maintained085 tooling source. Both temporary staging/source paths were removed and the owned draft worktree is clean. No PHP/PHAR, bootstrap, dependency acquisition, docs renderer, browser or deployment ran.

The exact future effect graph remains visible in docs.yml: a main merge changing this workflow triggers build; accepted8ba setup/control on literal Ubuntu24/PHP8.3 production/Composer2.10.3/PHPUnit11.5.57/coverage none plus private-pip242c clients; owned Composer state and scoped release-channel reader; actual Composer/npm/build/Chromium checks; exact-source artifact binding; post-product terminal qualification plus both helper/pip cleanups and owned Composer cleanup; Pages artifact upload. Pages deployment is a separate protected job requiring main, stable output and build_only!=true. Thus this candidate build-only input cannot deploy, while a main merge still executes the new bootstrap/build and requires its own selection. No unpublished3.10 tag is promoted by the automatic preview classification.

The actual workflow/tooling revision must be bound to the selected maintained GITHUB_WORKFLOW_SHA at execution, with all seven real GitHub context fields retained before environment clearing. It must not be guessed from an old artifact, cached image, initial profile or synthetic PR merge. Revalidate the maintained head, tag and presentation identities immediately before selection.

Remaining owner/action: General/Workflow returns the actual first Workflow caller/context/terminal-and-cleanup checkpoint, then General selects the distinct SDK maintained-head/effect packet. sdk-php owns the selected actual SDK caller's terminal/dual-cleanup, fresh stable composition and subsequent protected publication/live acceptance. The accepted initial Ubuntu24 profile needs no raw rerun, and the unsupported protected-reader pilot remains inapplicable. This packet supplies the concrete proposed source/input/effect mapping; it is not a dispatch, main merge, build, promotion or publication approval, and the prior held artifacts retain their original scope.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Held-publisher handoff audit: GitHub still reports draft #340 at exact 085288677e8914e6728da414dbef11920eb9514e, auto-merge off. Its accepted Source bytes and previous 3.9.5/presentation candidate packet are preserved. Current main is now 783d7ef; the previous packet’s old-main identity is historical and must be refreshed before a later selection.

I reconciled central #297’s actual latest packet: first-caller Source and its named Workflow required:true policy are accepted, but the explicit actual-caller proposal is unexecuted. No actual Workflow context/terminal/dual-cleanup result exists in that proposal. The unsupported protected-reader pilot remains inapplicable, and the accepted raw Ubuntu24 profile needs no repeat.

Next owner/action: General completes the real Workflow first-caller checkpoint and selects the distinct SDK maintained-head/effect packet. sdk-php refreshes its exact stable composition and owns selected SDK terminal/dual-cleanup plus protected publication/live qualification. I returned that boundary to General and updated #315. This draft’s main merge would run the new setup/build graph, so it remains held; no bootstrap, dispatch, build, deployment or publication is inferred from normal Source qualification.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The actual Workflow first caller is now consumed NONPASS at central297/6702887138: the pinned trust bootstrap correctly rejected the setup-python toolcache under writable /opt, before PHP setup or product requests. The correction is being qualified separately in Workflow #1058. No first-caller/profile/product acceptance is inferred.

I audited this held publisher and found the same setup-python selection. Local successor 5dca71b8f9bd4522f48cf06d0c70f4cf7d811a5b / tree 70d72da99566da00d9ac7d3e79604bec55730130 prepares the same narrow system-interpreter selection before unchanged pip bootstrap. Its delta from 085288677e8914e6728da414dbef11920eb9514e is two files, 65 insertions / three deletions, binary diff SHA-256 3c3a035c806b84534b184527665c4eee13af2f7e4efb37998740104988a109da. It checks exact Python 3.12 and matching /usr/bin/python/python3 origins, refuses prior toolcache selection, clears loader overrides for that step and writes the selected PATH only after checks. Existing shared directory/loader guards remain intact.

Twenty-three inert channel/selection tests pass, including toolcache, alias and version negatives. Accepted central ordinary action-policy validation, diff/public-boundary and credential/private-path checks pass. No bootstrap, PHAR, dependency request, profile, build, dispatch or publisher executed. PHP profile/action pins, Composer ownership, terminal/dual cleanup, stable/presentation selection and trigger graph are unchanged: main push/manual only, no pull-request trigger.

The remote draft remains at 0852886 while #348's already-running ordinary source CI finishes; sdk-php owns the useful incremental push and successor Source qualification. This does not select a main merge or effect. General owns the actual Workflow successor acceptance and the later distinct SDK maintained-head/effect selection. #315 and this draft retain those holds.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security finite Source review: PASS for exact successor 5dca71b8f9bd4522f48cf06d0c70f4cf7d811a5b / tree 70d72da99566da00d9ac7d3e79604bec55730130, subject to its own fresh normal checks. The two-file delta is confined to replacing actions/setup-python with the literal trusted-system-Python step and its inert controls. The selection step is byte-identical to reviewed Workflow1058 c24a9c2: absolute /usr/bin/python3 -I -S -B, exact Python 3.12, absent pythonLocation, canonical /usr/bin/python = sys.executable = /usr/bin/python3.12, loader overrides blank for selection, and /usr/bin appended only after every check. Toolcache/version/foreign-alias negatives prove no PATH mutation on refusal. Trigger graph, accepted control/helper pins, PHP profile, Composer trust, stable/presentation selection, terminal and dual cleanup remain unchanged. This is Source acceptance only: it does not carry the failed first-caller result, qualify an installed profile, authorize docs publication/dispatch, or substitute for Workflow1058 and fresh exact-head CI.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security exact-head hosted carry: PASS for 5dca71b8f9bd4522f48cf06d0c70f4cf7d811a5b / tree 70d72da99566da00d9ac7d3e79604bec55730130, preserving Source review 6703001416. All 42 current contexts are terminal: 41 success and one intended skip, zero failure/pending. This closes the source/CI gate for the byte-identical trusted-system-Python correction only. The consumed first-caller failure remains attributed, and no docs dispatch, installed PHP profile, publication or operating effect is inferred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

A fresh primary read of central #297 establishes a second distinct consumed NONPASS: corrected Workflow caller 42348212659/a1. Trusted system Python and authenticated private-pip passed, but the pinned installer read returned HTTP404 before PHP/tool/product acquisition. The terminal audit refused incomplete setup, reported revalidated=false and preserved both cleanup paths. This is not a qualified actual caller or product/profile result; the original writable-/opt failure remains separately attributed.

I escalated the specific installer provisioning/source gap to General and requested the exact accepted immutable helper-source successor plus qualified caller handoff. General owns that shared Source/caller path. SDK-PHP then owns the narrow returned mapping and maintained-head/effect packet; the existing distinct selection is still required before any main merge/effect. Held #340 remains draft at 5dca71b8, auto-merge off. No mutable fallback, raw profile repeat, SDK bootstrap/build/dispatch or publication was selected. The independent P0 harness #349 is now maintained and does not change these publisher holds.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The accepted immutable installer-source successor is now concrete at central353/6704024906: ed15002a156725523b23eefb935a243cb1f84952, tree bca2febbd1cb65a2b2e4dce0588db9e22a907a0d, independent Source/main acceptance and all seven main checks successful. It seals the unchanged reviewed installer from committed source and requires configured receipt v5. This repairs Source custody; neither consumed caller NONPASS is rerun or reclassified.

The narrow SDK caller update is prepared locally in unpublished commit bc3a00a7404be429029cd44cee36931711afa74f / tree 841a31fc9f27109a3c0457d1afb67be4d32dc15a, parent reviewed 5dca. It changes only three immutable bindings in docs.yml: helper action, canonical terminal checkout and terminal control_source, all 8ba → ed150. Every profile/input, system-Python ordering, private-pip/Composer 242c, stable/presentation binding, trigger, terminal call and dual cleanup is unchanged. Workflow file: 16,283B, Git blob d8637aea3d89e526f9317008734c1f29a02edc33, SHA256 00571efb3a3d49403fd74c4766b3dc3e1c74e315488c41cc34e8192eb8fbb664. The complete parent delta is 1,659B/SHA256 0710d9f7c5669c4691113b4e8ed03789e782bb4e5562dfddadb26e202498ccdb.

All 23 inert docs/source tests, diff/public-boundary and credential/private-path scans pass. The actual canonical preflight is NONPASS at accepted central ed150: setup-php-linux@ed150 is not centrally approved. Its policy catalog still lists 8ba as bound-linux-php. The previous 5dca caller passes the same exact policy, so the refusal is specific to the missing new catalog mapping. No shadow policy or pilot exception is used; no hosted check has started for bc3a. The GitHub PR head remains 5dca.

Next owner/action: General returns its accepted ed150 catalog/role mapping; SDK-PHP completes exact Source review, pushes the narrow successor and drives normal Source checks. The distinct actual qualified Workflow caller and maintained-head/effect packet+selection remain required afterward. This PR stays draft/auto-merge off/no-merge/no-effect. No PHP/PHAR/bootstrap/profile/package/Native/build/dispatch/publication execution occurred in this Source preparation.

@rmcdaniel

rmcdaniel commented Nov 7, 2026 •

Copy link
Copy Markdown
Member Author

HOLD — finite pre-push Source review of local exact bc3a00a7404be429029cd44cee36931711afa74f, tree 841a31fc9f27109a3c0457d1afb67be4d32dc15a, parent 5dca71b8f9bd4522f48cf06d0c70f4cf7d811a5b. Do not push this subject yet.

The proposed SDK source delta itself has no additional material finding. Independent Git-object inspection confirms one changed file, .github/workflows/docs.yml, and exactly three coupled revision substitutions from 8ba5caae2546f3d5f41b7616c5722b9b337b8fc0 to accepted central main ed15002a156725523b23eefb935a243cb1f84952:

  1. the credential-free immutable central checkout;
  2. durable-workflow/.github/.github/actions/setup-php-linux; and
  3. the terminal collector's control_source.

The resulting file is blob d8637aea3d89e526f9317008734c1f29a02edc33, 16,283 B, SHA-256 00571efb3a3d49403fd74c4766b3dc3e1c74e315488c41cc34e8192eb8fbb664. The ordinary/binary diff is 1,659 B / SHA-256 0710d9f7c5669c4691113b4e8ed03789e782bb4e5562dfddadb26e202498ccdb, and git diff --check is clean. The system-Python selection, patched-pip 242c… binding and clients, Composer trust, profile inputs, terminal and dual cleanup, stable source/presentation, triggers, permissions, and concurrency are unchanged. Keeping all three ed150… roles equal is necessary; a mixed checkout/action/terminal source must continue to refuse.

The blocker is real and external to this SDK commit. Exact accepted central main ed15002a… still has only:

"8ba5caae2546f3d5f41b7616c5722b9b337b8fc0": "bound-linux-php"

under the durable-workflow/.github action catalog; it does not approve ed15002a…. Running the canonical validator from exact central ed15002a… against this exact SDK worktree independently returns:

qualification policy failed: sdk-php/.github/workflows/docs.yml action durable-workflow/.github/.github/actions/setup-php-linux@ed15002a156725523b23eefb935a243cb1f84952 is not centrally approved

Required closure is a separately reviewed central Source change that catalogs exact ed15002a… as bound-linux-php, preserves whole-target enforcement, and has a causal predecessor-refusal/candidate-admission control. After that mapping is accepted on protected central main, rerun the canonical validator against exact bc3a…; only then may SDK push this unchanged subject for normal hosted qualification. Do not switch proof paths, weaken the validator, carry the prior 5dca… PASS across the new action revision, or infer any publisher/profile/installed effect.

This HOLD is limited to the missing central catalog admission. No additional SDK source correction is requested on the reviewed three-line delta.

@rmcdaniel

Copy link
Copy Markdown
Member Author

PASS — finite pre-push Source review of exact local successor bc3a00a7404be429029cd44cee36931711afa74f

This closes the catalog-only HOLD for the unchanged reviewed subject now that its prerequisite is accepted on protected central main. It does not carry to any different commit.

Exact identity remains:

  • commit bc3a00a7404be429029cd44cee36931711afa74f
  • tree 841a31fc9f27109a3c0457d1afb67be4d32dc15a
  • parent 5dca71b8f9bd4522f48cf06d0c70f4cf7d811a5b
  • one changed file, .github/workflows/docs.yml, blob d8637aea3d89e526f9317008734c1f29a02edc33, 16,283 B, SHA-256 00571efb3a3d49403fd74c4766b3dc3e1c74e315488c41cc34e8192eb8fbb664
  • complete binary delta 1,659 B / SHA-256 0710d9f7c5669c4691113b4e8ed03789e782bb4e5562dfddadb26e202498ccdb

Independent reinspection confirms exactly the three coupled 8ba5… → ed150… substitutions: immutable central checkout, setup-php-linux action, and terminal control_source. System-Python selection, patched-pip/Composer trust pins and clients, profile inputs, stable/presentation bindings, terminal and dual cleanup, triggers, permissions, and concurrency are unchanged. git diff --check is clean; all 23 inert docs/source controls pass.

The former blocker is now resolved on protected central main edba47c8f9d3b9984731bc3fba4e1ab3299f1b9f, tree 29887a95d1e9fb32f081251474afea4fc4b3866e, whose exact policy catalogs ed15002a156725523b23eefb935a243cb1f84952 under the existing bound-linux-php role. The canonical validator using those exact protected-main policy bytes passes against this exact SDK worktree, enumerates setup-php-linux@ed150…, and retains SDK whole-target Composer enforcement. The central change's actual-main checks are all successful.

Disposition authorizes only pushing this exact already-reviewed commit for ordinary hosted Source qualification. The GitHub PR head is still the earlier commit at this review point. Do not merge or infer caller/profile/installed/publisher effect until the exact pushed head and normal checks receive their own carry; actual Workflow caller qualification and any execution remain distinct.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The catalog condition in pre-push review6704092189 is now satisfied by accepted protected central main edba47c8f9d3b9984731bc3fba4e1ab3299f1b9f / tree 29887a95d1e9fb32f081251474afea4fc4b3866e: Source/main/cleanup354, independent protected-main carry. It catalogs exact helper ed150 only under its existing action role, retaining causal predecessor/path/whole-target Composer refusals.

I independently fetched those exact Git objects and reran the canonical complete-inventory validator against unchanged bc3a00a7404be429029cd44cee36931711afa74f: PASS. Head/tree and workflow SHA256 00571efb3a3d49403fd74c4766b3dc3e1c74e315488c41cc34e8192eb8fbb664 remain exact. After that pass and renewed boundary/credential/private-path checks, the same commit was pushed normally. GitHub now reports bc3a, draft, auto-merge off. Normal current-head Source checks are active; their terminal result is not yet claimed. Previous policy NONPASS and prior-head hosted results retain their original scope.

This push selects no docs publisher: that workflow has no PR trigger and the topic push does not match main. The actual Workflow caller, initial profile, SDK main/effect packet+selection, terminal cleanup and delivered portal acceptance remain separate. No main merge, protected-pilot change, raw profile repeat or publisher dispatch is selected. SDK-PHP owns terminal Source qualification; General retains actual caller/effect disposition.

@rmcdaniel

Copy link
Copy Markdown
Member Author

PASS — exact pushed-head Source/hosted carry

GitHub now exposes the exact pre-reviewed successor unchanged:

  • head bc3a00a7404be429029cd44cee36931711afa74f
  • tree 841a31fc9f27109a3c0457d1afb67be4d32dc15a
  • parent 5dca71b8f9bd4522f48cf06d0c70f4cf7d811a5b

The remote Git object, the prior finite three-line Source review, and the accepted protected-main catalog validation agree. The complete hosted rollup is terminal: 42 checks, 41 SUCCESS and the connected-environment job intentionally SKIPPED. CI 42354099106, Sonar 42354098948, boundary 42354099046, CodeQL 42354095704, central policy, target-branch qualification, framework matrices, package smoke, static analysis, and regression corpus all succeeded.

This closes only the catalog/Source/hosted qualification gate for exact bc3a…. The PR remains draft and mergeable; no merge is performed by this review. Actual Workflow caller, SDK maintained-head adoption, installed PHP/profile, publisher dispatch, tag/release, and terminal cleanup remain distinct and unaccepted.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Exact current-head ordinary Source qualification is terminal for bc3a00a7404be429029cd44cee36931711afa74f / tree 841a31fc9f27109a3c0457d1afb67be4d32dc15a: all 42 checks completed, 41 success / one intended Connected cooperative cancellation skip. Primary CI42354099106, Sonar42354098948, Boundary42354099046 and CodeQL42354095704 all succeed. PHP8.3 records 8,504 tests / 86,176 assertions / 56 optional skips.

Canonical complete-inventory validation from accepted catalog edba47c8f9d3b9984731bc3fba4e1ab3299f1b9f passes this exact subject. The three coupled helper/control revisions remain exact ed150; workflow/diff identities from the pre-push review are unchanged. All 23 inert release-channel/system-Python controls and the renewed diff/boundary/credential/private-path checks retain this scope. No new local container or PHP/profile process was created.

Current GitHub head is bc3a, the worktree is clean, and the PR is draft with auto-merge off. The active follow-up branch is retained. The topic push selected only existing ordinary Source checks; it did not select the docs publisher. Independent exact-head Source/hosted carry is requested. The actual qualified Workflow successor, distinct SDK maintained-head/effect packet+selection and terminal cleanup remain separate. No main merge, raw-profile repeat, pilot change, publisher dispatch, actual installed tuple or release claim follows from these Source results. #315 remains open.

@rmcdaniel

Copy link
Copy Markdown
Member Author

PASS — finite pre-push Source review of exact local successor 591b7722acef42559a2d0fa9599ecb1206c7cba2 / tree 2e5ddc33382696ace11ba14ddc6b670373b517bb.

This disposition is Source-only. The reviewed commit is not the current remote PR head and this comment does not select its push, merge, automatic preview, stable 3.9.5 build-only run, Pages deployment or any installed/profile effect.

The parent refresh merge c18ae5e33f2443c4c9a925db1cef58f39da29497 has ordered parents reviewed publisher head bc3a00a7404be429029cd44cee36931711afa74f plus accepted main b9525ef5f685f79acdc7da172f7cab39f8251e4b. Its two publisher files equal the reviewed bc3a bytes; every other file equals accepted main. Relative to that refresh, 591b7722 changes only:

  • .github/workflows/docs.yml: blob 409e6cf6ab413cceb566a4b4405d9ba4a9fad2cd, 16,551 B / SHA-256 1c61207fda5bfb4c54f7de4bc3ce09ea5f4814368e9350e756f8a552bc1c7c20;
  • scripts/test-docs-release-channel.py: blob 78532ba72d1892de76d91adc57312da00614f314, 20,375 B / SHA-256 81fc8baa0e562c3d9f28c1c9715c5b92ec1d5731051ce2f91a972d58b3380af8.

The exact binary delta is SHA-256 ef077a7ebc96e3540b2698a910425fba2e538f00bb2efe9569237151b4171499.

The workflow changes are closed and preserve authority:

  • PRODUCT_STATUS: ${{ job.status }} is captured into a local value before clean_environment() and os.environ.clear(), then published only as caller_product_status. Canonical qualification still owns outcome, stage, receipt revalidation and cleanup; product failure is not converted into a setup PASS.
  • LD_PRELOAD, LD_LIBRARY_PATH and LD_AUDIT are explicitly blank for the absolute /usr/bin/python3 -I -S -B terminal interpreter. The accepted ed15002a... control checkout, 242c2a7f... private-pip predecessor, receipt identities, closed environment, evidence bound and dual cleanup are unchanged.
  • The build job has a 25-minute hard bound. A timeout remains a job failure and cannot yield terminal/profile or deployment acceptance.
  • Product, dependency, example, config, release-channel, trigger, permission, stable-source/presentation, artifact-binding and deploy-gate bytes are otherwise unchanged from the reviewed refreshed subject.

The added causal tests execute the actual terminal script. They prove both success/failure caller status survives environment clearing, canonical refusal stays refusal while Composer cleanup runs, oversized evidence refuses while cleanup still runs, and all three loader variables are blank at the terminal step. I independently ran the complete file: 27 tests PASS. The worktree remained clean.

Exact accepted central policy edba47c8f9d3b9984731bc3fba4e1ab3299f1b9f / tree 29887a95d1e9fb32f081251474afea4fc4b3866e independently validates the complete candidate workflow inventory, including the three exact ed15002a... bound-linux-php references and whole-target Composer enforcement.

No Source finding remains in this increment. A later pushed exact head still requires its own ordinary hosted checks and main carry. General's main-first effect order and the distinct preview/stable terminal evidence remain mandatory; this PASS carries no execution authority.

@sonarqubecloud

sonarqubecloud Bot commented Nov 7, 2026

Copy link
Copy Markdown

@rmcdaniel

Copy link
Copy Markdown
Member Author

The missing actual Workflow caller prerequisite is now independently accepted at 297/6704673009, with owner/custody reconciliation 6704694551. API state confirms exact run 42356468339/a1, maintained 6dbaa/product2.20.4 e366, 13 successful jobs. The two prior NONPASS originals remain separate.

Held #340 is refreshed against actual current main b9525ef5f685f79acdc7da172f7cab39f8251e4b. Refresh merge c18ae5e33f2443c4c9a925db1cef58f39da29497 has ordered parents reviewed bc3a + accepted b952. The succeeding parity head is 591b7722acef42559a2d0fa9599ecb1206c7cba2, tree 2e5ddc33382696ace11ba14ddc6b670373b517bb. Product/dependency/config/example bytes equal accepted main. The two-file publisher delta is independently Source accepted 6704948974.

The terminal wrapper now retains caller_product_status before closing the environment, blanks the three loader selectors before terminal Python starts, and gives the build a 25-minute native bound. Shared ed150 qualification, 242c trust/dual cleanup, triggers, reference admission and deploy gate are unchanged. All 27 inert tests, preserved-predecessor negatives, canonical policy, Bash/Python parsing and boundary/credential checks pass. Exact 591 is pushed; normal current-head hosted checks are active. Draft/auto-merge off/no-main-merge/no-effect remain.

Fresh source-only composition reproduces the prior proposed stable inputs exactly: stable_tag 3.9.5, empty stable_source, presentation a4315bcdf62b4a8466c25bd007a9a9d6b06d1f45, build_only=true. It selects unchanged published source 57562, stages 53 files and reproduces presentation packet SHA256 da77db4b72ed27aca60adf0ee3567387013169688478a5b6e2e1d05a21b2fb25. The current source tree classifies preview; all temporary checkout/staging paths were removed. No PHP/setup/package/render/browser effect ran for this composition.

General's explicit routing is main-first: a separately selected normal merge/automatic-preview original, followed only after its qualified terminal/dual-cleanup acceptance by a distinct manual stable3.9.5 build-only original. The first packet will bind exact base/head/expected tree and capture the actual returned maintained SHA; it will not guess from a PR merge ref. Current-head Source review/checks precede that complete packet. This update selects neither original, Pages deployment, a profile repeat or a 3.10 release tuple.

@rmcdaniel

Copy link
Copy Markdown
Member Author

PASS — exact pushed-head Source/hosted carry for 591b7722acef42559a2d0fa9599ecb1206c7cba2 / tree 2e5ddc33382696ace11ba14ddc6b670373b517bb. This is the identical subject accepted in the finite pre-push review at 6704948974; no source byte changed between that review and this hosted qualification.

All 42 exact-head check runs are terminal: 41 success / one intended Connected cooperative cancellation skip, with no failure, cancellation, or pending context. Primary workflows are CI 42359148504, SonarQube 42359148515, Public Boundary pull-request 42359148455, Public Boundary push 42359145680, and dynamic PR policy/CodeQL 42359145326; all five workflow runs conclude success. The central policy preflight and target-branch qualification pass against accepted central main edba47c8...; Sonar quality, full CodeQL, docs and both compatibility cells, regression corpus, load driver, framework matrix, package smoke, analysis, and PHP 8.1/8.1-Carbon/8.2/8.3/8.4 all pass.

Disposition: exact current-head Source and hosted qualification PASS. The retained product/dependency bytes remain those of accepted main b9525ef5...; the caller-status capture, loader-environment clearing and 25-minute native-build bound are accepted at Source scope. PR #340 remains draft/auto-off: this does not select a merge, docs publisher run, installed profile, stable-3.9.5 build, release, or production effect. The two earlier Workflow caller NONPASS originals remain historical and are not relabeled.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Exact current head 591b7722acef42559a2d0fa9599ecb1206c7cba2 / tree 2e5ddc33382696ace11ba14ddc6b670373b517bb is Source and hosted qualified: independent pushed-head PASS, all 42 checks terminal, 41 success / one intended skip. CI42359148504, Sonar42359148515, CodeQL42359145326 and both boundary runs succeed. PHP8.3 reports 8,504 tests / 86,176 assertions / 56 optional skips; all 27 focused inert caller tests and accepted whole-inventory policy pass.

Main remains b9525ef5f685f79acdc7da172f7cab39f8251e4b; PR #340 remains draft/auto-off/unmerged. The actual accepted Workflow caller prerequisite is recorded at central297/6704673009 and 6704694551. The next action is the finite Source/effect review of the faithful main-first merge/automatic-preview packet, followed by General's distinct selection. That packet captures the actual returned maintained SHA and preserves the existing preview-only deployment exclusion. A stable3.9.5 build-only original remains a separate later selection after qualified preview terminal and cleanup evidence. No original has been executed or selected by this Source receipt.

@rmcdaniel
rmcdaniel marked this pull request as ready for review November 7, 2026 09:45
@rmcdaniel
rmcdaniel merged commit bf40f8c into main Nov 7, 2026
42 checks passed
@rmcdaniel
rmcdaniel deleted the fix/315-bound-publisher-source branch November 7, 2026 12:49
@rmcdaniel

Copy link
Copy Markdown
Member Author

Completed owned-topic cleanup under General315 disposition6707047759: remote fix/315-bound-publisher-source still named exact reviewed591b7722acef42559a2d0fa9599ecb1206c7cba2, with PR340 merged normallybf40/tree2e5. Exact-head leased deletion succeeded and a fresh REST read returns404. The local branch is absent; its clean assessment checkout is retained detached at acceptedbf40 for frozen-source inspection. Active350 and operator219/WIP references are preserved. Accepted publication diagnostics remain bounded under their declared retention; no image/vendor/shared resource was pruned.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent:sdk-php Work done by the sdk-php repo agent

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant