Context
The current ghcr.io/shortarrow/ivi-cli-mock image bundles a
self-contained .NET runtime (~80 MB compressed). A NativeAOT
build would yield a substantially smaller image with faster
cold start — attractive for e2e tests that spin up a fresh
container per scenario.
ADR 0018 §Out-of-scope
deferred this pending an AOT-compat audit.
Dependencies needing AOT audit
- Serilog + sinks (file / console / Compact JSON formatter)
- OpenTelemetry SDK + Exporter.OpenTelemetryProtocol +
Instrumentation.AspNetCore
- ASP.NET Core 10 minimal API (for
ivicli api start; not used
inside the mock-only container, but the binary still references
it)
- Tomlyn
- Plugin loader: AssemblyLoadContext + reflection-based discovery
(ADR 0013)
Acceptance
- AOT-compat audit completed; tracked decisions per dependency.
IVICLI_MOCK_ONLY=1 build path can publish AOT.
- Container image size drops to <30 MB compressed.
- Smoke test (existing pr-docker-smoke.yml) passes against the
AOT image.
Context
The current
ghcr.io/shortarrow/ivi-cli-mockimage bundles aself-contained .NET runtime (~80 MB compressed). A NativeAOT
build would yield a substantially smaller image with faster
cold start — attractive for e2e tests that spin up a fresh
container per scenario.
ADR 0018 §Out-of-scope
deferred this pending an AOT-compat audit.
Dependencies needing AOT audit
Instrumentation.AspNetCore
ivicli api start; not usedinside the mock-only container, but the binary still references
it)
(ADR 0013)
Acceptance
IVICLI_MOCK_ONLY=1build path can publish AOT.AOT image.