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:
goboss
2026-05-02 13:26:25 +00:00
parent d740ef82ea
commit 981a0ad9b6
11 changed files with 568 additions and 16 deletions

View File

@@ -209,6 +209,58 @@ Layout uses `<%= site.domain %>`, `<%= site.ga_id %>`.
---
## 🛠 INFRASTRUCTURE / Workflow
### W1. Hook conflict — Claude editing у `/home/nosfortube/` *(BUG/FEATURE)* ✅ DONE 2026-05-02
**Resolution:** Granular policy реалізована у `guard-readonly.sh` + `guard-bash.sh`. ALLOW `frontend_<port>/` (digits-only) + `orest/`. DENY lang variants, frontend_core, .git, system paths. Backup попередніх hooks: `.bak.2026-05-02`. Test matrix: 19/19 readonly + 18/19 bash (1 pre-existing sed-i regex limitation).
### W2. backup_<port>/ scope — 14 із 94 сайтів *(FEATURE)*
**Where:** `/home/w4/backup_*/`
**Problem:** git-tracking покриває 14 сайтів, інші 80 без recovery. Можливі причини: історичний субсет / pilot / залишки старого етапу.
**Options:**
- Зберегти 14 (subset для критичних сайтів)
- Поширити на всі 94 (масовий setup `sync.sh` + initial commits)
- Замінити на централізований моніторинг + adminskий git
**Effort:** L якщо поширити (ініт repos + sync.sh per site + перші commits).
**Status:** OPEN. Залежить від наскільки git-history важливий vs adminove ownership.
### W3. PSI automonitoring *(FEATURE)*
**Where:** Future infra
**Problem:** Поточний PSI check — manual через pagespeed.web.dev, не systematic. Регресії можуть бути непомічені до next ad-revenue падіння.
**What:** PSI API + cron → daily snapshot + history db + alert при падінні. Або Lighthouse-CI на t1.* після deploy.
**Effort:** M-L (setup ~6-12h)
**Status:** DEFERRED (in-mind, не пріоритет — поки adspyglass dashboard як signal).
---
## 📚 DOC items
### D1. ad-bundle source files location
**Where:** [ADS.md § Source files](ADS.md#source-files)
**What:** Знайти де живуть 5 source JS-файлів (`ad-config.js`, `ad-core.js`, `ad-mute.js`, `vast-preroll.js`, `ad-bootstrap.js`) — `frontend_<port>/views/static/js/` чи shared. Записати у ADS.md.
**Effort:** XS (15 min, `find /home/nosfortube/ -name 'ad-config.js'`)
**Status:** OPEN — потрібен hook resolution (W1) щоб дослідити.
### D2. Mirror swap mechanism
**Where:** [ADS.md § Open questions](ADS.md#open-questions-for-developer) Q3
**What:** Зрозуміти як Адмін заміняє banned mirror — через ad-config.js mass replace, runtime config, чи інше. Записати у ADS.md.
**Effort:** S (питання до developer + 1 example)
**Status:** OPEN.
### D3. CDN provider
**Where:** [DEPLOY.md § Open questions](DEPLOY.md#open-questions)
**What:** Який CDN на prod (Cloudflare / BunnyCDN / Fastly / custom). Per-site або unified.
**Effort:** XS (питання до developer)
**Status:** OPEN.
### D4. Template ad-zone pattern
**Where:** [ADS.md § Template integration](ADS.md#template-integration)
**What:** 1 sample template fragment з ad-zone для розуміння placement pattern.
**Effort:** XS (показати 5-10 рядків з template)
**Status:** OPEN.
---
## Reminders cadence
goboss перевіряє цей файл **на початку кожної session** і нагадує developer-у:
@@ -227,4 +279,5 @@ Items з статусом `DONE`, `WONTFIX`, `DEFERRED` переходять у
---
*Last update: 2026-04-30 (initial backlog from gocc1+2+3+4 audits)*
*Last update: 2026-05-01 (W1-W3 workflow + D1-D4 doc items added).*
*Initial backlog: 2026-04-30 (gocc1+2+3+4 audits).*