initial: tubev infrastructure docs

- CLAUDE.md lean entry-point + index
- BOT_WORKFLOW.md dispatch rules + no-make-work + recommendations cadence
- SITES.md 14 ports inventory
- SYNC_WORKFLOW.md 2 sync paradigms
- MODULES.md module map + DEL_/test/obfuscated flags
- REFACTOR_RULES.md REFACTOR vs CLEANUP vs BUG vs FEATURE
- RECOMMENDATIONS.md initial backlog from gocc1+2+3+4 audits 2026-04-30
- docs/roles/ 4 bot roles
This commit is contained in:
goboss
2026-04-30 14:18:23 +00:00
commit a9db23dfa4
12 changed files with 1386 additions and 0 deletions

103
docs/MODULES.md Normal file
View File

@@ -0,0 +1,103 @@
# tubev — Modules Map
Модулі = `views/modules/*.etlua` partials що включаються через `<%= include … %>` у layout/page templates.
## Канонічні модулі (присутні скрізь або майже)
| Module | Sites Present | Reuse signal | Notes |
|--------|--------------:|--------------|-------|
| `video.etlua` | 14/14 | ❌ всі md5 різні (67-77% common lines) | **Top SSOT candidate** — найвища similarity, зберігає однакову data-loop структуру |
| `related_video.etlua` | 13/14 (no 8148) | ❌ всі md5 різні | structurally similar, candidates for shared partial |
| `recommended_video.etlua` | 13/14 (no 8148) | ❌ | те саме |
| `relink_videos.etlua` | 13/14 (no 8148) | ❌ | те саме |
| `cat_list_alpha.etlua` | 13/14 (no 8129) | mixed | |
| `cat_list_thumb.etlua` | 12/14 | ❌ всі md5 різні | + 5 варіантів з пробілами/"with ads" — потребує нормалізації |
| `lang.etlua` | 12/14 (no 8081, 8129, 8148) | 9 unique md5, 2 ідентичні | i18n switcher |
| `pager.etlua` | 10/14 | ✅ **3 unique md5, 7 ідентичні** | **Shared candidate** — вже фактично shared |
| `removed_notify.etlua` | 10/14 | ✅ **4 unique md5, 6 ідентичні** | **Shared candidate** — вже фактично shared |
| `paginator.etlua` | 10/14 | ❌ всі різні | + `paginator_old.etlua`, `paginator_ajax.etlua` варіанти |
| `donors.etlua` | 12/14 | ❌ всі md5 різні | |
## Site-specific (тільки на 1 сайті)
| Module | Site | Why |
|--------|------|-----|
| `profile_index.etlua` | 8081 | NL agego SPA-like, профілі користувачів — окрема архітектура |
| `profile_public.etlua` | 8081 | те саме |
| `profile_upload.etlua` | 8081 | те саме |
| `channel_list_thumb.etlua` | 8081 | unique to 8081 |
| `_cat_list_thumb.etlua` | 8081 | underscore-prefix variant |
| `related_top_channels.etlua` | 8081 | |
| `ga/ga.etlua` | 8081, 8112 | Google Analytics module |
## DEL_* tombstones (24 файли × 6 сайтів)
**Видалити при першій нагоді (XS task, ~15 хв).** Префікс `DEL_` явно signals tombstone, але файли досі живуть і шумлять у grep.
| Module | Sites |
|--------|-------|
| `DEL_channel_id.etlua` | 8100, 8102, 8107, 8112, 8131, 8133 |
| `DEL_friend_list.etlua` | 8100, 8102, 8107, 8112, 8131, 8133 |
| `DEL_lang.etlua` | 8100, 8102, 8107, 8112, 8131, 8133 |
| `DEL_lang_mob.etlua` | 8100, 8102, 8107, 8112, 8131, 8133 |
Деталі: **[RECOMMENDATIONS.md](RECOMMENDATIONS.md)** #2.
## `_test.etlua` / .test.js (sandbox у prod tree)
Tests не повинні жити у prod. Перенести у `/tests/` або видалити.
| File | Sites |
|------|-------|
| `cat_list_thumb_test.etlua` | 8084, 8085 |
| `cat_index_test.etlua` | 8084, 8085 |
| `main_list_test.etlua` | 8084, 8085 |
| `video_test.etlua` | 8084, 8085 |
| `counters.min.test.js` | 8133 |
## Backup-via-rename артефакти (~30 файлів)
**Видалити при першій нагоді (S task, ~1h).** Файлові імена з пробілами ламають shell scripts. Версії повинні бути у git, не у filename.
| Pattern | Examples | Sites |
|---------|----------|-------|
| `header copy bongo link 25_10_22.etlua` | (один з typo `bogolink` на 8112) | 8084, 8085, 8112, 8126, 8131 |
| `* copy_ads_actual.etlua` | `id_index copy_ads_actual.etlua` | 8084, 8085 |
| `* copy.etlua/.js` | `my copy.js`, `machine copy.js` | 8 sites |
| `* with ads.etlua` / `* without ads.etlua` | `cat_list_thumb with ads.etlua` | 8112 (10 файлів) |
| `* with titles.etlua` | | 8100 (5 файлів) |
| `untitled file` | IDE saved-no-name | 8126 (×2) |
| `*_old/`, `*_bak*` | `js_old/`, `img_old/`, `paginator_old.etlua`, `layout_bak_25-05-18.etlua` | 8085 (dirs), 8086, 8100 |
| `asdadsasd.html`, `del___search_top.etlua` | obvious garbage | 8086 |
## Obfuscated JS (10 файлів — потребує origin audit)
**Random naming підозріло на adblock-bypass scripts.** Не у sync.sh. Походження невідоме.
| File | Site |
|------|------|
| `9qFdXQ7.js` | 8131 |
| `gD0A3.js` | 8131 |
| `PxqbeCb.js` | 8131 |
| `gk5LT.js` | 8107 |
| `f4T4s.js` | 8126 |
| `aOKM9.js` | 8085 |
| `N7Ym4F.js` | 8084 |
| `k3KL5.js` | 8102 |
| `qDap9.js` | 8112 |
| `c24c4cd9.js` | (неідентифіковано) |
| `popa.js`, `mo.js` | (неідентифіковано) |
**Питання до розробника:** ваші adblock-bypass payloads, legacy ad scripts, чи невідомий drop?
## Banners модулі
`views/modules/banners/` — окрема зона з ~30+ файлів native_adspy variants, embed_*adspy classes. Site-specific. Map поки не побудовано (P4 doc).
## Refactor candidate: shared base partial
`video.etlua` — найкращий кандидат на extraction до shared partial з per-site CSS theme overrides. Деталі: **[RECOMMENDATIONS.md](RECOMMENDATIONS.md)** #4.
---
*Source: gocc2 + gocc3 + gocc4 audits 2026-04-30.*