Skip to content

Commit 03b7dfe

Browse files
committed
docs: align 3.0 migration notes with package runtime
1 parent 52f6927 commit 03b7dfe

3 files changed

Lines changed: 79 additions & 17 deletions

File tree

CHANGELOG.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -303,15 +303,21 @@ elprobe run <package>
303303

304304
### Runtime compatibility hardening
305305

306-
- `LibraryModules` now acts as a compatibility boundary for removed embedded
307-
runtimes and points operators toward package-backed or standalone providers.
306+
- Removed `LibraryModules` and the remaining legacy embedded runtime control
307+
layer from the EasyLibrary 3.x core.
308+
- `/easylibrary runtime` is now a read-only runtime overview/status surface.
309+
It no longer exposes embedded `enable`, `disable`, `reload` or `targets`
310+
operations.
311+
- Provider state now reports `not-installed` when an official library has no
312+
package-backed or standalone owner. Old embedded provider states are treated
313+
as historical migration notes, not current runtime modes.
308314
- Placeholder and World command registries live in their respective package or
309315
standalone repositories, not in the EasyLibrary core.
310316
- `PluginToolkit::getDatabase()` now fails with a controlled plugin exception
311317
when LibDB/`DBManager` is unavailable.
312-
- `LibraryStatusService` checks manager availability before reading embedded
313-
runtime state, preventing doctor output from fataling when future builds
314-
remove legacy embedded classes.
318+
- `LibraryStatusService` was simplified around current 3.x ownership:
319+
package-backed provider, standalone provider, disabled standalone artifact or
320+
no installed provider.
315321
- Moved `/plugins` and `/version` override command classes from
316322
`imperazim\components\commands` to `imperazim\library\command\override`.
317323

changelogs/3.0.md

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -599,8 +599,7 @@ This absorbs the old internal `2.1.0-dev` milestone into `3.0.0-dev`.
599599

600600
- `OfficialLibraryRegistry` for known EasyLibrary official libraries.
601601
- Expected standalone version metadata.
602-
- Historical embedded-kind metadata kept only so older migration states can be
603-
described safely.
602+
- Current package type metadata for official package-backed providers.
604603
- `LibraryStatusService`.
605604
- Provider detection through PMMP's plugin manager.
606605
- Detection of standalone PHAR/folder files that exist but are not enabled.
@@ -615,7 +614,8 @@ This absorbs the old internal `2.1.0-dev` milestone into `3.0.0-dev`.
615614
- `/easylibrary libs status [library]`.
616615
- `/easylibrary libs available`.
617616
- `/easylibrary libs doctor`.
618-
- compatibility boundary for the retired `/easylibrary runtime` surface.
617+
- read-only compatibility output for the retired `/easylibrary runtime`
618+
surface.
619619
- `/easylibrary doctor`.
620620
- `/easylibrary help`.
621621

@@ -637,14 +637,17 @@ switches.
637637
|---|---|
638638
| `standalone-active` | A standalone PMMP plugin is enabled and owns the provider. |
639639
| `standalone-installed-disabled` | A standalone PHAR/folder exists but is not enabled. |
640-
| `embedded-runtime` | Historical state from earlier migration builds where EasyLibrary owned an embedded manager. |
641-
| `embedded-classpath` | Historical state from earlier migration builds where embedded API classes existed in the core. |
642640
| `package-backed-active` | The provider is an EasyLibrary package exposed through a PMMP proxy. |
643-
| `embedded-disabled` | Historical/retired state. Current 3.x core tells operators to install a package or standalone provider. |
641+
| `not-installed` | No package-backed or standalone provider is active for that official library. |
644642
| `duplicate-runtime` | Two providers appear active at the same time. |
645643
| `missing` | No valid provider was found for a runtime-required library. |
646644
| `unknown` | A manager exists but EasyLibrary cannot classify its owner confidently. |
647645

646+
Older 3.0-dev prototypes also used embedded-oriented labels while the migration
647+
was still proving the provider model. Those labels are no longer current
648+
runtime modes after the legacy embedded source and `LibraryModules` layer were
649+
removed from the core.
650+
648651
### How to use it
649652

650653
```text
@@ -659,7 +662,7 @@ Example output shape:
659662
LibPlaceholder v1.0.0 [standalone-active] provider: LibPlaceholder
660663
LibWorld v1.0.0 [package-backed-active] provider: LibWorld
661664
LibSerializer v2.0.0 [package-backed-active] provider: LibSerializer
662-
EasyLibraryAgentBridge v1.0.0 [missing] provider: none
665+
EasyLibraryAgentBridge v1.0.0 [not-installed] provider: none
663666
```
664667

