Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

I1967 — Reportér, který nastaví příznak, je reportér

Zařídit, aby hlídač počtu v pipeline objevil i reportér, který zaznamenává selhání nastavením příznaku, a ne jen takový, který zvyšuje čítač, aby volání uvnitř konstrukce, která příznak zahodí, bylo odmítnuto stejně jako ztracený počet.

HOTOVO vlna 0 · p2 · profil implementation · bezpečné souběžně

Součást development-runtime — The runtime has a development surface.

Cíl

Zařídit, aby hlídač počtu v pipeline objevil i reportér, který zaznamenává selhání nastavením příznaku, a ne jen takový, který zvyšuje čítač, aby volání uvnitř konstrukce, která příznak zahodí, bylo odmítnuto stejně jako ztracený počet.

Proč

Toto je otevřená polovina I1513, založená na PR #548, který byl uzavřen 2026-10-03, když o něm vlastník rozhodl. scripts/lib/counting-functions.awk najde jen funkce, jejichž tělo přičte jedničku k proměnné, kterou nedeklarovaly jako lokální. `bad() { ...; fail=1; }` ve scripts/ci/pages-check's zaznamenává své selhání jako příznak a je pro něj neviditelné, takže volání `bad` uvnitř smyčky `... | while read` by nastavilo příznak v subshellu, ztratilo ho a nechalo kontrolu skončit s 0, zatímco vypisuje selhání. I1513 z #548 nelze znovu použít: jeho číslo koliduje s vlastním I1513 z #292 a ADR 0053 zakazuje recyklovat mezeru.

Aktuální stav

scripts/lib/counting-functions.awk vypíše funkce, které zvyšují nedeklarovanou proměnnou, a shell-lint odmítne volání některé z nich uvnitř smyčky napájené z pipeline (scripts/lib/pipeline-counts.awk, nejdřív ověřeno proti fixture se známou odpovědí). Funkce, která přiřadí konstantu nedeklarované proměnné, již nedostane jako argument (`fail=1`, `bad=1`), objevena není.

Cílový stav

counting-functions.awk vypíše také funkci, jejíž tělo přiřazuje konstantu proměnné, kterou nedeklarovala jako lokální, a shell-lint proto odmítne její volání uvnitř smyčky krmené pipeline, se souborem a řádkem. Fixture se známou odpovědí nese reportér nastavující příznak a ochrana se odmítne, když jej nenajde.

Rozsah

  • scripts/lib/counting-functions.awk
  • scripts/ci/shell-lint
  • test/cases

Mimo rozsah

  • Přepisování kontrol, které už jsou správné: stráž jmenuje, co se ztrácí, ne co uráží vkus
  • Kontrola sestavená z výstupu jiného programu, která mlčky umírá, což I1513 pojmenoval jako svou třetí tvář a test/cases/341 pokrývá samostatně

Závislosti

Žádné. Tento úkol je kořenem grafu.

Kritéria přijetí

  • Funkce, která nastavuje příznak místo zvyšování čítače, je objevena jako reportér
  • Volání takového reportéra uvnitř smyčky krmené pipeline se odmítne, se souborem a řádkem
  • Fixture se známou odpovědí obsahuje reportér nastavující příznak a stráž odmítne sama sebe, když ho nenajde

Validace

  • bash scripts/ci/shell-lint

Požadované důkazy

  • a_flag_setting_reporter_is_discovered

Důkazy

pokrývátypcommandvýsledeku commitu
a_flag_setting_reporter_is_discoveredtestbash test/run.sh 870_a_flag_setting_reporter_is_a_reporterok na 4090b2b8ae a scripts/ci/shell-lint končí kódem 0: funkce, která nastavuje příznak, se objeví jako reporter, její volání ve smyčce krmené pipeline je odmítnuto se souborem a řádkem a guard odmítne sám sebe, když je oslepen; změna je 15f95faf92 (PR #742, přistálo v #806)4090b2b

Riziko

Nízké. Hlídač umí odmítnout jen tvary, které už verdikt ztrácejí; falešný poplach u přepínače, který nikdo nečte, se řeší jmenováním hlásatele, kterého našel.

Časová osa

zahájeno
2026-10-08T10:33:59Z
ověřeno
2026-10-08T10:34:35Z
dokončeno
2026-10-08T10:34:40Z

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/I1967.yaml. Načtěte ho zpět pomocí majordomus plan show I1967.

Prohledává názvy a popisy všech stránek, které tento web publikuje.