This page captures business rules enforced by this library, covering entry-point orchestration, argument resolution, command-line parsing, dependency registration, logging, and data-access composition.
Argument validation runs before any application dependency registration or resolution.
Trigger
ProgramRunnerBase.Run() invoked.
Enforcement
ProgramRunnerBase.Run()
Outcome
RegisterAppDependencies/container build/app.Run() never execute if arguments are invalid.
Source
Console\SAIF.Console\Console\ProgramRunnerBase.cs
BR-WIN-002 Unconfigured argument properties must be convertible or explicitly configured¶
Field
Value
Statement
Every settable property on an argument container not explicitly configured via BuildArgumentResolvers must be either auto-resolvable (IConvertible) or flagged as a validation error.
Argument-container properties whose type implements IConvertible are auto-registered for parsing/validation even without an explicit BuildArgumentResolvers setup call.
Trigger
HandleUnconfiguredArguments runs during ResolveArguments().
Argument-container properties whose type does not implement IConvertible and are not explicitly configured are a validation failure, not a silent skip.
An argument configured as required (the ArgumentResolver default; not overridden via NotRequired()) that is absent from the parsed command line is a validation failure.
Trigger
TryResolveArgument invoked for a required, unresolved argument.
BR-WIN-010 Argument value conversion failures fail validation¶
Field
Value
Statement
An argument value present on the command line that fails its configured propertyValueParser conversion is a validation failure, not a thrown exception up the stack.
Enforce.ArgumentNotNull throws if currentUserId is null.
Source
Console\SAIF.Console\Console\AutofacExtensions.cs
BR-WIN-014 Log file environment variables map to fixed log types¶
Field
Value
Statement
Machine-level environment variable names are mapped to a fixed LogType set (file0–file4) by exact lower-cased name match; any non-matching name maps to LogType.Custom.
Trigger
LogWriter constructed by ConsoleLogService.
Enforcement
LogWriter constructor
Outcome
LogType assigned from the knownLogTypes lookup dictionary, defaulting to Custom.
Source
Console\SAIF.Console\Console\LogWriter.cs
BR-WIN-015 SQL Server has no stateless factory variant¶
Field
Value
Statement
SqlServerConfig's unit-of-work factory is always the single named "sqlSever" factory — SQL Server has no stateless-session variant in this framework (unlike Oracle).
Trigger
SqlServerConfig.FactoryName evaluated during RegisterUnitOfWork.
Enforcement
SqlServerConfig.FactoryName
Outcome
The Stateless flag inherited from DatabaseConfig has no effect on which factory a SqlServerConfig resolves.
No ExitCode = 5 type is defined in this library; exit code 5 is reserved by BR-WIN-005's generic unhandled-exception catch clause in ProgramRunnerBase.Run().
ConsoleLogService's log-file discovery does not deduplicate machine environment variables pointing at the same file path; a commented-out duplicate-path check exists in source but is inactive and is not documented as active behavior.