2026-04-30 14:18:23 +00:00
# tubev
Multi-site adult tube infrastructure — **frontend-only ** scope (templates / CSS / JS). Backend (OpenResty + Lua) — у розробника, не в нашому доступі.
2026-04-30 14:20:55 +00:00
## Repo
2026-04-30 14:18:23 +00:00
2026-04-30 14:20:55 +00:00
- **Origin:** `git@gdev.hserver.cloud:ovtube/vtube.git`
- **goboss checkout:** `/home/w4/goboss/tubev/`
- **Bot worktrees:** `/home/w4/<bot>/tubev/` (gocc1-4)
- **Branch:** `main`
2026-04-30 14:58:34 +00:00
- **Push policy:** **goboss пушить immediately after commit ** (default). Боти комітять локально → write report → goboss робить review + push. Винятки (multi-step refactor у процесі / diff >50 LOC / WIP) — у * * [docs/GIT_WORKFLOW.md § When to push ](docs/GIT_WORKFLOW.md#when-to-push-default--exceptions )**
2026-04-30 14:20:55 +00:00
## Сайти (live, prod source)
14 портів у `/home/w4/backup_<port>/` (mirror з `/home/nosfortube/frontend_<port>/` ). Повна таблиця: * * [docs/SITES.md ](docs/SITES.md )**.
2026-04-30 14:18:23 +00:00
## Stack
- Templates: **etlua ** (Lua templating, OpenResty environment)
- CSS: критичний inline `views/css/css_*.etlua` + deferred `static/css/`
- JS: `static/js/{c2, auth, comment, profile_index, main, ...}.{js,min.js}`
- Video player: `static/videojs-v10/`
## Workflow (де що правити)
1. **Edit: ** `~/backup_<port>/views/` (наша зона; кожен порт = окремий git repo)
2. **Sync: ** `~/backup_<port>/sync.sh` копіює з prod (`/home/nosfortube/frontend_<port>/` ) → backup. Деталі: * * [docs/SYNC_WORKFLOW.md ](docs/SYNC_WORKFLOW.md )**
3. **Push to prod: ** через git remote → developer-side. **goboss Н Е пушить ** , тільки локальні коміти у власному worktree
4. * * `/home/nosfortube/` ** — це prod, читати можна, **писати — НІКОЛИ **
## Команди
```bash
~/start-devs.sh boss # старт goboss
~/start-devs.sh gocc # старт gocc1-4
~/bin/trigger-bots [gocc{N}] # тригер нової task
~/bin/restart-bots [gocc{N}] # повний reset (kill+start+wait+trigger)
~/bin/clear-bots [gocc{N}] # /clear context (topic switch)
git pull --rebase # ЗАВЖДИ перед роботою у backup_<port>/
```
## Команда (ролі ботів)
| Бот | Tool access | Domain |
|-----|-------------|--------|
| **goboss ** | All | Planner + dispatch (не push до prod, тільки local commits) |
| **gocc1 ** | Read-only | Code audit + regression |
| **gocc2 ** | Read-only | Test gap + endpoint smoke |
| **gocc3 ** | Edit/Write/commit (no push) | Frontend writer (templates/CSS/UI) |
| **gocc4 ** | Edit/Write/commit (no push) | Architect/refactor (services/lib/scripts) |
**2 read-only + 2 writer** — read-only safety net, писателі паралельно.
Деталі: * * [docs/roles/ ](docs/roles/ )** | Workflow rules: * * [docs/BOT_WORKFLOW.md ](docs/BOT_WORKFLOW.md )**
## Правила (КРИТИЧНІ)
### No make-work
**Н Е давати ботам задачі з пустого в порожнє.** Кожен dispatch має конкретну причину: новий audit area, conkretne виявлений bug, follow-up з reportу . Якщо нема такої причини — bot пише `[bot] Чекаю.` і чекає. Cross-audit / regression test / research **тільки коли є concrete trigger ** .
### No-touch zones
- `/home/nosfortube/` — production source, READ ONLY
- `/etc/nginx/` , `/var/www/` — server configs, поза scope
- Backend Lua код розробника — нема доступу
### Refactor vs Cleanup vs Bug-fix vs Feature
Чітко розрізняти. Деталі: * * [docs/REFACTOR_RULES.md ](docs/REFACTOR_RULES.md )**.
### Recommendations not plans
Виявлені refactor/security/cleanup candidates → * * [docs/RECOMMENDATIONS.md ](docs/RECOMMENDATIONS.md )** як **рекомендації ** , не план. Робимо ТІЛЬКИ коли розробник скаже. goboss періодично нагадує про unprocessed items.
### No hardcodes у нових патчах
Перш ніж писати літерал (URL, домен, GA ID, magic number) — `grep` чи вже є у `views/config/` чи аналогічному місці. Існує — import/include. Нема — додай як параметр у `views/config/site.lua` (якщо буде створено) і потім use.
## Doc Index
| Файл | Призначення |
|------|-------------|
2026-04-30 14:20:55 +00:00
| * * [docs/GIT_WORKFLOW.md ](docs/GIT_WORKFLOW.md )** | Repo `vtube` , push process, bot commits → goboss push |
2026-04-30 14:18:23 +00:00
| * * [docs/SITES.md ](docs/SITES.md )** | Таблиця 14 портів × домен × cluster × outlier flags |
2026-04-30 14:20:55 +00:00
| * * [docs/SYNC_WORKFLOW.md ](docs/SYNC_WORKFLOW.md )** | Як sync.sh у backup_<port>/ працює, 2 парадигми |
2026-04-30 14:18:23 +00:00
| * * [docs/MODULES.md ](docs/MODULES.md )** | Карта `views/modules/*.etlua` × presence × DEL_/test/deprecated flags |
| * * [docs/REFACTOR_RULES.md ](docs/REFACTOR_RULES.md )** | Що таке REFACTOR vs CLEANUP vs BUG vs FEATURE |
| * * [docs/RECOMMENDATIONS.md ](docs/RECOMMENDATIONS.md )** | Backlog refactor/cleanup/security candidates як рекомендації |
| * * [docs/BOT_WORKFLOW.md ](docs/BOT_WORKFLOW.md )** | Bot dispatch + reporting + escalation rules |
| * * [docs/roles/ ](docs/roles/ )** | Ролі gocc1-4 |
Файли наповнюємо/оновлюємо по мірі знахідок. CLAUDE.md = тонкий entry-point + index.
## Communication
- Українською, коротко, по суті
- Боти приймають **ТІЛЬКИ від `goboss:` **
- TIMESTAMP формат: `[bot YYYY-MM-DD HH:MM] Task ID: XXX`
- Task vs Report Task ID порівнюються **рядково ** , не по змісту
- Signal через PostToolUse hook автоматично після Write `~/comms/{bot}-report.md`