Trying to support octane#20
Draft
AlexzPurewoko wants to merge 10 commits into
Draft
Conversation
Add refactor-octane/ — a README index plus 7 agent-executable work docs covering PLAN.md Phase 0 (runtime hygiene, static-state audit, feasibility spike) and Phase 1 (bindShared fix, Application::__clone, re-point setters, worker-safety) for the L42x clone-per-request Octane sandbox. Each doc is self-contained with verified source anchors, an effort level, the dependency DAG, new tests, and a full-suite-green acceptance gate. Grounded against current source and adversarially rechecked for accuracy, completeness, and minimal-change discipline. Scoped to the L42x side only; the octane-rewrite-L42x package consumes what Phase 1 builds. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
Change Container::bindShared to register the raw closure as a shared binding instead of wrapping it with share(), so cloned containers resolve their own shared instance cache while stock resolution behavior remains identical. ->share( audit verdict: zero request-scoped direct Container::share() call sites require conversion. View share() calls were excluded because they are Illuminate\View data-sharing APIs; vendored snapshots under package vendor directories were excluded as out of scope. Genuine direct container share() sites were classified APP-SCOPED and left unchanged: routing router/url/redirect providers, events dispatcher, exception handlers/whoops services, and mail symfony.transport registrations. Baseline: make composer-test passed before the edit: Tests: 1619, Assertions: 3564, Skipped: 25. Verification: ./execute-octane-sandbox ai:test tests/Container/ContainerBindSharedTest.php passed: 4 tests, 5 assertions. ./execute-octane-sandbox ai:test tests/Container/ContainerExtendTest.php tests/Container/ContainerL4Test.php passed: 9 tests, 16 assertions. make composer-test passed after the edit: Tests: 1623, Assertions: 3569, Skipped: 25. Co-Authored-By: Codex <noreply@openai.com>
Add Application::__clone() to repoint only the app and Illuminate\Container\Container self-reference instances at the clone. The method does not deep-clone services, touch Container::tags, or perform facade/container static swaps. Baseline: make composer-test passed before the edit: Tests: 1623, Assertions: 3569, Skipped: 25. Verification: ./execute-octane-sandbox ai:test tests/Foundation/FoundationApplicationTest.php passed: 15 tests, 37 assertions. make composer-test passed after the edit: Tests: 1626, Assertions: 3575, Skipped: 25. Co-Authored-By: Codex <noreply@openai.com>
Add dormant re-point APIs for the Octane clone-per-request worker: Support Manager setApplication()/forgetDrivers(), QueueManager setApplication()/forgetConnections(), DatabaseManager setApplication()/forgetConnections(), CookieJar flushQueuedCookies(), Router setContainer(), and Validation Factory setContainer(). The setters preserve app-lifetime registries and factories: Manager customCreators, QueueManager connectors, and DatabaseManager factory/extensions are not cleared. Optional view/engine code was skipped; Config Repository clone isolation is covered by a test without adding Repository::__clone(). Baseline: make composer-test passed before the edit: Tests: 1626, Assertions: 3575, Skipped: 25. Verification: OctaneRepointSettersTest passed: 8 tests, 20 assertions. RoutingRouterOctaneSetContainerTest passed: 3 tests, 6 assertions. ConfigRepositoryCloneTest passed: 2 tests, 3 assertions. make composer-test passed after the edit: Tests: 1639, Assertions: 3604, Skipped: 25. Dormancy spot-check: no src call sites for ->setApplication(), ->forgetDrivers(), ->forgetConnections(), or ->flushQueuedCookies(); router/validator setter searches found no new worker setter calls. Existing Validator::setContainer() usage is unchanged. Co-Authored-By: Codex <noreply@openai.com>
Add Application::handleOctaneRequest() to drive the existing stacked kernel and return the response without send() or terminate(). Add the default-off instance flag with runningInOctane()/setRunningInOctane(), and add Str::flushCache() for the process-global snake/camel/studly caches. Decision record: chose handleOctaneRequest() over making getStackedClient() public because the worker package already probes this method and it encapsulates the stack/return-without-send contract. Chose an Application instance property over a bound 'octane' marker because it is copied by value into sandbox clones and requires no container lookup. No framework guard branch was added; the investigation found no justified request-path branch for this job. Exit-neutralization findings: Application::handle(..., catch=false) rethrows before Exception\Handler::handleException(), so the worker's own try/catch owns normal request exceptions. Exception\Handler::handleException() returns a Response and contains no exit/die. Handler global hooks register handleUncaughtException() and handleShutdown(); those send a response on truly uncaught/fatal process paths but do not exit, and shutdown emission remains a worker/spike concern rather than a Job 13 framework edit. Request-path search found dd() in Support helpers as the concrete framework die; dd()/dump-style developer tooling legitimately terminates and is not guarded. ExceptionServiceProvider only configures Whoops not to exit. Foundation/start.php has a commented exit only. User/third-party exit/die remains outside framework control. Worker-author notes: no Translator::flushParsedKeys() was added because translator is cloned into the sandbox, not reset in place. No D4 event shim was added because that belongs package-side. UrlGenerator uses the Laravel 4.2 forceSchema() spelling; forceScheme() is not an L42x API. Baseline: make composer-test passed before the edit: Tests: 1639, Assertions: 3604, Skipped: 25. Verification: FoundationApplicationTest passed: 18 tests, 49 assertions. SupportStrTest passed: 21 tests, 93 assertions. make composer-test passed after the edit: Tests: 1643, Assertions: 3622, Skipped: 25. Co-Authored-By: Codex <noreply@openai.com>
Document the completed L42x Octane sandbox refactor jobs, committed changes, test verification, GO verdict meaning, and remaining package-side residual risks. This commit stages only the new summary document; existing read-only/spike artifacts remain uncommitted per their original job specs. Co-Authored-By: Codex <noreply@openai.com>
Clarify that PLAN Phase 1 maps to Jobs 10-13 already landed in L42x, and note that the D4 event-dispatch shim remains package-side by Job 13 scope. Co-Authored-By: Codex <noreply@openai.com>
Document the repo-local PHP 8.3 Docker image/container names and common commands for running the test suite, targeted tests, shell, and feasibility spike. Co-Authored-By: Codex <noreply@openai.com>
Member
|
@AlexzPurewoko kalau tertarik, coba explore Symfony Runtime, barangkali bisa lebih mudah ketimbang ngejar Octane. |
Member
|
@AlexzPurewoko ini juga menarik untuk mengetes apakah framework/app udah siap berjalan as worker atau belum https://github.com/igor-php/igor-php. |
Member
Author
|
Berdasarkan observasi awal. support atau tidaknya si worker mode ini, adalah global objects/singleton bang @rizqyhi --> kalau dari laravel dan code dicoding sendiri mayoritas sudah menghindari adanya global state. facades sendiri kan indirection, dia support. Kode octane-nya disini : https://github.com/AlexzPurewoko/laravel-octane-l42x |
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.
Next time ... (just dump)