Přeskočit na obsah

GitHub pro novou Organizaci

O přístupu ke zdrojovému kódu Organizace rozhoduje v Lazuriu jen GitHub. Členství, Teamy, granty k repozitářům a pravidla větví určují, kdo čte, zapisuje, schvaluje a merguje; Lazurio žádný druhý seznam přístupů nevede. Jedna Organizace v Lazuriu je jedna GitHub Organization a jedna hranice přístupů. Než první Builder nainstaluje Lazurio pro novou Organizaci, Owner GitHub Organization nastaví základ popsaný níže a ověří ho proti manifestu Organizace (rozhodnutí 0150).

Do Prostředí lidé vstupují Lazurio účtem a účet na GitHubu k tomu nepotřebují. O tom, co se s repozitáři smí dělat a co se smí publikovat, ale dál rozhoduje GitHub. U účtů propojených s GitHubem odpovídá členství v Organizaci v Lazuriu živému členství v GitHub Organization. Tento model vstupu je cílem rozhodnutí 0192; přechod na něj zatím není dokončený.

PoložkaPožadovaný stavCo ho vynucuje
GitHub OrganizationJedna pro každou Organizaci v Lazuriu. Její Owneři jsou Admini Organizace.GitHub
Kořenový repozitářKořenový repozitář Organizace na main, podle konvence <login>/<login>_GEN3, s manifestem lazurio.organization.json.Lazurio ho čte, přístup řídí GitHub
Lazurio for GitHubOwner Organizace aplikaci nainstaluje s přístupem ke All repositories. „Only select repositories“ je podporovaná výjimka; musí zahrnout kořenový repozitář a každý repozitář, který Lazurio obsluhuje, a nikdy se nevydává za celou Organizaci.Rozsah instalace v GitHubu
Výchozí oprávnění k repozitářůmnone (v API default_repository_permission). Samotné členství neotevře žádný soukromý repozitář.GitHub
Team buildersRoli Builder nese právě jeden Team. Jeho úplný seznam členů se rovná schváleným Builderům a každý je aktivním členem, ne čekající pozvánkou.Členství v GitHubu
Granty Teamu buildersVýslovný zápis (Write, v API push) do kořenového repozitáře a do každého aktivního repozitáře, který není omezený. Nový repozitář dostane grant ve stejném kroku, ve kterém vznikne nebo se aktivuje.Granty v GitHubu
Omezené repozitářeŽádný grant pro builders ani pro Buildery, kteří nejsou Admini, k infra ani k žádnému repozitáři, který manifest deklaruje jako default_access: restricted nebo private.Granty v GitHubu
Design SystemyKaždý aktivní člen včetně účtů Prostředí s automatizacemi má k Design Systemům Organizace alespoň Read.Proces: kontroluje Admin

GitHub neumí vyjádřit „všechny současné i budoucí repozitáře kromě infra“, proto každý nový běžný repozitář potřebuje vlastní grant pro builders. Zda je repozitář omezený, plyne jen z jeho deklarace v manifestu, nikdy z názvu nebo cesty (rozhodnutí 0143). Owneři na omezené repozitáře dosáhnou díky roli Owner; Lazurio to eviduje jako výjimku role Owner, nikdy jako grant Buildera. Změna členů, Teamů, grantů nebo instalací aplikací je zápis do GitHubu, který potřebuje výslovný pokyn uživatele; agent ji připraví a stav ověří.

Organizace, která provozuje automatizovanou práci v Prostředí s automatizacemi (Henry), přidá svou personu: strojový účet s dvoufázovým ověřením, člena a nikdy Ownera, v každé Organizaci jiný. Pracuje přes Team steward s oprávněním Maintain ke všem repozitářům kromě infra. K infra smí dostat jen přímý zápis, nikdy přes Team a nikdy Admin, jako jmenovaný reviewer pull requestů do infra, až na to Organizace přepne svá pravidla review (rozhodnutí 0169 a 0093).

Ověření před prvním Builderem

Sekce “Ověření před prvním Builderem”

Owner porovná živý stav s aktivními repozitáři v manifestu, ne s ručně vedeným seznamem. Neznámý stav (unknown), neúplná data od GitHubu nebo Builder, který chybí nebo přebývá, instalaci zastaví (rozhodnutí 0150).

