81: Version fix
This commit is contained in:
+11
-12
@@ -8,7 +8,7 @@ Defines the mandatory deployment configuration that selects which modern Nenjim
|
||||
The reference Hub SHALL read only `conf/NenjimHub.conf` and SHALL complete all configuration parsing and validation before starting Registry or any other process. The path SHALL not be configurable through `Main`, command-line arguments, or the public `NenjimHub` API. A missing, unreadable, or non-regular runtime file SHALL fail Hub startup clearly and identify the configured path. The Hub SHALL not read, copy, generate, or fall back to `conf/NenjimHub.conf.example`, and SHALL not fall back to a hardcoded startup list.
|
||||
|
||||
#### Scenario: Runtime configuration is valid
|
||||
- **WHEN** `conf/NenjimHub.conf` is a readable regular file containing a valid format 2 configuration
|
||||
- **WHEN** `conf/NenjimHub.conf` is a readable regular file containing a valid format 1 configuration
|
||||
- **THEN** the Hub derives its complete requested process order from that file before starting Registry
|
||||
|
||||
#### Scenario: Runtime configuration cannot be read
|
||||
@@ -19,13 +19,13 @@ The reference Hub SHALL read only `conf/NenjimHub.conf` and SHALL complete all c
|
||||
- **WHEN** `conf/NenjimHub.conf` is absent but `conf/NenjimHub.conf.example` exists
|
||||
- **THEN** startup fails without reading, copying, or using the example and without starting a hardcoded fallback set
|
||||
|
||||
### Requirement: Format 2 has one exact ordered AUTO_START section
|
||||
The first actual configuration entry SHALL be exactly `FORMAT_VERSION=2`, after optional leading blank lines and full-line comments. Version 2 SHALL be the only supported version; a missing, malformed, duplicate, version 1, or otherwise unsupported declaration SHALL fail. The next actual entry SHALL be exactly one `[AUTO_START]` header, optionally followed only by a trailing `#` comment. Unknown, malformed, repeated, valued, or out-of-order sections and entries before `[AUTO_START]` SHALL fail.
|
||||
### Requirement: Format 1 has one exact ordered AUTO_START section
|
||||
The first actual configuration entry SHALL be exactly `FORMAT_VERSION=1`, after optional leading blank lines and full-line comments. Version 1 SHALL be the only supported version; a missing, malformed, duplicate, version 2, or otherwise unsupported declaration SHALL fail. The next actual entry SHALL be exactly one `[AUTO_START]` header, optionally followed only by a trailing `#` comment. Unknown, malformed, repeated, valued, or out-of-order sections and entries before `[AUTO_START]` SHALL fail.
|
||||
|
||||
Outside `[AUTO_START]`, leading and trailing whitespace SHALL be ignored, a line whose trimmed content begins with `#` SHALL be a full-line comment, and `#` after actual content SHALL begin a trailing comment. Inside `[AUTO_START]`, surrounding whitespace around a process ID SHALL be ignored; full-line and trailing comments SHALL be ignored; comment-only lines SHALL not terminate the section; and the first whitespace-only line or end of file SHALL terminate it. After termination, only blank lines and comments SHALL be accepted. Format 2 SHALL provide no quoting or escaping for `#`.
|
||||
Outside `[AUTO_START]`, leading and trailing whitespace SHALL be ignored, a line whose trimmed content begins with `#` SHALL be a full-line comment, and `#` after actual content SHALL begin a trailing comment. Inside `[AUTO_START]`, surrounding whitespace around a process ID SHALL be ignored; full-line and trailing comments SHALL be ignored; comment-only lines SHALL not terminate the section; and the first whitespace-only line or end of file SHALL terminate it. After termination, only blank lines and comments SHALL be accepted. Format 1 SHALL provide no quoting or escaping for `#`.
|
||||
|
||||
#### Scenario: Leading comments and trailing comments are accepted
|
||||
- **WHEN** blank lines or full-line comments precede `FORMAT_VERSION=2`, and the version, section header, or process entries contain trailing `#` comments
|
||||
- **WHEN** blank lines or full-line comments precede `FORMAT_VERSION=1`, and the version, section header, or process entries contain trailing `#` comments
|
||||
- **THEN** comment text and permitted surrounding whitespace are ignored while the actual entries are parsed normally
|
||||
|
||||
#### Scenario: Comment inside AUTO_START does not terminate it
|
||||
@@ -41,7 +41,7 @@ Outside `[AUTO_START]`, leading and trailing whitespace SHALL be ignored, a line
|
||||
- **THEN** the section terminates successfully at end of file
|
||||
|
||||
#### Scenario: Version declaration is invalid
|
||||
- **WHEN** the version is absent, malformed, duplicated, not the first actual entry, or has a value other than `2`
|
||||
- **WHEN** the version is absent, malformed, duplicated, not the first actual entry, or has a value other than `1`
|
||||
- **THEN** configuration validation fails before any process starts and identifies the path, relevant line and reason
|
||||
|
||||
#### Scenario: Section structure is invalid
|
||||
@@ -127,13 +127,12 @@ Registry and every selected process SHALL be registered before its `start()` cal
|
||||
- **THEN** the startup snapshot has the exact configured order, the online point is announced, and the Hub enters its existing blocking wait
|
||||
|
||||
### Requirement: The version-controlled example is a copy-only template
|
||||
The repository SHALL contain `conf/NenjimHub.conf.example` as a documented format 2 template that reproduces the former successful process sequence without selecting `jupiter-perps-alarm.default`. Its comments SHALL state that Registry and Journal are mandatory, order is preserved, current process dependencies must be listed manually before consumers, JavaFX runtime precedes JavaFX applications, commenting out an entry prevents its process from being constructed or started, and the file must be copied to `conf/NenjimHub.conf` before use. Documentation SHALL include a headless example and SHALL describe recursive dependency construction as future work rather than implemented behavior.
|
||||
The repository SHALL contain `conf/NenjimHub.conf.example` as a documented format 1 copy-only template with only the mandatory Registry and Journal entries active. It SHALL contain no optional deployment-specific process IDs. Its comments SHALL state that the file must be copied to `conf/NenjimHub.conf` before use, Registry and Journal are mandatory, order is preserved, and process dependencies must be listed manually before their consumers. Documentation SHALL show the same minimal bootstrap as a headless example and SHALL describe recursive dependency construction as future work rather than implemented behavior.
|
||||
|
||||
#### Scenario: Example reproduces the former startup sequence
|
||||
#### Scenario: Example provides a generic minimal bootstrap
|
||||
- **WHEN** the example's uncommented process IDs are read in order
|
||||
- **THEN** they are Registry, Journal, Ticker, Production Evelyn, Test Evelyn, Production IOU Burner, JavaFX runtime, Mission Control, and Process Manager
|
||||
- **THEN** they are only Registry and Journal, with no optional deployment-specific process ID present
|
||||
|
||||
#### Scenario: Operator uses a headless example
|
||||
#### Scenario: Operator uses the minimal headless example
|
||||
- **WHEN** the documented headless configuration is copied to the runtime path
|
||||
- **THEN** it selects Registry, Journal, Ticker, Production Evelyn, and Production IOU Burner without selecting Test Evelyn or any JavaFX process
|
||||
|
||||
- **THEN** it selects only Registry and Journal and leaves every optional process for the operator to add explicitly
|
||||
|
||||
Reference in New Issue
Block a user