Commit Graph

22 Commits

Author SHA1 Message Date
goboss
1c953507f7 RECOMMENDATIONS: D-canonical-archive REGRESSION — 20 newer sites mеять bug у getLinks() — emit canonical на archive замість empty (broxxx/pornv pre-regression behaviour=правильно) 2026-05-05 13:42:19 +00:00
goboss
28da43ee60 RECOMMENDATIONS: D-canonical-archive — 13 sites canonical hardcoded /v/ замість archive URL; backend var.lua + kor reboot required (frontend-only fix не reliable bo etlua не має access до ngx.var.uri) 2026-05-05 13:20:00 +00:00
goboss
f9bc045693 ADS.md: refine SDK patterns — popunder needs ODD digits {1,3,5,7,9} only; vast needs a-d/A-D only; verify content size post-gen (popunder=250844b, vast=323450b) — even-digit/e-h returns different SDK content breaking renderSpot 2026-05-05 11:02:49 +00:00
goboss
38650cd4ae ADS.md: ASG SDK filename patterns section — popunder=[alnum]{6}[0-9], vast=[alnum]{6}[a-hA-H]; rotation workflow + 2026-05-05 footprint dilution applied на 15 sites 2026-05-05 10:49:37 +00:00
goboss
aa5a5082a0 MIGRATION_PLAYBOOK: anti-pattern #0 — copy SDK URLs з 8148 reference creates footprint; ASG admin генерує per-spot unique filenames, потрібно retrieve + apply per site 2026-05-05 10:33:30 +00:00
goboss
f41b0b30e7 MIGRATION_PLAYBOOK: add Branch P.flat CSS override step — flat-site limiter з padding:56.25% trick потребує aspect-ratio:16/9 + pjs_container absolute (gocc4 batch set B 4/7 sites) 2026-05-05 00:25:11 +00:00
goboss
abd58740c6 MIGRATION_PLAYBOOK: explicit cleanup step in Branch P — strip dead videojs CSS post-migration (8161 lesson) 2026-05-04 23:33:18 +00:00
goboss
533978b2fd MIGRATION_PLAYBOOK: add Modes section — autonomous batch (no per-step approvals) vs interactive default 2026-05-04 21:41:38 +00:00
goboss
37f237d1c3 MIGRATION_PLAYBOOK.md: discovery-driven plan з conditional branches (player/spot-rotation/R7-responsive/CSS-sync) + Phase 3 universal post-checks + anti-patterns з 8161 lessons 2026-05-04 21:35:10 +00:00
goboss
a2768ec015 ADS.md: per-site spot inventory (8161 mapping) + 1thumb_a-f single-banner pattern + migration checklist (videojs4 → PlayerJS+ad-bundle, 30+ checkpoints) 2026-05-04 13:19:10 +00:00
goboss
c9890a32fe Add ad-test regression tool (Playwright headless ad-flow validator)
After 8148 ASG account recreation + spot rotation debug session,
formalize tooling for automated ad-pipeline regression checks.

- /home/w4/bin/ad-test — wrapper, available globally
- /home/w4/playwright-tests/ — Playwright + Chromium runtime
- scripts/ad-regression.mjs — versioned copy у репо

Per-URL checks (6):
  1. ad-bundle loaded (window._adConfig set)
  2. popunder SDK fetches
  3. /api/users/<vast_spot> returns <Ad> (catches no-fill)
  4. mode = "vast" after popunder cooldown active
  5. .asg-container injects on play click (right data-spot-id)
  6. console clean (no [ASGB LOADER] errors)

Headless limitation documented: network+DOM checks cover 95% of
regressions without need for full video playback validation.
Use `ad-test --full` or real browser w/ ?debug=1 for visual.

Memory: reference_ad_regression_tool.md added — auto-trigger rule
to run ad-test after spot ID changes / mirror swaps / bundle rebuild.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 22:45:31 +00:00
goboss
3d040eb668 ADS: document VAST no-fill diagnostic + curl recipe
After deeper headless probe (manual _popRr inject to force vast mode),
VAST SDK loaded but never showed ad. Direct curl to
/api/users/<vast_spot> returns empty <VAST version="3.0"></VAST> — ASG
no-fill response. Popunder spot at same time returns full creative
config (creative_id 83660 etc). Diagnosis: ASG admin spot config issue
(type wrong / pending / no creative / budget / etc), not our code.

