Případová studie · Majordomus // Technologické demo · případová studie Technické
Případová studie: dodávka s AI pod dozorovou řídicí vrstvou
Publikováno 2026-09-14 · 19 min čtení
Jeden člověk řídil AI agenta pro programování, který 14. září 2026 postavil tento dvojjazyčný web pod dozorem Majordomu 0.6.0. Případová studie ze záznamů ledgeru, Gitu a GitHubu ukazuje, jak byla dozorová vrstva nastavená a používaná, co zachytila, co stála a co nekontroluje.
- Dozorované úlohy
- 6
- Checkpointy
- 7
- Handovery
- 4
- Rozhodnutí
- 4
- Nálezy
- 8
- Commity
- 11
- Běhy pipeline
- 8
- Vydání
- 6
- Od prvního commitu k prvnímu ověřenému vydání
- 51.0 min 37 s 14. září 2026, 09:54:05 → 10:45:42 UTC · od inicializace Majordomu: 19.0 min 19 s
Snímek záznamů do · Majordomus 0.6.0 · data/case_study.json
Životní cyklus úlohy
Vyberte krok a uvidíte jeho registrovaný příkaz, důvod, proč existuje, a skutečný zaznamenaný příklad. Každý krok má vlastní adresu, takže odkaz ho otevře přímo.
- 1 Start s rozsahem
- 2 Kontrola
- 3 Hlídání odchylek
- 4 Checkpoint
- 5 Zaznamenat rozhodnutí
- 6 Předání
- 7 Dokončení s ověřením
- 8 Čtení ledgeru
1 / 8 Start s rozsahem
- Příkaz
majordomus start "<task>" --scope <paths>- Co dělá
- Otevře jedinou aktivní úlohu checkoutu s názvem, profilem a cestami, na které smí práce sáhnout.
- Proč
- Rozsah převede to, co měl agent změnit, na seznam, který nástroj dokáže porovnat s pracovním stromem.
- Zaznamenaný příklad
- Start úlohy: Ship Catharsis as a Service: Zola EN/CS site, CI/CD to GitHub Pages, live verification, automatic releases
Profil implementation; rozsah 26 cest.
2 / 8 Kontrola
- Příkaz
majordomus check- Co dělá
- Bez jakéhokoli zápisu ohlásí, zda je úloha v souladu s politikou, svým rozsahem a zaznamenaným stavem.
- Proč
- Problémy se ukážou na vlastním stroji, dřív než proběhne push nebo běh pipeline.
- Zaznamenaný příklad
- Rozsah "." zachycen před prvním pushem
Restartovaná úloha zadala rozsah jako ".", což Majordomus nečte jako celý repozitář, a majordomus check proto nahlásil každý změněný soubor jako mimo rozsah. Úloha byla restartována s výslovně vyjmenovanými cestami ještě před prvním pushem.
3 / 8 Hlídání odchylek
- Příkaz
majordomus watch- Co dělá
- Hlásí odchylky mezi zaznamenanou úlohou, jejím rozsahem, politikou a vygenerovanými instrukčními soubory.
- Proč
- Přesun nebo přidání souborů mění, na co úloha sahá, a často to nikdo výslovně nerozhodne.
- Zaznamenaný příklad
- Odchylka od rozsahu po přesunu souborů; úloha restartována
První úloha si nárokovala 20 cest, ale ne kořenové soubory přesunuté do artwork/ a static/. Handover zaznamenává, že majordomus watch nahlásil odchylku; úloha byla ukončena jako partial a restartována před prvním pushem.
4 / 8 Checkpoint
- Příkaz
majordomus checkpoint < note.md- Co dělá
- Zaznamená krátkou poznámku o průběhu o nejvýš 40 řádcích, nebo ji odvodí z Gitu.
- Proč
- Postup práce žije v souboru, ne v konverzaci agenta.
- Zaznamenaný příklad
- Checkpoint: Ship Catharsis as a Service: Zola EN/CS site, CI/CD to GitHub Pages, live verification, automatic releases
Ručně psaná poznámka o průběhu (podle politiky nejvýš 40 řádků); text zůstává v lokálním stavu checkoutu.
5 / 8 Zaznamenat rozhodnutí
- Příkaz
majordomus decision add "<decision>" --why "<rationale>"- Co dělá
- Přidá datované rozhodnutí s odůvodněním, odmítnutými alternativami a doklady.
- Proč
- Další pracovník vidí, proč je něco tak, jak to je, a člověk může rozhodnutí povýšit na ADR.
- Zaznamenaný příklad
- Structured data is built as Tera data and serialised with json_encode
Why: Hand-written JSON-LD inside HTML templates gets HTML-escaped and breaks on quotes; building the graph as template maps keeps escaping correct by construction. Rejected: hand-written JSON-LD strings; a client-side script injecting JSON-LD. Evidence: templates/partials/structured-data.html; scripts/validate-html.py parses every JSON-LD block.
6 / 8 Předání
- Příkaz
majordomus handover < body.md- Co dělá
- Zapíše záznam pro navázání s oddíly Objective, Current State a Next Action; větev, commit a změněné soubory doplní Git.
- Proč
- Každý jiný výsledek než completed musí říct, co bude dál, takže restart stojí na zaznamenaných faktech.
- Zaznamenaný příklad
- Zapsán handover: aktuální stav a další krok
Current state: Phase A validated locally: validate.sh 7/7, Playwright 37/37. Not yet committed or deployed. New top-level paths (requirements-dev.txt, Rust workspace, data/, schemas/) fall outside this task scope. Next action: Restart the task with a scope covering all planned paths, commit and deploy Phase A, then implement Phase B and Phase C.
7 / 8 Dokončení s ověřením
- Příkaz
majordomus finish --outcome completed --verify-command "npm run smoke"- Co dělá
- Vyhodnotí smlouvu o dokončení. Výsledek completed vyžaduje ověřovací příkaz, který skončí kódem 0; zaznamená se s návratovým kódem a dobou běhu.
- Proč
- Hotovo znamená, že živý web prošel kontrolou, ne že byl napsán kód.
- Zaznamenaný příklad
- Úloha ukončena jako completed: Ship Catharsis as a Service: Zola EN/CS site, CI/CD to GitHub Pages, live verification, automatic releases
Smlouva o dokončení: 7 pass, 4 skipped; ověřovací příkaz scripts/smoke-production.sh https://korczis.github.io/catharsis-as-a-service/ skončil kódem 0 za 7 s.
8 / 8 Čtení ledgeru
- Příkaz
majordomus history- Co dělá
- Vypíše ledger startů, checkpointů, rozhodnutí, handoverů a dokončení, do kterého se jen přidává.
- Proč
- Každé tvrzení na této stránce lze dohledat k některému z jeho řádků.
- Zaznamenaný příklad
- Inicializována vrstva Majordomus; vygenerovány instrukční soubory pro poskytovatele
Politika se promítla do 3 instrukčních souborů (AGENTS.md, CLAUDE.md, GEMINI.md), které každého agenta odkazují na .ai/README.md.
Časová osa
Všechny zaznamenané události od nejstarší: úlohy Majordomu, checkpointy, handovery, rozhodnutí a dokončení, nálezy z nich odvozené, commity, běhy pipeline a vydání. Po rozbalení události uvidíte podrobnosti a odkazy. Filtry se ukládají do adresy, takže filtrovaný pohled lze uložit do záložek.
61 / 61 událostí
Commit feat(poster): add Catharsis as a Service poster with print render
Pro tento commit neběžela pipeline Pages (workflow ještě neexistoval).
Úloha Inicializována vrstva Majordomus; vygenerovány instrukční soubory pro poskytovatele
Politika se promítla do 3 instrukčních souborů (AGENTS.md, CLAUDE.md, GEMINI.md), které každého agenta odkazují na .ai/README.md.
Úloha Start úlohy: Ship Catharsis as a Service: Zola EN/CS site, CI/CD to GitHub Pages, live verification, automatic releases
Profil implementation; rozsah 20 cest.
Handover Zapsán handover: aktuální stav a další krok
Current state: Site sources, templates, styles, scripts and tests written; validation in progress. The first task scope omitted the pre-existing root files that were moved into artwork/ and static/ (index.html, bg.jpg, catharsis-as-a-service.png, catharsis-as-a-service.jpg, .nojekyll), so watch reports scope drift. Next action: Restart the task with a scope covering the whole repository and continue: validate, commit, CI, deploy, verify, release.
Původní záznam je v angličtině.
Nález Odchylka od rozsahu po přesunu souborů; úloha restartována
První úloha si nárokovala 20 cest, ale ne kořenové soubory přesunuté do artwork/ a static/. Handover zaznamenává, že majordomus watch nahlásil odchylku; úloha byla ukončena jako partial a restartována před prvním pushem.
Dokončení Úloha ukončena jako partial: Ship Catharsis as a Service: Zola EN/CS site, CI/CD to GitHub Pages, live verification, automatic releases
Smlouva o dokončení: 5 pass, 6 skipped; bez zaznamenaného ověřovacího příkazu.
Úloha Start úlohy: Ship Catharsis as a Service: Zola EN/CS site, CI/CD to GitHub Pages, live verification, automatic releases
Profil implementation; rozsah 1 cesta zadaný jako ".".
Checkpoint Checkpoint: Ship Catharsis as a Service: Zola EN/CS site, CI/CD to GitHub Pages, live verification, automatic releases
Ručně psaná poznámka o průběhu (podle politiky nejvýš 40 řádků); text zůstává v lokálním stavu checkoutu.
Handover Zapsán handover: aktuální stav a další krok
Current state: Site, CI/CD, rules and repo settings are done; validate passes and 30/30 local e2e pass. A scope of "." is not interpreted as the whole repository, so check reports every file out of scope. Next action: Restart with explicit top-level scope paths, then commit, push, watch the Pages pipeline and verify production.
Původní záznam je v angličtině.
Nález Rozsah "." zachycen před prvním pushem
Restartovaná úloha zadala rozsah jako ".", což Majordomus nečte jako celý repozitář, a majordomus check proto nahlásil každý změněný soubor jako mimo rozsah. Úloha byla restartována s výslovně vyjmenovanými cestami ještě před prvním pushem.
Dokončení Úloha ukončena jako partial: Ship Catharsis as a Service: Zola EN/CS site, CI/CD to GitHub Pages, live verification, automatic releases
Smlouva o dokončení: 5 pass, 6 skipped; bez zaznamenaného ověřovacího příkazu.
Úloha Start úlohy: Ship Catharsis as a Service: Zola EN/CS site, CI/CD to GitHub Pages, live verification, automatic releases
Profil implementation; rozsah 26 cest.
Commit feat(site): ship Catharsis as a Service as a bilingual Zola site with verified CI/CD
Pipeline Pages: běh 34834554169 success.
Pipeline Pipeline Pages prošla: feat(site): ship Catharsis as a Service as a bilingual Zola site with…
7 jobů za 2 min 43 s: 7 prošlo.
Nález První push do main prošel přes výjimku pravidel pro administrátora
Checkpoint zapsaný po prvním pushi zaznamenává, že push využil výjimku pro administrátora v pravidlech repozitáře, která vyžadují CI. Nasazení přesto zůstalo podmíněné: ve workflow Pages job deploy závisí na jobech CI a job release na ověření produkce.
Checkpoint Checkpoint: Ship Catharsis as a Service: Zola EN/CS site, CI/CD to GitHub Pages, live verification, automatic releases
Ručně psaná poznámka o průběhu (podle politiky nejvýš 40 řádků); text zůstává v lokálním stavu checkoutu.
Vydání Publikováno vydání v0.1.0
Vytvořeno jobem Release v běhu 34834554169 poté, co pro commit 9bc6897 prošly Deploy a Verify production.
Dokončení Úloha ukončena jako completed: Ship Catharsis as a Service: Zola EN/CS site, CI/CD to GitHub Pages, live verification, automatic releases
Smlouva o dokončení: 7 pass, 4 skipped; ověřovací příkaz scripts/smoke-production.sh https://korczis.github.io/catharsis-as-a-service/ skončil kódem 0 za 7 s.
Nález „Dokončeno“ se zaznamenalo jen s úspěšnou kontrolou živého webu
Obě úlohy uzavřené jako dokončené spustily jako ověřovací příkaz smoke test proti živé URL (exit 0, 7 s). Úlohy uzavřené jako partial (3) žádný ověřovací příkaz nezaznamenaly a dokončení netvrdily.
Úloha Start úlohy: HTML5 Boilerplate practices, link previews per locale/page, structured data and SEO hardening
Profil implementation; rozsah 23 cest.
Rozhodnutí Structured data is built as Tera data and serialised with json_encode
Why: Hand-written JSON-LD inside HTML templates gets HTML-escaped and breaks on quotes; building the graph as template maps keeps escaping correct by construction. Rejected: hand-written JSON-LD strings; a client-side script injecting JSON-LD. Evidence: templates/partials/structured-data.html; scripts/validate-html.py parses every JSON-LD block.
Původní záznam je v angličtině.
Rozhodnutí Link previews are localized per language, and the sitemap lists every language edition
Why: A shared link preview is often the only part of the work a reader sees; hreflang alternates in the sitemap and og:locale:alternate keep each edition discoverable in its own language. Rejected: one English preview card for all pages; hreflang only in HTML. Evidence: templates/sitemap.xml; tests/site.spec.js 'link previews are localized and reachable'.
Původní záznam je v angličtině.
Rozhodnutí Python validators are tested with pytest in a project venv
Why: User preference is pytest for Python; a venv keeps the global interpreter untouched and CI reproducible. Rejected: stdlib unittest; installing pytest globally. Evidence: requirements-dev.txt pins pytest 9.1.1.
Původní záznam je v angličtině.
Checkpoint Checkpoint: HTML5 Boilerplate practices, link previews per locale/page, structured data and SEO hardening
Ručně psaná poznámka o průběhu (podle politiky nejvýš 40 řádků); text zůstává v lokálním stavu checkoutu.
Handover Zapsán handover: aktuální stav a další krok
Current state: Phase A validated locally: validate.sh 7/7, Playwright 37/37. Not yet committed or deployed. New top-level paths (requirements-dev.txt, Rust workspace, data/, schemas/) fall outside this task scope. Next action: Restart the task with a scope covering all planned paths, commit and deploy Phase A, then implement Phase B and Phase C.
Původní záznam je v angličtině.
Nález Zadání přerostlo nárokovaný rozsah; nová úloha si ho nárokovala
Když se zadání rozrostlo o workspace v Rustu, datové soubory a nástroje pro Python, handover zaznamenal, že nové cesty nejvyšší úrovně leží mimo rozsah úlohy. Úloha skončila jako partial a nová si nárokovala 31 cest.
Dokončení Úloha ukončena jako partial: HTML5 Boilerplate practices, link previews per locale/page, structured data and SEO hardening
Smlouva o dokončení: 5 pass, 6 skipped; bez zaznamenaného ověřovacího příkazu.
Úloha Start úlohy: Evidence-based catharsis site: psychology essays, advice library, tags, illustrations, per-page previews, Majordomus method, Rust integration, command registry, tests and docs
Profil implementation; rozsah 31 cest.
Commit feat(seo): add boilerplate practices, localized previews, structured data and guides
Pipeline Pages: běh 34836842423 success.
Pipeline Pipeline Pages prošla: feat(seo): add boilerplate practices, localized previews, structured …
7 jobů za 3 min 6 s: 7 prošlo.
Vydání Publikováno vydání v0.2.0
Vytvořeno jobem Release v běhu 34836842423 poté, co pro commit 54a31a2 prošly Deploy a Verify production.
Checkpoint Checkpoint: Evidence-based catharsis site: psychology essays, advice library, tags, illustrations, per-page previews, Majordomus method, Rust integration, command registry, tests and docs
Ručně psaná poznámka o průběhu (podle politiky nejvýš 40 řádků); text zůstává v lokálním stavu checkoutu.
Checkpoint Checkpoint: Evidence-based catharsis site: psychology essays, advice library, tags, illustrations, per-page previews, Majordomus method, Rust integration, command registry, tests and docs
Odvozeno z Gitu, ne napsáno: od začátku úlohy se změnilo 65 souborů.
Commit feat(content): add research library, graded advice, command registry and Rust content API
Pipeline Pages: běh 34842607207 failure.
Pipeline Pipeline Pages selhala: feat(content): add research library, graded advice, command registry …
10 jobů za 1 min 29 s: 6 prošlo, selhalo: CI / References (Crossref), přeskočeno: Deploy, Release, Verify production. Další zelený běh byl 34842946706 pro commit 94d734c.
Nález Neshoda názvu v Crossrefu zastavila nasazení
Běh 34842607207 selhal v jobu References (Crossref); přeskočeno: Deploy, Release, Verify production. Další zelený běh byl 34842946706 pro commit 94d734c (fix(references): match Crossref titles with or without subtitles), který publikoval v0.3.0.
Commit fix(references): match Crossref titles with or without subtitles
Pipeline Pages: běh 34842946706 success.
Pipeline Pipeline Pages prošla: fix(references): match Crossref titles with or without subtitles
10 jobů za 3 min 25 s: 10 prošlo.
Vydání Publikováno vydání v0.3.0
Vytvořeno jobem Release v běhu 34842946706 poté, co pro commit 94d734c prošly Deploy a Verify production.
Rozhodnutí Evidence is tracked as a dated ledger: data/sources.toml appraises every registry reference (design, level A–E), data/claims.toml records each public claim (type, level, confidence, sources, where used, last_reviewed, review_due), and validators fail the build on stale or inconsistent entries
Why: The site makes psychological and physiological claims to the public; bibliographic correctness (Crossref) does not show whether a claim is still supported, how strong it is, or when it was last checked. Rejected: Free-text evidence notes inside each page; a single combined references+appraisal file (mixes Crossref-verifiable facts with editorial judgement). Evidence: scripts/validate-claims.py, .github/workflows/evidence-freshness.yml.
Původní záznam je v angličtině.
Checkpoint Checkpoint: Evidence-based catharsis site: psychology essays, advice library, tags, illustrations, per-page previews, Majordomus method, Rust integration, command registry, tests and docs
Odvozeno z Gitu, ne napsáno: od začátku úlohy se změnilo 144 souborů.
Commit feat(evidence): add evidence ledger, methods page, glossary, status and evidence-gated landing
Pipeline Pages: běh 34845982889 success.
Pipeline Pipeline Pages prošla: feat(evidence): add evidence ledger, methods page, glossary, status a…
10 jobů za 4 min 17 s: 10 prošlo.
Rozhodnutí ADR-0001 navrženo: Evidence ledger with dated review for every public claim
Zaznamenáno jako návrh. Přijetí architektonického rozhodnutí je ponecháno na člověku.
Nález ADR-0001 zůstalo návrhem; přijetí zůstalo na člověku
Agent zaznamenal rozhodnutí o ledgeru důkazů jako navržené ADR a sám ho nepřijal. Poslední handover uvádí jeho přijetí nebo úpravu jako další krok pro člověka.
Vydání Publikováno vydání v0.4.0
Vytvořeno jobem Release v běhu 34845982889 poté, co pro commit 4cbb6fb prošly Deploy a Verify production.
Commit feat(api): export the evidence ledger and glossary, extend the Rust client, document the system
Pipeline Pages: běh 34846771284 success.
Pipeline Pipeline Pages prošla: feat(api): export the evidence ledger and glossary, extend the Rust c…
10 jobů za 5 min 2 s: 10 prošlo.
Vydání Publikováno vydání v0.5.0
Vytvořeno jobem Release v běhu 34846771284 poté, co pro commit f2890f4 prošly Deploy a Verify production.
Handover Zapsán handover: aktuální stav a další krok
Current state: main at f2890f4 is deployed as release v0.5.0; Pages pipeline run 34846771284 passed all 10 jobs including production verification. Evidence freshness workflow run 34846806810 passed. Local: validate.sh PASS, pytest 40 passed, Playwright 72 passed, cargo fmt/clippy/test pass. Ledger: 58 appraised sources, 50 claims, 54 glossary terms. ADR-0001 (evidence ledger) is proposed and awaits a person's acceptance. Next action: Accept or amend ADR-0001. Review Czech glossary terminology flagged as non-standard (kolektivní efervescence, pojmenování afektu, afektivní informatika). Optional: per-page social preview images (currently localized per language).
Původní záznam je v angličtině.
Dokončení Úloha ukončena jako completed: Evidence-based catharsis site: psychology essays, advice library, tags, illustrations, per-page previews, Majordomus method, Rust integration, command registry, tests and docs
Smlouva o dokončení: 7 pass, 4 skipped; ověřovací příkaz scripts/smoke-production.sh https://korczis.github.io/catharsis-as-a-service/ skončil kódem 0 za 7 s.
Úloha Start úlohy: Extend the site: more research and advice, per-page social previews, search and glossary cross-linking, second artifact Closure as a Service
Profil implementation; rozsah 31 cest.
Checkpoint Checkpoint: Extend the site: more research and advice, per-page social previews, search and glossary cross-linking, second artifact Closure as a Service
Checkpoint úlohy zaznamenaný v ledgeru; soubor s poznámkou k němu uchován není.
Commit feat(screens): preview concept screens in place with paging and swipe
Pipeline Pages: běh 34860959250 failure.
Pipeline Pipeline Pages selhala: feat(screens): preview concept screens in place with paging and swipe
10 jobů za 8 min 1 s: 8 prošlo, selhalo: Verify production, přeskočeno: Release. Další zelený běh byl 34863500153 pro commit 2125f1e.
Nález Ověření produkce selhalo, a proto nevzniklo vydání
Běh 34860959250 selhal v jobu Verify production; přeskočeno: Release. Další zelený běh byl 34863500153 pro commit 2125f1e (feat(research): expand measuring-emotion with verified sources), který publikoval v0.6.0.
Commit fix(screens): give previews addresses and test modified clicks deterministically
Pro tento commit neběžela pipeline Pages (workflow ještě neexistoval).
Commit feat(research): expand measuring-emotion with verified sources
Pipeline Pages: běh 34863500153 success.
Pipeline Pipeline Pages prošla: feat(research): expand measuring-emotion with verified sources
10 jobů za 5 min 7 s: 10 prošlo.
Vydání Publikováno vydání v0.6.0
Vytvořeno jobem Release v běhu 34863500153 poté, co pro commit 2125f1e prošly Deploy a Verify production.
Commit feat(figures): add data-driven curves and pipeline figure kinds
Pro tento commit neběžela pipeline Pages (workflow ještě neexistoval).
Těmto filtrům neodpovídá žádná událost.
Co tato případová studie je (a co není)
Tato stránka dokumentuje jednu dodávku: web, který právě čtete. Vznikl 14. září 2026; postavil ho AI agent pro programování (Claude Code), kterého řídil jeden člověk, a mezi agentem a repozitářem stál jako dozorová řídicí vrstva Majordomus ve verzi 0.6.0. Stránka je pojatá jako technologické demo. Každé číslo na ní je spočítané ze záznamů, které po dodávce zůstaly: z ledgeru Majordomu, z deníku rozhodnutí a handoverů pracovního checkoutu, z historie Gitu a ze záznamů GitHubu o bězích pipeline a vydáních. Časová osa tyto záznamy vykresluje jeden po druhém a každá událost odkazuje na commit, běh, vydání nebo soubor, ze kterého pochází.
Stejně důležité je, čím stránka není:
- Není to kontrolované srovnání. Proběhlo jedno sezení s jedním člověkem a jedním agentem a žádné srovnatelné sezení bez dozoru. Z těchto záznamů neplyne žádný násobek zrychlení a stránka ho netvrdí. Uvádí naměřené doby; odhady ušetřeného času s vyznačenými předpoklady přenechává článku o účtování času.
- Není to obecné tvrzení o Majordomu. Ukazuje, jak ho nastavil jeden repozitář, které příkazy běžely, co zaznamenaly a co odmítly. Jiná konfigurace se chová jinak.
- Není to záznam všeho. Ledger ukládá přijaté operace. Příkaz, který Majordomus odmítl, v něm nezanechá žádnou položku, takže tření je tu vidět jen tam, kde ho zmiňuje handover, checkpoint nebo commit.
- Není to přepis konverzace. Zadání, texty checkpointů a lokální cesty zůstávají v checkoutu. Publikovaný snímek je kurátorovaný a docs/CASE-STUDY.md popisuje, co obsahuje a proč.
Metodická poznámka podrobně popisuje první vydání včetně druhů zadání, které práci řídily. Tato stránka se věnuje samotné dozorové vrstvě: jak byla nastavená, jak se používala každá její část a kde přestala pomáhat.
Výchozí stav
Agent a člověk. Agent četl repozitář, spouštěl příkazy, upravoval soubory, commitoval a pushoval. Člověk v prvních fázích poslal zhruba patnáct zpráv: žádosti, výtvarné zadání, dlouhá strukturovaná zadání a krátké pokyny jako „nasaď“, „vydávej automaticky“ nebo „použij Majordomus a vynucuj ho“. Implementační volby dělal agent. Později během dne pracovali na stejném checkoutu souběžně další agenti a druhé sezení; jak, popisuje oddíl o kontinuitě.
Repozitář. Web v Zole 0.23.6 v angličtině a češtině, stylovaný Tailwind CSS a doplněný o Alpine.js a Flowbite; validátory v Pythonu, sada testů v Playwrightu a pytest; malý workspace v Rustu, který čte JSON API webu; a workflow GitHub Actions, která nasazují na GitHub Pages a vytvářejí vydání. Web popisuje stránka O projektu a právě běžící build ukazuje stránka stavu.
Vrstva Majordomus. Majordomus drží svůj stav v adresáři .ai/, který má dvě poloviny:
.ai/repo/je v Gitu a sdílí ho každý checkout. Jeho manifest registruje jednotlivé sekce. Politika nastavuje rozpočty kontextu, interval checkpointů výchozího profilu, požadavky smlouvy o dokončení (dodržený rozsah, proběhlé ověření, aktualizovaný stav, žádné otevřené blokery, přítomná poznámka), oddíly, které musí mít handover (Objective, Current State, Next Action), a dvě položky vynucování, které vážou příkazy na hooky Gitu. Existují čtyři profily provádění (implementation, debugging, deep work, routine) a všechny úlohy tu běžely v profiluimplementation. Pravidla leží v.ai/repo/rules/: zafixovaný převzatý základ, který se jen čte, a šest projektových pravidel. Architektonická rozhodnutí leží v.ai/repo/adrs/..ai/local/Git ignoruje. Obsahuje aktivní úlohu, ledger, do kterého se jen přidává, checkpointy, handovery, deník rozhodnutí a otevřené otázky. Nic z něj nesmí publikovat žádný generátor, a proto tato stránka nese kurátorovaný export, ne samotný adresář.
Z politiky vygeneroval Majordomus tři instrukční soubory, AGENTS.md, CLAUDE.md a GEMINI.md. Každý z nich odkáže agenta na .ai/README.md a jeho postup vyhledávání kontextu. První událost v ledgeru, v 10:26:23 UTC, je právě tato projekce.
Hooky a CI. Příkaz npm ci nasměruje Git na adresář .githooks/ v repozitáři. Workflow CI opakuje kontrolu zdraví Majordomu ve vlastním jobu, takže se kontroluje i klon bez hooků. Všechna místa vynucení uvádí tabulka zapojení.
Životní cyklus úlohy v praxi
Majordomus dovoluje jednu aktivní úlohu na checkout. Diagram životního cyklu výše prochází každý krok s jeho registrovaným příkazem a skutečným zaznamenaným příkladem; tento oddíl vypráví totéž popořadě.
Start s rozsahem. majordomus start otevře úlohu s názvem, profilem a cestami, na které smí sáhnout. První úloha začala v 10:26:23 UTC a nárokovala si 20 cest. Za zaznamenané období začalo šest úloh s rozsahem od jedné cesty po 31.
Práce a kontrola. majordomus check nic nezapisuje: ohlásí, zda je aktivní úloha v souladu s politikou, svým rozsahem a zaznamenaným stavem. majordomus watch hlásí odchylky mezi úlohou, jejím rozsahem, politikou a vygenerovanými instrukčními soubory. Společně zachytily dva problémy s rozsahem ještě před prvním pushem (viz co dozor zachytil).
Checkpoint. majordomus checkpoint zaznamená krátkou poznámku o průběhu, kterou politika omezuje na 40 řádků. Zaznamenalo se sedm checkpointů. Čtyři napsal agent; například checkpoint v 10:43:27 vznikl hned po prvním pushi, zatímco běžela pipeline. Dva byly odvozeny z Gitu bez jakéhokoli psaného textu a uvádějí jen, kolik souborů se od začátku úlohy změnilo: 65 ve 12:16:46 a 144 ve 12:52:41. Poslední patří úloze, která byla na konci snímku stále aktivní.
Zaznamenat rozhodnutí. majordomus decision přidá datovaný záznam s odůvodněním, odmítnutými alternativami a doklady. Zaznamenala se čtyři rozhodnutí; najdete je v oddílu o rozhodnutích a ADR.
Předat práci. majordomus handover zapíše záznam pro navázání se třemi oddíly, které politika vyžaduje. Vznikly čtyři handovery. Tři z nich předcházely o jednu až dvě sekundy ukončení úlohy jako partial, což je přesně vzorec, který smlouva o dokončení požaduje: jiný výsledek než completed potřebuje poznámku, co bude následovat.
Dokončit s ověřovacím příkazem. majordomus finish vyhodnotí smlouvu o dokončení. Výsledek completed vyžaduje ověřovací příkaz, který proběhl a skončil nulou, a ledger ukládá příkaz, jeho návratový kód a dobu běhu. V tomto repozitáři zvolil agent smoke test produkce, tedy skript za příkazem npm run smoke, spuštěný proti živé URL. První dokončená úloha se uzavřela v 10:47:25 UTC, necelé dvě minuty po publikování vydání v0.1.0, a její ověřovací příkaz skončil kódem 0 po 7 sekundách. Smlouva zaznamenala sedm požadavků jako pass, čtyři jako skipped a žádný jako fail; požadavky, které se na daný výsledek nebo konfiguraci nevztahují, se zaznamenají jako skipped. Druhá dokončená úloha se stejně uzavřela ve 13:08:34, po vydání v0.5.0.
Přečíst záznam. majordomus history vypíše ledger. Snímek, ze kterého tato stránka vychází, se exportoval z jeho výstupu ve formátu JSON.
Zapojení kontrol
Pravidlo, které nic nespouští, je jen doporučení. Majordomus porovnává položky vynucování ve své politice se skutečností: majordomus doctor selže, když deklarovaný příkaz chybí, není spustitelný, nevolá ho hook, který politika jmenuje, nebo ho volá tak, že spolkne jeho návratový kód. Stojí za tím převzaté pravidlo enforcement-wiring, které vynucuje právě doctor.
- Pre-commit. .githooks/pre-commit odmítne běžet bez nainstalovaného Majordomu a pak spustí
majordomus doctor. Commit tedy vyžaduje zdravou a zapojenou vrstvu. - Pre-push. .githooks/pre-push spustí
majordomus finish --check, který vyhodnotí smlouvu o dokončení aktivní úlohy, aniž by úlohu uzavřel. Push, který nese práci mimo nárokovaný rozsah, se odmítne dřív, než opustí stroj. - Zprávy commitů. .githooks/commit-msg spustí
scripts/lint-commits.sh. Conventional Commits se vynucují, protože se z nich počítají verze vydání. - Dozorový job v CI. Job Majordomus supervision v ci.yml nainstaluje Majordomus v zafixované verzi 0.6.0 (instalátor ověří SHA-256 vydání), nasměruje Git na hooky a spustí
majordomus doctor. Prošel ve všech bězích Pages ve snímku. - Brány nasazení. pages.yml spouští CI, pak Deploy, pak Verify production a nakonec Release. Deploy ověří, že URL Pages odpovídá základní URL v konfiguraci Zoly. Verify production počká, až živý web servíruje pushnutý commit, a pak proti němu spustí smoke test a prohlížečové testy příkazem
npm run test:production. Release běží, jen když Verify production prošel. - Rulesety repozitáře. Repozitář na GitHubu chrání tři rulesety:
mainvyžaduje CI, historiimainnelze přepsat ani smazat a tagyv*nelze přesunout ani smazat. Požadavek na CI připouští výjimku pro administrátora a první push ji využil.
Vynucováním Majordomu v užším smyslu jsou jen oba hooky. Ostatní jsou běžné pojistky téhož repozitáře a tato zpráva jejich účinky od Majordomu neodděluje.
Pravidla vedle kódu
Pravidla jsou dokumenty v Markdownu s front matter: id, version, třída (blocking nebo advisory) a volitelné závislosti zapsané jako přesné odkazy id@version. Platná sada se skládá sčítáním, převzatý základ Majordomu plus vlastní pravidla projektu, a žádný mechanismus přepisu neexistuje. majordomus rules list sadu vypíše s třídou každého pravidla a příkazy, které ho vynucují.
Šest projektových pravidel s odkazy na jejich soubory:
- verified-deployment: nic se nehlásí jako nasazené, dokud job ověření ve workflow Pages neprojde proti živé URL, kterou vrátí GitHub.
- zola-source-of-truth: veškeré veřejné HTML generuje Zola; obsah žije v Markdownu, texty rozhraní ve slovnících překladů a šablony sdílejí oba jazyky.
- release-on-verified-main: Conventional Commits jsou povinné a každý ověřený push do
mainvytvoří vydání, jehož verze se odvodí z commitů. - evidence-ledger: každé veřejné tvrzení je zaznamenané se zdroji, úrovní důkazů, mírou jistoty a datem revize, které ještě neuplynulo.
- no-neuro-overreach: žádná věta nesmí tvrdit, že signál, model nebo oblast mozku odhaluje, co člověk cítí.
- medical-claims: zjištění se uvádějí na úrovni skupin i s limity, nikdo se neposuzuje individuálně a každá výzkumná poznámka i rada nese klinické upozornění.
Všech šest je blokujících a jejich závislosti jsou výslovné: evidence-ledger závisí na verified-deployment, no-neuro-overreach na evidence-ledger a medical-claims na obou. Žádné z nich nemá blok x-majordomus a výpis pravidel u nich uvádí, že nemají validátor. Je to záměr a stojí to v každém souboru: Majordomus pravidla rozpozná, vypíše a načte do kontextu agenta, vynucují je však validátory projektu, joby v CI a revize. Pro čtení této případové studie je ten rozdíl podstatný. Když build shodí zakázaná formulace nebo tvrzení po datu revize, zachytil to validátor obsahu nebo validátor ledgeru projektu, ne Majordomus.
Vynucování Majordomu žije v převzatém základu. Čtyři jeho pravidla v této dodávce viditelně pracovala. Scope-integrity nepovažuje práci mimo nárokované cesty za práci úlohy; vynucují ho check, finish a watch. Verification-integrity vyžaduje, aby dokončený výsledek měl ověřovací příkaz, který skončil nulou, se zaznamenaným návratovým kódem a dobou běhu; vynucuje ho finish. Note-integrity vyžaduje, aby každý výsledek nesl poznámku s oddíly, které daný výsledek potřebuje; vynucuje ho také finish. Enforcement-wiring, popsané výše, vynucuje doctor.
Rozhodnutí a ADR
Pracovní rozhodnutí od trvalého oddělují dva mechanismy.
Deník rozhodnutí je lokální, jen se do něj přidává a zápis je levný. majordomus decision zaznamená, co se rozhodlo, proč, co se odmítlo a kde jsou doklady. Zapsaly se čtyři položky:
- Strukturovaná data se sestavují jako data v Teře a serializují přes json_encode. Ručně psané JSON-LD v šablonách se escapuje jako HTML a rozbije se na uvozovkách. Odmítnuto: ručně psané řetězce JSON-LD a skript, který je vkládá v prohlížeči.
- Náhledy odkazů jsou lokalizované podle jazyka a sitemapa uvádí každou jazykovou verzi. Odmítnuto: jedna anglická náhledová karta pro všechny stránky a jazykové alternativy jen v HTML.
- Validátory v Pythonu se testují přes pytest v projektovém virtuálním prostředí. Odmítnuto: unittest ze standardní knihovny a globální instalace pytestu.
- Důkazy se vedou jako datovaný ledger hodnocených zdrojů a odstupňovaných tvrzení a validátory shodí build na zastaralých nebo nekonzistentních položkách. Odmítnuto: volné poznámky o důkazech na každé stránce a jediný soubor, který míchá bibliografická fakta s redakčním úsudkem.
První tři se zaznamenaly během jedné sekundy (11:08:30 až 11:08:31 UTC), krátce před handoverem. Rozhodnutí se tedy zapisovala ve chvíli, kdy se úloha chystala uzavřít, ne průběžně.
Záznam architektonického rozhodnutí je v Gitu a je trvalý. Čtvrté rozhodnutí bylo sepsáno jako ADR-0001 s kontextem, rozhodnutím, odmítnutými alternativami a důsledky a ledger ho zaznamenává jako navržené ve 12:55:12. Agent ho nepřijal, protože přijetí je úkon člověka. Poslední handover té úlohy uvádí jako další krok přijetí nebo úpravu ADR-0001 a majordomus adr list ho stále ukazuje jako návrh. Samotné rozhodnutí je na webu vidět: stránka důkazů a stránka metod vykreslují hodnocení z ledgeru, který popisuje.
Co dozor zachytil
Nálezy na této stránce se generují ze záznamů, nepíšou se ručně. Exportní skript deklaruje, co hledat, a nález zveřejní, jen když ho potvrdí ledger, handover, checkpoint nebo data pipeline. Každá karta odkazuje na své doklady v časové ose. Popořadě:
- Odchylka od rozsahu po přesunu souborů. První úloha si nárokovala 20 cest, ale ne kořenové soubory přesunuté do adresářů pro dílo a statické soubory. Handover zaznamenává, že odchylku nahlásil
majordomus watch. Úloha skončila jako partial 2 minuty 53 sekund po startu a restartovala se s rozsahem, který tyto soubory jmenoval. - Rozsah „.“ před prvním pushem. Restartovaná úloha zadala jako rozsah jedinou tečku. Majordomus ji nečte jako celý repozitář, takže
majordomus checknahlásil každý změněný soubor jako mimo rozsah. Úloha se v 10:39:39 restartovala s 26 výslovně vyjmenovanými cestami. První push přišel asi o tři minuty později a jeho pipeline prošla všemi sedmi joby. - Zadání, které přerostlo rozsah. Když se práce rozrostla o workspace v Rustu, datové soubory a nástroje pro Python, handover zaznamenal, že nové cesty nejvyšší úrovně leží mimo nárokovaný rozsah. Nová úloha si nárokovala 31 cest.
- Výjimka z rulesetu. Checkpoint zapsaný po prvním pushi zaznamenává, že push prošel přes výjimku pro administrátora v rulesetu, který na
mainvyžaduje CI. Samotné nasazení zůstalo podmíněné závislostmi jobů ve workflow. Tohle se zaznamenalo, ne zabránilo. - Dokončení jen s kontrolou živého webu. Obě úlohy uzavřené jako dokončené spustily jako ověřovací příkaz smoke test produkce a oba skončily kódem 0. Tři úlohy ukončené jako partial žádné dokončení netvrdily.
- Neúspěšná kontrola referencí zastavila nasazení. Tohle zachytilo CI, ne Majordomus. Běh 34842607207 selhal v jobu References (Crossref) a Deploy, Verify production i Release se přeskočily. Následovala oprava porovnávání názvů (commit 94d734c) a další běh publikoval ve 12:24:28 vydání v0.3.0, sedm minut po startu neúspěšného běhu.
- Neúspěšné ověření produkce. Opět CI. Běh 34860959250 nasadil build a pak selhal ve Verify production, když jeden z 84 prohlížečových testů proti živému webu vypršel; Release se přeskočil. Protože ověření živého webu potřebuje nasazení, zůstal neověřený build online až do dalšího běhu. Navazující commit udělal z tohoto testu deterministický a další běh, pro pozdější commit, který ho obsahoval, prošel a publikoval v0.6.0.
- ADR ponechané člověku. Popsáno v oddílu o rozhodnutích a ADR.
Tři události zmiňované v jiných popisech této dodávky mezi nálezy nejsou, protože je záznamy nepotvrzují: kontrola zdraví v pre-commit hooku, která měla upozornit, že README neodkazuje na bootstrap pro agenty, příkaz finish odmítnutý do doby, než existoval handover, a závislost pravidla, kterou resolver odmítal, dokud nebyla zapsána jako odkaz id@version. Odmítnutí se do ledgeru nezapisují a žádná z těch tří událostí se neobjevuje v handoveru, checkpointu ani commitu. Mohly se stát; tato stránka je nepočítá.
Kontinuita při restartech a souběžných pracovnících
Restart úlohy byl v zaznamenaném čase levný. Mezi handoverem, ukončením jako partial a dalším startem ledger nikdy neukazuje víc než dvě sekundy. Začalo šest úloh a tři z nich byly restarty. Levné je dělalo to, že stav žil v souborech, ne v konverzaci agenta. Handover nese cíl, aktuální stav a další krok spolu s poli spočítanými z Gitu (větev, commit, čistý nebo změněný strom, změněné soubory), která autor psát nesmí. Politika navíc nechává hooky sezení zapsat briefing při startu epizody, odvozený checkpoint při kompakci konverzace a záznam pro navázání, když epizoda skončí s dosud aktivní úlohou.
Později během dne dodávka prověřila těžší případ: několik pracovníků na jednom checkoutu současně. Na konci snímku je aktivní jedna úloha. Začala ve 14:54:07 UTC a nárokuje si 31 cest, tedy celý pracovní strom. Uvnitř ní pracovali zároveň obsahoví agenti, druhé sezení Claude a hlavní sezení, každý s určením, které soubory jsou jeho. Tuto stránku napsal jeden z těchto pracovníků, který měl zakázáno úlohy startovat, checkpointovat, předávat nebo dokončovat a upravovat soubory ostatních.
Takové uspořádání odhaluje limit. Majordomus vymezuje práci po úlohách a po checkoutech. Uvnitř jednoho checkoutu sdílejí souběžní pracovníci aktivní úlohu a Majordomus nerozliší, kdo změnil který soubor. Koordinace vycházela z výslovného rozdělení cest v zadání každého pracovníka a z Gitu. Převzatý základ formuluje odpověď Majordomu jako principy: jeden pracovník, jeden rozsah, rozsah nárokovaný jiným worktree jako hranice a souběžná práce navzájem izolovaná. Tato dodávka je uvnitř jednoho checkoutu neuplatnila.
Doklady o dodávce
Vše v tomto oddílu je odkazované a časovou osu lze vyfiltrovat jen na commity, běhy pipeline nebo vydání.
- Commity. Každý předmět commitu je Conventional Commit. První, plakát, nese čas 09:54:05 UTC, sekundu před vytvořením repozitáře na GitHubu; web následoval v 10:42:45.
- Běhy pipeline. První běh Pages začal v 10:43:02 a skončil v 10:45:45 se sedmi joby, které všechny prošly. Pozdější běhy narostly na deset jobů, jak do CI přibyly testy v Pythonu, job pro Rust a kontrola v Crossrefu. Dva z prvních sedmi běhů selhaly a obě selhání jsou uvedena i s tím, co následovalo.
- Vydání. Vydání v0.1.0 bylo publikováno v 10:45:42 po ověření živého webu: 51 minut 37 sekund po prvním commitu a 19 minut 19 sekund po inicializaci Majordomu. Vydání v0.2.0 až v0.5.0 následovala do 13:07:10, každé vytvořené jobem Release v běhu, jehož ověření produkce prošlo.
- Dokončené úlohy. Obě dokončené úlohy mají v ledgeru uložený ověřovací příkaz, návratový kód 0 a dobu běhu.
Dvě smyčky lze změřit přímo. Od commitu webu k publikovanému v0.1.0 uplynuly 2 minuty 57 sekund. Od startu běhu, který selhal na referencích, k publikovanému v0.3.0 uplynulo 7 minut 9 sekund. Primárními záznamy jsou stránka vydání a běhy workflow Pages; tatáž data čte gh run list.
Co to stálo a co to nevyřešilo
Tření. Tři ze šesti úloh skončily jako partial a restartovaly se kvůli tomu, jak byl zadaný jejich rozsah. Dva z těchto restartů proběhly během prvních čtrnácti minut dozoru. Rozsah je nutné psát jako výslovné cesty nejvyšší úrovně a rozrostlé zadání v této dodávce znamenalo úlohu uzavřít a otevřít novou, což odpovídá principu převzatého základu nárokovat cesty při startu úlohy místo tichého rozšiřování rozsahu. Samotné záznamy stály pozornost: sedm checkpointů, čtyři handovery a čtyři rozhodnutí mezi 10:26 a 13:08 UTC a k tomu úloha, která následovala. A protože smlouva o dokončení odmítá výsledek completed bez úspěšného ověřovacího příkazu, nešlo úlohu uzavřít jako dokončenou dřív, než pipeline nasadila a živý web odpověděl.
Co Majordomus nekontroloval.
- Zda je obsah pravdivý, dobře podložený a bezpečně formulovaný. To patří validátorům projektu a recenzentovi.
- Zda je ověřovací příkaz přiměřený. Smlouva kontroluje, že příkaz proběhl a skončil nulou; volba smoke testu živého webu byla rozhodnutím agenta.
- Zda testy dávají smysl a zda je padající test nestabilní, nebo odhaluje skutečnou chybu.
- Kdo co udělal uvnitř jednoho checkoutu sdíleného souběžnými pracovníky.
- Šest projektových pravidel, která vypisuje, ale nevynucuje.
Co záznamy ukázat nemohou. Odmítnuté příkazy v ledgeru nejsou. Čas, který člověk strávil čtením, rozhodováním a psaním zadání, se nikde nezaznamenává. Doby závisí na hardwaru, síti a frontě CI. A protože vedle Majordomu běžely běžné pojistky (lokální validace, prohlížečové testy, brány CI a rulesety), jejich účinky tu oddělit nelze.
Co se podle záznamů změnilo. Každé tvrzení o dokončení v tomto projektu je svázané se zaznamenaným příkazem a jeho návratovým kódem. Chyby v rozsahu se ukázaly lokálně, před jakýmkoli pushem, a ne jako neúspěšné běhy pipeline. A stav potřebný k navázání práce ležel v souborech, které mohl přečíst nový pracovník, což je mimochodem i to, co umožnilo tuto případovou studii napsat.
Jak to zopakovat
Záznamy jsou ve veřejném repozitáři s výjimkou .ai/local/, který checkout nikdy neopouští. Ve vlastním klonu je prozkoumáte takto:
- Nainstalujte Majordomus z majordomus.dev a spusťte
npm ci, aby byly hooky aktivní. - Zkontrolujte vrstvu příkazem
majordomus doctor, platná pravidla vypište příkazemmajordomus rules lista architektonická rozhodnutí příkazemmajordomus adr list. - Historii pipeline přečtěte příkazem
gh run lista životní cyklus úlohy v souboru .ai/repo/workflows/task-lifecycle.md. - V checkoutu s vlastním ledgerem ho vypíše
majordomus historyapython3 scripts/export-case-study.pyznovu vytvoří snímek, ze kterého tato stránka vychází. S volbou pro kontrolu tentýž skript ověří commitnutý snímek bez lokálního stavu a bez přístupu k síti, a přesně tak s ním zachází CI.
Formát snímku, co obsahuje a co vynechává, popisuje docs/CASE-STUDY.md. Jak vznikal zbytek webu, vysvětlují technické články.
Použité funkce Majordomu
| Funkce | Jak se použila | Doklad |
|---|---|---|
| Úlohy s rozsahem | Šest úloh začalo s výslovným seznamem cest. Problémy s rozsahem se řešily ukončením úlohy jako partial a startem nové se správným rozsahem. | Každý start úlohy v ledgeru nese deklarovaný rozsah; zaznamenány jsou tři restarty. |
| Smlouva o dokončení s ověřovacím příkazem | Úlohy uzavřené jako dokončené spustily smoke test produkce proti živé URL; výsledky partial místo toho nesly handover. | Každé dokončení v ledgeru ukládá výsledky smlouvy, ověřovací příkaz, jeho návratový kód a dobu běhu. |
| Checkpointy | Krátké poznámky o průběhu během úlohy, napsané agentem nebo odvozené z Gitu. | Sedm checkpointů v ledgeru; dva odvozené z Gitu uvádějí jen počet změněných souborů. |
| Handovery | Psaly se před každým restartem a na konci hlavní úlohy, s oddíly Objective, Current State a Next Action. | Čtyři handovery v ledgeru; politika vyžaduje všechny tři oddíly. |
| Deník rozhodnutí | Rozhodnutí s odůvodněním, odmítnutými alternativami a doklady, zapsaná, dokud byla práce čerstvá. | Čtyři zaznamenaná rozhodnutí, každé s odkazem na soubory, které ho implementují. |
| Záznamy architektonických rozhodnutí | Rozhodnutí o ledgeru důkazů bylo sepsáno jako ADR-0001 a ponecháno ve stavu návrhu, aby ho přijal člověk. | V ledgeru je jeden návrh ADR; soubor ADR má stále stav proposed. |
| Pravidla jako verzované dokumenty | Zafixovaný převzatý základ a šest projektových pravidel, načtené do kontextu agenta a vypsané s třídou a příkazy, které je vynucují. | Soubory pravidel v .ai/repo/rules; výpis pravidel ukazuje, že projektová pravidla nemají validátor v Majordomu. |
| Kontrola zdraví zapojená do Gitu a CI | Kontrolu zdraví spouští pre-commit hook i job v CI; zároveň porovnává položky vynucování v politice s hooky. | Soubor hooku a job Majordomus supervision, který prošel ve všech bězích Pages ve snímku. |
| Instrukční soubory pro poskytovatele | AGENTS.md, CLAUDE.md a GEMINI.md se vygenerovaly z politiky, takže každý agent začíná ze stejného bootstrapu. | První událost v ledgeru zaznamenává projekci do tří cílových souborů. |
| Ledger, do kterého se jen přidává | Každý start, checkpoint, rozhodnutí, handover a dokončení se zaznamenal s časem a commitem Gitu; tato stránka se z něj exportuje. | Snímek, ze kterého stránka vychází, a skript, který ho exportuje a kontroluje. |
Zapojení kontrol
Kde která kontrola běží, co spouští a co zastaví. V politice Majordomu jsou deklarované jen dva hooky; ostatní jsou běžné pojistky téhož repozitáře.
| Kde | Příkaz | Účinek | Soubor |
|---|---|---|---|
| Hook pre-commit v Gitu | majordomus doctor | Odmítne commit, pokud vrstva není v pořádku nebo některé deklarované vynucení není zapojené bez spolknutého návratového kódu. | .githooks/pre-commit |
| Hook pre-push v Gitu | majordomus finish --check | Odmítne push, pokud by aktivní úloha nesplnila smlouvu o dokončení, například kvůli souborům mimo rozsah. | .githooks/pre-push |
| Hook commit-msg v Gitu | scripts/lint-commits.sh --file | Odmítne předmět commitu, který není Conventional Commit, protože se z předmětů počítají verze vydání. | .githooks/commit-msg |
| Job v CI: Majordomus supervision | majordomus doctor | Nainstaluje zafixovaný Majordomus 0.6.0 a zopakuje kontrolu zdraví při každém pushi a pull requestu, takže se kontroluje i klon bez hooků. | .github/workflows/ci.yml |
| Job v CI: Conventional commits | scripts/lint-commits.sh <range> | Zkontroluje každý předmět v pushnutém rozsahu; při selhání se nic nenasadí. | .github/workflows/ci.yml |
| Workflow Pages: Verify production | npm run smoke | Deploy čeká na CI; Verify production počká, až živý web servíruje pushnutý commit, a spustí proti němu smoke test a Playwright; Release čeká na Verify production. | .github/workflows/pages.yml |
| Politika Majordomu | verification.finish_requires | Smlouva o dokončení vybírá pět požadavků: dodržený rozsah, proběhlé ověření, aktualizovaný stav, žádné otevřené blokery, přítomnou poznámku. | .ai/repo/policy.yaml |
| Rulesety na GitHubu | nastavení repozitáře | main vyžaduje CI (s výjimkou pro administrátora), historii main nelze přepsat ani smazat a tagy vydání v* nelze přesunout ani smazat. | pravidlo release-on-verified-main |
Co dozor zachytil
Generováno ze záznamů: nález se zveřejní, jen když ho potvrdí ledger, handover, checkpoint nebo data pipeline. Každá karta odkazuje na své doklady v časové ose.
Odchylka od rozsahu po přesunu souborů; úloha restartována
První úloha si nárokovala 20 cest, ale ne kořenové soubory přesunuté do artwork/ a static/. Handover zaznamenává, že majordomus watch nahlásil odchylku; úloha byla ukončena jako partial a restartována před prvním pushem.
Rozsah "." zachycen před prvním pushem
Restartovaná úloha zadala rozsah jako ".", což Majordomus nečte jako celý repozitář, a majordomus check proto nahlásil každý změněný soubor jako mimo rozsah. Úloha byla restartována s výslovně vyjmenovanými cestami ještě před prvním pushem.
Zadání přerostlo nárokovaný rozsah; nová úloha si ho nárokovala
Když se zadání rozrostlo o workspace v Rustu, datové soubory a nástroje pro Python, handover zaznamenal, že nové cesty nejvyšší úrovně leží mimo rozsah úlohy. Úloha skončila jako partial a nová si nárokovala 31 cest.
První push do main prošel přes výjimku pravidel pro administrátora
Checkpoint zapsaný po prvním pushi zaznamenává, že push využil výjimku pro administrátora v pravidlech repozitáře, která vyžadují CI. Nasazení přesto zůstalo podmíněné: ve workflow Pages job deploy závisí na jobech CI a job release na ověření produkce.
„Dokončeno“ se zaznamenalo jen s úspěšnou kontrolou živého webu
Obě úlohy uzavřené jako dokončené spustily jako ověřovací příkaz smoke test proti živé URL (exit 0, 7 s). Úlohy uzavřené jako partial (3) žádný ověřovací příkaz nezaznamenaly a dokončení netvrdily.
Neshoda názvu v Crossrefu zastavila nasazení
Běh 34842607207 selhal v jobu References (Crossref); přeskočeno: Deploy, Release, Verify production. Další zelený běh byl 34842946706 pro commit 94d734c (fix(references): match Crossref titles with or without subtitles), který publikoval v0.3.0.
ADR-0001 zůstalo návrhem; přijetí zůstalo na člověku
Agent zaznamenal rozhodnutí o ledgeru důkazů jako navržené ADR a sám ho nepřijal. Poslední handover uvádí jeho přijetí nebo úpravu jako další krok pro člověka.
Ověření produkce selhalo, a proto nevzniklo vydání
Běh 34860959250 selhal v jobu Verify production; přeskočeno: Release. Další zelený běh byl 34863500153 pro commit 2125f1e (feat(research): expand measuring-emotion with verified sources), který publikoval v0.6.0.
Limity
- Jedno sezení, jeden člověk, jeden agent. Chybí kontrolní podmínka, takže žádný násobek zrychlení odvodit nelze.
- Ledger ukládá přijaté operace. Odmítnutý příkaz v něm nezanechá stopu, takže tření je podhodnocené.
- Majordomus neposuzuje obsah: hodnocení důkazů, zdravotní formulace a přiměřenost testů patří validátorům projektu, CI a recenzentovi.
- Šest projektových pravidel nemá blok x-majordomus. Majordomus je rozpozná a vypíše, ale nevynucuje.
- Ověřovací příkaz volí pracovník. Smlouva kontroluje, že proběhl a skončil kódem 0, ne že šlo o správnou kontrolu.
- Souběžní pracovníci v jednom checkoutu sdílejí jednu aktivní úlohu, takže kdo co udělal, plyne z jejich zadání a z Gitu, ne z Majordomu.
- Ověření živého webu potřebuje nasazení, takže neúspěšný job ověření nechá neověřený build online až do dalšího běhu.
- Snímek je kurátorovaný: zadání, texty checkpointů ani lokální cesty se nepublikují a čas, který člověk strávil čtením a rozhodováním, se nikde nezaznamenává.
Koncepční obrazovky
Koncepční obrazovky · ilustrativní data
-
Sezení Každé sezení uchovává časovou osu, zdroje kontextu, rozhodnutí a předávku.
-
Pravidla Spustitelná pravidla s místy vynucení: příkazová řádka, CI, pre-commit hook.
-
Worktrees Paralelní větve ve vlastních worktrees, každá navázaná na issue a sezení.
-
Issues Issue propojené s prací, která ho implementuje a ověřuje.
-
Testy Běhy testů, selhání a kvalitativní brány na jednom místě, propojené s issues a commity.
-
Dokumentace Dokumentace a architektonická rozhodnutí vedle pravidel, která naplňují.
-
Milníky Milníky s postupem, harmonogramem a závislostmi odvozenými z plánu issues.
-
Modely Které modely se použily k čemu, s jakou latencí a za jakou cenu.
Tyto obrazovky jsou koncepty cockpitu Majordomu s ilustrativními daty. Nezobrazují tento projekt; jeho skutečné záznamy jsou časová osa a čísla výše.
Přečtěte si technické články
Technická sekce vysvětluje, jak byl zbytek webu postaven a otestován. Odhady ušetřeného času s vyznačenými předpoklady najdete v článku o účtování času; tato případová studie uvádí jen naměřené doby.
