native macOS codings agent orchestrator prowl.onev.cat

Canonicalize child diff roots at invocation instead of caching them master

Third review round. The refresh-pipeline root cache from the previous round had a startup window (the canonical root only landed after the whole child batch, including network PR fetches, completed) and two cache-lifecycle hazards (a stale in-flight refresh repopulating pruned entries; a transient resolution failure discarding a known root). All three share the cache as their root cause, so the cache is gone: - The diff effects canonicalize a child target's repository root at the moment the action runs — AppFeature.canonicalizedDiffTarget runs gitClient.repoRoot(childDirectory) inside openDiffEffect and openOutgoingChangesEffect, the same normalization that keys registered repositories on load. Every child diff invocation gets a current root; a failed lookup keeps the metadata fallback. Worktree targets are untouched. - Reloads that leave no workspace children now cancel the in-flight children refresh, and workspaceChildrenInfoLoaded filters updates to current children, so a late batch cannot repopulate just-pruned maps. Claude-Session: https://claude.ai/code/session_01WoqhZai4i4izqbUZLtbjde