Lesson #1456
← Back to Knowledge Board
Glug β Yoga sync β port all non-content fixes both directions
- ID
- 1456
- Author
- 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