Workflow Reference

All workflows in .github/workflows/, grouped by priority tier. For trigger details and schedules see Workflow Triggers.

Auto-generated on 2026-06-09 from config/workflow-quota-costs.yml and config/workflow-priority-tiers.yml.

Quota cost columns: Low = fast/cached run · Mid = typical (p50) · High = large/uncached (p95)


Tier 1 — Critical

WorkflowSynopsisSchedulemin_quotaLowMidHigh
Cancel Runs After Token RotationCancels queued and in-progress runs that hold the old (now-invalid) token immediately after Rotate Secret Token completes, preventing Bad credentials failures.Manual5052050
Cancel Stale RunsCancels queued and in-progress workflow runs older than MAX_AGE_MINUTES (default 90) or created before a fix commit, preventing stale runs from burning quota.Manual100103080
Critical DeployFast-lane workflow for deploying critical fixes when the system is degraded — commits and pushes changes, clears the queue aggressively, then dispatches priority workflows.Manual50530100
Mirror WatchdogTriggers when any mirror workflow fails — waits 5 minutes then retries once. Surfaces persistent failures in the Actions tab without consuming quota on repeated retries.5051530
Pre-Flush PrepPrepares the system for a clean full-chain-flush — cancels stale runs, merges ready PRs, validates config, cleans merged branches, removes template pollution, then dispatches full-chain-flush when quota is sufficient.Manual100103060
Queue ManagerDeduplicates queued workflow runs (keeps newest per workflow) and evicts runs queued longer than STALE_QUEUE_MIN (default 25 min) to prevent quota exhaustion cascades.Every 30 min5051530
Quota MonitorPolls GitHub quota and optionally dispatches a target workflow once quota recovers above a configurable threshold. Dispatch-only — never scheduled.101510
Quota ReserveCancels low-priority queued runs when remaining quota drops below RESERVE_FLOOR (default 1000). Uses per-workflow min_quota from workflow-quota-costs.yml for cost-aware cancellation.Every 30 min101515
Rate-Limit Re-triggerScans recently-failed workflow runs, identifies those that failed due to rate limiting, and re-triggers them after their quota reset epoch.Every 4h at :055052050
Rotate Secret TokenRotates GitHub PATs and GitLab tokens stored as org/repo secrets. Validates the new token before committing, then triggers Cancel Runs After Token Rotation to clear stale runs.Manual5051020
Token Health MonitorChecks expiry dates for all tracked PATs and GitLab tokens. Opens a GitHub issue labelled token-monitor when any token expires within 45 days.Weekly Mon 09:24 UTC5051020
Validate ConfigValidates all config files (gitlab-subgroups.yml, workflow-sync.yml, priority-tiers.yml, registered-imports.json) on every push that touches them. Blocks merges on invalid config.Manual502510

Tier 2 — High

WorkflowSynopsisSchedulemin_quotaLowMidHigh
Add Mirror RepoAdds a new repo to the three-org mirror chain (Interested-Deving-1896 → OSP → OOC) by creating the repo in each org, setting up webhooks, and registering it in gitlab-subgroups.yml.Manual200103060
Full Chain FlushOrchestrates the complete mirror chain in sequence — mirror-to-osp → mirror-osp-to-ooc → mirror-osp-to-gitlab — with quota checks between each stage.17 5 1 * *10001004001000
Import RepositoryPlatform-agnostic repo importer — clones any public or authenticated git URL into Interested-Deving-1896, optionally mirrors through the OSP→OOC chain and registers for ongoing sync.100103060
Merge Repos into MonorepoMerges multiple git repositories into a single monorepo, preserving full commit history, tags, and Git LFS objects. Manual dispatch only.Manual100103060
Mirror Interested-Deving-1896 → OSPBare-clones every repo in Interested-Deving-1896 and git push --mirror into OpenOS-Project-OSP, syncing all branches, tags, and refs exactly.Every 6h at :135002080200
Mirror OSP → GitLabMirrors every repo in OpenOS-Project-OSP to its GitLab counterpart under openos-project, creating the GitLab project in the correct subgroup if it does not exist yet.Every 8h at :2330052050
Mirror to OpenOS-Project-Ecosystem-OOCBare-clones every repo in OpenOS-Project-OSP and git push --mirror into OpenOS-Project-Ecosystem-OOC, completing the second hop of the three-org mirror chain.Every 6h at :153002080200
Pre-Mirror CI GateChecks CI status on all OSP-bound repos in Interested-Deving-1896 before mirroring. Dispatches resolve-failures for red repos, waits, then re-checks. Blocks the mirror if repos are still failing.Manual80050150300
Rebase PRsRebases open PRs in Interested-Deving-1896 onto their base branch when they fall behind, keeping PRs mergeable without manual intervention.Daily 05:10 UTC10052050
Sync All ForksSyncs all branches of every fork owned by Interested-Deving-1896 with their upstream via the GitHub merge-upstream API, falling back to force-reset on divergence.Daily 06:07 UTC50050200500
Sync Registered ImportsRe-syncs all repos listed in registered-imports.json — bare-clones each source URL and pushes all branches and tags to Interested-Deving-1896.Every 6h at :5520051530
Sync from GitLabPulls changes from the GitLab mirror back to GitHub when GitLab CI has committed changes (e.g. generated files, CI artifacts).Daily 04:22 UTC10052050
Sync to GitLab VariantVariant of Sync to GitLab that uses a different token and push strategy — used when the primary sync is blocked or for testing.Every 8h at :5010052050

