3.4 KiB
3.4 KiB
Why
Nenjim's current bootstrap directly constructs and starts a hardcoded object graph, leaving ordinary applications without a typed catalogue of independently registered components. A small read-only Registry and a dedicated Registry manager establish component identity, lookup, composition, and lifecycle ownership without prematurely introducing Contexts, resolution, discovery, or runtime loading.
What Changes
- Add
NenjimComponentandNenjimApplicationcontracts plus a validatedNenjimComponentIdvalue type. - Add a read-only
NenjimRegistryService, package-private administration view, and thread-safe reference implementation with ordered interface indexing and single-use startup. - Add
NenjimRegistryServiceManagerand its public reference implementation as the one composition root for the current hardcoded component set and explicit active application subset. - BREAKING: Replace the old Hub interface,
com.r35157.nenjim.hubd.impl.ref.NenjimHubImplcomposition implementation, andcom.r35157.nenjim.hubd.impl.ref.Mainentry point with the thincom.r35157.nenjim.hubd.Mainbootstrap, whoseMain.main(...)only starts the Registry manager. - Make every registered query interface a Nenjim component and make each registered no-argument lifecycle implementation a Nenjim application without adding a common stop contract.
- Replace the Ticker's temporary directly injected source objects with an injected public Registry view and explicitly configured source component IDs.
- BREAKING: Rename the directly affected Ticker price-source packages from
.plugins.pricesourceto.pricesourceand update their imports and terminology. - Document component identity, Registry views, application-owned selection/activation, manager-owned construction/registration, and the boundary around deferred runtime features.
- Preserve the current concrete component choices, dependency-safe startup order, deliberately inactive components, and online wait behavior.
Capabilities
New Capabilities
nenjim-component-registry: Defines component/application contracts, component IDs, read-only lookup, internal registration, interface indexing, lifecycle, hardcoded composition, and bootstrap behavior.
Modified Capabilities
assetaz-ticker-service: Replaces temporary Context/plugin discovery language with explicit component-ID selection through the injected read-only Registry while preserving source lifecycle and history behavior.assetaz-currency-identity-service: Transfers ownership of the one shared hardcoded catalogue from the removed Hub composition implementation to the Registry service manager.
Impact
- Adds public component and Registry APIs under
com.r35157.nenjim.componentandcom.r35157.nenjim.service.registry, with administration and storage confined to.impl.ref. - Moves current composition into
NenjimRegistryServiceManagerImpl, changes the application main class, and removes the superseded Hub implementation path. - Updates the registered domain interfaces and lifecycle implementation declarations needed for typed Registry discovery.
- Changes the public
TickerServiceImplconstruction contract and the Ticker price-source package names. - Updates Nenjim, terminology, alarm, and OpenSpec documentation; no new dependency, ValueTag, persistent state, runtime discovery, Context, resolution, classloading, permission, event, removal, or common-stop API is introduced.