🏡 index : quine-global/quine-manifest.git

quine-manifest

Declares where every Quine repo lives (this repo: forge.in.quineglobal.com/quine-global/quine-manifest) on GitHub and on Forgejo (forge.in.quineglobal.com), and a script that makes both match.

Bucket GitHub org Forgejo org Notes
main quine-global quine-global
labs quine-global-labs quine-global-labs
boneyard quine-global-boneyard quine-global-boneyard retired repos (not archived)

By default Forgejo is primary and push-mirrors to GitHub (primary = "forgejo"). With primary = "github", Forgejo holds a pull mirror instead.

Use

Needs Python 3.11+ and a logged-in gh.

python3.14 quine-repos.py                 # plan: show drift, change nothing
python3.14 quine-repos.py --apply         # make it so
python3.14 quine-repos.py --apply ncdu    # only some repos

To move a repo, change its bucket and apply: it's transferred on both sides, and its push mirror is repointed.

Credentials

Every repo in a bucket org (on either host) must be listed in manifest.toml; the script exits with an error before doing anything if it finds one that isn't.

Upstream mirrors (upstream = …) have Forgejo Actions off unless they say actions = true: they carry upstream's own CI, which would sit "waiting" forever for runners we don't have.

Renovate

Renovate opens dependency update PRs on the forge (it runs on the forge VM: petersweb-infra's nixos/renovate.nix and docs/RENOVATE.md). For every repo it covers, --apply gives the forge's renovate account write access and adds the webhook that wakes it ([renovate] in manifest.toml). Renovate then finds the repo itself and opens a "Configure Renovate" PR adding a renovate.json that extends renovate/default.json, the shared defaults: the schedule (Monday mornings), Forgejo workflows, and leaving our own forge images to their deploy workflows. Nothing else happens in a repo until that PR is merged; put anything repo-specific in its own renovate.json.

It covers our own repos in the main and labs buckets by default, not forks (forked_from: their dependencies come with upstream merges) or mirrors. A repo's renovate = true or false overrides that. Turning it off is only reported: remove the collaborator and webhook by hand.

What it won't do