Axial 0.9.3
Fix
Axial's diagnostics and outcome types no longer depend on F#'s reflection-based structured printer, which NativeAOT
and trimming remove. Under NativeAOT, FiberRegistry.DumpAt, FiberDump.renderAt, telemetry fiber-status tags,
Exit.toResult failure messages, and process error rendering could throw or print the wrong text. So could any
application code calling ToString() on an Exit, Cause, or FiberStatus.
Public unions now have hand-written ToString() overrides:
Exit,Cause,FiberStatus,FiberId,FiberDump,LogLevel,StreamStep, andAttributeValueProcessError,ProcessEvent,InputSource, andOutputTarget;ProcessResultrenders a one-line summaryHttpError,Method, andRequestBody;HttpResponserenders a one-line summaryFileSystemError,EnvironmentVariableError, andBaseRuntimeError
Error types use their existing describe text. Payloads inside Exit and Cause render with their own ToString,
so application error types should override it too.
New
AXG006 (ReflectionFormatting) in Axial.Guardrails reports formatting that needs the structured printer.
It covers ToString(), string, interpolation holes, %A, and boxed arguments to String.Format and similar
methods, applied to F# unions, records, FSharp.Core collections and options, and type parameters. It runs in
application and library projects. See the Guardrails notes for the rule and the axial-allow-reflection-format
directive.
The NativeAOT probe (scripts/run-aot-probe.sh) now renders these types, dumps a fiber registry, and runs a deep
synchronous loop, so a regression fails the release checks.