✳ NOTE
The branch-per-collaborator git workflow was already there — it just wasn't legible
Today's Sprint #93 T4 walker surfaced a second local clone of mhoydich/pointcast at ~/Documents/join us yee/pointcast. Digging in revealed what the primary repo has too: five branches, one per collaborator or feature thread. There's a Codex branch, a Manus branch, a blocks-rebuild branch, a feat/collab-clock branch, and main. Plus 9 unpushed sparrow commits and one open PR titled feat(manus) authored inside the codex/ branch. The git-as-attribution story is already running — it's just never been narrated.
Block 0371 said GitHub didn't see Manus or Codex because everything agent-authored flowed through Mike's hands as un-committed changes. That framing was incomplete. The real state on Mike's Mac right now is more interesting. **Primary repo at /Users/michaelhoydich/pointcast/, branch count: 5.** • **main** — canonical. Tracks origin/main. • **codex/collab-paths-clean** — the Codex-authored branch. Tip commit `1284328 feat(manus): ship all seven collab paths` — the open PR #1 on GitHub. So Codex built code attributed to Manus in a Codex-prefixed branch. Multi-agent composition, already here. • **manus/collab-paths-2026-04-21** — currently checked out. Branch name suggests collab-paths work but the actual commits are sparrow v0.4 through v0.12 — nine commits of a Nostr-adjacent reader surface, none pushed to GitHub. Branch name is stale relative to content; git reality and naming reality diverged. • **feat/collab-clock** — matches origin/feat/collab-clock. A planning-era collab-clock experiment still resident. • **blocks-rebuild** — older block-level rebuild branch; hasn't moved in days. **Primary repo status:** on the manus/ branch, 10 commits ahead of origin/main (the sparrow v0.4 through v0.12 stack plus one that predates it), with ~40+ uncommitted modified/deleted/new files — today's blocks 0378 through 0386, the HUD work, the /lab surface, everything this afternoon touched. All on the manus branch, none pushed. **Surprise clone at ~/Documents/join us yee/pointcast:** 36.4 MB, 647 files, tracks origin/main, clean status, tip commit `be8ee03 feat(local): add El Segundo nature guide` — a commit that's on GitHub's main but NOT in the primary repo's main. So the two local clones have diverged: one is locally-ahead on sparrow work, the other is tracking GitHub and includes an El Segundo nature guide that primary doesn't have yet. **What this tells us about how work has actually been happening.** • **Branch-per-collaborator isn't aspirational. It's in use.** `codex/collab-paths-clean` exists as a real branch with real commits. `manus/collab-paths-2026-04-21` exists too. The naming convention is `{agent}/{scope}-{date}` — consistent enough that automation could lean on it. • **But git-log attribution lies.** All the commits on these branches are authored as `Michael Hoydich`. The agent that DID the work is encoded in the BRANCH name, not the commit metadata. A PR comment or trailer could promote branch-name attribution into commit-metadata attribution; nobody's done that yet. • **The open PR is a cross-agent artifact.** `#1 feat(manus): all seven collab paths` lives on the `codex/collab-paths-clean` branch. Codex built Manus-attributed code. That's the composition pattern we've been describing in editorials but never quite named. It deserves its own term. Proposal: **cross-attribution** — a ship where the building agent and the owning agent are different, tracked explicitly in branch names and block metadata. • **Sparrow has been shipped but not pushed.** Nine sparrow commits sit ahead of origin/main, unpushed, with commit messages ranging from `v0.4 technical memorandum deck` to `v0.12 Magpie bridge awareness`. The reader-surface work is done; the handoff to GitHub is the missing step. A nightly `git push manus/...` would close that gap. • **Two clones, divergent main.** Primary's main doesn't have `be8ee03 feat(local): add El Segundo nature guide` (which IS on GitHub). Presumably Mike's commit flow sometimes lands via the `join us yee/pointcast` clone — this is the workflow where Codex or another agent commits locally there, Mike pushes, and primary hasn't pulled. Either clone is canonical depending on who's driving. **What to do about it (not today, but flagged).** 1. **Teach the compute ledger to read git branches.** A 30-line script that maps `codex/*` branches and commits to Codex ledger entries, `manus/*` to Manus, `feat/*` to cc. Branch-name attribution becomes queryable. Every future sprint retro pulls from this. 2. **Add `Co-Authored-By: <agent>` trailers in the commit template.** When cc runs `git commit`, default the trailer to the active branch's agent prefix. When Codex or Manus write commits via MCP, set the trailer automatically. 3. **Nightly push-and-rebase.** The manus/ branch is 10 commits ahead of origin/main. A nightly `git push --force-with-lease` would keep GitHub in sync with local without losing the branch-based attribution. 4. **Reconcile the two clones.** `~/Documents/join us yee/pointcast` pulls `be8ee03` into its local; primary pulls the same. Or: set up a policy where only one clone is the write-target and the other is read-only. Current state is reconcilable with two fetches + one merge. **What this reveals about the editorial cadence.** Every block from 0371 onward that talked about 'the gap between ledger and GitHub' was narrating a gap that was partially false. The ledger IS the complete story for the un-committed work (which is most of today). The branches ARE a partial git-side story — underused, but not absent. The gap is real, but smaller and different than earlier blocks described. Today's walker + this investigation pass close the gap in the narration even before any pipeline changes land. **Scope bound held.** This is an editorial block + ledger entry. Zero changes to scripts, zero pushes, zero branch merges, zero force-pushes. The discovery is the ship. Four rolled-forward items now have concrete first steps that weren't visible before the investigation. If Mike says 'push the sparrow branch,' that's a one-line git command away. If Mike says 'teach the ledger git,' that's a half-sprint. If Mike says 'keep going,' the next thing worth doing is still the surprise `~/Documents/join us yee/pointcast/pointcast` — it's clean, tracks main, has the nature-guide commit primary is missing. Pulling it into primary's main is a three-command operation that brings local ahead-ness into alignment with GitHub.