Document granular hook policy + ad architecture + 94-site scale
Hook redesign (guard-readonly.sh + guard-bash.sh): - ALLOW edits: /home/nosfortube/frontend_<port>/ (digits-only, all subdirs) + /home/nosfortube/orest/ (user working zone + screenshots) - DENY: lang variants (frontend_<port>_<lang>/), frontend_core/, .git/, system paths (/etc/, /usr/, /boot/, /var/* except /var/log/claude/) - 19/19 readonly + 18/19 bash tests pass (1 pre-existing sed-i regex gap) - Backup попередньої версії: .bak.2026-05-02 Doc updates: - New: PROJECT.md, ARCHITECTURE.md, DEPLOY.md, ADS.md, PERFORMANCE.md, INTERLINKING.md, ADMINS.md (topic-split docs/) - CLAUDE.md: 94-site scale, granular edit zones, doc index - INFRASTRUCTURE.md: hook table updated - SITES.md: scope note (14 backup-tracked of 94 total) - RECOMMENDATIONS.md: W1 (hook conflict) → DONE; W2-W3, D1-D4 added Site architecture findings (audit 2026-05-02): - 94 frontend_<port>/ sites, 71 in site-name-routing.csv, 14 backup-tracked - 3 ad-architectures coexist: 8148 modern bundle (1), modern partials (~23), legacy inline surstrom (31) - 8148 unique: ad-bundle.min.js source files, build-ad-bundle.sh, terser - Server IP 185.73.222.75 у t1.* allowlist (curl probes work) - CDN: custom + Cloudflare на 8081 etc; purge-cache при prod deploy Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
54
CLAUDE.md
54
CLAUDE.md
@@ -12,7 +12,11 @@ Multi-site adult tube infrastructure — **frontend-only** scope (templates / CS
|
||||
|
||||
## Сайти (live, prod source)
|
||||
|
||||
14 портів у `/home/w4/backup_<port>/` (mirror з `/home/nosfortube/frontend_<port>/`). Повна таблиця: **[docs/SITES.md](docs/SITES.md)**.
|
||||
- **94 сайти** у `/home/nosfortube/frontend_<port>/` — source-of-truth, тут редагуємо
|
||||
- **71 site→port mapping** у `/home/nosfortube/orest/site-name-routing.csv`
|
||||
- **14 backup_<port>/** у `/home/w4/` — git-archive subset (не всі сайти)
|
||||
|
||||
Повний контекст: **[docs/PROJECT.md](docs/PROJECT.md)** | Folder map: **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** | Site table: **[docs/SITES.md](docs/SITES.md)**.
|
||||
|
||||
## Stack
|
||||
|
||||
@@ -23,10 +27,10 @@ Multi-site adult tube infrastructure — **frontend-only** scope (templates / CS
|
||||
|
||||
## 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, читати можна, **писати — НІКОЛИ**
|
||||
1. **Edit:** `/home/nosfortube/frontend_<port>/views/` напряму — це **single source of truth** test-середовища
|
||||
2. **Test:** `t1.<domain>` миттєво (server IP `185.73.222.75` у allowlist — Claude може робити curl probes)
|
||||
3. **Git snapshot (rollback):** `~/git-save-all.sh "msg"` — sync prod → backup_<port>/, auto-rebuild ad-bundle (тільки 8148), cache-bust md5, commit. **Local git, без remote, без laptop-clone.** Деталі: **[docs/DEPLOY.md § git-save-all.sh](docs/DEPLOY.md#git-save-allsh--git-snapshot-для-backup_port)**
|
||||
4. **Prod deploy:** ти через `https://rss.g--o.info/admin/site/control` (per-site button). Або через Адміна (для var.lua / нових файлів)
|
||||
|
||||
## Команди
|
||||
|
||||
@@ -58,10 +62,22 @@ git pull --rebase # ЗАВЖДИ перед роботою у bac
|
||||
### 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 код розробника — нема доступу
|
||||
### Edit zones (granular, через hook `guard-readonly.sh` + `guard-bash.sh`)
|
||||
|
||||
**ALLOW:**
|
||||
- `/home/nosfortube/frontend_<port>/...` — наша робоча зона (port = digits only, без lang suffix)
|
||||
- `views/` — основне (templates, CSS, per-site JS)
|
||||
- `views/static/js/lib/`, `lib2/` — **shared cross-site**, правки тільки коли треба фікс на ВСІ сайти (рідко, при виявленні bug-у)
|
||||
- `lib/<port>/var.lua` — config, потребує **kor reboot через Адміна** (рідко)
|
||||
- `/home/nosfortube/orest/...` — юзерова робоча зона (тестові скрипти, тимчасові плани, screenshots)
|
||||
|
||||
**DENY:**
|
||||
- `/home/nosfortube/frontend_<port>_<lang>/` — language variants (`_hi`, `_id` — deprecated, не вживаються)
|
||||
- `/home/nosfortube/frontend_core/` — core, ніколи не правимо
|
||||
- `/home/nosfortube/.git/`, інше top-level — поза scope
|
||||
- `/etc/`, `/usr/`, `/boot/`, `/sbin/`, `/var/*` (крім `/var/log/claude/`) — system
|
||||
|
||||
**Деплой у prod — НЕ Claude.** Юзер натискає button у admin panel. Claude тільки edit + commit (через `git-save-all.sh`).
|
||||
|
||||
### Refactor vs Cleanup vs Bug-fix vs Feature
|
||||
Чітко розрізняти. Деталі: **[docs/REFACTOR_RULES.md](docs/REFACTOR_RULES.md)**.
|
||||
@@ -80,14 +96,28 @@ git pull --rebase # ЗАВЖДИ перед роботою у bac
|
||||
|
||||
## Doc Index
|
||||
|
||||
**Domain knowledge** (як проект влаштований):
|
||||
|
||||
| Файл | Призначення |
|
||||
|------|-------------|
|
||||
| **[docs/PROJECT.md](docs/PROJECT.md)** | Business model, scope, 94 сайти, tech model overview |
|
||||
| **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** | Per-site folder map: views/, static/, lib/<port>/var.lua, shared lib/lib2 |
|
||||
| **[docs/SITES.md](docs/SITES.md)** | Таблиця 14 backup-tracked ports × домен × cluster × outlier flags |
|
||||
| **[docs/DEPLOY.md](docs/DEPLOY.md)** | Test t1.* ↔ prod flow, admin role, kor reload, cache-bust |
|
||||
| **[docs/ADS.md](docs/ADS.md)** | adspyglass інтеграція (skeleton — наповнюємо) |
|
||||
| **[docs/PERFORMANCE.md](docs/PERFORMANCE.md)** | PSI targets, rules, per-site scorecard (skeleton) |
|
||||
| **[docs/INTERLINKING.md](docs/INTERLINKING.md)** | Cross-site linking strategy (skeleton) |
|
||||
| **[docs/ADMINS.md](docs/ADMINS.md)** | Admin panels: translations, comments, site config (skeleton) |
|
||||
| **[docs/MODULES.md](docs/MODULES.md)** | Карта `views/modules/*.etlua` × presence × DEL_/test/deprecated flags |
|
||||
| **[docs/SYNC_WORKFLOW.md](docs/SYNC_WORKFLOW.md)** | Як sync.sh у backup_<port>/ працює, 2 парадигми |
|
||||
|
||||
**Ops / meta** (як ми працюємо):
|
||||
|
||||
| Файл | Призначення |
|
||||
|------|-------------|
|
||||
| **[docs/ONBOARDING.md](docs/ONBOARDING.md)** | Для **юзера** — що Claude auto-loads, відкриті питання до developer, як давати команди |
|
||||
| **[docs/INFRASTRUCTURE.md](docs/INFRASTRUCTURE.md)** | Мапа `/home/w4/`: bin, scripts, comms, hooks, sessions, memory + cheatsheet |
|
||||
| **[docs/GIT_WORKFLOW.md](docs/GIT_WORKFLOW.md)** | Repo `vtube`, push process, bot commits → goboss push |
|
||||
| **[docs/SITES.md](docs/SITES.md)** | Таблиця 14 портів × домен × cluster × outlier flags |
|
||||
| **[docs/SYNC_WORKFLOW.md](docs/SYNC_WORKFLOW.md)** | Як sync.sh у backup_<port>/ працює, 2 парадигми |
|
||||
| **[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 |
|
||||
|
||||
Reference in New Issue
Block a user