Async Initialization¶
Requirements¶
Requirement: Single-Point Async Preparation¶
The system SHALL provide a single prepare() function that coordinates all
framework initialization asynchronously.
Scenario: Basic application initialization¶
WHEN an application calls
prepare()with anAsyncExitStackTHEN the system initializes distribution detection, platform directories, configuration, and inscription
AND returns an immutable
Globalsdataclass with all framework state
Scenario: Custom application metadata¶
WHEN an application provides an
ApplicationInformationinstance toprepare()THEN the system uses the provided metadata for platform directory derivation
AND configuration loading uses the application name for environment variable prefixes
Scenario: Custom configuration acquirer¶
WHEN an application provides a custom
AcquirerAbcimplementation toprepare()THEN the system uses the custom acquirer for configuration loading
AND all other initialization steps proceed normally
Scenario: Resource cleanup on exit¶
WHEN the application’s
AsyncExitStackis closedTHEN all resources registered during initialization are properly cleaned up
AND cleanup occurs in reverse registration order
Requirement: Async Resource Management¶
The system SHALL integrate with AsyncExitStack for proper lifecycle management
of async resources.
Scenario: Concurrent resource initialization¶
WHEN external async resources are registered during
prepare()THEN those resources are managed by the provided
AsyncExitStackAND cleanup is guaranteed even if initialization partially fails
Scenario: Exit stack propagation¶
WHEN
prepare()completes successfullyTHEN the
AsyncExitStackis stored inGlobals.exitsAND application code can register additional resources via
Globals.exits