fork-sync-all

Built with Ona Open Collective

When Git Platforms Give You Anxiety Attacks, Who Are You Going To Call? Fork-Sync-All!

Control plane for the Interested-Deving-1896 GitHub org. Runs 147 GitHub Actions workflows that keep three GitHub orgs and two GitLab groups in sync, manage READMEs and badges across OSP-bound repos, resolve CI failures, and maintain registered upstream imports.

Workflows180
Registered imports157
Template consumers82
GitLab subgroups14
GitLab repos mirrored225

How it works

┌─────────────────────────────────────────────────────────────────────────────┐
│  Mirror chain (outward, every 6h)                                           │
│                                                                             │
│  Interested-Deving-1896 ──► OpenOS-Project-OSP                              │
│          ▲                         │                                        │
│          │                         ▼                                        │
│          │              OpenOS-Project-Ecosystem-OOC                        │
│          │                         │                                        │
│          │                         ▼                                        │
│          │                  GitLab openos-project                           │
│          │             (14 subgroups, 225 repos mirrored)                   │
│          │                                                                  │
│          └──── upstream-commits / upstream-prs (OSP + OOC → I-D-1896) ─────┘
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│  Full pipeline (manual / monthly)                                           │
│                                                                             │
│  flush-lifecycle ──► pre-flush-prep ──► full-chain-flush (25 stages) ──► post-flush-prep │
│       │                      │                             │                │
│  QUOTA_SNAPSHOT          QUOTA_SNAPSHOT               QUOTA_SNAPSHOT        │
│  (chain entry)           (chain start)                (chain exit)          │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│  Quota & queue management (automatic, every 30 min)                         │
│                                                                             │
│  quota-reserve ──► queue-manager ──► rate-limit-rerun                       │
│                                           │                                 │
│                                    cancel-stale-runs                        │
│                                      quota-monitor                          │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│  OTA system (versioned updates for independent forks)                       │
│                                                                             │
│  ota-release ──► ota-deliver ──► opted-in forks (PR per fork)               │
│       ▲                                                                     │
│  semver tag push                                                            │
│                                                                             │
│  ota-reconcile (weekly) ──► path A: stamp · B: drift PR · C: quota PR      │
└─────────────────────────────────────────────────────────────────────────────┘

This project provides automated management for git repositories and organizations across multiple git-based platforms. It addresses challenges such as keeping forks synchronized, generating READMEs, injecting badges, tracking upstream changes, mirroring repositories, and managing releases. It is used by developers and organizations to streamline repository maintenance and ensure consistency across distributed version control systems.


Documentation

ResourceDescription
Full documentationArchitecture, quota management, workflow reference, runbooks
Workflow TriggersAll 185 workflows — schedules, triggers, synopses (plain text · published)
OTA ReconcileHybrid A/B/C fallback layer for mirror-chain consumers
OTA SystemOTA delivery architecture and opt-in guide
AI Agent CostsOCU pricing, tokenizer reference, per-task estimates
Quota CostsPer-workflow REST call estimates (p50/p95)
Workflow SchedulingOptimal dispatch windows, quota floors, EST/UTC timing
RunbooksIncident response and operational procedures

Workflow groups

158 workflows across 20 functional groups. Full detail in DOCS/workflow-triggers.md.

GroupWorkflowsDescription
Accessibility1CODEOWNERS coverage, screen-reader scan, WCAG audit, audio overview, Braille output
AI & Cost Tracking4Session cost log, weekly price sync
BDFS / Filesystem Workspace5DwarFS/BTRFS workspace dev and packaging
Bugzilla Integration1Sync commits/PRs to Bugzilla, milestone shipping
Build & Release10Build, checks, release, kernel content, arch config
CI & Failure Resolution7Rate-limit rerun, failure resolver, runner status
Documentation & Publishing9mdBook, GitBook, NotebookLM, translate docs, triggers doc
Fork & Import Sync20Upstream fork sync, registered imports, platform import
Full Pipeline8pre-flush → full-chain-flush → post-flush + critical-deploy
Git Platform Sync5Bidirectional push/pull sync with GitLab
Infrastructure & Environment4Dev container SDK, Incus, FSA API
Maintenance & Housekeeping16Config validation, cleanup, token rotation, dep updates
Mirror Chain14Outward mirror: I-D-1896 → OSP → OOC → GitLab
OSP-Bound Repo Management7Add mirror repo, CI status, setup OSP mirrors
OTA System5Release delivery, reconcile, self-update, discover, opt-in
PR Governance & Trust10Vouch, PR gate, labeler, auto-merge, rebase
Quota & Queue Management5Reserve, dedup, monitor, cost registry
README Management10Create, update, badge, translate, validate READMEs
Security & Compliance6SBOM, CodeQL, vendor audit, arch audit, pin workflows
Utility / On-Demand11Manual and specialised workflows

