Files

5.0 KiB

Spec Delta

MODIFIED Requirements

Requirement: Selected processes are constructed and started lazily in exact order

The Hub SHALL support the modern process IDs nenjim.registry.service, nenjim.journal.service, assetaz.ticker.default, jupiter-perps-alarm.default, evelyn.status.prod, evelyn.status.test, evelyn.iou-burner.prod, evelyn.liquidity.prod, evelyn.perps.default, nenjim.javafx-runtime.service, evelyn.mission-control.default, and nenjim.process-manager.default through implementation-only construction capability that creates no process instance during validation. After passive composition, the Hub SHALL visit every configured entry after Registry in declared order, beginning with Journal. At each entry it SHALL construct only that process and any explicitly composed process-specific passive dependencies or administration view, register the process under the exact configured ID, resolve it through the canonical NenjimProcess contract where applicable, call start(), and record the ID only after successful return.

The production IOU burner SHALL receive the already constructed Production Evelyn status service, and SHALL require both Ticker and evelyn.status.prod to precede evelyn.iou-burner.prod. EMC SHALL receive the already started evelyn.perps.default service, which SHALL precede EMC in the deployment autostart list. The configuration SHALL be the complete manually ordered process dependency closure. The Hub SHALL not discover, insert, recursively construct, reorder, or automatically start dependencies. A process omitted from [AUTO_START] SHALL not be constructed, registered, started, or recorded, even when its implementation is available. Legacy process prototypes outside the modern Hub graph SHALL not be selectable.

Scenario: Configured process starts successfully

  • WHEN a configured process entry is reached and its dependencies are already available
  • THEN that process is constructed, registered, started, and recorded before the next entry is reached

Scenario: Process is omitted

  • WHEN a known process ID does not appear in [AUTO_START]
  • THEN no instance of that process is constructed or registered and its lifecycle is never started or recorded

Scenario: Jupiter Perps Alarm is selected

  • WHEN jupiter-perps-alarm.default is explicitly listed after its required predecessors
  • THEN the otherwise inactive modern alarm process is constructed, registered, started and recorded at that exact position

Scenario: Dependency order is invalid

  • WHEN a selected process is reached before a process dependency required by its current constructor or startup behavior
  • THEN construction or startup fails clearly without implicit dependency construction, repair, or reordering

Scenario: JavaFX processes are omitted

  • WHEN a valid headless plan omits nenjim.javafx-runtime.service, evelyn.mission-control.default, and nenjim.process-manager.default
  • THEN none of those objects is constructed or registered and the JavaFX toolkit remains uninitialized by the Hub

Scenario: Renamed status services retain dependency wiring

  • WHEN evelyn.status.prod and evelyn.status.test are listed after Ticker and before Mission Control
  • THEN the Hub constructs separate Production/Test status services, registers the renamed IDs, and injects the corresponding typed service views into Mission Control in the configured order

Scenario: Deployment still contains an old status ID

  • WHEN a private deployment configuration contains evelyn.service.prod or evelyn.service.test
  • THEN validation rejects the unknown ID before startup; deployment migration replaces only that ID with evelyn.status.prod or evelyn.status.test, preserving selection and order

Scenario: Liquidity is explicitly selected

  • WHEN evelyn.liquidity.prod is reached in a valid startup plan
  • THEN the Hub loads its runtime configuration, binds the dedicated signer/wallet and Jupiter service to each other, constructs direct Raydium access and registers/starts the liquidity process without inserting a Ticker or status dependency or reordering the plan

Scenario: Production burner has its reference-price dependency

  • WHEN evelyn.iou-burner.prod is reached after Ticker and evelyn.status.prod
  • THEN the Hub injects the corresponding Production status service for buyback price decisions

Scenario: Production burner precedes its status dependency

  • WHEN the burner is reached without a previously constructed Production status service
  • THEN construction fails clearly without creating or starting the omitted dependency or the burner

Scenario: EMC has its Perps dependency

  • WHEN evelyn.perps.default appears before EMC in the deployment's ordered autostart list
  • THEN the Hub registers and starts that service and injects its service view into EMC

Scenario: EMC precedes Perps

  • WHEN EMC is selected without an earlier Perps process
  • THEN construction fails clearly without inserting or starting that dependency