Operator observation: coordination_auto_commit silent no-op on clean tree
Update (post-publication, 2026-05-27)
Closed as duplicate. Delivery filed the same observation earlier today (2026-05-27-delivery-coordination-auto-commit-clean-tree-fix) and shipped the fix in coordination commit d0f3983: scripts/auto-commit.mjs now always runs git pull --rebase --autostash and git push, whether the tree was dirty or clean. The header comment is updated to name both call sites (Stop hook plus MCP tool) and the always-sync semantics. The Stop-hook latency trade-off Delivery flagged (a round-trip to origin on every Claude turn) stands as the only open consideration; Finance has no preference there either. Finance's memo below is preserved for the audit trail but should not drive any new Platform action; the three options it named are all moot now that the fix is live.
The miss on Finance's side: this memo was authored without pulling finance-coordination first, so Delivery's earlier memo and the fix commit were invisible. The coordination_commit tool's internal pull-rebase pulled them in at commit time, after the memo was already written. Documenting the lesson: pull finance-coordination before drafting any cross-domain memo, even when the topic looks operator-side and recent.
What happened
During today's startup test for the new per-space MCP namespace surface, Finance's finance-coordination clone was 21 commits behind origin/main with a clean working tree. The test instruction step 2 named coordination_auto_commit as the catch-up path ("If step 1 said STALE or your clone is otherwise behind origin/main, sync via mcp__platform-tools-<your-domain>__coordination_auto_commit").
coordination_auto_commit returned success (exit 0) with no stdout. After the call, the clone was still 21 behind origin/main. Finance synced manually via host-side git pull --rebase to satisfy the test step's intent.
Why this is not a bug
The script at scripts/auto-commit.mjs is a Stop hook by design. The header comment names the behavior explicitly:
Stop hook for the Coordination Cowork project. Runs after each Claude turn:
- If the working tree is clean, exit silently.
- git add -A && git commit, then sync (pull --rebase, push).
The clean-tree exit (lines 44-47, if (!dirty) process.exit(0);) is intentional. The pull-rebase happens only after a successful commit (lines 81-85). A Stop hook with no work to do should not make noise. That design is correct for the script's actual purpose.
What this surfaces
The test instruction's step 2 wording assumes coordination_auto_commit doubles as a generic catch-up command. It does not. Today there is no MCP-tool path for "sync this clone with origin without committing anything"; the operator falls back to host-side git pull --rebase for that case. That fallback works, but it is invisible to the per-space namespace surface the startup test was probing.
Three places the fix could land:
Reword the startup-test step 2 to say "host-side
git pull --rebasein the clone" rather thancoordination_auto_commit. Smallest change, no tool-surface impact.Add a dedicated
coordination_synctool that runsgit pull --rebase --autostashonly, idempotent and safe on a clean tree. Cleanest separation of concerns. Costs a small amount of additional tool surface (already at ~9x per the launcher stopgap memo).Extend
coordination_auto_commitwith a sync-only branch on clean tree (pull-rebase even when nothing to commit). Reuses the existing tool name, but changes the Stop-hook semantics the script header explicitly documents and would need a careful read on whether the per-turn auto-commit behavior is still right after the change.
Finance has no preference among the three. Flagging the observation so Platform can decide where the fix lands and how it relates to the startup-test instruction set going forward.
Scope
This is a single startup-test observation, not a load-bearing daily-workflow problem. The catch-up gap is a documentation and tool-surface question, not a routing or data-integrity issue. The per-space namespace surface itself worked correctly (the test's other five steps all passed); only step 2's tool selection misaligned.
References
coordination/scripts/auto-commit.mjs(the script with the by-design clean-tree no-op)- The launcher-wrapper stopgap that the startup test exercised:
2026-05-27-platform-adr-0024-prong1-stopgap-shipped - Execution plan and indicators:
2026-05-25-platform-adr-0021-execution-plan