public-proof — Návštěvník vidí, jak se produkt dokládá, a může ověřit každé tvrzení, které činí
Jeden zaznamenaný scénář vypráví celý příběh: worker zabloudí, tvrdí, že je hotovo, předá práci a je odmítnut, dokud neprojde test samotného repozitáře. Pohání hrdinský blok domovské stránky, její vlastní routu, první přepis v README a živou smoke kontrolu, a každé z nich drží k zaznamenanému běhu kontrola, ne pečlivost.
AKTIVNÍ 3 z 5 úkolů hotovo
- připraveno
- 2
- blokováno
- 0
- aktivní
- 0
- verify
- 0
- hotovo
- 3
- zrušeno
- 0
Problém
Vývojář, který nikdy neviděl Majordomus, narazí na domovskou stránku, jejíž první viewport popisuje řídicí dozorovou vrstvu jejím vlastním slovníkem, vedle konzole, která ilustruje každý příkaz životního cyklu zvlášť. Nic na ní neukazuje, jak nástroj dělá tu jednu věc, která ho odlišuje — odmítá práci, kterou worker nazývá hotovou — jako jeden příběh, který nováček dokáže sledovat, a neexistuje stránka, na kterou by někoho mohl poslat odkaz zvenčí. První přepis v README je psán ručně. Pod tím se katalog případů užití dostal na web bez jakéhokoli scénáře, od chvíle, kdy se scénáře přesunuly do těla, takže každý spustitelný případ užití vypadal jen jako popsaný.
Výsledek
Jeden zaznamenaný scénář vypráví celý příběh: worker zabloudí, tvrdí, že je hotovo, předá práci a je odmítnut, dokud neprojde test samotného repozitáře. Pohání hrdinský blok domovské stránky, její vlastní routu, první přepis v README a živou smoke kontrolu, a každé z nich drží k zaznamenanému běhu kontrola, ne pečlivost.
Aktuální stav
Hero homepage přehrává životní cyklus příkaz po příkazu; neexistuje trasa výzvy; první blok README.md je ilustrace; kroky scénáře mohou jen vyvolat nástroj, takže žádný případ užití neukazuje odmítnutí souboru mimo zabraný rozsah; catalogue.json nenese žádný scénář a zralost každého případu užití je popsána; scripts/pages verify se ptá jen, který commit veřejný web servíruje.
Cílový stav
Krok pracovníka umožňuje scénáři fixture ukázat změnu, kterou posuzuje. Případ užití výzvy běží v odvození webu a jeho běh je site/data/generated/challenge.json; /challenge/ a replay na domovské stránce ho vykreslují a scripts/site-check drží obojí u něj v obou směrech; první přepis v README.md je jeho krokem, jinak je odmítnut; zralost se znovu odvozuje ze scénářů; a scripts/pages verify --smoke se po každé publikaci ptá veřejných bajtů na výzvu.
Rozsah
- lib/usecase.sh
- lib/finish.sh
- share/schemas/majordomus/use-case
- .ai/repo/use-cases
- test/fixtures/commands
- test/cases
- scripts/generate-site-data
- scripts/site-check
- scripts/pages
- scripts/lib/interaction-specs
- web
- README.md
- dokumentace
- .ai/repo/ci/pages.yaml
- .github/workflows/pages.yml
Mimo rozsah
- Analytika nebo jakýkoli skript třetí strany na webu; pravidlo offline ho odmítá a nic zde ho nepotřebuje
- Vymyšlené údaje o adopci, reference, loga nebo srovnání měření výkonu
- Nový příkaz, který audituje repozitář, v němž Majordomus není nainstalován; doctor potřebuje init, a to je produktové rozhodnutí, ne stránka
- Generované sociální obrázky pro každou stránku; stávající karta zůstává, dokud pro ni neexistuje generátor
Kritéria přijetí
- Fixturní scénář může nést krok workeru, zaznamenaný s actor worker, odmítnutý v živém scénáři a vedle run nebo obligation
- Scénář výzvy projde proti nástroji samotného stromu, alespoň jednou odmítne a skončí přijatou prací a odvození odmítne jej jinak publikovat
- /challenge/ a homepage nesou každý zaznamenaný příkaz a řádek rozhodnutí běhu a nic jiného je nenahrazuje
- První přepis v README.md je zaznamenaný krok výzvy a odvození jej jinak odmítne
- catalogue.json nese scénář každého případu užití a zralost se z něj odvozuje
- Veřejný web servíruje sloučený commit a jeho smoke trasy poté, co ho publikuje workflow Pages
Validace
- bash test/run.sh 632_a_scenario_shows_the_worker_it_judges
- bash test/run.sh 103_obligations
- scripts/generate-site-data --check
- scripts/site-check
- scripts/pages verify --commit <master sha> --smoke
Požadované důkazy
- challenge_recorded
- site_holds_the_run
- public_site_serves_it
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á | typ | command | výsledek |
|---|---|---|---|
| challenge_recorded | test | MJ_TEST_JOBS=4 bash test/run.sh 632_a_scenario_shows_the_worker_it_judges 103_obligations | ok 632 and ok 103 at master 1393d9ef2a; its one issue I1600 is DONE (de14385dd3); site/data/generated/challenge.json holds the 10-step run: check refused on scope, finish refused twice on the failing test, handover then context, accepted finish |
| site_holds_the_run | ci | gh run view 38083715376 --json jobs (validate na masteru 890e112d04: job webu spouští scripts/generate-site-data --check a scripts/site-check --no-sync) | joby site a pages uspěly; 890e112d04..1393d9ef2a nemění žádný soubor pod apps, lib, scripts, site/templates ani test; site-check drží /challenge/ a přehrání na domovské stránce u každého zaznamenaného řádku, počtu panelů, CTA a odkazu každé záruky |
| public_site_serves_it | artifact | curl -fsS https://majordomus.dev/challenge/ | grep -o 'data-outcome=\"[a-z]*\"' | sort | uniq -c; curl -fsS https://majordomus.dev/build.json | HTTP 200; 10 panelů kroků (4 přijaté, 3 změna, 3 odmítnuté) = 10 zaznamenaných kroků; CTA na úvodní stránce odkazuje na /challenge/; build.json jmenuje master 890e112d04, 0.20.0, dirty false |
Ú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ží.
| issue | status | vlna | závisí na | název |
|---|---|---|---|---|
| I1600 | HOTOVO | 0 | — | Výzva je jeden zaznamenaný běh a každý veřejný povrch ho přehrává |
| I2417 | HOTOVO | 0 | — | Úvodní stránka je proklikávací příběh: redakční hero a řetěz důkazů, kterým návštěvník prochází |
| I3436 | HOTOVO | 0 | — | Every article reads in every language the site declares, and its counterparts are reciprocal |
| I3437 | PŘIPRAVENO | 1 | I3436 | An article names every language version in one translations table, and every member names the same group |
| I3438 | PŘIPRAVENO | 1 | I3436 | A translation records the digest of its source, and site-check refuses one its source has moved past |
Graf
flowchart LR
I1600["I1600<br/>The challenge is one recorded run, and every public surface replays it"]:::done
I2417["I2417<br/>The landing page is a click-through story: an editorial hero and an evidence chain a visitor steps through"]:::done
I3436["I3436<br/>Every article reads in every language the site declares, and its counterparts are reciprocal"]:::done
I3437["I3437<br/>An article names every language version in one translations table, and every member names the same group"]:::ready
I3438["I3438<br/>A translation records the digest of its source, and site-check refuses one its source has moved past"]:::ready
I3436 --> I3437
I3436 --> I3438
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:2pxOdkazováno z tohoto diagramu (5)
- I1600 Výzva je jeden zaznamenaný běh a každý veřejný povrch ho přehrává
- I2417 Úvodní stránka je proklikávací příběh: redakční hero a řetězec důkazů, jímž návštěvník prochází krok za krokem
- I3436 Every article reads in every language the site declares, and its counterparts are reciprocal
- I3437 An article names every language version in one translations table, and every member names the same group
- I3438 A translation records the digest of its source, and site-check refuses one its source has moved past
Kanonický záznam: .ai/repo/project/milestones/public-proof.yaml. Načtěte ho zpět pomocí majordomus plan show public-proof.