fix(quota): fail-closed default group for group-less owners (#120) #152
Inga granskare
Etiketter
Inga etiketter
area/backups
area/ci
area/control-panel
area/identity
area/infra
area/observability
area/payments
area/security
area/storage
area/web
blocked
needs-info
needs-triage
ready-for-implementation
type
bug
type
chore
type
docs
type
epic
type
feature
type
task
wontfix
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Inget förfallodatum satt.
Beroenden
Inga beroenden satta
Referens
bitborg/bitborg-infra!152
Läser in…
Hänvisa till i nytt ärende
Ingen beskrivning angiven.
Ta bort grenen "fix/120-default-quota-group"
Borttagning av en gren är permanent. Även om den borttagna grenen kan fortsätta existera en kort tid innan den faktiskt tas bort, kan det INTE ångras i de flesta fall. Vill du fortsätta?
#120 — fail-closed default quota group
Closes the fail-open window: a group-less owner (a new JIT account before the first reconcile, or any owner if the reconciler is dead) currently falls to
[quota.default] = -1= unlimited.[quota.default] = 0can't fix this on v16 (it applies to everyone and blocked group members — the 2026-07-17 incident).Change
[quota].DEFAULT_GROUPS = participant(new varforgejo_quota_default_groups, defaultparticipant,""to disable). Groups inDEFAULT_GROUPSapply to every owner automatically; the reconciler's tier groups win via the most-permissive merge, so tier users are unaffected while a group-less owner inherits the zero-quotaparticipantgroup — browse/issues yes, uploads no, until the reconciler assigns their real tier.⚠️ Risk + apply order — read before applying
Quota-default changes have broken all users before, so:
gitborgorg inorg-unlimited; without it, this change would catch the platform's own org in the zero-quota default and block pushes to every project repo.participantgroup exists (reconciler ensures it every run) andbitborg → org-unlimited(confirm in the reconciler log after PR-B applies).--tags forgejo(re-renders app.ini + restarts Forgejo — note the always-present benign app.ini diff).bitborg/*repo still work (org-unlimited overrides the default);participant(blocked) — verify via the quota API / a throwaway account.forgejo_quota_default_groups: ""+--tags forgejo→ reverts to[quota.default]behaviour.Validation (pre-merge)
ansible-lint (production) ·
--syntax-check·--check --diffrendersDEFAULT_GROUPS = participant(0 failed).Closes #120.
1d48a37981112c7078ab