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:
- 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.
- Attribution gap:
git logidentified 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:
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:
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