|
98 | 98 | commands extend `BaseModuleCommand`, services/capabilities are provided |
99 | 99 | through `ModuleRuntime`, and EasyLibrary's legacy `ModuleManager` is no |
100 | 100 | longer imported by the examples. |
| 101 | +- Added OP-68J smoke evidence for the final EasyLibrary module-core removal: |
| 102 | + EasyLibrary without `LibModule` reports `provider=disabled`, package-backed |
| 103 | + LibModule loads real fixtures with services/capabilities/reload/disable/enable |
| 104 | + and standalone LibModule reports `Module provider switch: auto -> standalone`. |
101 | 105 | - Validated OP-60 live loading against the local PMMP smoke server. LibModule |
102 | 106 | loaded as `source=package-backed-virtual` from |
103 | 107 | `plugin_data/EasyLibrary/packages/libmodule/1.0.0-dev` and as |
|
106 | 110 | - Confirmed the portable runtime provider smoke with a real module fixture. |
107 | 111 | `EasyModuleBasicExample` exercised `examples:hello` service/capability |
108 | 112 | registration, resources, reload, disable-runtime, enable and refresh while |
109 | | - EasyLibrary kept the active PMMP host provider as `core`. |
| 113 | + EasyLibrary still used the transitional host provider. |
| 114 | +- Confirmed the OP-68J fixture matrix with four example plugins: |
| 115 | + `EasyModuleBasicExample`, `EasyModuleEconomyProviderExample`, |
| 116 | + `EasyModuleFarmConsumerExample` and `EasyModuleDiagnosticsExample`. |
110 | 117 | - Added focused tests for the copied status constants, health report statuses, |
111 | 118 | summary schema, summary entry shape and doctor-compatible read model output. |
112 | 119 | - Added focused tests proving the provider contract exposes metadata, summary |
|
161 | 168 | repository pattern instead of leaving the remote metadata blank. |
162 | 169 | - Reworked the example plugin docs as `LibModule` authoring references instead |
163 | 170 | of EasyLibrary-backed module examples. The docs now explain that PMMP |
164 | | - discovery/resource registration remains a host-adapter responsibility until |
165 | | - OP-68I/OP-68J finish the migration. |
| 171 | + discovery/resource registration remains a host-adapter responsibility while |
| 172 | + `LibModule` owns module authoring and runtime behavior. |
| 173 | +- Fixed the example plugin source layout for PMMP's `src-namespace-prefix` |
| 174 | + loader. Each example plugin main class now lives directly under |
| 175 | + `examples/*/src/`, matching its configured namespace prefix. |
| 176 | +- Updated `ModuleRuntimeViewProvider` provider kinds to the current |
| 177 | + `disabled`, `package-backed` and `standalone` vocabulary. |
166 | 178 | - Updated `LibModuleInfo` and `package.yml` metadata to report |
167 | 179 | contracts/read-model/provider-contract/provider-probe/dependency-resolver |
168 | 180 | manifest/source, loader-boundary and registry/service readiness while still |
|
189 | 201 | PHAR entries, package ZIP entries, checksums, EasyLibrary package contract and |
190 | 202 | local Package Safety Gate install layout. |
191 | 203 |
|
192 | | -### Not Yet Included |
| 204 | +### Still Not A Stable Promise |
193 | 205 |
|
194 | | -- The production `imperazim\module` runtime is not extracted in this slice. |
195 | | -- `ModuleManager`, lifecycle, commands, events and service registry are not |
196 | | - moved yet. |
197 | | -- `ModuleRuntimeViewProvider` is read-only; it does not expose enable, disable, |
198 | | - reload, refresh or manager access. |
199 | | -- `LibModuleRuntimeProvider` is a runtime wrapper only. It can expose a wrapped |
200 | | - `ModuleRuntime` read model, but it does not yet scan module folders, load PHP |
201 | | - files through PMMP plugin ownership or register PMMP commands/listeners/tasks |
202 | | - by itself. Pure PHP scanner/file-loader helpers exist, but host registration |
203 | | - remains an EasyLibrary adapter responsibility during OP-68. |
204 | | -- `DependencyResolver` uses `ModuleDependencyNode`, not the full EasyLibrary |
205 | | - runtime `ModuleInterface`. |
206 | | -- `ModuleManifest` models and validates arrays only. YAML/PMMP `Config` reading |
207 | | - and lifecycle ownership remain host-owned. |
208 | | -- `ModuleManifestReader` is still a contract only. A concrete recursive |
209 | | - manifest path scanner exists, but the concrete YAML reader remains |
210 | | - host-owned. |
211 | | -- `ModuleClassNameResolver` only calculates the expected class name. Fallback |
212 | | - PHP file loading and `ModuleInterface` validation now exist as separate |
213 | | - concrete helpers so hosts can choose when to load code. |
214 | | -- `ModuleRegistry` stores portable dependency nodes, not live module instances |
215 | | - with PocketMine plugin owners. |
216 | | -- `ModuleServiceRegistry` stores metadata descriptors, not live service |
217 | | - objects, and does not dispatch service events. |
218 | | -- `ModuleCapabilityMap` models provider/preference decisions only; persistence |
219 | | - remains host-owned. |
220 | | -- `ModuleLifecycleInventory` models resource ownership and cleanup order only. |
221 | | - It does not execute cleanup and does not store live PMMP objects, closures, |
222 | | - component handles or service objects. |
223 | | -- `ModuleInterface` is a future host-neutral contract. EasyLibrary's current |
224 | | - production runtime still uses its core `ModuleManager`-centric contract until |
225 | | - the later runtime migration OPs are implemented. |
226 | | -- The new `BaseModule` authoring core is host-neutral and the PMMP-facing |
227 | | - authoring helper classes exist in `LibModule`. Filesystem discovery, concrete |
228 | | - host registration and example migration are still pending before EasyLibrary |
229 | | - can delete its remaining module core. |
230 | | -- Module commands are owned by `LibModule`, but command registration in a live |
231 | | - server is still host-owned. EasyLibrary uses a temporary adapter during |
232 | | - OP-68 while the old core runtime is removed. |
233 | | -- `ModuleSettings` is a model only. Reading/writing YAML, migrating existing |
234 | | - EasyLibrary `modules.yml` and binding to PMMP data folders remain host adapter |
235 | | - responsibilities. |
236 | | -- `ModuleRuntime` is portable only. It does not scan folders, read YAML, load |
237 | | - PHP files, validate `BaseModule` or register PMMP commands/listeners/tasks |
| 206 | +- No stable tag or stable release should be published from this dev baseline |
| 207 | + alone. |
| 208 | +- PMMP-specific host policy remains explicit host integration work. LibModule |
| 209 | + owns module API/runtime/commands/examples, while EasyLibrary currently owns |
| 210 | + the official package-backed/standalone bridge that discovers plugin metadata, |
| 211 | + reads host files and exposes diagnostics. |
| 212 | +- Copy-into-server examples are smoke-tested through EasyLibrary's bridge, but |
| 213 | + final stable authoring docs still need the release-candidate pass. |
| 214 | +- Persistence of `ModuleSettings` remains host-owned: LibModule provides the |
| 215 | + portable model, while EasyLibrary writes its current `modules.yml`. |
| 216 | +- `ModuleRuntime` remains intentionally portable. It can run modules and own |
| 217 | + services/capabilities, but it does not pretend to replace PMMP plugin loading |
238 | 218 | without a host adapter. |
239 | | -- No stable tag or stable release should be published from this baseline alone. |
240 | 219 |
|
241 | 220 | ### Why |
242 | 221 |
|
243 | | -The repository needed the same foundation as the other official libs before the |
244 | | -runtime can be moved safely. Splitting repository setup from runtime extraction |
245 | | -keeps the next changes smaller, makes CI/release behavior visible early and |
246 | | -avoids a half-migrated package that looks installable but cannot yet replace |
247 | | -EasyLibrary's module core. |
| 222 | +The repository needed the same foundation as the other official libs before it |
| 223 | +could become the real module home. Splitting repository setup, release assets, |
| 224 | +API movement, command ownership, examples and smoke validation kept the |
| 225 | +migration inspectable instead of turning it into one huge opaque rewrite. |
248 | 226 |
|
249 | | -OP-68F completes the public repository baseline before OP-68G starts publishing |
250 | | -real dev release assets. That order keeps documentation, issue routing, |
251 | | -security policy, quality checks and Discord notifications ready before the |
252 | | -package manager is asked to download `LibModule` artifacts. |
| 227 | +OP-68F completed the public repository baseline before OP-68G published real |
| 228 | +dev release assets. OP-68H moved examples/docs here, and OP-68J proved the |
| 229 | +package-backed, standalone and no-LibModule runtime shapes in PMMP. |
0 commit comments