- Protocol 8: ProcessInfo with pty/pipe groups, create_pty, get, list { mode },
required features; drop migrate(), the features fallback and the rename
feature check (UnsupportedError).
- Keep daemon request errors (kind "request") apart from connect/startup
failures; PersistentPty.get uses get { id } and maps unknown ids and pipe
processes to NotFoundError.
- daemon.wait on its own connection with no timeout; interrupting closes it.
- Pipe process API for Shell: createPipe, waitPipe, getPipe, signalPipe,
setPipeMetadata, terminatePipe, listPipes.
- Fake daemon speaks v8 including pipe requests.
Restores the opt-in default from before #60478. The schedule loop still runs in every server process and keeps its leader election; it only fires schedules in locations that enable the flag.