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.

I1516 — Adaptér skládá promítané tělo na jednom místě

Zařídit, aby tělo, které scripts/github-sync odešle k úkolu, bylo tímtéž textem, který pro tento úkol vypisuje, složeným jednou, aby tělo, které adaptér napsal, bylo tělem, které adaptér pozná jako vlastní.

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

Součást work-graph-github — Projekce na GitHub je řízená, identifikovaná a průchodná a sloučený pull request vede zpět k výsledku, kterému sloužil.

Cíl

Zařídit, aby tělo, které scripts/github-sync odešle k úkolu, bylo tímtéž textem, který pro tento úkol vypisuje, složeným jednou, aby tělo, které adaptér napsal, bylo tělem, které adaptér pozná jako vlastní.

Proč

Adaptér skládal generovanou oblast dvakrát — jednou pro --render a jednou pro splice, který aktualizuje už existující úkol — a obě kompozice se rozešly. record_marker() tiskne bez koncového newline; --render ho obalil do printf '%s\\n' a splice ne, takže první řádek záznamu byl v každém těle, které splice odeslal, slepen se značkou. region_intact() před hashováním oblasti zpět odstraní řádek značky a ta shoda prefixu vzala slepený první řádek s sebou, takže taková oblast nikdy nedala hash, který tvrdila její vlastní značka. Každý úkol zapsaný přes splice byl pak klasifikován jako `edited` — ruční úprava člověka, která se nikdy nepřepisuje — a --force ho nemohl opravit, protože ho přepsal přesně stejně. Je to změřeno, ne hypotetické: 19 z 215 spravovaných úkolů na GitHubu nese řádek značky s připojeným textem těla a jsou to přesně těch 19 nálezů, které drží kontrolu github-projection červenou.

Aktuální stav

19 spravovaných úkolů nese spojený řádek značky; scripts/ci/github-check na nich končí s 10; strukturální úloha selže na každé větvi, která k ní dojde. test/cases/45 provádí jen složení --render, takže složení splice nebylo nikdy testováno. Obnoveno na master 2026-09-30 z PR #554: master stále nese obě složení.

Cílový stav

Jedna funkce skládá obsah oblasti a vykreslování i splice ji volají. Případ 45 odmítá druhé složení a volajícího, který zapíše značku, aniž by ukončil její řádek; případ 602 pohání --apply proti zastubovanému gh a čte odeslané tělo zpět jako insync. 19 vzdálených těl se přepíše příkazem --apply --force a gate zezelená.

Rozsah

  • scripts/github-sync
  • test/cases/45_github_projection.sh
  • test/cases/602_a_spliced_body_is_recognised_as_its_own.sh

Mimo rozsah

  • Samotné přepsání remote, což je operace, ne změna repozitáře.
  • Baseline driftu, která se sama zmenšuje, jakmile jsou těla správná.

Závislosti

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

Kritéria přijetí

  • Tělo regionu se v adaptéru skládá právě na jednom místě
  • Žádný volající nezapisuje značku záznamu bez ukončení jejího řádku
  • Tělo, které by splice odeslal, se klasifikuje jako insync, ne jako upravené

Validace

  • bash test/run.sh 45_github_projection
  • bash test/run.sh 602_a_spliced_body_is_recognised_as_its_own
  • bash scripts/ci/shell-lint

Požadované důkazy

  • the_two_compositions_are_one
  • a_spliced_body_is_recognised_as_its_own

Důkazy

pokrývátypcommandvýsledeku commitu
the_two_compositions_are_onetestbash test/run.sh 45_github_projectionok na b4a781c668: případ 45 odmítne druhé složení a značku zapsanou bez ukončení řádku; oprava je a19588c506 (PR #690)b4a781c
a_spliced_body_is_recognised_as_its_owntestbash test/run.sh 602_a_spliced_body_is_recognised_as_its_own; scripts/ci/github-checkok na b4a781c668: tělo, které --apply odešle, se čte zpět jako insync; github-check proti živému remote hlásí 0 nálezů, 0 záznamů adoptb4a781c

Riziko

Nízké. Změna odstraňuje duplicitní definici; vykreslení, které ponechává, je to, které už tiskne každý jiný povrch.

Časová osa

zahájeno
2026-09-15
ověřeno
2026-10-07T13:27:22Z
dokončeno
2026-10-07T13:27:24Z

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

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