Files

3.4 KiB

MODIFIED Requirements

Requirement: NenjimHub owns composition and runtime startup

NenjimHub SHALL be the global runtime owner and SHALL expose start() throws Exception plus an immutable ordered snapshot of successfully started process IDs. It SHALL be neither a component nor a process and SHALL not register itself. Its only accepted startup attempt SHALL construct the Registry subsystem, start the Registry process first, register it as nenjim.registry.service, construct and register the Journal subsystem as nenjim.journal.service, start Journal second, and continue to the complete hardcoded business component set from issue #76 only after Journal startup succeeds. The Hub SHALL then resolve only the explicitly enabled business IDs through NenjimProcess, start them in dependency-safe order, announce the existing online point, and preserve the existing blocking wait. Registration SHALL never imply startup, and both the Registry and Journal managers SHALL remain distinct passive, unregistered handles retained privately by the Hub.

Scenario: Infrastructure starts before business composition

  • WHEN the Hub performs its first startup attempt
  • THEN it starts, registers and records Registry first, then registers, starts and records Journal before constructing components in the business graph

Scenario: Registry is process-discoverable

  • WHEN the Registry registration has completed
  • THEN the same object is retrievable as both NenjimRegistryService and NenjimProcess

Scenario: Journal is process-discoverable

  • WHEN the Journal registration has completed
  • THEN the same object is retrievable as both JournalService and NenjimProcess under nenjim.journal.service, while its manager is not registered

Scenario: Required hardcoded bindings are registered

  • WHEN Hub composition completes
  • THEN Journal and all component IDs and implementation choices enumerated by issue #76 are present exactly as configured, including intentionally inactive components and excluding both service managers

Scenario: Explicit startup subset preserves order

  • WHEN Hub startup succeeds through the business-process phase
  • THEN successful process order is nenjim.registry.service, nenjim.journal.service, assetaz.ticker.default, evelyn.service.prod, evelyn.service.test, evelyn.iou-burner.prod, and evelyn.mission-control.default

Scenario: Deliberately inactive processes remain inactive

  • WHEN Hub startup reaches its online point
  • THEN jupiter-perps-alarm.default and the dormant Composer, Process Manager, Test Tool, Soda Task Manager, and Suwimo Client paths have not been started

Scenario: Journal failure is fail-fast

  • WHEN Journal process startup throws
  • THEN Registry remains the only recorded process, no business component is constructed or started, the exception propagates, and the Hub neither announces online nor enters its final wait

Scenario: Hub start is not retried

  • WHEN any first Hub startup attempt has begun and start() is requested again
  • THEN the later request fails with IllegalStateException whether the first attempt succeeded or failed

Scenario: Later startup failure is fail-fast

  • WHEN a business process startup throws
  • THEN the exception propagates, no later process starts, the Hub neither announces online nor enters its final wait, and no generic rollback or retry is attempted