Problem
InMemoryRunnerRegistry (src/runners/registry.ts) has register() but no unregister() method. When #3180 adds dynamic runner registration (hot-pluggable agents), there is no way to remove a runner at runtime.
Current behavior
- First registered runner becomes
defaultRunner — permanently
- No way to deregister a crashed/unavailable runner
- If the default runner goes down,
getDefault() returns a dead reference
Missing capabilities
unregister(name: string): boolean — remove a runner
setDefault(name: string): void — explicit default override
has(name: string): boolean — existence check without get()
Impact
Discovered during
Code quality sweep on src/runners/ (pre-#3180 audit).
Problem
InMemoryRunnerRegistry(src/runners/registry.ts) hasregister()but nounregister()method. When #3180 adds dynamic runner registration (hot-pluggable agents), there is no way to remove a runner at runtime.Current behavior
defaultRunner— permanentlygetDefault()returns a dead referenceMissing capabilities
unregister(name: string): boolean— remove a runnersetDefault(name: string): void— explicit default overridehas(name: string): boolean— existence check without get()Impact
Discovered during
Code quality sweep on
src/runners/(pre-#3180 audit).