Add an experimental Kandelo-backed Playground runtime
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 30/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- php, playwright, typescript, wasm, wordpress
Hướng nghiên cứu
Bắt đầu bằng cách đọc factory seam của runtime backend của WP Codebox trong issue #974 và các contract runtime, recipe và evidence hiện có. Chạy recipe đại diện và Playwright suite phía host với các provider dựa trên PHP.wasm và Kandelo, sau đó so sánh compatibility report ở dạng máy có thể đọc được. Hoàn tất có nghĩa là việc chọn engine một cách tường minh hoạt động mà không thay đổi mặc định, các capability không được hỗ trợ sẽ thất bại rõ ràng, và các contract evidence và artifact bắt buộc vẫn tương thích.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Goal
Run WP Codebox's existing WordPress runtime, recipe, Playwright, and evidence contracts against WordPress Playground backed by Kandelo, while preserving Playground as the WordPress compatibility boundary and Kandelo as the runtime owner.
This should provide a concrete downstream proving ground for Kandelo and a compatibility path toward Playground eventually selecting Kandelo by default.
Existing upstream work
- Kandelo roadmap and Playground integration direction: https://github.com/Automattic/kandelo/issues/382
- Playground CLI proof of concept: https://github.com/WordPress/wordpress-playground/pull/3634
- Playground Web proof of concept: https://github.com/WordPress/wordpress-playground/pull/3635
- WP Codebox runtime backend factory seam: https://github.com/Automattic/wp-codebox/issues/974
The Playground proof-of-concept branches already run nginx and PHP-FPM on Kandelo and preserve substantial portions of the Playground CLI, client, worker-endpoint, and Blueprint interfaces. They remain experimental and document current capability gaps.
Ownership boundaries
- WP Codebox owns runtime selection, lifecycle, mounts, snapshots, recipes, host-side Playwright automation, browser evidence, policy, artifacts, replay, and compatibility reporting.
- WordPress Playground owns the WordPress-facing runtime API, Blueprint behavior, client/worker endpoint compatibility, and engine selection integration.
- Kandelo owns the POSIX kernel, nginx/PHP-FPM runtime, VFS, process/network behavior, binaries, and runtime defects.
- Homeboy and Homeboy Extensions consume WP Codebox's generic contracts unchanged. They should not acquire Kandelo-specific paths, environment names, or behavior.
Downstream recipes should remain engine-neutral. Kandelo or Playground deficiencies discovered by the matrix should be linked upstream rather than hidden with WP Codebox-specific compensating behavior.
Proposed shape
Start with an explicit experimental backend/provider so capability differences remain honest, for example:
wordpress-playground
wordpress-playground-kandelo
Once Playground exposes a stable engine selector with compatible behavior, converge toward a single Playground backend with explicit engine configuration:
{
"backend": "wordpress-playground",
"runtime": {
"engine": "kandelo"
}
}
When Playground makes Kandelo the default and compatibility is proven, callers should no longer need to select an engine.
Playwright remains host-side in every topology:
WP Codebox
-> host Playwright / Chromium
-> WordPress Playground contract
-> PHP.wasm or Kandelo
-> WordPress
Compatibility matrix
Run the same WP Codebox recipes and evidence assertions against PHP.wasm and Kandelo. Record supported, unsupported, divergent, and failed behavior for:
- runtime creation, readiness, teardown, cancellation, and resource bounds;
- WordPress and PHP version selection;
- host mounts, readonly mounts, staged files, and generated artifacts;
- Blueprint steps used by WP Codebox, including
runPHP,writeFile,installPlugin, activation, options, and login; - WordPress HTTP, PHP, WP-CLI, PHPUnit, and ability execution;
- checkpoints, snapshots, restore, and replayable bundles;
- browser preview routing, authentication, cookies, mapped domains, and multisite;
- Playwright browser probes, actions, scenarios, screenshots, traces, console/errors, network, WebSockets, visual comparison, and adaptive exploration;
- SQLite and declared external-service/database behavior;
- runtime overlays, PHP extensions, and dependency projection;
- deterministic artifact schemas, provenance, diagnostics, and cleanup evidence.
Compatibility proof must cover existing response and artifact schemas, observability identifiers, timing/retry behavior, mixed engine selection, and failure classification, not only successful new workflows.
Delivery slices
- Provider spike: package or load the Playground Kandelo POC behind an experimental WP Codebox backend provider without changing existing default behavior.
- Contract harness: run a bounded representative WP Codebox recipe suite against both engines and emit a machine-readable compatibility report.
- Capability closure: file and link owning-layer Kandelo or Playground issues for each unsupported or divergent contract; keep unsupported results explicit.
- Evidence parity: prove existing host Playwright and artifact collection are engine-neutral.
- Promotion gate: define the subset required for supported experimental use, then the complete parity gate required before default selection or backend convergence.
Acceptance criteria
- WP Codebox can select Kandelo explicitly without changing the existing PHP.wasm default.
- At least one real mounted WordPress plugin runs through the same recipe on both engines.
- The same host Playwright command captures browser assertions, screenshot, console/error, network, and trace evidence from both engines.
- A machine-readable compatibility report identifies every exercised contract dimension and links known gaps to owning upstream trackers.
- Existing WP Codebox recipe, runtime, response, artifact, provenance, retry, and cleanup contracts remain compatible.
- Unsupported Kandelo capabilities fail explicitly with stable diagnostics rather than silently falling back to PHP.wasm.
- Kandelo selection does not introduce Kandelo-specific concepts into Homeboy or Homeboy Extensions.
- A documented promotion gate defines when Kandelo can be treated as equivalent and when the explicit engine distinction can be removed.
Non-goals
- Running Chromium or Playwright inside Kandelo.
- Reimplementing Playground's Kandelo adapter in WP Codebox.
- Forking WP Codebox browser evidence for Kandelo-specific behavior.
- Making Kandelo the default before Playground integration and compatibility evidence support that decision.
AI assistance
OpenAI GPT-5.6 Sol via OpenCode was used to inspect the current Kandelo, Playground, and WP Codebox runtime boundaries; identify the canonical ownership model; and draft this tracker. Chris Huber reviewed and remains responsible for the issue.
- Ngôn ngữ chính
- TypeScript
- Star
- 18
- Fork
- 4
- Merge trung bình
- 1 giờ 39 phút
- Pull request đã merge (30 ngày)
- 45
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Automattic/wp-codebox
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Automattic/wp-codebox#2531 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Automattic/wp-codebox#2467 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Automattic/wp-codebox#2466 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Automattic/wp-codebox#2105 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Automattic/wp-codebox#2061 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Automattic/wp-codebox
Issue tương tự
-
Add: CanalPlusActionEurope.nlĐang mởcheck:passed streams:add
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 2 ngày
-
beta technical-medium ui
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
walletbeat/walletbeat#1625 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Good First Issue]: Add unit tests for NetworkVersionInfoCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởGood First Issue hacktoberfest
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
hiero-ledger/hiero-sdk-js#4489 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] The clients language filter cannot select the rows the page labels as unknownCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
apache/rocketmq-dashboard#6103 ·
Maintainer thường phản hồi trong vòng 4 ngày
-
Bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
payloadcms/payload#18652 ·
Maintainer thường phản hồi trong vòng 1 ngày