Full ship pipeline — run tests, update docs, CI safety checks, commit, and push in one go.
One command to ship changes: test, lint, CI safety, docs check, commit, push.
STOP on any failure — do not continue to the next phase if the current one fails.
Before running the test suite, check that tests cover the current changes:
git diff --name-only to see changed source filessrc/, check if corresponding tests exist in tests/source .venv/bin/activate && pytest --tb=short
If tests fail, STOP and report which tests failed. Do NOT continue.
source .venv/bin/activate && ruff check src/ tests/
source .venv/bin/activate && ruff format --check src/ tests/
If lint or format fails, fix automatically (ruff check --fix, ruff format) and re-run. If unfixable, STOP.
CRITICAL — These checks prevent local-passes-but-CI-fails scenarios. Run these as a subagent in parallel with Phase 3 if possible.
git ls-files --others --exclude-standard src/
If any untracked .py files exist under src/, check whether they are imported
anywhere in tracked files. If imported, they MUST be staged — otherwise CI will
fail with ModuleNotFoundError.
source .venv/bin/activate && ruff check --target-version py312 src/ tests/
CI runs Python 3.12. When from __future__ import annotations is active, imports
used only in type annotations become unused at runtime and ruff 3.12 flags them
as F401. Add # noqa: F401 to those imports or use a TYPE_CHECKING guard.
For every file in git diff --cached --name-only that has new import or from ... import lines,
verify the imported module exists in the repo:
# Example: if file imports agent_orchestrator.core.foo, check:
git ls-files src/agent_orchestrator/core/foo.py
If the imported module is not tracked, STOP and report.
Check that docs are in sync with code changes:
git diff --name-only to see changed filessrc/ changed, check that relevant docs (CLAUDE.md, README.md, docs/) reflect the changesgit status and git diff --stat to review changesCo-Authored-By: Claude Opus 4.6 <[email protected]>git push
After all phases, produce a ship report:
SHIP REPORT
===========
Tests: [PASS/FAIL] (X passed, Y warnings)
Lint: [PASS/FAIL]
Format: [PASS/FAIL]
CI Safety: [PASS/FAIL] (untracked imports, cross-version lint, import integrity)
Docs: [SYNCED/UPDATED] (list files if updated)
Commit: [hash] message
Push: [OK/FAIL]