665668
### Developer impact
@@ -672,11 +675,11 @@ for programmatic integration.
672675

673676
This absorbs the old internal `2.2.0-dev` milestone into `3.0.0-dev`.
674677

675-
### What was added during the migration
678+
### What was prototyped and then retired
676679

677680
- `LibraryRuntimeControlService`.
678681
- `LibraryRuntimeOperationResult`.
679-
- Temporary runtime targets:
682+
- Temporary embedded runtime targets:
680683
- `command`;
681684
- `placeholder`;
682685
- `trigger`;
@@ -709,7 +712,10 @@ Current behavior:
709712

710713
- EasyLibrary does not start, stop or reload embedded official library
711714
runtimes.
712-
- `/easylibrary runtime` is not the operator path for packages.
715+
- `/easylibrary runtime` is a read-only overview/status surface, not the
716+
operator path for packages.
717+
- The old embedded runtime control subcommands (`enable`, `disable`, `reload`
718+
and `targets`) were retired.
713719
- Install, update, remove, rollback, repair and proxy operations live under
714720
`/easylibrary packages`.
715721
- Standalone plugins remain managed by PMMP.
@@ -1318,7 +1324,7 @@ It keeps server/system information and adds EasyLibrary context:
13181324

13191325
```text
13201326
Packages: 13/13 installed, 13 active, 0 pending, 0 shadowed
1321-
Official libs: 13 package-backed, 0 standalone, 0 embedded
1327+
Official libs: 13 package-backed, 0 standalone, 0 not installed
13221328
Command backend: libcommand-rich
13231329
Config: package-manager=split / library-installer=split
13241330
```
@@ -1446,7 +1452,8 @@ Reload rereads config files for future EasyLibrary operations. It does not:
14461452

14471453
### What changed
14481454

1449-
- Legacy embedded runtime entry points now fail closed and point operators to
1455+
- Legacy embedded runtime control entry points were removed from the active
1456+
command surface. Read-only runtime commands now point operators to
14501457
package-backed or standalone providers.
14511458
- Placeholder, Trigger and World managers are optional package/standalone
14521459
providers instead of bundled EasyLibrary core runtimes.

docs/migration.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ This file records practical migration steps for EasyLibrary versions.
77
EasyLibrary 2.x is the old full-bundle model. EasyLibrary 3.x is moving toward
88
a core/package-manager model.
99

10+
The important behavior change is provider ownership:
11+
12+
| 2.x full bundle | 3.x development line |
13+
|---|---|
14+
| EasyLibrary carried official `Lib*` source in the core. | EasyLibrary core manages official libs as packages or lets standalone plugins own them. |
15+
| Missing standalone libs could fall back to bundled runtime code. | Missing providers are reported as `not-installed`; install a package or standalone plugin. |
16+
| Runtime ownership could be implicit. | Runtime ownership is explicit in `/easylibrary doctor` and `/easylibrary packages doctor`. |
17+
1018
Before migrating a server:
1119

1220
```txt
@@ -31,6 +39,47 @@ Recommended order:
3139
6. Restart after each provider switch.
3240
7. Validate with `/easylibrary packages doctor` and `elprobe run <package>`.
3341

42+
Recommended package-backed install flow:
43+
44+
```txt
45+
/easylibrary packages available
46+
/easylibrary packages install libcommand stable confirm
47+
restart server
48+
/easylibrary packages doctor
49+
/easylibrary doctor
50+
elprobe run libcommand
51+
```
52+
53+
Recommended standalone-to-package switch flow:
54+
55+
```txt
56+
/easylibrary packages install libplaceholder stable confirm
57+
restart server
58+
/easylibrary packages switch libplaceholder
59+
stop server
60+
remove the standalone LibPlaceholder artifact from /plugins
61+
start server
62+
/easylibrary packages doctor
63+
elprobe run libplaceholder
64+
```
65+
66+
For plugin code, prefer normal PMMP dependency declarations instead of assuming
67+
EasyLibrary always ships a class:
68+
69+
```yaml
70+
softdepend:
71+
- LibPlaceholder
72+
- LibCommand
73+
```
74+
75+
```php
76+
$provider = $this->getServer()->getPluginManager()->getPlugin("LibPlaceholder");
77+
if($provider === null || !$provider->isEnabled()){
78+
// Disable the optional integration or use a fallback path.
79+
return;
80+
}
81+
```
82+
3483
## Safe rollback
3584

3685
Because config migration does not delete `config.yml`, rollback is simple:

0 commit comments

Comments
 (0)