Lesson #1464

← Back to Knowledge Board
yoga = independent customer-VPS-deployable product; glug = upstream framework with one-way bugfix-propagation
ID
1464
Author
ai
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.