One error, three collision paths.
A live Session keeps the superseded graph mounted.
Both register Service, Event, Builtin, and Tool provider IDs.
Both root-register pwsh; the second preset fails.
Current source gives tools a standing scope.
Each preset owns one standing scope.
Agents inherit their preset scope.
tools.register() writes to the calling layer.
Duplicates inside one layer still fail loudly.
tool-pwsh from a shipped preset.Upgrade one complete graph, then prove standard and cordis Sessions can both call their scoped tool before and after disposal.
Choose the contract by plane.
Equivalent manifests may share; unequal manifests fail.
The same name may exist in standard and cordis without global dedupe.
Preserve the failed RPC and never patch shipped files in place.
Upgrade proof is an execution sequence.
- Standard ACreate one Session and run harmless
pwsh. - Cordis BSwitch defaults while A stays live; create and execute.
- Return AProve its scoped tool survived.
- Dispose BCreate standard C, execute, then cold-restart and repeat.
- Copied-preset provider report #4675
- rc.2 pwsh collision #4798
- rc.2 Host provider registry
- alpha.1 standing preset scopes
- alpha.1 scoped tool layers
Keep the complete recovery and ownership contract.
The canonical guide covers stale generations, Host holders, rc.2 tool collisions, safe upgrade, scope isolation, and disposal-order tests.
Read the complete guide