Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@
"psr/http-message": "^2.0",
"psr/log": "^3.0",
"psr/simple-cache": "^3.0",
"psy/psysh": "^0.12.22",
"psy/psysh": "dev-main",
"sentry/sentry": "dev-master",
"spomky-labs/otphp": "^11.0",
"symfony/console": "^8.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -990,9 +990,9 @@ An exceptionally large shared work unit may receive its own linked detail plan w

This compact index routes the completed-work history that must be consulted with the full plan after compaction. Detailed history remains in the [companion ledger](2026-07-12-0915-framework-coroutine-state-lifecycle-audit-ledger.md).

- **Active package or work unit:** `testbench`; the complete correctness, parallel-ownership, parity, and lifecycle audit is recorded under `Complete Testbench correctness, parallel ownership, and current parity`; detail plan `2026-08-09-0615-testbench-correctness-parallel-ownership-and-current-parity.md`.
- **Ledger entries required for the active work:** `Complete Testbench correctness, parallel ownership, and current parity`; `Restore Conditionable proxy truthiness`; `Normalize framework enum identifiers at string boundaries`; `Make coroutine creation and copied context failure-safe`; `Make process concurrency transport lossless and reconstruct failures safely`; `Complete Foundation runtime lifecycles and safe publication`; `Complete Database persistence lifecycles and current Laravel parity`; `Complete Cache parity, cleanup, permanence, and tagged ownership`; `Complete View correctness, lifecycle, and current parity`; `Complete Wayfinder correctness, generation parity, and bounded lifecycles`; `Complete Testing correctness, parallel ownership, and current parity`; and `Complete Telescope correctness, current parity, and watcher lifecycles`.
- **Pending revalidation carried into the active work:** Testbench closes every routed revalidation. `telescope-41` also completes the previously unrecorded `coroutine-08` Telescope consumer check; no pending work remains.
- **Active package or work unit:** None; Tinker is complete under `Complete Tinker correctness and PsySH lifecycles`; detail plan `2026-08-09-0219-tinker-correctness-psysh-lifecycles-and-current-parity.md`.
- **Ledger entries required for the active work:** None.
- **Pending revalidation carried into the active work:** None.

Update these three lines when a package starts, completes, or gains a cross-package dependency. Name exact work-unit headings or shared finding IDs from the companion ledger; never use “see recent entries” or require a full-ledger reread.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2305,6 +2305,29 @@ Append package entries in checklist order. Keep each entry compact but complete
- **Validation and review:** Every changed file was exercised through its focused suite; affected Testing, Console, Foundation, Mail, Testbench, and metadata coverage is green. Canonical assertion, view, console-test, and Testing-package documentation was checked against the final public surfaces. Root/split Composer validation, formatting, both PHPStan configurations, the complete parallel components suite, Testbench package mode, dogfood, stale-symbol scans, and `git diff --check` passed. Fresh caller/callee, token/application ownership, cleanup, API, fixture, retained-state, hot-path, dead-code, and overengineering review is complete, and independent code review signed off with no remaining implementation finding.
- **Assessment:** Testing now has exact parallel/resource ownership, current assertion and response parity, failure-truthful diagnostics, bounded metadata, and exception-safe fixture cleanup. Every accepted finding is fixed at its lowest owner without a workaround, speculative abstraction, stale path, production hot-path regression, unintended Laravel API break, or unresolved accepted defect.

### Complete Tinker correctness and PsySH lifecycles

- **Status and inspected surface:** Complete; implementation, the current `0.4` merge, PsySH `dev-main` consumption, the approved project-trust correction, focused validation, load-bearing counterfactuals, final self-review, and independent code review are complete. Publishing Hypervel 0.4 is blocked until `dev-main` is replaced with the first compatible stable PsySH release containing the required behavior. The audit covered every reported Tinker finding, all Tinker source/tests/configuration/metadata/documentation, current Laravel Tinker, current PsySH execution/include/trust lifecycles, and connected Console programmatic execution. The detailed design is recorded in [`2026-08-09-0219-tinker-correctness-psysh-lifecycles-and-current-parity.md`](2026-08-09-0219-tinker-correctness-psysh-lifecycles-and-current-parity.md).

