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.

work-graph-github — Projekce na GitHub je hlídaná, identifikovatelná a procházitelná a sloučený pull request vede zpět k výsledku, kterému sloužil

Projekce nemůže tiše zetlít: kontrola spouští kontrolu driftu při každé změně, která může pohnout modelem nebo adaptérem, a drift je selhání CI s pojmenovaným záznamem. Identita cestuje se záznamem, ne vyčtená z jeho titulku, takže přejmenování titulku na GitHubu nic nepřesune a nevytvoří duplikát, a remote může být fixture, takže se dá bez sítě dokázat, který záznam je který. Slovník sladění rozlišuje stavy, které dosud slučuje, takže `missing` už nestojí za záznam, který nebyl nikdy vytvořen, i za záznam, který člověk smazal, a vzdálená úprava se hlásí jako vzdálená úprava. Nad projekcí pull request pojmenovává úkol, který realizuje, a hrana se odvozuje z gitu a GitHubu, ne z paměti, takže mergnutý commit vede zpět ke kritériím přijetí, která splnil, a výsledek vede vpřed k důkazům, že platí. Odvození, která shell už počítá — ready, blocked, waves, next, status — jsou čitelná přes stejný povrch schopností jako vše ostatní, co tento repozitář ví, ne jen z terminálu.

HOTOVO 10 z 10 úkolů hotovo

připraveno
0
blokováno
0
aktivní
0
verify
0
hotovo
10
zrušeno
0

Problém

Tento repozitář už práci modeluje jednou: milníky jsou výsledky, úkoly jsou prováděcí smlouvy, žádný stav se neukládá a `scripts/github-sync` promítá obojí na GitHub s oblastí označenou hashem, která chrání to, co napsal člověk. Model není vada. Vadou je, že detektor nikdo nespouští: `core-check` spouští `github-sync --plan` a `--render`, nikdy `--check`, takže exit 11 adaptéru se v CI nikdy nespustil. Projekce byla aplikována jednou 2026-09-04 a od té doby ne. Změřeno 2026-09-09 na 867f3a9: 191 zjištění driftu, z toho 172 jsou kanonické úkoly, které na GitHubu nikdy neexistovaly, a 19 jsou těla, jejichž kanonický text se posunul. Všech 8 milníků je synchronizovaných, což je přesně to, co činí hnilobu neviditelnou: povrch, na který se člověk dívá, je povrch, který se stále shoduje. Pod tím adaptér identifikuje vzdálený záznam rozborem jeho názvu na předponu `I0001 — ` a čte vzdálenou stranu přes stránku o 200 položkách, která už drží 19 úkolů a 117 pull requestů, takže mapování se rozbije, když člověk přejmenuje název, a čtení se zkrátí, jakmile běží backfill.

Výsledek

Projekce nemůže tiše zetlít: kontrola spouští kontrolu driftu při každé změně, která může pohnout modelem nebo adaptérem, a drift je selhání CI s pojmenovaným záznamem. Identita cestuje se záznamem, ne vyčtená z jeho titulku, takže přejmenování titulku na GitHubu nic nepřesune a nevytvoří duplikát, a remote může být fixture, takže se dá bez sítě dokázat, který záznam je který. Slovník sladění rozlišuje stavy, které dosud slučuje, takže `missing` už nestojí za záznam, který nebyl nikdy vytvořen, i za záznam, který člověk smazal, a vzdálená úprava se hlásí jako vzdálená úprava. Nad projekcí pull request pojmenovává úkol, který realizuje, a hrana se odvozuje z gitu a GitHubu, ne z paměti, takže mergnutý commit vede zpět ke kritériím přijetí, která splnil, a výsledek vede vpřed k důkazům, že platí. Odvození, která shell už počítá — ready, blocked, waves, next, status — jsou čitelná přes stejný povrch schopností jako vše ostatní, co tento repozitář ví, ne jen z terminálu.

Aktuální stav

