Co to znamená
Sousední tvrzení — GitHub milníky a úkoly se generují z kanonického modelu — se týká toho, co scripts/github-sync vykresluje a co odmítá. Neříká nic o tom, zda GitHub z toho cokoli skutečně přijal. Toto tvrzení je druhá polovina: že se obojí nyní shoduje a že build selže, když se přestane shodovat.
Princip
scripts/ci/github-check čte remote a klasifikuje každý záznam. Uplatňuje dvě tolerance, ne jednu.
Odmítnuto rovnou, od prvního spuštění:
| state | co to znamená |
|---|---|
behind | kanonický záznam se posunul a nikdo ho nepromítl |
edited | člověk přepsal generovanou oblast |
conflict | člověk ho přepsal a záznam se od té doby posunul |
unmanaged | vzdálený úkol si nárokuje kanonické id, které tento repozitář nemá |
state | open/closed na remote se rozchází s odvozeným stavem |
milestone | přiřazení milníku na remote se liší |
Čtyři z těchto stavů zapisuje apply: behind, state, milestone a closed, které adaptér hlásí vedle state, když je uzavřenou stranou GitHub. Hlásí se jako PENDING a neodmítají se jen ve dvou případech: u záznamů, které head změnil od svého merge base, a na trunku u záznamů změněných v přistání mladším než deklarované okno. To je samostatné tvrzení, projected-record-edit-is-landable. U každého jiného záznamu se odmítají a po oknu se trunk odmítá pro všechny.
Rachetováno proti .ai/repo/ci/github-drift-baseline.txt:
| state | co to znamená |
|---|---|
missing | kanonický záznam bez protějšku na GitHubu |
adopt | protějšek nenesoucí značku identity |
Baseline smí klesat a nikdy nesmí růst. Zapsat ji je záměrný akt, ve stejném idiomu, jaký .ai/repo/claim-proof-baseline.txt už používá pro pravidla a tvrzení, která nejmenují nic, co by stroj mohl spustit.
Kontrola, která nedosáhne na remote — žádné gh, žádný token, žádné oprávnění — skončí 12 a řekne které. Nikdy neskončí čistě.
Jak to vidět
scripts/ci/github-check # 0 in sync, 10 findings, 12 the gate cannot run
scripts/ci/github-check --write-baseline # record today's backlog as the ceiling, deliberately
scripts/github-sync --plan # offline: what an apply would create or changeProč je to samostatné tvrzení
Protože první tvrzení bylo pět dní pravdivé a zelené, zatímco to, co popisuje, přestalo probíhat.
--check od napsání adaptéru končí kódem 11 při driftu. Nikdo ho nevolal: scripts/ci/core-check spouštěl --plan a --render, což dokazuje, že projekci lze vytvořit. Projekce byla aplikována jednou, 2026-09-04, a pak model vyrostl z 19 záznamů na přes 200, zatímco GitHub držel těch 19. Změřeno při 867f3a9: 200 nálezů driftu.
Všech osm promítnutých milníků bylo po celou dobu synchronizováno, protože milníků je málo a byly upravovány ručně — povrch, na který se člověk dívá, byl tedy tím povrchem, který se ještě shodoval. To je to, co vám přinese tvrzení citující skript, který existuje, místo kontroly, která běží.
Co nepokrývá
Tato kontrola nic neaplikuje; dokazuje shodu. Od 2026-10-12 je aplikace důsledkem přistání (.github/workflows/github.yml, project.the-projection-is-applied-at-landing) a scripts/github-sync --apply člověka je záložní cesta. Základní hodnotu kontroly stále snižuje člověk. Základní hodnota je strop a nic ji samo nesnižuje: 2026-10-10 četla 192 missing, zatímco GitHubu chyběly 3 záznamy, takže nový záznam se počítá jako missing a prochází, dokud někdo základní hodnotu nezapíše níž.
Kontrola také neposuzuje model. Říká, která ze dvou stran se pohnula, ne zda kanonické záznamy popisují správnou práci — to je věc plánu. A nerozhoduje o ničem, co neumí změřit: bez gh, tokenu nebo oprávnění skončí kódem 12 s uvedením, čeho se to týká, místo zeleného buildu, který nic nečetl.
Důkazy
test/cases/97_github_gate.sh řídí každou polovinu nad fixture repozitářem s fixture remote, offline: záznam, jehož kanonický text se pohnul, selže rovnou, záznam přidaný do modelu a nikdy neprojektovaný rozbije ratchet, backlog na své základní hodnotě projde, upravený region a nespravovaný vzdálený úkol jsou odmítnuty a kontrola bez základní hodnoty odmítne nějakou hádat. test/cases/45_github_projection.sh dokazuje šest stavů, které čte. test/cases/1038_a_head_is_judged_against_what_it_changes.sh dokazuje, který drift čeká a že všechno ostatní je stále odmítáno.
Pravidlo je project.github-projection-gated@1.