I2993 — doctor spočítá práci, kterou nedrží žádný remote, jedním průchodem, ať je větví kolik chce
Zařídit, aby čtení `clone unpushed` v doctor byl jeden průchod klonem: commity, které dosáhne některá větev a žádný remote, s jejich rodiči (`git rev-list --parents --branches --not --remotes`), a hrot každé větve (`git for-each-ref`). Počet každé větve je počet commitů z této množiny, které její hrot dosáhne, procházených uvnitř množiny. Nález, jeho znění a jeho počty jsou to, co dával `rev-list --count` pro každou větev zvlášť.
HOTOVO vlna 0 · p1 · profil implementation · bezpečné souběžně
Cíl
Zařídit, aby čtení `clone unpushed` v doctor byl jeden průchod klonem: commity, které dosáhne některá větev a žádný remote, s jejich rodiči (`git rev-list --parents --branches --not --remotes`), a hrot každé větve (`git for-each-ref`). Počet každé větve je počet commitů z této množiny, které její hrot dosáhne, procházených uvnitř množiny. Nález, jeho znění a jeho počty jsou to, co dával `rev-list --count` pro každou větev zvlášť.
Proč
Terénní hlášení adoptéra k 0.29.0 (prismatic-platform, 2026-10-18, položka 15) zjistilo reálný čas doctor 55–96 s proti rozpočtu 40 s. V commit hoocích tohoto repozitáře 2026-10-18 trval doctor 828 s proti rozpočtu 100 s (politika benchmark.budget.doctor_ms), v každé roli. Sekce `clone` spouštěla jedno `git rev-list --count <branch> --not --remotes` na lokální větev: 609 větví po zhruba 0,4 s pod zátěží. Role release to označila za největší opravu propustnosti na stole.
Aktuální stav
mj_report_clone spouští jeden rev-list na lokální branch, takže čas doctoru roste s počtem branchí a platí ho každý commit hook.
Cílový stav
Jeden rev-list a jeden for-each-ref, bez ohledu na počet větví; stejné větve pojmenované se stejnými počty.
Rozsah
- lib/doctor.sh
- test/cases/3384_doctor_reads_unpushed_in_one_pass.sh
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- Větev na remote se nejmenuje, větev o dva commity napřed se jmenuje s 2 a větev, která sloučila jinou nepushnutou větev, počítá každý commit, který dosáhne, jednou
- Každý počet se rovná `git rev-list --count <branch> --not --remotes` pro každou větev
- doctor projde commity, které nedrží žádný remote, jednou pro 156 větví; verze po větvích je prochází 156krát a případ selže
Validace
- bash test/run.sh 3384_doctor_reads_unpushed_in_one_pass 02_doctor_basic 276_disk_is_bounded
Požadované důkazy
- case_doctor_one_walk
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| case_doctor_one_walk | ci | validate run 39438896504 at master 9a5a9b77520: suite shards 1-4 (jobs 118683336189 118683338077 118683336157 118683336457) run every case, incl. 3384_doctor_reads_unpushed_in_one_pass (ba44bed3fd1) | success (the run's only red job is pages, which runs no test) | a81b1e3 |
Časová osa
- zahájeno
- 2026-10-20T16:18:53Z
- ověřeno
- —
- dokončeno
- 2026-10-20T16:33:16Z
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/I2993.yaml. Přečtěte ho zpět pomocí majordomus plan show I2993.