GitHub Sync Guard

July 7, 2026 · View on GitHub

This page records the rules for refreshing the public GitHub repository (EverMind-AI/EverOS) from the internal GitLab source.

Core Principle

GitLab dev is the source of truth. GitHub main is the public release mirror. The two repos have no shared commit history — GitHub receives packaged exports, not git pushes.


1. Must Delete on GitHub

These files exist on GitHub but are obsolete — delete them during sync:

FileReason
docs/locomo_benchmark.mdReplaced by benchmarks/README.md
tests/run_locomo_10x3.shReplaced by benchmarks/run.py
tests/run_locomo_batch.shReplaced by benchmarks/run.py
tests/run_locomo_full.shReplaced by benchmarks/run.py
tests/test_locomo.pyReplaced by benchmarks/run.py
src/everos/memory/strategies/_partition_locks.pyWrong path; correct location is src/everos/memory/_partition_locks.py

2. Must Preserve on GitHub (Do NOT Overwrite)

These files have GitHub-specific content (branch model, PR workflow, community-facing text). Keep the GitHub versions:

Workflow & CI

  • CLAUDE.md — says main branch, not dev/master
  • CONTRIBUTING.md — says "curated PR contributions", not "no external PRs"
  • .github/PULL_REQUEST_TEMPLATE.md — GitHub PR template
  • .github/BRANCH_PROTECTION.md — GitHub branch protection rules
  • .github/workflows/ci.yml — targets main, uses actions/checkout@v6
  • .github/workflows/docs.yml — GitHub-only doc checks
  • .github/workflows/commits.yml — GitHub-only commit lint
  • .github/ISSUE_TEMPLATE/**.yml format (GitLab uses .md)
  • .github/dependabot.yml — GitHub-only dependency scanning

Claude Code rules & skills

  • .claude/rules/*.md — GitHub versions are simplified for contributors
  • .claude/skills/commit/SKILL.md — Conventional Commits (vs Gitmoji)
  • .claude/skills/new-branch/SKILL.md — branches from main (vs dev)
  • .claude/skills/pr/SKILL.md — GitHub PR (vs GitLab MR)
  • .claude/settings.json — GitHub permission set (includes gh pr)

GitHub-only scripts & tests

  • scripts/check_commit_messages.py
  • scripts/check_deprecated_names.py
  • scripts/check_docs.py
  • scripts/check_github_contributor_docs.py
  • scripts/check_pr_title.py
  • scripts/check_repo_assets.py
  • tests/unit/test_scripts/test_check_*.py

Root docs (GitHub version has different content)

  • README.md — GitHub version has banner, badges, use-case gallery
  • Makefile — GitHub version has extra targets (docs-check, package, etc.)

3. Overwrite from GitLab

Everything not in sections 1 or 2 should be overwritten from GitLab, including but not limited to:

  • All src/everos/** source code
  • All tests/unit/** and tests/integration/** and tests/e2e/**
  • pyproject.toml, uv.lock
  • QUICKSTART.md, SECURITY.md
  • CHANGELOG.md, CITATION.md, ACKNOWLEDGMENTS.md
  • docs/*.md (except those listed in Must Delete)
  • docs/openapi.json
  • benchmarks/**
  • .gitignore
  • .gitlab-ci.yml (harmless on GitHub, good to keep in sync)

4. Do NOT Sync to GitHub

These files are GitLab-internal and should not appear on GitHub:

FileReason
.gitlab/merge_request_templates/GitLab-only
.vscode/IDE preference
.claude/skills/release/SKILL.mdInternal release workflow
local/Temporary design docs
evaluation/Empty module

5. Do NOT Sync to GitLab

These files are GitHub-only and should stay only on GitHub:

CategoryFiles
use-cases/90 files (claude-code-plugin, game-of-throne-demo, openher)
GitHub CI scriptsscripts/check_*.py + tests
GitHub CI workflowscommits.yml, docs.yml
Config.gitlint, .env.example (root level)
Docsdocs/use-cases.md

Safe Sync Pattern

# 1. Clone both repos
git clone <gitlab> gitlab-export
git clone <github> github-checkout

# 2. Sync with excludes
rsync -a --delete \
  --exclude '.git' \
  --exclude 'CLAUDE.md' \
  --exclude 'CONTRIBUTING.md' \
  --exclude 'README.md' \
  --exclude 'Makefile' \
  --exclude '.github/' \
  --exclude '.claude/rules/' \
  --exclude '.claude/skills/' \
  --exclude '.claude/settings.json' \
  --exclude 'scripts/check_*.py' \
  --exclude 'tests/unit/test_scripts/' \
  --exclude 'use-cases/' \
  --exclude 'local/' \
  --exclude 'evaluation/' \
  --exclude '.vscode/' \
  --exclude '.gitlab/' \
  --exclude '.gitlab-ci.yml' \
  gitlab-export/ github-checkout/

# 3. Delete obsolete files
cd github-checkout
rm -f docs/locomo_benchmark.md
rm -f tests/run_locomo_10x3.sh tests/run_locomo_batch.sh tests/run_locomo_full.sh
rm -f tests/test_locomo.py
rm -f src/everos/memory/strategies/_partition_locks.py

# 4. Verify
make lint
make test

Review Checklist

Before opening the sync PR on GitHub:

  • CLAUDE.md says branches are created from main
  • .claude/skills/pr/SKILL.md creates PRs with --base main
  • CONTRIBUTING.md says "GitHub pull request", not internal terminology
  • Obsolete files from section 1 are deleted
  • make lint and make test pass
  • No .gitlab-ci.yml, .vscode/, local/, evaluation/ leaked in