Kanonický model tvoří 15 milníků a 184 úkolů, validovaných příkazem `majordomus plan validate` (0 selhání, 4 varování o rozsahu) a vynucovaných `lib/doctor.sh` a `scripts/ci/core-check`. `scripts/github-sync` implementuje plan, check, apply a render s vlastnictvím polí a hashem značky. GitHub drží 8 milníků a 19 úkolů. `--check` končí s 11 při driftu a žádná kontrola jej nevolá. Úkoly a milníky se servírují jako dokumenty přes `objects.get` a žádné z odvození plánu není schopností: `lib/plan.sh` je počítá a spustitelný soubor v Rustu čte `.ai/repo/project/issues/` jen kvůli názvům souborů. Důkazy nesou volitelný řetězec `commit` a žádný pull request, běh kontroly ani větev.

Cílový stav

Přispěvatel přesune úkol, spustí kontroly a CI mu řekne, že projekce zaostává, dřív než recenzent. Člověk přejmenuje úkol na GitHubu a další synchronizace jej aktualizuje místo duplikace. Čtenář se zeptá, který pull request úkol realizoval, nebo kterému výsledku sloužil zmergovaný commit, a jeden příkaz odpoví z odvozených hran. Připravenost plánu lze zjistit přes MCP a HTTP, protože je to schopnost, ne shellová funkce.

Rozsah

  • scripts/github-sync
  • scripts/ci
  • .ai/repo/ci/gates.yaml
  • .ai/repo/project
  • .ai/repo/rules/project
  • .ai/repo/adrs
  • apps/majordomus-cli/src
  • lib/plan.sh
  • lib/project.sh
  • dokumentace
  • web
  • test/cases

Mimo rozsah

  • Nahrazení kanonického modelu, které není tou vadou
  • Import sémantiky GitHubu do kanonických záznamů; GitHub zůstává projekcí
  • Přesun síťových volání do samotného nástroje, což test/cases/08_no_forbidden_constructs.sh zakazuje
  • Klient GraphQL nebo jakákoli abstrakce providera nad rámec jednoho hostitele GitHub, na který tento repozitář publikuje
  • Přiřazení, reakce, nástěnky projektů nebo diskuse

Kritéria přijetí

  • Kontrola spouští kontrolu driftu při každé změně, která může pohnout modelem nebo adaptérem, a nález driftu shodí CI s uvedením záznamu a nápravy
  • Identita jsou kanonická data: přejmenování titulu na GitHubu přesune mapování s ním a nevytvoří duplicitní záznam
  • Smiřování je dokazatelné offline proti fixture remote a fixture je odmítnut při jakékoli mutaci
  • Slovník smiřování rozlišuje never-created, deleted-remotely, edited-remotely, canonically-moved a conflicting a každý stav jmenuje, co by se změnilo, dříve než se cokoli změní
  • Pull request je s úkolem, který realizuje, spojen odvozenou hranou a vztah lze procházet oběma směry
  • Odvození plánu jsou čitelná přes povrch schopností a přidání dalšího nevyžaduje úpravu registru transportů
  • Každé tvrzení, které tento milník činí o GitHubu, je podloženo testem, který běží offline proti fixture

Validace

  • scripts/github-sync --check
  • scripts/ci/core-check
  • bash test/run.sh
  • cargo test --workspace --all-features
  • majordomus generate --check

Požadované důkazy

  • drift_gated
  • identity_stable
  • offline_provable
  • traceability_both_ways

Rizika

  • Zpětné doplnění je mutace směřující ven: aplikace projekce vytvoří zhruba 180 veřejných úkolů v jednom běhu. Musí to být záměrný, potvrzený čin, ne vedlejší efekt zapojení gate.
  • Zapojení kontroly před doplněním způsobí, že CI na masteru zčervená, dokud doplnění nepřistane. Na pořadí záleží a je součástí práce.

Důkazy

Milník není nikdy hotový tím, že jsou hotové jeho úkoly; poslední krok je jeho vlastní přijetí a podmiňují jej řádky níže.