Tier 3 — Medium

WorkflowSynopsisSchedulemin_quotaLowMidHigh
Check OSP-Bound CI StatusChecks CI status across all OSP-bound repos and reports failing workflows. Triggers resolve-failures when failures are detected.Daily 09:05 UTC30050150300
Cleanup Stale BranchesDeletes branches that have been merged into the default branch across all repos in Interested-Deving-1896, OSP, and OOC.29 4 1 * *2001060200
Cleanup Template PollutionRemoves files incorrectly propagated from fork-sync-all to consumer repos via the template sync pipeline, across all three GitHub orgs and GitLab.Manual2002080200
Clone OrgClones all repositories from an org or user on any supported platform (GitHub, GitLab, Bitbucket, Gitea) into Interested-Deving-1896.Manual2002080200
Create Missing READMEsCreates README.md from the standard template for OSP-bound repos that have no README, with placeholder sections for human-owned content.Daily 07:08 UTC2002080200
Deploy BookBuilds the mdBook documentation site from DOCS/ and deploys it to GitHub Pages at interested-deving-1896.github.io/fork-sync-all/.Manual5051020
Docker → Incus MigrationScans repos for Docker artifacts (Dockerfile, docker-compose.yml) and replaces them with Incus equivalents. Runs after Add Mirror Repo and weekly.Weekly Sun 03:08 UTC1001040100
Enforce Agnostic VendorScans vendor/ for distro-specific hardcoded fallback values in shell, YAML, and TypeScript. All vendored components must be deployment-agnostic.Manual502510
Fork KDE Neon ReposOne-shot workflow that clones the 6 KDE Invent neon repos into Interested-Deving-1896 and pushes them through the OSP mirror chain. Ongoing re-sync handled by sync-registered-imports.Manual100103060
Generate Book PagesRegenerates DOCS/generated/ pages from config sources (workflow-quota-costs.yml, priority-tiers.yml, gitlab-subgroups.yml, registered-imports.json) and commits the result.Manual50125
Inject Built-with-Ona BadgesAdds a Built-with-Ona badge to README.md for all repos in Interested-Deving-1896 that are missing it. Skips repos that already have the badge.Daily 08:15 UTC20053080
OTA DiscoverScans forks of fork-sync-all for .ota/config.yml with enabled: true and adds newly discovered repos to config/ota-registry.yml.Daily 06:38 UTC1001040100
OTA Opt-InPropagated to opted-in forks. Fork owners run this once to create .ota/config.yml and open a registration PR against fork-sync-all's OTA registry.5051530
OTA ReleaseTriggered on semver tag push. Assembles and delivers OTA updates to all opted-in repos in config/ota-registry.yml, then updates CHANGELOG.md with release notes.Manual1001040100
OTA Self-UpdatePropagated to opted-in forks. Pulls the latest OTA release from fork-sync-all and applies it to the fork's workflow files.Weekly Mon 05:15 UTC5051530
PR AutomationApplies size labels, path-based labels, reviewer auto-assignment, risky pattern detection, and auto-merge for low-risk PRs on every PR open or update.On push5051530
Pipeline TelemetryPost-run observability workflow. Fetches completed run data, builds a span tree (workflow→jobs→steps), computes Thoth-equivalent metrics, parses log severity, writes a step summary and trace artifact, and upserts a rolling metrics issue.Manual20051530
Post-Flush VerificationEnd-to-end health check after full-chain-flush — mirror integrity across all three pairs, CI status on I-D-1896 OSP-bound repos, quota health, and workflow queue health.Manual300150350600
Rebuild LTS Branch (penguins-eggs)Rebases the all-features branch onto the upstream master after each pieroproietti sync, then force-pushes the result to the lts branch.Manual5051530
Reconcile Org ReferencesRewrites org/repo references in OSP and OOC mirrors to point at the correct org, fixing stale Interested-Deving-1896 references left by the mirror process.Daily 05:50 UTC3001060150
Resolve CI FailuresAnalyses CI failure patterns across OSP-bound repos and applies automated fixes (dependency updates, config corrections, workflow patches) where possible.Daily 07:43 UTC1001040100
Setup Dashboard VariablesSets all VITE_* repository variables required by the infra-dashboard public-dashboard build. Safe to re-run — blank inputs leave existing variables unchanged.Manual5051530
Setup OSP Mirror WorkflowsEnsures all repos in OpenOS-Project-OSP have the correct mirror workflow files and secrets configured for the OSP→OOC mirror chain.Every 6h at :452002080200
Sync Registry SourcesRegistry-driven upstream sync — reads a JSON registry of upstream sources and syncs each repo via merge-upstream or force-reset. Agnostic generalisation of sync-pieroproietti-forks.Daily 03:05 UTC1001040100
Sync TemplateSyncs fork-sync-all's file tree into target repos. Three modes — create (new repo + mirror chain), inject (copy into existing repo), propagate (push-triggered sync to all consumers in template-consumers.yml).Manual2002080200
Sync Upstream SourcesReads the Origins section of every OSP-bound repo and syncs each referenced external fork to its upstream HEAD via merge-upstream or force-reset.Daily 01:37 UTC2002080200
Sync btrfs-devel BranchesSyncs tracked btrfs-devel branches from the upstream kernel tree into the btrfs-dwarfs-framework fork.Every 6h at :0210052050
Sync pieroproietti ForksSyncs all penguins-eggs forks owned by Interested-Deving-1896 with their upstream pieroproietti sources via merge-upstream.Every 8h at :071001040100
Sync to GitLabPushes the Interested-Deving-1896/fork-sync-all repo to its GitLab mirror at openos-project/ops/fork-sync-all.Daily 09:17 UTC10052050
Update READMEsRegenerates AI-owned sections (what-it-does, architecture, ci, mirror-chain, etc.) in README.md for all OSP-bound repos, preserving human-owned sections.Daily 03:15 UTC30050150300
Validate README RenderChecks README.md for rendering issues — leaked log lines, unclosed fences, bare brackets, raw angle brackets, unclosed AI markers, missing H1, and empty sections.Manual5051530
Verify Mirror IntegrityCompares default-branch HEAD SHAs between source and destination for all OSP-bound repos after a mirror stage. Reports mismatches as warnings; configurable hard-fail mode.Manual40050100150

