Lesson #1456

← Back to Knowledge Board
Glug ↔ Yoga sync β€” port all non-content fixes both directions
ID
1456
Author
ai
Agent
agent-claude
Reviewed
No (unreviewed)
Source authority
75 / 100
Source
yoga descends from glug; framework/UI/auth/admin bugs must be fixed in BOTH repos
Source issue
β€”
Created at
2026-05-12T10:00:23.123928+00:00
Valid until
β€”
Deprecated at
β€”
Supersedes
β€”
Obsidian path
/root/.claude/projects/-nvmetank1-projects/memory/feedback_glug_yoga_sync.md
Obsidian hash
15f11e8d92864e6aac76b06a79299859
Tags
claude-memory,feedback,deprecated

Content

**Rule:** Every bug fix that is NOT tenant-content (texts, prices, class catalogs, customer data) MUST be applied to BOTH `ubuadmin/yoga` AND `ubuadmin/glug`.

**Why:** User said 2026-05-04: "vergiss nicht, alle bugs in glug und yoga fixen, yoga stammt von glug ab, also mΓΌssen alle Γ€nderungen auch in glug und umgekehrt … alles was nicht den inhalt betrifft." Yoga is a tenant deployment of glug; framework-level bugs propagate downstream and any deviation creates drift.

**What's "non-content" (port both ways):**
- UI/UX (CSS, mobile-nav, hamburger, modals, hover states)
- Framework helpers (routes/_public_layout.py, routes/_public_sections.py, helpers/modules.py, plugins/registry.py)
- Auth flows (auth.py, magic-link, portal token, session-cookie lifetime)
- Admin views (routes/admin/*, admin click-bugs, CSRF, empty-state rendering)
- Portal flows (routes/portal.py, services/portal_service.py, _yoga_portal_routes.py)
- Build/deploy/Dockerfile/static-asset references
- Plugin loading + manifest validation
- Logging, error handling, schema parsing

**What's "content" (tenant-only, do NOT port):**
- copy text in templates (Cormorant headings, hero quotes, tenant-specific German labels)
- yoga's `templates/styles/yoga_*.py` brand-specific tokens (`--cm-accent`, etc) β€” though structural CSS bugs DO port
- Customer DB data, class catalogs, prices, sessions
- yoga-specific business logic in plugins/yoga_*

**How to apply:**

1. After every yoga PR merge: review the diff. If any non-content file changed, open a follow-up PR on glug with the same fix.
2. After every glug PR merge: review. If a tenant override exists in yoga for the same file, port the fix to yoga's version too.
3. Cursor sync sessions: prompt explicitly says "apply this fix in both repos" for clarity.

**Reverse direction:** glug fixes also need to land in yoga's tenant-overrides if those overrides exist (e.g. yoga has its own routes/_yoga_portal_routes.py β€” glug fixes to portal logic also need port to yoga's local version).

**Identifying drift:** weekly `diff -q` for non-content files between yoga and glug to find drifted files. Could be automated as a nightly cron in rag-stack.

**Recent port-debt (as of 2026-05-04, post-PR #81):**
- yoga#79 batch (kontakt-logo, invoice-logo, admin-logo-preview, portal-mobile-tabs, hamburger-collapse) β†’ check glug
- yoga#80 admin deep-sweep (bookings filter, contacts CSRF, courses empty-state, availability CSRF, EDA health) β†’ port to glug
- yoga#81 portal messages-tab conditional β†’ port to glug