Includes diagnostic curl recipe so future "VAST never shows" can be
distinguished from code bugs in seconds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 22:19:51 +00:00
goboss
a2f51bac2a ADS: document asgsl frequency-capping gotcha (8148 popunder/vast bug)
Real-browser probe (playwright + Chromium headless) revealed bundle
expects `global_rr:<ts>` and `n:<ts>` fields in asgsl localStorage
to set _popRr / _vastRr cooldowns. New ASG account spot 514208 is
configured with shows_limit:1 without these timestamp fields, so:
- popunder fires every pageload
- _popRr never written → popActive=false always
- mode never transitions to vast → VAST SDK never loads

Resolution requires ASG admin to enable frequency-capping rotation
on the spot (на стороні юзера). Documented detection: check
localStorage.getItem('asgsl') for 'global_rr:' or 'n:' tokens.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 22:09:50 +00:00
goboss
d59393a608 ADS: VAST has implicit dependency on popunder cooldown
DEPLOY: document custom CDN stale-cache gotcha + recovery

Findings from 8148 production debug session 2026-05-02:

1. VAST gotcha — _decide() mode логіка:
   mode = popActive ? (vastActive || skipPattern ? "none" : "vast") : "pop"
   Тобто VAST loadable ТІЛЬКИ після того як popunder уже спрацював і
   _popRr cooldown set. На свіжій сесії: mode завжди "pop" → VAST SDK
   never loaded → користувач думає "VAST зламаний". Force test через
   ?clearAds=1 → pop fires → refresh → mode=vast.

2. CDN stale-cache — custom CDN кешує `?v=<hex-like>` URLs з
   s-maxage=31536000 (1 рік). Race у deploy: layout.etlua з новим ?v=
   може hit CDN раніше ніж static file → CDN кешує OLD bundle під
   NEW ?v= ключем → застрягає назавжди. Workaround: bump source md5,
   rebuild, новий ?v= ключ.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 21:51:32 +00:00
goboss
a2d637c483 ADS.md: add tb.load_frame_baner_v2 details, native postMessage pattern,
spot ID location matrix, VAST flow walkthrough, policy rationale

Findings from 8148 spot-ID rotation audit (2026-05-02):
- Banner partial loader source: views/static/js/lib/common/js/tbanner.etlua
  (shared lib, lazy-load via user events / timeout, hidden-tab handling)
- Native banners use postMessage from iframe→parent for auto-height
  (ASG admin wraps TrafficStars/ExoClick code which postMessages dimensions)
- Spot IDs живуть у 4 місцях: ad-config.js + 9 banner partials + layout.etlua
  cooldown regex (popunder ID hardcoded в asgsl matcher)
- VAST flow detailed: pjs_play_btn → asgInVideoImpression → VastPreroll.show()
  → .asg-container → _asgAdDone callback → _revealPjs()
- pop-priority + show-1-skip-1 = intentional rev/UX balance (popunder rare,
  VAST throttled to 50%)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 17:03:13 +00:00
goboss
981a0ad9b6 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>
2026-05-02 13:26:25 +00:00
goboss
d740ef82ea docs: clarify trigger-bots delivery + 'bot exited?' troubleshooting
- trigger-bots тепер через ~/scripts/trigger_bot.sh (raw send-keys regression виправлено у ~/bin/trigger-bots — там само)
- 'Bot exited?' секція: empty pane bottom != exit; повний pane / ps / list-sessions для verify
2026-04-30 22:03:26 +00:00
goboss
a10a0bb790 docs: add ONBOARDING.md — user-facing first-launch guide
- What Claude auto-loads (CLAUDE.md, MEMORY.md, global rules)
- 7 open questions developer needs to answer (random JS, 8112 GA, test.*, 8081 status, etc.)
- Task type examples (A: site change, B: backlog item, C: audit, D: documentation)
- External services to potentially configure (Telegram, CF, monitoring)
- Common pitfalls (no make-work, no manual tmux kill, no /home/nosfortube/)
2026-04-30 21:44:56 +00:00
goboss
5c55a3b6d9 docs: add INFRASTRUCTURE.md (full /home/w4/ map) + meta-rule docs upkeep
- INFRASTRUCTURE.md: bin/, scripts/, comms/, hooks/, settings, sessions, memory layout, cheatsheet
- CLAUDE.md: meta-rule 'if search >5min update docs' + INFRASTRUCTURE.md у doc index
2026-04-30 20:04:24 +00:00
goboss
a2782715b8 docs: clarify when-to-push (default: immediately, exceptions: refactor batches / >50 LOC / WIP) 2026-04-30 14:58:34 +00:00
goboss
6ccdebbc48 docs: add GIT_WORKFLOW.md, link repo info in CLAUDE.md
- 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
2026-04-30 14:20:55 +00:00
goboss
a9db23dfa4 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
2026-04-30 14:18:23 +00:00