82: Remove lifecycle operations from the TickerService API

This commit is contained in:
2026-09-03 20:34:49 +02:00
parent 461044a998
commit ddbf6f047d
11 changed files with 155 additions and 34 deletions
+5
View File
@@ -181,6 +181,11 @@ nenjim.journal.service</code></pre>
applications. Construction, registration, and startup remain fail-fast without rollback. Earlier successful
snapshot entries remain truthful after a later failure, and the online point plus blocking wait are reached
only after every configured process succeeds.</p>
<p>Ordinary consumers receive the lifecycle-free <code>TickerService</code> view, which exposes only the
latest-price query. The same <code>TickerServiceImpl</code> object separately implements
<code>NenjimProcess</code> so the Hub owns startup. The implementation starts its configured active
<code>PriceSource</code> instances internally and stops those already started if Ticker startup fails; it
exposes no general Ticker stop operation.</p>
<p>The Ticker still explicitly selects the Raydium EVE/USDT source ID while the hardcoded source remains a passive,
registered component. Process Manager continues to poll immutable ordered snapshots of actual successful
startup milestones rather than displaying configured intent or claiming current health.</p>
+5
View File
@@ -199,6 +199,11 @@ kan starte og tracke, implementerer desuden den canonical `com.r35157.nenjim.pro
`start()` og ikke en fælles stop-, restart- eller health-operation. En service- eller applikationsimplementation kan
derfor også være en process; passive componenter er det ikke.
Ticker følger denne opdeling: almindelige consumers modtager `TickerService` med kun latest-price query, mens det
samme `TickerServiceImpl`-objekt separat er en `NenjimProcess`, som Hub'en starter. Tickerens source-lifecycle er
implementation-owned; `PriceSource`-instanser startes internt, og en fejlet Ticker-start stopper de sources, som nåede
at starte. Der findes ingen almindelig Ticker-serviceoperation til start eller stop.
En `NenjimComponentId` er registration metadata i ét Registry og er ikke en egenskab ved objektet. ID-formatet er
lower-case ASCII med dot-separated segments og valgfrie interne bindestreger, f.eks. `nenjim.registry.service` og
`assetaz.price-source.raydium-pool.eve-usdt`. Det samme objekt må registreres under flere forskellige ID'er, og én
+1
View File
@@ -46,6 +46,7 @@
| Journal referenceimplementation | Ét package-private `JournalServiceImpl`-objekt er både `JournalService` og `NenjimProcess`; en separat `JournalServiceManagerImpl`, intern admin-view, parser, ingestion, chain state og filesystem-loader ligger under `com.r35157.nenjim.service.journal.impl.ref` uden at lække gennem public signatures. |
| JavaFX runtime | Det ene JVM-wide JavaFX toolkit, som udfører UI-arbejde på JavaFX Application Thread. Når processen er valgt, ejer Hub'en dets eneste startup-sti gennem `JavaFxRuntimeServiceImpl` og holder det aktivt efter sidste lukkede vindue med `Platform.setImplicitExit(false)`. En headless konfiguration kan udelade runtime og alle JavaFX-applikationer helt. |
| JavaFxRuntimeService | Registrerbart service-view med kun non-null `runLater(Runnable)`. Samme referenceimplementation er en Hub-styret `NenjimProcess`; service-consumers får den gennem constructor injection, men får ingen lifecycle-, status-, configuration-, window-, event-, stop- eller restart-operationer. |
| TickerService | Lifecycle-frit domain/query-view med kun latest-price lookup. Samme `TickerServiceImpl`-objekt er separat en Hub-styret `NenjimProcess`; det ejer `PriceSource`-startup internt og stopper allerede startede sources som rollback, hvis Ticker-start fejler, men eksponerer ingen almindelig start- eller stop-operation. |
| Context | Fremtidig beskrivelse af ønskede/resolverede artifactvalg og isoleret runtime; ikke implementeret af Journal-laget eller første Registry-version. |
| Resolver | Fremtidig komponent for dependency graph og release-selection; Journal-laget repræsenterer reglerne, men vælger ikke en graf. |