jason.woltje
88d9cf750f
feat(sessions): sessionForkFrom - branch conversations from a common ancestor (#33)
- task schema: optional sessionForkFrom (source session name); requires
session target; self-fork rejected
- runner: resolves source newest .jsonl (fail 4 if none/outside dataRoot);
passes MOSAIC_SESSION_FORK + MOSAIC_SESSION_DIR; result records lineage
- pi adapter: --fork <source> --session-dir <target> when forking;
ephemeral default unchanged; plain session resume unchanged
- compose passthrough; RELEASE -> 0.0.7 (adapter changed)
- suite +9 cases (58 total): plumbing via mock stderr, validation
negatives, live fork - child recalls ancestor code word, ancestor
session file untouched
Closes #33