81: Version fix

This commit is contained in:
2026-09-03 14:36:00 +02:00
parent a65c2fc09c
commit 324aa67710
8 changed files with 37 additions and 42 deletions
+8 -9
View File
@@ -23,7 +23,7 @@
internal strict parser, read-only <code>JournalService</code> with a Hub-managed process implementation,
passive explicitly refreshed <code>JournalServiceManager</code>, Hub-managed
<code>JavaFxRuntimeService</code>, the first central component Registry, and mandatory Hub configuration
format 2 are implemented. Contexts, resolution, classloading, discovery, runtime loading/removal,
format 1 are implemented. Contexts, resolution, classloading, discovery, runtime loading/removal,
downloading, publishing, synchronization, watching, signatures, permissions, and license filtering remain
future work.</p>
@@ -148,20 +148,17 @@ PREFERRED=nenjim:com_r35157_nenjim-hubd-api=1.0.3:'Built together'</code></pre>
Registry manager. That manager exposes only registration, is neither a component nor a process, is not
registered, and cannot start anything. The internal administration interface must remain package-private so
an ordinary service consumer cannot cast the Registry object to a mutation view.</p>
<h3>Mandatory NenjimHub.conf format 2</h3>
<h3>Mandatory NenjimHub.conf format 1</h3>
<p><code>NenjimHubImpl</code> is the global composition and runtime owner. Before any process starts it reads only
the readable regular file <code>conf/NenjimHub.conf</code>. The version-controlled
<code>conf/NenjimHub.conf.example</code> is a copy-only template: the application never reads, copies,
generates, or falls back to it or to a hardcoded startup sequence.</p>
<pre><code>FORMAT_VERSION=2
<pre><code>FORMAT_VERSION=1
[AUTO_START]
nenjim.registry.service
nenjim.journal.service
assetaz.ticker.default
evelyn.service.prod
evelyn.iou-burner.prod</code></pre>
<p><code>FORMAT_VERSION=2</code> must be the first actual entry and the one exact
nenjim.journal.service</code></pre>
<p><code>FORMAT_VERSION=1</code> must be the first actual entry and the one exact
<code>[AUTO_START]</code> header must be the next actual entry. Leading and trailing whitespace is ignored.
A trimmed line beginning with <code>#</code> is a comment, and <code>#</code> after content begins a trailing
comment. Inside the section a comment-only line does not terminate it, while the first whitespace-only line
@@ -171,7 +168,9 @@ evelyn.iou-burner.prod</code></pre>
duplicates, invalid or unknown IDs, passive-only IDs, and IDs the Hub cannot construct as modern processes
fail. Registry must occur exactly once first and Journal exactly once second. The known selectable processes
are Registry, Journal, Ticker, Jupiter Perps Alarm, both Evelyn services, Production IOU Burner, JavaFX
runtime, Mission Control, and Process Manager. The default template omits the alarm.</p>
runtime, Mission Control, and Process Manager. The version-controlled template selects only the mandatory
Registry and Journal processes; every other process must be added explicitly to the private deployment
configuration.</p>
<p>After validation the Hub starts, registers, and records Registry, then eagerly constructs and registers the
complete passive graph without activating a process. It next visits every remaining configured ID in exact
order, beginning with Journal. Each selected process is constructed only when reached, registered before
+7 -9
View File
@@ -3,7 +3,7 @@
> **Dokumentstatus:** Journal-format version 1, den immutable Java-model, den interne tekstparser, det read-only
> `JournalService` med en Hub-styret procesimplementation, den passive eksplicit refresh-baserede
> `JournalServiceManager`, den Hub-styrede `JavaFxRuntimeService`, første version af det centrale component Registry
> og den obligatoriske format 2 Hub-konfiguration er implementeret. Contexts, resolution, discovery, runtime loading
> og den obligatoriske format 1 Hub-konfiguration er implementeret. Contexts, resolution, discovery, runtime loading
> og removal er fortsat fremtidig funktionalitet.
**Indholdsfortegnelse:**
@@ -236,13 +236,13 @@ fordi almindelige consumers ellers kunne caste deres Registry-service til mutati
read-only service contract. Registration starter ikke et objekt, og Registry'et forbliver internt åbent for senere
registration efter startup.
### 8.1 Obligatorisk `NenjimHub.conf` format 2
### 8.1 Obligatorisk `NenjimHub.conf` format 1
Hub'en læser kun `conf/NenjimHub.conf`. Filen skal eksistere som en læsbar regular file; en manglende eller ugyldig
fil stopper startup, før Registry startes. `conf/NenjimHub.conf.example` er kun en versioneret copy-template: Hub'en
læser, kopierer og genererer den aldrig og falder hverken tilbage til den eller til en hardcoded procesliste.
Den første faktiske entry skal være `FORMAT_VERSION=2`; før den må der kun stå blanke linjer og full-line
Den første faktiske entry skal være `FORMAT_VERSION=1`; før den må der kun stå blanke linjer og full-line
`#`-kommentarer. Den næste faktiske entry skal være den ene eksakte `[AUTO_START]`-header. Hver aktiv linje i
sektionen er ét `NenjimComponentId`, og rækkefølgen bevares præcist. Leading/trailing whitespace ignoreres, en trimmet
linje som begynder med `#` er en kommentar, og `#` efter faktisk indhold starter en trailing kommentar. Inde i
@@ -277,19 +277,17 @@ graph konstrueres mellem Registry- og Journal-start.
indsætter eller omordner ikke dependencies. En krævet proces skal stå før sin consumer; eksempelvis skal
`nenjim.javafx-runtime.service` stå før Mission Control og Process Manager. Mangler forgængeren, stopper konstruktion
eller startup fail-fast uden implicit reparation. En udeladt proces bliver hverken konstrueret, registreret, startet
eller vist af Process Manager. Jupiter Perps Alarm kan vælges eksplicit, men er fortsat udeladt fra default-template.
eller vist af Process Manager. Den versionerede template vælger kun de obligatoriske Registry- og Journal-processer;
alle øvrige processer skal tilføjes eksplicit til deploymentets private konfiguration.
Et headless eksempel uden JavaFX og Test Evelyn er:
Et minimalt headless eksempel, svarende til den versionerede template, er:
```text
FORMAT_VERSION=2
FORMAT_VERSION=1
[AUTO_START]
nenjim.registry.service
nenjim.journal.service
assetaz.ticker.default
evelyn.service.prod
evelyn.iou-burner.prod
```
Tickerens egen component-konfiguration vælger fortsat eksplicit
+2 -2
View File
@@ -2,7 +2,7 @@
> **Dokumentstatus:** Journal-format version 1 og de tilhørende Java-typer, den interne parser, query-service,
> Hub-styret Journal-proces, JavaFX-runtime-service, passive service-managers, første version af det centrale
> component Registry og obligatorisk Hub-konfiguration format 2 er implementeret. Resolver-, Context-,
> component Registry og obligatorisk Hub-konfiguration format 1 er implementeret. Resolver-, Context-,
> classloader-, discovery-, runtime-loading-, retrieval- og publishing-termer beskriver kun fremtidig vision, når
> det er angivet.
@@ -16,7 +16,7 @@
| Passiv component | En `NenjimComponent`, hvis implementation ikke deltager i Hub-lifecycle gennem det canonical `NenjimProcess`. Den nuværende Hub konstruerer og registrerer hele den passive dependency graph efter Registry-start uafhængigt af `[AUTO_START]`, men starter den ikke. |
| Valgt proces | Et kendt `NenjimProcess`-objekt, som Hub'en kun konstruerer, registrerer og starter, når dets ID forekommer i `[AUTO_START]`. Rollen som service eller applikation afgør ikke denne klassifikation. |
| NenjimHub | Den globale ejer af én kørende Nenjim runtime. Hub'en validerer `conf/NenjimHub.conf` før proces-start, bootstrapper Registry, konstruerer den passive graph og konstruerer/registrerer/starter kun valgte processer i eksakt konfigurationsrækkefølge. Den tracker succesfulde start-ID'er, erklærer online point og ejer den afsluttende runtime wait, men er hverken component eller process og registreres ikke i sit eget Registry. |
| AUTO_START | Den obligatoriske, ordered sektion i `NenjimHub.conf` format 2. Den er deploymentets komplette manuelle proces-dependency closure; Registry og Journal skal være første og anden entry. Den udtrykker ikke Context resolution, discovery eller automatisk dependency construction. |
| AUTO_START | Den obligatoriske, ordered sektion i `NenjimHub.conf` format 1. Den er deploymentets komplette manuelle proces-dependency closure; Registry og Journal skal være første og anden entry. Den udtrykker ikke Context resolution, discovery eller automatisk dependency construction. |
| NenjimComponentId | Canonical lower-case Registry lookup identity med dot-separated segments og valgfrie interne bindestreger. ID'et er registration metadata i ét Registry, ikke object state, authorization eller artifact-version identity. |
| NenjimRegistryService | Read-only component-katalog for almindelige consumers. Det giver immutable registration-order ID snapshots og typed lookup, men ingen registration, removal, loading, lifecycle, permission eller persistence administration. |
| NenjimRegistryServiceAdmin | Package-private mutationsinterface i referenceimplementationen. Det er ikke en component, er ikke indexeret og må ikke gøres public, fordi almindelige consumers ellers kunne caste Registry-serviceobjektet til mutationsinterfacet. |