Tier 4 — Low

WorkflowSynopsisSchedulemin_quotaLowMidHigh
Check GitLab CI SyncCompares paired jobs in .gitlab-ci.yml against config/workflow-sync.yml and reports drift — scripts with changed entry points, mismatched cadence rules, or jobs missing from either side.Manual502510
Generate NotebookLM ContentGenerates NotebookLM content artifacts (audio, video, slides, infographic, quiz, flashcards, report) for a given notebook and uploads them to a GitHub Release.Manual5051530
Generate OSP Dependency GraphScans all OSP-bound repos for package.json and requirements.txt files and generates a dependency graph showing inter-repo relationships.Weekly Sun 03:10 UTC1002060150
GitLab Storage ScanScans all projects under openos-project on GitLab and reports storage usage. Useful for diagnosing when the namespace approaches its 10 GiB limit.Manual502510
LTS README StandardisationStandardises README.md structure for LTS-tagged repos, ensuring they follow the LTS template with correct version badges and support tables.19 3 1 * *1001040100
List Chromium GitLab ReposLists all projects under the Chromium_Browser_OS_Deving GitLab group. Informational only — used to audit what has been mirrored.Manual502510
Mirror ArtifactsMirrors GitHub Releases, Flatpak packages, and RPM packages from Interested-Deving-1896 repos to their OSP and OOC counterparts.Every 8h at :102001050150
Mirror OrgsMirrors all repos from Interested-Deving-1896 to OpenOS-Project-OSP and OpenOS-Project-Ecosystem-OOC using bare clone + push --mirror.Daily 02:17 UTC1002060150
Mirror ReleasesMirrors GitHub Releases (tags + release notes + assets) from Interested-Deving-1896 repos to their OSP and OOC counterparts.Every 6h at :032001050150
Notification PollerPolls GitHub notifications for unread CI failure notifications and triggers resolve-failures immediately when any are found.Every 4h at :32501515
README WizardAI-guided README authoring — writes or rewrites a README for a specific repo according to custom instructions (audience, tone, sections), respecting existing human-owned markers.Manual100103060
Rate Limit StatusQueries current rate limit status for GitHub REST, GitLab, and GitHub Models APIs. Exits non-zero if any platform is below 10% remaining.Manual102510
Refresh NotebookLM AuthRotates the short-lived __Secure-1PSIDTS cookie in NOTEBOOKLM_AUTH_JSON weekly and writes the updated state back to the repo secret.Weekly Tue 06:17 UTC10125
Repo ManifestExports a manifest of all repos in an org, or imports repos from a manifest into a target GitHub org. Supports multi-platform bulk import.Manual1001040100
Setup GitLab CI SchedulesReplaces all existing GitLab pipeline schedules in openos-project/ops/fork-sync-all with the 3 consolidated CADENCE-based schedules. Safe to re-run.502510
Shallow Reclone Large GitLab MirrorsReduces GitLab storage usage by replacing full git history on large mirror projects with a shallow clone. Run when openos-project approaches its 10 GiB storage limit.Manual502510
Sync penguins-eggs docs to penguins-eggs-bookTriggered by repository_dispatch from penguins-eggs when docs/chromiumos/ changes on all-features. Syncs the updated docs into the penguins-eggs-book repo.Manual5051530
Translate DocsTranslates DOCS/ mdBook pages into a target language using GitHub Models API. Writes translated files to DOCS// and upserts a language section in SUMMARY.md.Daily 11:15 UTC10051530
Translate READMEsTranslates README.md files for OSP-bound repos into additional languages using GitHub Models API. Writes translated files alongside the English original.Daily 10:43 UTC1001040100
Trigger Artifact MirrorDispatches mirror-artifacts immediately when a release is published in this repo, so OSP and OOC receive the release without waiting for the next scheduled run.502510
Update Infrastructure DependenciesRuns Dependabot-style updates for GitHub Actions versions across all workflow files and opens a grouped PR.Weekly Mon 06:11 UTC5051530
Update Quota Cost RegistryReads quota-instrument records from job logs, computes observed p50/p95 REST costs per workflow, and commits updated values to workflow-quota-costs.yml weekly.Weekly Mon 08:00 UTC2003080150
Update Workflow Triggers DocRegenerates docs/workflow-triggers.md and docs/workflow-triggers.txt whenever a workflow file changes on main. Commits the result directly to main.Manual5051020
Upstream Direct Commits from OSP + OOCDetects commits pushed directly to OSP/OOC default branches (without a PR) and opens PRs against Interested-Deving-1896 to reconcile them.Every 6h at :472002080200
Upstream PRs from OSP + OOCDetects commits on OSP and OOC default branches that are not present in Interested-Deving-1896 and opens PRs to bring them upstream.Every 6h at :332002080200
Upstream Workflow ProposalScans OSP-bound repos for new workflow patterns not present in fork-sync-all and opens a PR proposing them as template skeletons.Weekly Mon 06:06 UTC5052050

✦ Mid value is an observed p50 measurement. All other values are code-audit estimates.