pokrývátypcommandvýsledek
drift_gatedtestbash test/run.sh 97_github_gatetests: 1 passed, 0 failed, 0 skipped on master 01227a0f74a (2026-10-17); gate github-projection runs scripts/ci/github-check, and the github-projection workflow run 39004503235 was green on 01227a0f74a
identity_stabletestbash test/run.sh 45_github_projection 602_a_spliced_body_is_recognised_as_its_owntesty: 2 prošly, 0 selhaly, 0 přeskočeny na master 01227a0f74a (2026-10-17): přepsaný vzdálený titul se vyhodnotí podle své značky, spojené tělo se čte zpět jako insync
offline_provabletestbash test/run.sh 45_github_projectiontesty: 1 prošel, 0 selhalo, 0 přeskočeno na master 01227a0f74a (2026-10-17): sesouhlasení běží proti fixture remotes bez sítě a bez tokenu; --apply fixture odmítne
traceability_both_waystestbash test/run.sh 98_traceability 99_work_graph_chain 99_plan_capabilitiestesty: 3 prošly, 0 selhaly, 0 přeskočeny na master 01227a0f74a plus uzavřené záznamy (2026-10-17): úkol vede ke své branchi, merge a commitům a commit vede zpět ke svému úkolu a milníku

Úkoly

Každý z nich je prováděcí kontrakt s vlastními kritérii přijetí, validačním příkazem a požadovanými důkazy. Sloupec wave je vrstva grafu závislostí, v níž úkol leží.

issuestatusvlnazávisí nanázev
I1401 HOTOVO 0 — Identita promítnutého záznamu je to, co záznam nese, ne to, co říká jeho titulek
I1402 HOTOVO 1 I1401 Nález říká, který ze šesti stavů nalezl, a stav, který mohl skrýt cizí úpravu, už mezi nimi není
I1403 HOTOVO 3 I1401, I1402, I1404 Projekci jednou doplnit zpětně, záměrně, a zaznamenat, co vytvořila
I1404 HOTOVO 2 I1402 Kontrola driftu je brána, takže projekce, která se přestane aplikovat, nemůže mlčet
I1405 HOTOVO 1 I1401 Pull request jmenuje úkol, který realizuje, a hrana se odvozuje, nepamatuje si
I1406 HOTOVO 0 — Derivace plánu jsou schopnosti, takže každý povrch čte připravenost, kterou čte terminál
I1407 HOTOVO 3 I1404, I1405, I1406 Jeden úkol projde celou cestu tam a zpět jako spustitelný případ
I1408 HOTOVO 3 I1404 Dokumenty přestanou tvrdit projekci, kterou nikdo nespouští
I1516 HOTOVO 0 — Adaptér skládá promítnuté tělo na jednom místě
I2300 HOTOVO 0 — Head se posuzuje podle toho, co mění, ne podle živého stavu GitHubu

Graf

graf závislostí work-graph-githubz .ai/repo/project
flowchart LR
    I1401["I1401<br/>The identity of a projected record is what the record carries, not what its title says"]:::done
    I1402["I1402<br/>A finding says which of six states it found, and the state that could hide a person's edit is no longer one of them"]:::done
    I1403["I1403<br/>Backfill the projection once, deliberately, and record what it created"]:::done
    I1404["I1404<br/>The drift check is a gate, so a projection that stops being applied cannot stay silent"]:::done
    I1405["I1405<br/>A pull request names the issue it realises, and the edge is derived rather than remembered"]:::done
    I1406["I1406<br/>The plan's derivations are capabilities, so every surface reads the readiness the terminal reads"]:::done
    I1407["I1407<br/>One issue travels the whole path and back, as an executable case"]:::done
    I1408["I1408<br/>The documents stop claiming a projection nobody runs"]:::done
    I1516["I1516<br/>The adapter composes a projected body in one place"]:::done
    I2300["I2300<br/>A head is judged against what it changes, not against GitHub's live state"]:::done
    I1401 --> I1402
    I1401 --> I1403
    I1401 --> I1405
    I1402 --> I1403
    I1402 --> I1404
    I1404 --> I1403
    I1404 --> I1407
    I1404 --> I1408
    I1405 --> I1407
    I1406 --> I1407
    classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
    classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px

Kanonický záznam: .ai/repo/project/milestones/work-graph-github.yaml. Přečtěte ho zpět pomocí majordomus plan show work-graph-github.

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