From d05acfbeaa0c67e4eef9df048e9443c6e22bdf3e Mon Sep 17 00:00:00 2001 From: agis Date: Thu, 17 Sep 2026 21:31:30 +0700 Subject: [PATCH] docs(migration): record 4.0 vendor-floor enabler blocking all Wave 4 swaps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Verified empirically that Wave 4.1's assumed interim state (fork + illuminate/*:^13) is not composer-resolvable: the fork pins symfony/* ~6.4, carbon ^2.71, monolog ^2.10 while Laravel 13.30.1 floors at symfony ^7.4, carbon ^3.8.4, monolog ^3.10 (+ new brick/math, flysystem ^3, symfony/uid). This vendor-floor bump was in neither the 4.1 prereq list nor Wave 0. - MIGRATION-TASKS.md: add task 4.0 (bump fork vendor floor to L13) as blocker of every Wave 4 swap; add 4.0 to 4.1 blocked-by. - MIGRATION-ROADMAP.md: add §1b "Vendor-floor collision" alongside the §1a replace-collision constraint. Co-Authored-By: Claude Opus 4.8 (1M context) --- MIGRATION-ROADMAP.md | 18 ++++++++++++++++++ MIGRATION-TASKS.md | 24 +++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/MIGRATION-ROADMAP.md b/MIGRATION-ROADMAP.md index 656b1f93..8db38a48 100644 --- a/MIGRATION-ROADMAP.md +++ b/MIGRATION-ROADMAP.md @@ -160,6 +160,24 @@ Bukan hanya namespace `Illuminate\*` yang bertabrakan. **Fork dan stock keduanya - **Fase 5 gate:** `composer require laravel/framework:^13` **hanya** setelah blok `replace` fork **kosong** (0 entry tersisa) — kalau tidak, resolver deadlock antara dua `laravel/framework`. +### 1b. Vendor-floor collision — prasyarat installability tiap swap (VERIFIED 2026-09-17) + +Selain replace-collision (§1a), swap-per-cluster punya prasyarat **kedua yang lebih dasar**: floor +dependency fork harus ≥ floor L13. Terverifikasi empiris (`migration/4.1-scc1-core-cutover`): + +| dep | fork sekarang | L13.30.1 floor | +|---|---|---| +| `symfony/*` | `~6.4` | `^7.4.0 \|\| ^8.0.0` | +| `nesbot/carbon` | `^2.71` | `^3.8.4` | +| `monolog/monolog` | `^2.10` | `^3.10` | +| baru (hard-require) | — | `brick/math`, `league/flysystem ^3.25`, `symfony/uid`, `league/uri ^7.5` | + +`illuminate/:^13` menyeret floor v13 di atas → **konflik constraint langsung** dgn pin fork → +interim-state `fork + illuminate/*:^13` **tak resolvable** sampai floor fork di-bump. Ini **bukan** +tercakup daftar prereq 4.1 (semuanya reshape API internal) maupun Wave 0 → dicatat sebagai enabler +**4.0** (bump Symfony 7 / carbon 3 / monolog 3 + port komponen fork yang masih pakai Symfony langsung). +Konsekuensi: **4.0 mem-block SEMUA swap Wave 4**, bukan cuma SCC-1. + --- ## 2. Dependency graph (bottom-up, per layer) — swap **bottom-up per cluster** diff --git a/MIGRATION-TASKS.md b/MIGRATION-TASKS.md index 0a95c77a..89dc6193 100644 --- a/MIGRATION-TASKS.md +++ b/MIGRATION-TASKS.md @@ -311,9 +311,27 @@ kerjakan sampai "Done when" terpenuhi, centang, lanjut. Tiap task **independen & > Namespace `Illuminate\*` collide + fork/stock sama-sama `laravel/framework` yang `replace` > illuminate/* → **tak bisa co-install**. Swap **per-cluster**: tiap langkah **hapus entry dari > blok `replace` fork** lalu `composer require illuminate/:^13`. Interim = fork + -> `illuminate/:^13` individual. Prasyarat tiap swap: Wave 1–2 komponen terkait ✅. - -- [ ] **4.1 — SCC-1 core cutover (satu window)** `[fork · XL]` · blocked-by: 1.1–1.4, 2.2, 2.4, 2.5, 2.9, 2.10, 2.12, 2.13 +> `illuminate/:^13` individual. Prasyarat tiap swap: Wave 1–2 komponen terkait ✅ +> **DAN 4.0 (vendor floor L13) sudah landas** — tanpa itu tak ada `illuminate/*:^13` yang resolvable. + +- [ ] **4.0 — 🔴 Enabler: bump vendor floor fork ke L13 (Symfony 7 / carbon 3 / monolog 3)** `[fork · XL]` · blocked-by: — (prasyarat SEMUA swap Wave 4) + - Why (VERIFIED 2026-09-17, empiris di `migration/4.1-scc1-core-cutover`): interim-state Wave 4 + (`fork` + `illuminate/:^13`) **tak resolvable**. Fork pin `symfony/*: ~6.4`, + `nesbot/carbon: ^2.71`, `monolog/monolog: ^2.10`; floor L13.30.1 = `symfony/*: ^7.4||^8`, + `nesbot/carbon: ^3.8.4`, `monolog/monolog: ^3.10` + hard-require baru `brick/math`, + `league/flysystem: ^3.25`, `symfony/uid`, `league/uri: ^7.5`. `composer require illuminate/*:^13` + narik floor v13 → konflik constraint langsung dgn pin fork. **Gap roadmap:** daftar prereq 4.1 + cuma reshape API internal (Cache/Events/pluck/…), tak pernah cakup bump vendor ini — Wave 0 juga + tidak (monolog 3 baru setengah diakui di 2.13; Symfony 6.4→7 & carbon 2→3 tak disebut sama sekali). + - Steps: bump `composer.json` fork → `symfony/*: ^7.4`, `nesbot/carbon: ^3`, `monolog/monolog: ^3` + (+ `brick/math`, `league/flysystem: ^3.25`, `symfony/uid`, `league/uri: ^7.5`, dev `phpunit ~11/12`); + port komponen fork yang **masih di-provide** & pakai Symfony langsung ke API Symfony 7 (Http/Console/ + Routing/Session/Foundation/Mail — BC HttpFoundation/HttpKernel/Console); serap carbon 3 + monolog 3 + (LogRecord/`Level` enum, sinkron dgn 2.13). Gate empiris = `./vendor/bin/phpunit` fork hijau + (baseline pra-bump 2026-09-17 = 1647 test hijau, exit 0). + - Done when: `composer update` fork resolve dgn floor v13; suite fork hijau; swap SCC-1 (4.1) jadi installable. + +- [ ] **4.1 — SCC-1 core cutover (satu window)** `[fork · XL]` · blocked-by: 4.0, 1.1–1.4, 2.2, 2.4, 2.5, 2.9, 2.10, 2.12, 2.13 - Cluster: `contracts+reflection+support+container` (jangkar) + `http, session, cache, cookie, encryption, events, filesystem, redis, database` + **`bus`** (transitif hard-require `events`). Swap ke `illuminate/*` v13 **bersamaan**.