From review of #442 (comment). Confirmed still valid at HEAD. Target: L1 nexum-runtime.
The Runtime trait declares components(self) -> ComponentsBuilder<ChainBuilder, StoreBuilder, ExtBuilder, LogsBuilder> (four builder type params). CoreRuntime's impl (preset.rs:94) still returns the 3-param ComponentsBuilder<ProviderPoolBuilder, LocalStoreBuilder, ()>, relying on the L = LogPipelineBuilder default to satisfy Self::LogsBuilder.
It compiles only because that default happens to match. It reads as though the preset builds no log pipeline at all, and the moment LogsBuilder becomes something other than the default this turns into a compile error at a line that looks unrelated.
Change
fn components(self) -> ComponentsBuilder<ProviderPoolBuilder, LocalStoreBuilder, (), LogPipelineBuilder> {
Acceptance criteria
CoreRuntime::components names all four builder params explicitly; no reliance on the L default.
The
Runtimetrait declarescomponents(self) -> ComponentsBuilder<ChainBuilder, StoreBuilder, ExtBuilder, LogsBuilder>(four builder type params).CoreRuntime's impl (preset.rs:94) still returns the 3-paramComponentsBuilder<ProviderPoolBuilder, LocalStoreBuilder, ()>, relying on theL = LogPipelineBuilderdefault to satisfySelf::LogsBuilder.It compiles only because that default happens to match. It reads as though the preset builds no log pipeline at all, and the moment
LogsBuilderbecomes something other than the default this turns into a compile error at a line that looks unrelated.Change
Acceptance criteria
CoreRuntime::componentsnames all four builder params explicitly; no reliance on theLdefault.