Lesson #1464
← Back to Knowledge Board
yoga = independent customer-VPS-deployable product; glug = upstream framework with one-way bugfix-propagation
- ID
- 1464
- Author
- Agent
- agent-claude
- Reviewed
- ✓ Yes
- Source authority
- 75 / 100
- Source
- Architectural decision 2026-05-05 β yoga gets distributed to customer-VPSes; glug bugfixes auto-port to yoga via CI/CD (one-way upstream)
- Source issue
- β
- Created at
- 2026-05-12T10:00:23.642651+00:00
- Valid until
- β
- Deprecated at
- β
- Supersedes
- β
- Obsidian path
- /root/.claude/projects/-nvmetank1-projects/memory/feedback_yoga_independent_product.md
- Obsidian hash
- 9be608bafc3b89da78014955bf1f9562
- Tags
- claude-memory,project
Content
**Decision (user-direktive 2026-05-05):**
> "die applikationen dΓΌrfen keine shared files haben, yoga und glug sind eigenstΓ€ndige produkte, yoga soll zum kunden gehen auf einen eigenen vps und ich mΓΆchte ihn verteilen kΓΆnnen in zukunft auf diesen vps."
>
> "wenn ich in zukunft einen bug in glug behebe, soll dieser in yoga auch behoben werden durch die CI/CD"
**Architecture:**
```
ββββββββββββββββββββββββββββββββββββββββ
β GLUG = upstream framework (this VPS)β
β developed + tested here β
ββββββββββββββββ¬ββββββββββββββββββββββββ
β
β CI/CD: glug merge to main
β β detect changed files
β β for each file in yoga:
β - identical: cherry-pick-port PR
β - diverged: 3-way merge, PR with conflict markers if needed
β - yoga-only file: skip
βΌ
ββββββββββββββββββββββββββββββββββββββββ
β YOGA = customer-deployable product β
β (this VPS, then customer VPSes) β
ββββββββββββββββ¬ββββββββββββββββββββββββ
β
β CD: yoga tag v* β image build β push registry
β Customer VPSes pull on hook/cron
βΌ
ββββββββββββββββββββββββββββββββββββββββ
β CUSTOMER VPS β
β pulls yoga:slim:<tag> from registry β
β restart on update β
ββββββββββββββββββββββββββββββββββββββββ
```
**Key principles:**
1. **No shared files in source-tree** β yoga repo is self-contained (no `from glug.X import` anywhere). Each repo can be cloned + run standalone.
2. **One-way framework propagation** β glug merge β auto-PR on yoga with same patch. Human reviews + merges.
3. **Independent versioning** β yoga has its own tags + release cycle. Customer-VPSes track yoga tags, not glug.
4. **Diverged files are OK** β yoga may have customer-specific overrides on framework files. Auto-port creates conflict-PR for human-merge if the patch doesn't apply cleanly.
**For Claude sessions going forward:**
- **Old rule** `feedback_glug_yoga_sync.md` (port both directions) is SUPERSEDED. Now: one-way only (glug β yoga), automated via CI/CD.
- When fixing glug bugs: just commit on glug + merge. The CI/CD automatically tries to port.
- When fixing yoga-only bugs (customer-specific): commit on yoga, no port.
- For yoga deployments: tag `v1.2.3` on yoga main β release pipeline builds image + pushes to registry.
**Implementation status (2026-05-05):**
- [x] Architecture documented in this memory + memory index
- [ ] CI on yoga: test/lint/smoke pipeline (Phase yoga#36 task)
- [ ] CD on yoga: tag β image build β push (Phase yoga#37 task)
- [ ] Auto-port glug β yoga (replace earlier sync-both-ways) β TODO
- [ ] VPS pull-mechanism (per-customer auto-update) β TODO
**Today's deployment artifacts (2026-05-04/05 wave):**
- 35 PRs deployed live (yoga #65-99, glug #829-842, rag-stack #90/#92)
- Manual port-PRs (#836, #840, #841, #842, #99) followed old "both directions sync" rule β they're the last of that pattern
- Going forward: automation replaces manual ports
**Reference for tooling:** /usr/local/bin/or-loop, wf-fix-loop, wf-survey-then-fix work per-repo, can be extended for cross-repo cherry-picks.