I2966 — Nastavení forge, které nešlo přečíst, je neznámé, nikdy ne \"nic nepovoluje\"
Číst nastavení mergů repozitáře jako neznámé, když je odpověď forge nenese, a říct to v politice integrace, v důvodu a důkazech každého zadrženého pull requestu a v diagnostice fronty, místo aby se hlásilo, že repozitář nedovoluje žádný merge commit.
HOTOVO vlna 0 · p0 · profil implementation · bezpečné souběžně
Součást development-runtime — The runtime has a development surface.
Cíl
Číst nastavení mergů repozitáře jako neznámé, když je odpověď forge nenese, a říct to v politice integrace, v důvodu a důkazech každého zadrženého pull requestu a v diagnostice fronty, místo aby se hlásilo, že repozitář nedovoluje žádný merge commit.
Proč
Truth sweep 2026-10-18 (f6, S1, ověřeno): publikované https://majordomus.dev/cockpit/integration/ a /cockpit/trains/ uváděly 'korczis/prismatic-majordomus allows no merge commit (it allows: nothing): the executor never squashes or rebases, so no pull request can be ready' a držely každý pull request jako merge_commit_not_allowed, zatímco `gh api repos/korczis/prismatic-majordomus` odpovídá allow_merge_commit, allow_squash_merge a allow_rebase_merge všechny true. integration/forge.rs četl každé nastavení pomocí `.and_then(Value::as_bool).unwrap_or(false)`, takže token, který je číst nesmí (ten z workflow Pages), změnil chybějící nastavení v odmítnutí. Je to instance třídy I2846 od 3e viditelná v alfě (neznámé není nikdy zdravé).
Aktuální stav
Opraveno v této změně: ForgeObservation.merge_methods je None, když odpověď nenese žádné ze tří nastavení; IntegrationPolicy.merge_settings_unread se z toho nastavuje; držený pull request čte merge_settings_unread s dispozicí unknown a důkazem repository_settings, že nastavení nešla přečíst; diagnostika jmenuje nepřečtená nastavení a nikdy neříká 'nepovoluje nic'.
Cílový stav
Nepřečtené nastavení mergování je na každém povrchu zobrazujícím frontu neznámé; přečtené `false` stále platí jako merge_commit_not_allowed; zaznamenaná pozorování nesoucí pole se čtou jako dřív.
Rozsah
- apps/majordomus-cli/src/integration/forge.rs
- apps/majordomus-cli/src/integration/mod.rs
- apps/majordomus-cli/src/integration/classify.rs
- apps/majordomus-cli/src/integration/model.rs
- apps/majordomus-cli/src/integration/tests.rs
- apps/majordomus-cli/src/integration/train.rs
- apps/majordomus-cli/src/integration/drain.rs
- apps/majordomus-cli/src/capability/builtin/brief.rs
- apps/majordomus-cli/src/capability/builtin/integration.rs
- apps/majordomus-cli/src/cockpit/pages.rs
- apps/majordomus-cli/src/commands/prs.rs
- docs/INTEGRATION.md
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- Odpověď forge bez nastavení sloučení nedává žádné metody sloučení (neznámé) a odpověď s nimi dává to, co povolují
- Pull request zadržený kvůli nepřečteným nastavením se čte merge_settings_unread s dispozicí unknown a nic se nesloučí
- Diagnostika fronty říká, že nastavení merge nešlo přečíst, a nikdy, že repozitář nepovoluje nic
Validace
- majordomus plan validate
Požadované důkazy
- unread_merge_settings_are_unknown_and_never_allow_nothing
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| unread_merge_settings_are_unknown_and_never_allow_nothing | ci | cargo test --lib -- integration::tests::unread_merge_settings_are_unknown_and_never_allow_nothing integration::forge::tests::merge_settings_absent_from_the_answer_are_unread_and_present_ones_are_read | both ok in validate run 39192952944, job rust (2) 117890228077 (3482 passed, 0 failed), every job green at master dd4c0a87cba, which contains the fix 269bf5d67c3 | 9a5a9b7 |
Časová osa
- zahájeno
- 2026-10-20T15:44:19Z
- ověřeno
- —
- dokončeno
- 2026-10-20T15:44:54Z
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/I2966.yaml. Přečtěte ho zpět pomocí majordomus plan show I2966.