Curva GitHub practice — ABSOLUTE
Consolidation of all Curva-specific rules. Apply on every Curva operation.
1. Account
- GitHub:
eduson510(verbatim user instruction) - Commit author:
eduson510 <277812962+eduson510@users.noreply.github.com> - Origin:
https://github.com/COCONRobotics-Corp/Curva.git(HTTPS via gh credential helper) - SSH alias
github-curvaexists for deploy keys but pushes go via HTTPS+token
2. Branch naming
Format: user/corone-CRV-XX-Task-name
- Prefix:
user/(always) - Owner tag:
corone- - Jira ID:
CRV-XX(must exist in Jira before branching — create one if missing) - Slug: kebab-case English, 3–7 words
Example: user/corone-CRV-35-design-system-v2
3. Branch from develop
- ALWAYS branch from
develop, never frommainor another feature branch - Never edit directly on
develop
4. PR allowed, MERGE forbidden
- ✅ Create PR via
gh pr create(open is fine, no auto-merge) - ❌ NEVER
gh pr mergewithout explicit user approval - ❌ NEVER
git push --forcetodevelop/main - After PR ready: notify user, wait for explicit “merge it” / “approved”
5. Jira workflow integration
- Branch name must contain
CRV-XX - Commit message starts with
[CRV-XX] - PR title contains
CRV-XX - After push:
mcp__jira__jira_add_commenton CRV-XX with summary + workspace attribution - Memory save with same overview, tag
curva+CRV-XX
6. Workspace attribution in Jira comment
- corone.monster workspace → “Requested by Ryo”
- kebahagiaan.corone.monster workspace → “Requested by Julian”
7. Working clones
- Live preview:
/var/www/curva.cocon-lab.com→https://curva.cocon-lab.com - Working copy:
/tmp/Curva(used for push-from-VPS) - Production: AWS EB →
https://line-curva.com
8. CI awareness
Curva CI must all pass: basic-checks, quick-checks, full-tests browser, full-tests unit-feature.
Known infrastructure traps:
- Ondrej PHP PPA dual-key signing (2026-05-01 incident) — Dockerfile must fetch BOTH keys:
71DAEAAB4AD4CAB6+4F4EA0AAE5267A6C - Tailwind 4
/alphamodifiers silently drop on CSS-var oklch colors → usecolor-mixwrap intailwind.config.js
9. Push-from-VPS recipe (using time7676 PAT for org access)
cd /tmp/Curva
git checkout user/corone-CRV-XX-name
TOKEN=$(gh auth token -u time7676 -h github.com)
echo "https://oauth2:$TOKEN@github.com" > /tmp/git-cred
git -c credential.helper="store --file=/tmp/git-cred" push
rm -f /tmp/git-credNote: token transport is via time7676 (org access), but commit author stays eduson510 (per Curva account rule).
Cross-refs
- git-author-and-branch-rules — generic rules
- github-account-routing — SSH/auth routing
- curva — entity page