2.6 KiB
2.6 KiB
1. Component and Registry Foundation
- 1.1 Add the marker/application contracts, validated component ID, and public read-only Registry/service-manager interfaces with explicit nullability.
- 1.2 Implement the package-private Registry administration and synchronized Registry service with primary storage, recursive ordered interface indexing, typed lookup, immutable snapshots, and single-use startup.
- 1.3 Mark every required registered query interface as a Nenjim component and each registered no-argument lifecycle implementation as a Nenjim application without introducing a common stop API.
2. Composition and Migration
- 2.1 Rename the directly affected Ticker price-source packages and imports from
.plugins.pricesourceto.pricesource. - 2.2 Replace the Ticker's temporary source-instance constructor with public Registry injection plus explicit source component IDs and clear required-dependency failures.
- 2.3 Implement the public Registry service manager as the sole hardcoded composition root with every required component ID and implementation registered in dependency order.
- 2.4 Preserve the explicit five-application startup order, deliberately inactive components, online message, blocking wait, and single-use manager lifecycle.
- 2.5 Replace the old Hub interface and
com.r35157.nenjim.hubd.impl.ref.Main/NenjimHubImplcomposition path with the thincom.r35157.nenjim.hubd.Mainbootstrap, update every runtime entry point, and keep composition and lifecycle ownership in the Registry manager.
3. Documentation and Specification Consistency
- 3.1 Update Nenjim Markdown, terminology, and public HTML documentation for component identity, Registry views, composition ownership, selection/activation, and deferred boundaries.
- 3.2 Update directly affected alarm and canonical OpenSpec wording so removed Hub/plugin terminology does not describe current behavior.
4. Verification
- 4.1 Strictly validate the OpenSpec change and complete project material while leaving the change active and unarchived.
- 4.2 Run the existing Gradle build and Detag/Java compilation pipeline without invoking production
main(). - 4.3 Run temporary non-committed Registry probes covering IDs, duplicate/alias behavior, multi-view and inherited indexing, immutable order snapshots, missing/wrong type, pre-start, repeated start, and post-start registration.
- 4.4 Inspect the complete redacted final diff, package references, generated-source status, nullability, working tree, acceptance criteria, and out-of-scope boundaries.