Key config files

FilePurpose
config/agent-cost-profiles.ymlMachine-readable AI agent cost profiles (8 variants, 10 complexity tiers)
config/gitlab-subgroups.ymlSingle source of truth for GitLab subgroup placement
config/ota-blocklist.ymlOrgs/profiles excluded from OTA delivery by default
config/ota-registry.ymlOpted-in forks receiving OTA updates
config/template-consumers.yml80 repos that receive template updates via sync-template.yml
config/template-manifest.ymlProfile definitions for template sync (full / mirror / infra-core / standalone)
config/workflow-priority-tiers.ymlCancellation priority (Tier 1 = never cancel, Tier 4 = cancel first)
config/workflow-quota-costs.ymlPer-workflow REST call cost estimates — drives quota pre-flight and quota-reserve.yml
config/workflow-sync.ymlWhich workflows have GitLab CI counterparts
registered-imports.json156 upstream repos kept in ongoing sync

Secrets

SecretUsed byNotes
ACTIVITYSMITH_API_KEYfull-chain-flush.ymlOptional — live activity tracking; skipped if unset
ADD_MIRROR_REPO_SYNCadd-mirror-repo.ymlScoped PAT for repo creation
BITBUCKET_TOKENimport-repo.yml, sync-registered-imports.ymlBitbucket app password (private repos only)
GH_SYNC_TOKENGitLab CI sync-from-gitlab jobSame PAT stored as a GitLab CI variable
GITEA_TOKENimport-repo.yml, sync-registered-imports.ymlGitea/Codeberg PAT (private repos only)
GITLAB_SYNC_TOKENmirror-osp-to-gitlab.yml, post-flush verificationGitLab PAT for mirror operations
GITLAB_TOKENGitLab workflowsGitLab PAT — api + write_repository on openos-project
NOTEBOOKLM_AUTH_JSONgenerate-notebooklm.ymlShort-lived auth state, rotated weekly by refresh-notebooklm-auth.yml
OSP_ADMIN_TOKENOSP org admin operationsPAT with admin:org on OpenOS-Project-OSP
SOURCEHUT_TOKENimport-repo.ymlSourcehut PAT (private repos only)
SYNC_IN_SERVER_URLsync-in.ymlURL of the local sync-in server instance
SYNC_TOKENAll workflowsGitHub PAT — repo + workflow + admin:org scopes
gh secret set <SECRET_NAME> --repo Interested-Deving-1896/fork-sync-all

Rate limits

Both SYNC_TOKEN and GH_SYNC_TOKEN belong to the same user and share the same 5,000 req/hr REST bucket. Treat them as one pool. raw.githubusercontent.com fetches do not count against the quota.

APILimitReset
GitHub REST5,000 req/hr per tokenTop of the hour
GitHub GraphQL5,000 pts/hr (counts as 1 REST call)Top of the hour
GitHub ModelsVaries by modelPer-minute window
GitLab REST2,000 req/min per tokenPer-minute window

quota-reserve.yml cancels low-priority queued runs when remaining quota drops below 1,000. Check current quota:

curl -sf -H "Authorization: token $SYNC_TOKEN" \
  "https://api.github.com/rate_limit" | \
  python3 -c "
import sys, json, datetime
d = json.load(sys.stdin)['resources']['core']
reset = datetime.datetime.utcfromtimestamp(d['reset']).strftime('%H:%M UTC')
print(f'remaining={d[\"remaining\"]}  resets={reset}')
"

GitLab subgroups

14 subgroups under gitlab.com/openos-project, 225 repos mirrored. Assignments are in config/gitlab-subgroups.yml.

SubgroupReposFocus
accessibility_deving9Screen readers, Braille, WCAG auditing, audio overviews
agnostic-api_deving29Unified Agnostic API — virtual filesystems, AI/LLM adapters, OS-compat layers
ai-agents_deving10AI agent frameworks and tools
cachyos_deving12CachyOS distro packages
git-management_deving9Git tooling and org management
immutable-filesystem_deving1Immutable filesystem projects
incus_deving49Incus container/VM tooling
linux-kernel_filesystem_deving14Kernel and filesystem repos
neon-deving8KDE Neon repos
ops30Infrastructure and org management tooling
penguins-eggs_deving17penguins-eggs distro tools
rust-systems_deving2Rust systems programming
taubyte_deving1Taubyte protocol
yaml-tooling_deving34YAML tools, linters, schema validators, GH Actions tooling