| Findings | Final decision |
|---|---|
| `tinker-01` | Use PsySH's paired execution cleanup through its normal `Shell`; do not retain a local listener filter. |
| `tinker-02`, `tinker-05`, `tinker-11` | Select direct execution for every non-null value, preserve requested exit codes without error rendering, and stop mutating the shared Console application's exception policy. |
| `tinker-03`, `tinker-04` | Depend temporarily on PsySH `dev-main`, which loads configured includes once per outer execution, contains each include failure, and restores the caller's error handler. |
| `tinker-06` | Normalize configured aliases once and match exact classes, namespace descendants, and vendor directory children on semantic boundaries. |
| `tinker-07` | Contain each Application presentation getter's `Throwable` independently so later virtual properties remain visible. |
| `tinker-08` | Omit disabled configured commands when Symfony returns `null`. |
| `tinker-09`, `tinker-10` | Remove the unused Contracts dependency and misleading Database suggestion, pin root/split metadata and provider discovery, add upstream provenance and the no-fork difference, and document direct execution, process-forking policy, aliases, casters, and project trust. |
| `tinker-12` | Default project trust to PsySH's native `prompt` mode so an unfamiliar working directory cannot silently execute `.psysh.php`; preserve explicit `always`, `never`, boolean, and null configuration. |

- **Architecture and ownership:** Each command invocation owns one normal PsySH shell and alias loader. PsySH owns include loading and execution cleanup, interactive execution retains Ctrl-C handling, and Hypervel continues to disable process forking before shell construction. The shell command set is invocation-local while configured command registration on the Kernel-cached Console application follows upstream Tinker behavior. No static state, coroutine context, registry, cache, lock, retry, background task, or retained worker allocation was added.
- **Console revalidation:** Programmatic Console execution already bypasses Symfony's process-global wrapper through `Application::runProgrammatically()`, while root CLI execution remains owned by Kernel/Symfony. Removing Tinker's redundant `setCatchExceptions(false)` preserves both paths and the caller's configured policy.
- **Important rejected concerns:** No local shell subclass, reflected private method, copied include loop, generated `require_once` code, compatibility branch, shell factory, signal snapshot around yielding Hypervel code, PTY harness, alias index, path canonicalization, classmap cache, process isolation, project-trust layer, path allowlist, or new trust command option is retained. `TESTBENCH_BASE_PATH` is intentionally absent from the falsey-execute child harness because the disposable clone's own `artisan` defines `BASE_PATH` directly. PsySH-derived trust flags are overridden by application config but unreachable because neither Laravel nor Hypervel defines them on the Tinker command.
- **Regression coverage:** Focused tests cover falsey direct values through the real disposable child application with open stdin, requested exit status, ordinary failures, SIGINT preservation, exception-policy preservation, enabled-command placement and disabled-command omission, coroutine execution, exact alias/vendor boundaries, per-property native errors, split metadata, provider discovery, nullable and default project trust, rejection of untrusted local project configuration, existing registration/configuration behavior, positional and explicitly trusted local include scope, malformed-include reporting, later-include continuation, error-handler restoration, and success status after a reported include failure.
- **Performance and compatibility:** Changes run only while starting or using the developer command. Matching and filtering are bounded in-memory work over configured aliases/listeners/commands; no application request, queue, database, network, or worker hot path changes. Laravel-facing Tinker options, project-trust values, and configuration keys remain compatible; Hypervel deliberately uses PsySH's safer `prompt` default rather than Laravel Tinker's `always`, and the no-fork Swoole adaptation remains intact.
- **Validation:** Both Composer manifests are valid and aligned, the installed PsySH source is the required `dev-main`, formatting, both PHPStan configurations, and the complete Tinker suite in normal and random order pass. Both include tests fail under their targeted source counterfactuals; selecting the old `always` trust default makes the untrusted-project and default-pinning regressions fail while the explicitly trusted include test passes. Fresh caller/callee, process-global state, public API, cold-path performance, retained-memory, stale-code, and overengineering review is complete.
- **Assessment:** Every accepted finding is corrected directly without a workaround or speculative mechanism, and independent code review signed off with no remaining implementation finding.

### Complete Testbench correctness, parallel ownership, and current parity

- **Status and inspected surface:** Complete; implementation, focused validation, the authoritative gate, fresh self-review, and independent review are signed off through `testbench-31`. The audit covered Testbench bootstrap, application and PHPUnit lifecycles, worker-local runtime clones, process-global environment and timezone state, cached routes/configuration, SQLite and migration ownership, commands and file actions, Workbench/vendor symlinks, package helpers and metadata, every routed Foundation/Testing consumer, current Orchestra Testbench 11.4.0 source/tests, and the intentionally different Hypervel worker-startup configuration model. The detailed design is recorded in [`2026-08-09-0615-testbench-correctness-parallel-ownership-and-current-parity.md`](2026-08-09-0615-testbench-correctness-parallel-ownership-and-current-parity.md).
Expand Down
Loading