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á | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| a_flag_setting_reporter_is_discovered | test | bash test/run.sh 870_a_flag_setting_reporter_is_a_reporter | ok 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.