Terminál
gh api "orgs/<org>" --jq '{login, id, default_repository_permission}'
gh api "orgs/<org>/teams/builders" --jq '{name, slug, id, privacy}'
gh api --paginate "orgs/<org>/teams/builders/members?role=all&per_page=100" \
--jq '.[].login'
gh api --paginate "orgs/<org>/teams/builders/repos?per_page=100" \
--jq '.[] | {name, push: .permissions.push}'
gh api --paginate "repos/<org>/infra/collaborators?affiliation=all&per_page=100" \
--jq '.[] | {login, role_name}'

Poslední příkaz zopakujte pro každý omezený repozitář. Seznam collaboratorů v GitHubu zahrnuje i Ownery Organizace a členy, kteří mají přístup přes Team nebo výchozí oprávnění, takže ukazuje výsledný přístup, ne jeho původ. Porovnejte ho s rolí každého člověka v Organizaci: člen, který není Owner, se v něm objevit nesmí, kromě přímého zápisu persony do infra popsaného výše.

Když Organizaci instaluje Pracovní Prostředí nebo počítač člověka, příkaz lazurio organization install <login> nejdřív ověří živou roli tohoto člověka na GitHubu. Builder a Steward přeskočí repozitáře jen pro Adminy a role, kterou nejde ověřit, instalaci zastaví (rozhodnutí 0188).

Samotný název role nic neopravňuje; rozhodují živá práva člověka na GitHubu (rozhodnutí 0062).

RoleCo role dělá
Organization AdminOwner GitHub Organization. Spravuje členy, Teamy, granty, omezené repozitáře, instalace aplikací a pravidla větví a také Prostředí, která Organizace vlastní. Svůj pull request smí mergnout, kde to GitHub dovolí (rozhodnutí 0095).
StewardMísto pro review. Merguje zamčenou main tam, kde to pravidla větví dovolí, a typicky vydává Release.
BuilderVyvíjí Moduly se zápisem do aktivních Builder repozitářů a smí mergovat mladou main, která je zatím vědomě otevřená.
UserPoužívá produkční aplikace Organizace a nic neinstaluje (rozhodnutí 0060).

Ochrana main a kdo merguje

Sekce “Ochrana main a kdo merguje”

Agenti dodávají každou změnu jako pull request. Merge je Publikace: proběhne jen na výslovný pokyn uživatele, předáním přes assignee nebo podle stálého mandátu, který zapisuje rozhodnutí, a co se smí mergnout, určují živá práva uživatele na GitHubu. Před merge agent ověří, že schválení patří přesně poslednímu commitu (headu), a merguje s --match-head-commit (rozhodnutí 0103). Každý pull request má assignee, který ho dotáhne do main (rozhodnutí 0222; jeho automatická kontrola zatím není nasazená).

main se zamyká postupně. main mladého Modulu smí zůstat otevřená, aby Builder mohl publikovat; Admin Organizace ji vědomě zamkne pravidly větví, když na tom záleží. Admin také určuje, kdo musí schválit: v GitHubu zakládají pravidla ochrany větví a rulesety lidé s administrátorským přístupem k repozitáři a povinné review od code ownerů vyžaduje oprávnění admin nebo owner. Owneři Organizace mají úplný administrátorský přístup.

Co GitHub skutečně vynutí, závisí na vašem plánu. Pravidla ochrany větví, rulesety a code owneři fungují v soukromých repozitářích jen s GitHub Pro, GitHub Team nebo GitHub Enterprise; GitHub Free je nabízí pro veřejné repozitáře. Ochrana větve ve výchozím stavu neplatí pro lidi s administrátorským přístupem, dokud nezapnete „Do not allow bypassing the above settings“. Kde pravidlo GitHub nevynucuje, drží ho proces a AGENTS.md Organizace. Kde plán nenabízí GitHub Draft pull requesty, třeba v soukromých repozitářích na GitHub Free, otevřou agenti běžný pull request a stav práce napíšou do popisu (rozhodnutí 0103).

Naše doporučení pro zamčenou main na placeném plánu:

  • vyžadujte pull request s alespoň jedním schválením;
  • vyžadujte review od code ownerů uvedených v CODEOWNERS;
  • při novém pushi zahazujte stará schválení, aby schválení k přezkoumanému headu vázal i sám GitHub;
  • vyžadujte vyřešené konverzace a kontroly (status checks) repozitáře;
  • obcházení pravidel nedovolte.

