I2300 — Hlava se posuzuje podle toho, co mění, ne podle živého stavu GitHubu — Prismatic Majordomus
Přimět scripts/ci/github-check, aby drift, který by zapsal apply, hlásil jako pending a neodmítal ho, u záznamů, které head změnil od svého merge base, a na trunku u záznamů, které se změnily v přistání mladším než deklarované okno; tentýž drift odmítat u každého jiného záznamu a na trunku po uplynutí okna s uvedenou nápravou.
HOTOVO vlna 0 · p1 · profil implementation · bezpečné souběžně
Cíl
Přimět scripts/ci/github-check, aby drift, který by zapsal apply, hlásil jako pending a neodmítal ho, u záznamů, které head změnil od svého merge base, a na trunku u záznamů, které se změnily v přistání mladším než deklarované okno; tentýž drift odmítat u každého jiného záznamu a na trunku po uplynutí okna s uvedenou nápravou.
Proč
Kontrola github-projection spouští scripts/github-sync --check proti živému GitHubu a odmítá každý záznam, který je pozadu. Adaptér promítá jen kmen a nic to neaplikuje automaticky, takže pull request, který upraví již promítnutý záznam, je červený od narození a na vlastní hlavě nikdy nezezelená. Změřeno 2026-10-10: pull request #855 změnil jednu řádku I1900 a selhal s 'DRIFT behind issue I1900 (#753) body is behind the canonical record'; pull request #820 selhal s '8 record(s) state'. Jediná cesta ven bylo záznam neupravovat. Kdyby taková změna přistála, vlastní ci kmene by byla červená, dokud by někdo ručně neaplikoval, což blokuje další release tag. Ratchetující základní hodnota pokrývá jen missing a adopt a pro behind neexistuje štítek ani porovnání s bází.
Aktuální stav
scripts/ci/github-check při každém běhu odmítne behind, state, milestone a closed, ať je běh čehokoli. scripts/github-sync --apply se spouští ručně z masteru.
Cílový stav
Na hlavě je drift na záznamu, který hlava změnila, hlášen jako PENDING se slovy „projected after merge“. Na kmeni je PENDING, dokud je přistání mladší než apply.window v .ai/repo/ci/github.yaml, a poté odmítnut s uvedením scripts/github-sync --apply. Záznam se počítá jako změněný, když se liší jeho soubor nebo jeho vykreslení. Změna, kterou nelze změřit, se odmítne jako dříve. docs/INTEGRATION.md říká executoru, aby po takovém přistání aplikoval.
Rozsah
- scripts/ci/github-check
- .ai/repo/ci/github.yaml
- .ai/repo/ci/README.md
- .ai/repo/rules/project/github-projection-gated.v1.md
- .ai/repo/automation/inventory.jsonl
- test/cases/1038_a_head_is_judged_against_what_it_changes.sh
- docs/INTEGRATION.md
- docs/PLANNING.md
- docs/CLAIMS.yaml
- docs/claims/projected-record-edit-is-landable.md
- docs/claims/github-projection-gated.md
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- Head pull requestu, který mění promítaný záznam, projde kontrolou, přičemž tento záznam je hlášen jako PENDING
- Drift na záznamu, který head nezměnil, je odmítnut ve stejném běhu
- Trunk hlásí přistálou změnu jako PENDING uvnitř deklarovaného okna a po jeho uplynutí ji odmítne, přičemž jmenuje scripts/github-sync --apply
- Okno se čte z .ai/repo/ci/github.yaml a kontrola nenese jeho kopii
- Základna nebo okno, které nelze přečíst, odmítne to, co kontrola odmítala dřív
Validace
- bin/majordomus plan validate
- bash test/run.sh 1038_a_head_is_judged_against_what_it_changes 97_github_gate 45_github_projection
Požadované důkazy
- pending_class_case
- mutations_fail_the_case
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| pending_class_case | test | MJ_TEST_JOBS=2 bash test/run.sh 1038_a_head_is_judged_against_what_it_changes | testy: 1 prošel, 0 selhalo, 0 přeskočeno (běh 2026-10-14 mezi 07:40Z a 07:58Z na masteru ce5959db59) | ce5959d |
| mutations_fail_the_case | test | MJ_TEST_JOBS=2 bash test/run.sh 1038_a_head_is_judged_against_what_it_changes | testy: 1 prošel, 0 selhalo, 0 přeskočeno (běh 2026-10-14 mezi 07:40Z a 07:58Z na masteru ce5959db59) | ce5959d |
Časová osa
- zahájeno
- 2026-10-14T08:02:34Z
- ověřeno
- —
- dokončeno
- 2026-10-14T08:02:42Z
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Kanonický záznam: .ai/repo/project/issues/I2300.yaml. Přečtěte ho zpět pomocí majordomus plan show I2300.