[codex] Heal remote clone branch boot dependencies#389
Merged
Conversation
Contributor
Author
|
Local integration smoke added to the PR evidence. Docker is not installed in this runner, so I exercised the same remote-clone path with localhost SSH plus a temporary local MariaDB/WordPress site. What passed: |
Merged
adamziel
added a commit
that referenced
this pull request
May 19, 2026
## Release `v0.1.49` Version bump and release metadata update for `v0.1.49`. **Changelog draft:** * Update release workflows for Node 24 actions ([#384](#384)) * Improve remote clone SSH failures ([#387](#387)) * Expose branch preview PHP fatals ([#388](#388)) * Improve docs social preview * Heal remote clone branch boot dependencies ([#389](#389)) **Full changelog:** v0.1.48...release/v0.1.49 ## Next steps 1. **Review** the changes in this pull request. 2. **Push** any additional edits to this branch (`release/v0.1.49`). 3. **Merge** this pull request to publish `v0.1.49`. Merging will automatically build ForkPress binaries, create a GitHub release, and update the Homebrew formula. Co-authored-by: Codex <codex@openai.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What it does
Makes
forkpress remote clone --branch ...verify that the new branch homepage boots before reporting success, then repairs the common thin-clone failure where WordPress needs a file from an initially excluded boot tree such aswp-content/uploads/.When the smoke test reports a missing boot dependency under a managed excluded directory, ForkPress now rsyncs only that relative path into the remote cache, recreates the branch, and smoke-tests it again.
Rationale
The reproduced failure was not just “remote clone should fail more clearly.” A remote site can boot successfully while the default thin clone skips
wp-content/uploads/; if an active plugin requires one of those files during WordPress boot, the materialized branch shows WordPress generic critical-error page.ForkPress should keep the initial clone thin, but it must not leave the branch unusable when the missing file is discoverable and can be fetched narrowly.
Implementation
Added bundled
scripts/cow/wp_boot_smoke.php, which boots the materialized branch throughindex.phpwith the preview host and branch context.branch_remote_site()runs that smoke test immediately after branch materialization.The CLI now uses smoke-test failures as a repair signal:
wp-content/uploads/, cache/backup/upgrade-style directories, and not arbitrary plugin/theme code.rsync -azR remote:/path/./<relative-file> <cache>to fetch exactly that file.run_php_script()now includes filtered stdout/stderr in the returned error on failure, so callers can act on the PHP diagnostic instead of only seeing “script exited.”Testing instructions
Local SSH repro also passed: a real ForkPress-backed remote source booted with an active plugin requiring
wp-content/uploads/forkpress-required/bootstrap.php; default thinremote clone --branchskipped uploads, fetched that one missing file after the smoke failure, recreated the branch, and then bootedhttp://thin-branch.wp.localhost:18080/.