Skip to content

File Synchronization

The file sync workflow at .github/workflows/sync-managed-files.yml runs as a parallel job alongside settings enforcement, using the REPO_SYNC_TOKEN (Contents R/W, Issues R/W, Pull Requests R/W, Metadata Read).

It skips execution when running on the source repository itself (docs-control), since the canonical files already live here.

The workflow iterates the managed_files.files array from the central config. For each entry, it fetches the canonical content from docs-control and compares it against the downstream copy. Files that are missing or have drifted are flagged for sync.

The managed files manifest includes:

  • Caller workflows (enforce-repo-settings.yml, github-pages-deploy.yml, require-linked-issue.yml, antigravity-review.yml, antigravity-translate.yml)
  • Agent skills (.agents/skills/demo-components/SKILL.md, .agents/skills/i18n-translate/SKILL.md)
  • Issue and PR templates
  • CONTRIBUTING.md, CLAUDE.md, AGENTS.md, STYLE_GUIDE.md, .editorconfig, .gitignore, LICENSE
  • .pre-commit-config.yaml

The manifest includes a sorted absent_paths list and a canonical state digest covering both present-file receipts and required absence. Reconciliation rejects disagreement between the central configuration and manifest, updates present files only when their Git blob SHA differs, and deletes every required-absent path that exists downstream.

Dependency automation is owned by the self-hosted organization Renovate App. Repository-local Dependabot configuration and its auto-merge workflow are required absent; they are not generated or restored by reconciliation. Run python3 scripts/audit-dependency-automation.py to fail closed on retired files, mutable Dependabot settings, bot pull requests or branches, catalog drift, and organization defaults.

Each downstream repository receives a generated README.md built from two sources:

  • README.md.tpl — a template in the docs-control root with placeholders (__TITLE__, __DESCRIPTION__, __REPO_NAME__, __DOCS_URL__)
  • docs-sites.json — provides the human-readable label and description for each repository by matching the repository name against the URL field