Files

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.pricesource to .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/NenjimHubImpl composition path with the thin com.r35157.nenjim.hubd.Main bootstrap, 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.