The history layer itself checks out — claudeHome gone, ChatIdentity carries both halves,
chatIdentity throws rather than falling back, identity resolved before cwd, and the opencode
path keeping getOwnerHomeDir is correct and documented.
But resolveBaseCwd's first parameter changed meaning from email to home, and three callers
outside the commit still pass an email: pipeline-executor.ts:499 and :591, and
agent-handoff/deliver.ts:36. Both parameters are string, so tsgo had nothing to say — exactly
the wrong-but-well-typed case flagged as uncertainty (2).
Before, the function resolved its own root via getOwnerHomeDir(email) and passing an email was
correct. Now the argument IS the home, so any task step or handoff with a tilde, a relative
cwd, or no cwd gets a relative path built from an email address, resolved against the platform
process's working directory — the repo. Absolute paths still work, which will make it look
intermittent.
Live tonight on the owner's own features, not a member issue. Fix is to pass
getOwnerHomeDir(email) at those three sites, the way agent-runner.ts now does.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>