All automation is implemented as Bash scripts in scripts/ and GitHub Actions workflows in .github/workflows/. There are no compiled artifacts, no Node.js runtime dependencies, and no build step — every workflow runs directly against the shell scripts.

.
├── .github/workflows/    # 147 GitHub Actions workflows
├── scripts/              # Bash automation scripts
│   └── includes/         # Shared helpers (gh-api.sh, budget.sh, quota-instrument.sh, …)
├── config/               # YAML config: subgroup maps, quota costs, priority tiers, …
├── DOCS/                 # mdBook source (architecture, runbooks, quota reference, …)
│   └── generated/        # Auto-generated pages (workflow reference, source tree, …)
├── services/             # Long-running service helpers (sync-in server)
├── vendor/               # Third-party components hosted by fork-sync-all
├── .devcontainer/        # Dev container definition and local features
├── .ona/                 # Ona automations (services + tasks)
├── registered-imports.json  # Upstream repos kept in sync
├── book.toml             # mdBook configuration
└── Dockerfile            # Container image for CI runners

Scripts communicate via environment variables and exit codes. Shared helpers in scripts/includes/ provide GitHub API access (gh-api.sh), quota budgeting (budget.sh), and run instrumentation (quota-instrument.sh). See Architecture for the full data-flow diagram.


The repository uses GitHub Actions for continuous integration and automation. Below are the workflows and their purposes:

  • build.yml: Builds the project for all supported platforms. No secrets required.
  • test.yml: Runs unit and integration tests. No secrets required.
  • lint.yml: Checks code formatting and style using ESLint. No secrets required.
  • sync-forks.yml: Synchronizes forks with upstream repositories. Requires UPSTREAM_TOKEN secret.
  • mirror-orgs-full.yml: Mirrors repositories across organizations. Requires MIRROR_TOKEN secret.
  • inject-badges.yml: Injects badges into README files. No secrets required.
  • release.yml: Manages release creation and tagging. Requires RELEASE_TOKEN secret.
  • check-ci.yml: Validates CI configuration files. No secrets required.
  • cleanup-branches.yml: Deletes stale branches. Requires GITHUB_TOKEN secret.
  • codeql-analysis.yml: Performs CodeQL security analysis. Requires GH_CODEQL_TOKEN secret.

Secrets must be configured in the repository settings under "Settings > Secrets and variables > Actions."


Origins

Auto-generated by generate-dep-graph.sh. Do not edit manually. Last generated: 2026-06-12 (stub — full graph generated on next scheduled run)

This graph maps every OSP-bound repo in Interested-Deving-1896 to its upstream origin(s), as declared in each repo's ## Origins README section.

RepoOriginHostFork in I-D-1896
github-codeownerskohofinancial/github-codeownersGitHub
github-codeownersjjmschofield/github-codeownersGitHub
gitlab-enhancedopenos-project/git-management_deving/gitlab-enhancedGitLab

Summary

  • OSP-bound repos scanned: stub (full scan runs weekly via generate-dep-graph.yml)
  • Tooling dependencies tracked: github-codeowners (CODEOWNERS auditing across all OSP repos)

Tooling Dependencies

ToolPurposeUpstream
github-codeownersAudits CODEOWNERS coverage — surfaces ownership stats per repokohofinancial/github-codeowners

Resources

FileDescription
registered-imports.jsonRegistered ongoing-sync imports
dep-graph/origins.mdDependency graph (Markdown table)
.gitlab/merge_request_templates/Default.mdGitLab MR template
config/gitlab-subgroups.ymlGitLab subgroup map

Accessibility

This repo uses automated accessibility auditing via check-accessibility.yml.

Checks include: CODEOWNERS ownership coverage, README screen-reader compatibility, WCAG 2.1 AA HTML compliance, audio overview (espeak-ng), and Braille output (liblouis).

Run the Check Accessibility workflow to generate the first report and accessibility artifacts. See DOCS/accessibility.md for the full reference.


This repo is maintained in Interested-Deving-1896/fork-sync-all and mirrored through:

Interested-Deving-1896/fork-sync-all  ──►  OpenOS-Project-OSP/fork-sync-all  ──►  OpenOS-Project-Ecosystem-OOC/fork-sync-all

Changes flow downstream automatically via the hourly mirror chain in fork-sync-all. Direct commits to OSP or OOC are detected and opened as PRs back to Interested-Deving-1896.


Contributors

@Interested-Deving-1896: 480 commits
@github-actions[bot]: 78 commits
@actions-user: 7 commits
@dependabot[bot]: 6 commits
@web-flow: 5 commits

Note: This repository may be a mirror. Please refer to the upstream source for additional context.


License