Forking a session now carries the parent's task list over instead of starting empty.
What's wrong with this entry?
Forking a session now copies the parent's task entries and its high-water mark into the fork, so the new session starts with the same task list instead of an empty one.
- each entry is written with an if-absent precondition, so an existing entry in the fork is not overwritten
- a bounded number of copies run concurrently, and copying stops at a cap with "[tasks] carry to fork stopped at the cap"
- an individual failure logs "[tasks] carry to fork skipped" and does not abort the rest
- runs only on the newer key/value storage path; when no such backend is attached to the session, the copy is not reached
[tasks] carry to fork stopped at the cap
Strings lifted out of the shipped bundle, so the claim above can be checked against them.