Na tomto nastavení stojí tři pravidla Lazuria:

  • Týmové Prostředí nikdy nemerguje. Jeho pull requesty přicházejí od lazurio-for-github[bot] se štítkem team:<slug> a schvaluje a publikuje je jmenovaný člověk pod vlastním účtem (rozhodnutí 0148). Je to pracovní pravidlo na každém plánu. Ochrana větve, která vyžaduje schválení a kontroly, aplikaci nezastaví: jakmile jsou splněné, může její token s právem zápisu obsahu repozitáře mergnout. Pravidlo by vynutilo jen omezení, které merge povolí jmenovaným lidem nebo Teamům a aplikaci vynechá; Admin, který na takové omezení spoléhá, si ho na repozitáři ověří.
  • Pull requesty persony schvaluje člověk: Owner, Admin nebo Steward. Persona merguje jen pull requesty, jejichž je assignee, nikdy nespouští apply infrastruktury, nevydává Release a nemění přístupy, tajemství ani fakturaci (rozhodnutí 0169). Na placeném plánu schválení vynucují pravidla větví, na bezplatném je to dohoda.
  • Release není Publikace. Release vydává jen ten, komu to dovolují práva na GitHubu, a jen na výslovný pokyn uživatele nebo podle stálého mandátu, který zapisuje rozhodnutí.

Každý text, který agent napíše na GitHub, končí podpisem Agent: environment <UUID> · T3 thread <UUID>, u bota Lazurio MausBotu bot <UUID> (rozhodnutí 0218). Je to pravidlo, které agenti dodržují, ne kontrola GitHubu.

Co smí aplikace Lazurio for GitHub

Sekce “Co smí aplikace Lazurio for GitHub”

Týmové Prostředí, které sdílejí členové Teamu, pracuje na GitHubu přes aplikaci Lazurio for GitHub a token broker Organizace. Osobní účty GitHubu se v něm nepřihlašují a Lazurio takové přihlášení odmítne. V Osobním a Pracovním Prostředí se uživatel přihlásí na GitHub vlastním účtem a agenti jednají v živých právech tohoto účtu (rozhodnutí 0165).

Veřejný zdrojový kód brokeru, vydání 0.14.0 z 21. 10. 2026, vydává krátkodobý instalační token vždy pro jeden repozitář. Oprávnění tokenu určuje živý grant Teamu k tomuto repozitáři:

Grant TeamuOprávnění tokenu
Write, Maintain nebo Adminactions: write, checks: read, contents: write, members: read, pull_requests: write a navíc workflows: write a issues: write, pokud je deklaruje politika brokeru Organizace
Read nebo Triageactions: read, checks: read, contents: read, members: read, pull_requests: read a navíc issues: write, pokud ho politika deklaruje

Token nikdy nedostane správu repozitáře ani změny členství. Soukromý klíč aplikace existuje jen v brokeru, nikdy v Prostředí. Dokumentace GitHubu k tomu dodává, že nainstalovaná aplikace má vždy alespoň přístup pro čtení ke všem veřejným repozitářům na GitHubu. Rejstřík rozhodnutí Lazuria zatím vede kontrolu každého tokenu proti Teamu jako cíl, který ještě nevznikl (rozhodnutí 0147), veřejný zdrojový kód brokeru ji ale už obsahuje. Veřejný kód nedokazuje, co běží v konkrétním nasazení, proto se provozovatele vašeho nasazení Lazuria zeptejte, které vydání brokeru vaši Organizaci obsluhuje.

Změny grantu Teamu z Přehledu Organizace má podle rozhodnutí 0186 provádět samostatná úzká aplikace Lazurio Administration Access s jednorázovým tokenem člověka, který změnu dělá, takže audit GitHubu jmenuje tohoto člověka; Lazurio for GitHub ani broker přístupy měnit nemohou. Změna od Stewarda je žádost, kterou schvaluje Admin.

V GEN3 spouští počítač Buildera lazurio organization install <login> --role builder, který odmítne klonovat, když chybí zápis do kořenového repozitáře nebo do některého Builder repozitáře, a na GitHubu nic nemění (rozhodnutí 0141).