Skip to content

SOP-EXEC-git-push-discipline-v1.0

1. Purpose

Define the push cadence and commit trailer standard for all eco|monetize™ agents committing to git repositories. Two problems this SOP closes:

  1. Backup gap: Commits were backing up locally (9 unpushed commits observed 2026-04-22) with no governance requiring immediate push. Local-only commits are unprotected against machine failure and invisible to the CEO audit trail.
  2. Attribution gap: git log identified commits by Claude model version (e.g., Claude Opus 4.7) but not by specific agent. Rick could not answer "which agent did this?" from git history alone.

This SOP governs per-commit push protocol and the Co-Authored-By trailer format that makes agent attribution auditable in perpetuity.

2. Scope

Applies to all 21 eco|monetize™ agents who commit to any repository in the eco-monetize GitHub org. No exceptions by department, model tier, or session type. Applies on main and any intentionally shared feature branches.

3. Per-Commit Push Protocol

After every CEO-authorized commit to main, the committing agent immediately runs:

git push origin main

Push immediately after the commit — not deferred to session end.

Rationale: Per-commit push provides real-time backup. The daily 23:59 automated sync (SOP-DEV-daily-session-export-v1.0) is a safety net, not the primary mechanism. Two independent guarantees are better than one.

4. Co-Authored-By Trailer Standard

Every commit must include a Co-Authored-By trailer identifying the agent and model:

Co-Authored-By: {Agent Display Name} ({agent-id}) via {Claude Model Name} <noreply@anthropic.com>

Examples:

Co-Authored-By: Jordan (project.manager) via Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Eva (chief.staff) via Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: SOP Manager (sop.manager) via Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Dave (cdo) via Claude Opus 4.7 <noreply@anthropic.com>

Field definitions:

Field Value Source
Agent Display Name Display name per agent contract CLAUDE.md Section 4 / agent contract
agent-id Canonical agent ID (kebab-case) CLAUDE.md Section 4
Claude Model Name Model tier in use Model tier per agent contract + CLAUDE.md Section 15

Model name values: Claude Opus 4.7 / Claude Sonnet 4.6 / Claude Haiku 4.5

Agent display name reference (Layer 1):

agent-id Display Name Model
chief.staff Eva Claude Opus 4.7
project.manager Jordan Claude Opus 4.7
cmo Michelle Claude Opus 4.7
cdo Dave Claude Opus 4.7
coo Morgan Claude Opus 4.7
cro Marcus Claude Opus 4.7

Layer 2 agents: use display name per agent contract frontmatter.

Audit use: git log --pretty=format:"%h %s %(trailers:key=Co-Authored-By)" produces a per-agent activity log answering "which agent committed this?" for any commit in history.

5. Exceptions

5.1 Non-main branches (work-in-progress)

Feature, investigation, and experimental branches: push only if the branch is intentionally shared with another agent or the CEO. Do not push every WIP commit on a private branch.

5.2 Rapid-succession commits

When making multiple small iterative commits within a single logical unit of work (e.g., sequential file edits during one session step), push once at the end of the logical unit — not after every individual commit. Guideline: commits made less than 5 minutes apart may be batched to a single push at the natural boundary.

5.3 Pre-commit hook failure

If git commit fails due to a pre-commit hook, do not push. Resolve the hook failure, re-stage the files, create a new commit. Do not use --no-verify to bypass hooks — see feedback_git_hygiene_standards.md.

5.4 Rebase and history rewrite

Rebase and force-push operations require CEO approval + a backup tag per feedback_git_hygiene_standards.md rule 7. Per-commit push does not apply to these operations. They are not part of normal commit flow.

5.5 Network or auth failure

If git push fails due to network, auth, or remote rejection: log the failure, flag to CEO at session close. The 23:59 daily auto-sync (SOP-DEV-daily-session-export-v1.0) serves as safety net. Do not retry in a loop or use force-push to recover.

6. Failure Handling

Failure Agent action
git push auth error Log the failure; flag to CEO at EOD check-out
git push network error Log the failure; daily auto-sync is safety net
git push remote rejection (non-force) Flag to CEO immediately — do NOT force-push
Pre-commit hook failure Fix hook issue; create new commit — never --no-verify
Co-Authored-By trailer missing on unpushed commit Amend the commit before pushing
Co-Authored-By trailer missing on already-pushed commit Note correction in the next commit message

7. Authority

Decision Authority
Waiving per-commit push for a session CEO explicit direction only
Force-push to main CEO approval + backup tag required
Adding a new exception to this SOP sop.manager drafts → Jordan peer review → CEO approval
Patch-level fix to this SOP sop.manager autonomous per SOP-OPS-sop-change-management-v1.0 Section 4

8. Escalation Path

  • Push failure unresolved after session: flag in EOD Slack check-out
  • Force-push attempted without CEO approval: chief.staff + CEO per CLAUDE.md Section 11
  • Systematic push debt (>3 commits unpushed at session close): flag in EOD check-out; sop.manager files SOP Delta if pattern is systemic across agents

Change Log

Version Date Change
v1.0 2026-04-23 Initial draft — sop.manager. CEO-approved direction per Jordan dispatch 2026-04-22. Covers per-commit push + Co-Authored-By agent-ID trailer.

Owner: sop.manager Executive sponsor: chief.staff Status: Draft — pending Jordan peer review and CEO approval Version: v1.0