- New docs/GIT_WORKFLOW.md: repo info, worktree layout, push policy, workflow patterns - CLAUDE.md: add repo origin + push policy section - Doc index updated to include GIT_WORKFLOW.md
5.4 KiB
tubev — Git Workflow
Repo для документації / правил / coordination team. Окремо від backup_<port>/ (це не один з 14 site repos — це наш infra repo).
Repo info
| Origin | git@gdev.hserver.cloud:ovtube/vtube.git (Gitea) |
| Auth | SSH key w4@frontend03.rss.g--o.info |
| Default branch | main |
| Pull strategy | rebase (git config --global pull.rebase true) |
Worktree layout
| Path | Owner | Permissions |
|---|---|---|
/home/w4/goboss/tubev/ |
goboss | full (read/write/commit/push) |
/home/w4/gocc1/tubev/ |
gocc1 (auditor: code) | read-only doc consumption |
/home/w4/gocc2/tubev/ |
gocc2 (auditor: test) | read-only doc consumption |
/home/w4/gocc3/tubev/ |
gocc3 (frontend writer) | edit + commit (no push) |
/home/w4/gocc4/tubev/ |
gocc4 (architect writer) | edit + commit (no push) |
Кожен worktree — самостійний git clone, не symlink. Це дозволяє кожному боту мати свій stage/index незалежно.
Push policy
Тільки goboss пушить до origin. Це enforced через guard-bash.sh hook:
- Bot tries
git push→ BLOCKED - Bot тримає коміти у власному worktree
- goboss робить cherry-pick з bot worktree → push
Why: prevent accidental conflicts / force-push / unreviewed pushes до прода. goboss is single point of push authority.
Workflow patterns
A. Pure docs change (goboss as author)
cd ~/goboss/tubev
git pull --rebase # завжди перед роботою
# ... edit docs/SITES.md ...
git add docs/SITES.md
git commit -m "docs: update site 8112 status"
git push origin main
Bots autoматично побачать через ~/bin/trigger-bots (виконує git pull для кожного worktree перед signal'ом).
B. Bot edits (frontend / architect)
Bot edits in own worktree, commits локально:
# у gocc3 session:
cd ~/gocc3/tubev
git pull --rebase
# ... edit ...
git add <files>
git commit -m "feat: <change>"
# Write report до ~/comms/gocc3-report.md з commit SHA
# git push — БЛОКУЄТЬСЯ guard-bash.sh
goboss reads report, потім:
cd ~/goboss/tubev
git pull --rebase
# Cherry-pick bot's commit
git fetch /home/w4/gocc3/tubev main
git cherry-pick <SHA>
# Pre-push subagent review (per memory feedback_pre_push_subagent)
# якщо ≥50 LOC або architectural — Agent(superpowers:code-reviewer) на diff
git push origin main
C. Recommendations cadence
docs/RECOMMENDATIONS.md — багаточасне джерело backlog. Items НЕ виконуються automatically. goboss нагадує developer'у на session start (1 рядок: 📋 RECOMMENDATIONS: N OPEN ...). Виконання — тільки коли developer дає go: реалізуй S1.
Виконання:
- goboss отримує
go→ читає item з RECOMMENDATIONS.md - Якщо implementation потрібно (більше за trivial) → dispatch на gocc3 (frontend) або gocc4 (architect)
- Bot робить → commits локально → reports
- goboss cherry-picks → push
- Item у RECOMMENDATIONS.md → DONE (move до footer)
Hooks (active enforcement)
| Hook | Effect |
|---|---|
guard-bash.sh PreToolUse:Bash |
Blocks git push для gocc/goorest sessions |
guard-bash.sh PreToolUse:Bash |
Blocks Bash write/cp/mv до /home/nosfortube/ (production source) |
guard-readonly.sh PreToolUse:Edit|Write |
Blocks Edit/Write на /home/nosfortube/, /etc/, /var/www/ |
auto-signal-goboss.sh PostToolUse:Write |
Auto-signals goboss після bot writes report у ~/comms/ |
Як додати новий бот / worktree
Якщо буде потрібно gocc5 ABO інший role:
- Створити worktree:
git clone git@gdev.hserver.cloud:ovtube/vtube.git ~/gocc5/tubev - Додати launcher:
~/bin/gocc5(skopiyuvati з~/bin/gocc4і змінити SESSION/WORK_DIR) - Додати у
~/start-devs.sh,~/bin/trigger-bots,~/bin/clear-bots,~/bin/restart-bots - Додати role file:
docs/roles/gocc5-<role>.md - Додати у
CLAUDE.mdTeam Coordination таблицю git pushзміни~/bin/restart-bots gocc5— перший запуск
Testing the cycle
Швидкий smoke test після setup:
# 1. У goboss зробити дрібну зміну
cd ~/goboss/tubev
echo "" >> docs/SITES.md
git add docs/SITES.md
git commit -m "test: smoke push cycle"
git push origin main
# 2. Bot pull (через trigger-bots для всіх ОА per-bot)
~/bin/trigger-bots
# 3. Verify bot бачить
tmux send-keys -t gocc1 'cd ~/gocc1/tubev && git log --oneline -1' Enter
Очікуваний результат: bot's git log показує той самий SHA що в origin.
Troubleshooting
- Bot "git pull failed" у
~/bin/trigger-bots: бот worktree не git repo АБО має локальні зміни що conflicting.cd ~/<bot>/tubev && git status— перевір. - goboss push rejected: developer (або інший ботworktree, або інший pусnh source) вже запушив.
git pull --rebase && git push. - Symlink на worktree: НЕ робити. Кожен bot МАЄ власний clone.