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.

Zpráva o extrakci

jak byl návrh odvozen: kořenová příčina, účetní kniha vzorů, zamítnuté vzory, rizika, plán

Vykresleno z docs/EXTRACTION_REPORT.md — stejného Markdownu, který ukazuje GitHub.

Toto je záznam o tom, jak byl DESIGN.md odvozen. Existuje proto, aby každé designové rozhodnutí šlo vystopovat k pozorovanému selhání nebo pozorovanému úspěchu a aby čtenář viděl, co bylo zvažováno a zamítnuto, nejen co bylo ponecháno.

Zdrojovým materiálem bylo velké soukromé inženýrské prostředí: instrukční soubory napříč zhruba dvaceti repozitáři, jeden velmi velký monorepozitář se zralým korpusem politik a háčků, několik let poznámek z relací a retrospektiv a čtyři dřívější pokusy o dozorový nástroj. Nic z toho materiálu se zde nereprodukuje. Cesty, jména, citace a interní slovník byly odstraněny. Řádové velikosti zůstávají, protože jsou důkazem.

Metoda: prostudovat → abstrahovat → zpochybnit → syntetizovat. Ne kopírovat → přejmenovat → publikovat.


1. Definice produktu

Prismatic Majordomus je lehká řídicí dozorová vrstva pro práci asistovanou AI. Drží jednu kanonickou politiku, promítá ji do jakéhokoli formátu instrukcí, který čte každý AI pracovník, drží trvalý stav úloh mimo každou konverzaci, koordinuje rozsah mezi souběžnými pracovníky a odmítá označit práci za dokončenou, dokud není splněn kontrakt dokončení.

Není to model, framework pro agenty ani runtime. Dohlíží na pracovníky; nespouští je.

Jedna věta: AI pracovníci by neměli řídit sami sebe.

2. Jediná kořenová příčina

Každé vlákno extrakce konvergovalo k jednomu zjištění a to se uvádí první, protože zbytek návrhu je jeho důsledek.

Vynucování se deklaruje v próze a nikdy se neusmiřuje s tím, co skutečně běží.

Nezávislé instance nalezené ve zdrojovém materiálu, každá ověřena čtením zapojení, ne dokumentace:

#DeklarovánoSkutečnost
139 pre-commit skriptů, README popisující záložní dispečerskou smyčkudispečer natvrdo 5; 34 osiřelých; žádná smyčka neexistuje
2dva hooky ochrany worktree, front matter politiky čte BLOCKINGnikdy se nedispečuje; jejich samotest je echo OK; exit 0
3hák názvové konvence „vynucovaný od“ určitého dataměsíce nezapojeno; pak zapojeno s chybou příznaku, která na každé platformě odpovídala nula souborům
4katalog 546 AI agentů uváděný jako hlavní schopnost1 ze 183 vzorkovaných záznamů se skutečně zaregistrovalo v runtime
57 runtime hooků pod konfiguračním adresářem nástroježádný soubor nastavení v repozitáři neměl klíč hooks
6dobře navržený commitový hlídač se self-testem a zdůvodněnímregistrace se ztratila, když nesouvisející nástroje přepsaly soubor nastavení; hook, testy i dokumentace stále existují
7guvernér rozpočtu volání nástrojů (omezení čtení, strop subagentů, zhuštění výstupu)nainstalováno, nikdy neregistrováno, adresář stavu prázdný
8guard relace s detekcí driftu podle digestůběželo jeden den; 18 stavových souborů; od té doby nic
9dvě auditní knihy předepsané smlouvou o vynucovánínikdy nevytvořeno
10konfigurační soubor chráněných větví čtený validátorem přepsáníneexistuje
11kompresní modul s bajtově přesnou validační tabulkou, „Production Ready“modul neexistuje
12předchozí pokus o extrakci tvrdící 106 artefaktůdodáno 2
13registr tvrzení hlásící „100 % ověřeno, nula porušení“baseline soubor o adresář dál zaznamenává 27,263
14pilíř doktríny s modulem, politikou a háčkemnezaregistrováno v žádném seznamu pilířů; nikdy nespuštěno
15volba časového limitu procesu u volání runtimefunkce takovou volbu nemá; záchranná větev je mrtvý kód
16pět skriptů uvedených jako doporučený onboardingový workflowžádné neexistují
17příznak rozsahu --changed u úlohy CIvypočítá seznam, vytiskne ho a přesto běží bez rozsahu

Sedmnáct není vyčerpávající. Je to počet, při němž přestalo být zajímavé vzor dál rozšiřovat.

Důsledek pro návrh: hlavní deterministickou zárukou doctor je, že každé vynucování, které politika deklaruje, se vyřeší na artefakt, který existuje, je spustitelný a je dosažitelný z pojmenovaného dispečera. Ta kontrola má zhruba šedesát řádků. Zdrojové prostředí ji popsalo na pěti místech a neimplementovalo ji nikde.

3. Ledger vzorů

Sloupce: Proven znamená pozorováno, že funguje v produkci, nejen navrženo. Generalizable znamená použitelné běžným týmem s gitem a shellem, bez jiného runtime. Complexity je odhad pro implementaci v přenosném shellu.

VzorProblém, který řešíDůkazyProkázánoZobecnitelnéSložitostZahrnout
Sesouhlasení zapojení vynucováníkontroly deklarované, ale nezapojené17 instancí výšene — nikdy nesestavenoano~60 řádkůano, jádro
Identita odvozená z gitu na záznamech stavuworkeři si halucinují větev/hlavní commitzapisovač předávek zakazuje autorskou identitu; resolver validujeanoanonízkáano
Štítek divergence při čtení (exact/advanced/diverged/different_context)zastaralý stav, kterému se mlčky věříresolver předávek přes merge-baseanoanonízkáano
Obnova v rozsahu, nikdy záložní řešení pro celý repozitářnesouvisející poznámka prosakuje do kontextuúrovně resolveru; nepřítomnost končí exit 0anoanonízkáano
Předávka jen s připojováním, atomická, nikdy nestagovanápřepsaný nebo automaticky commitnutý stavpublikace hardlinkem s opakovánímanoanonízkáano
Povinné sekce předávky vynucené při zápisuprázdné záznamy pokračováníkontrola sekcí awkem odmítá zápisanoanonízkáano
Rozpočet vždy načítaného s selhávající kontrolou + integrita ukazatelůkontrakt vyrostl z 0 na 1 100 řádků během 200 úpravlimit 200 řádků drží na 49; nelimitovaný sourozenec znovu vyrostl 3,6×anoanonízkáano
„Unscoped rule is always-loaded context“skrytý růst kontextuoznačil to řádek lintruanoanotriviálníano
Počty se počítají, nikdy nepíšoupět protichůdných počtů aplikací, tři počty agentů, pět počtů pilířů napříč autoritativními souboryvalidátor existuje a přesto našel 15 nesrovnalostíčástečněanonízkáano
Oddělené osy: model / úsilí / upovídanost / kontext / verifikace„Sonnet with Reasoning“ považován za modelsoučasná rubrika odděluje model a effort; verbosity chybí všudeano (2 osy)anotriviálníano, rozšířeno
Úsilí jako delta od výchozíhorozrůstání profilů„nastavit jen tam, kde se liší“anoanotriviálníano
Pojmenovaný profil provádění, který svazuje osyžádný takový balík neexistovalgovernor rozpočtu měl implicitní nepojmenovaný profil s alarmy driftuneanonízkáano
Typované výsledky (uzavřený slovník)no_match vs failed v próze nerozlišitelné157 z 298 poznámek neslo volnotextový stav; čtyři nekonzistentní enumyneanotriviálníano
Count-ratchet (baseline o jednom celém čísle; zvýšení selže; chybějící baseline varuje)starý nepořádek blokuje všechny, nebo je zamaskován allowlistemčtyři živé rohatky; absolutní kontroly narazily na 1 400 nálezů a byly povoleny na 8anoano~40 řádků/metrikaano
Pevná nula pro katastrofické třídy, nikdy ratchetratchet připouští nejhorší instancirozhodovací matice ve zdrojianoanotriviálníano
Kontrakt exit kódů; žádné „varovat a pokračovat“hooky fail-opensmlouva to uvádí; skener zachytí || trueanoanotriviálníano
Trailer dokazuje autorství, nikdy že kontrola proběhlaznačky v commit zprávách přijímané jako důkazpostmortem ve zdrojianoanopolicyano
Vstupy autorizace odvozené nebo potvrzené, nikdy ambientníoverride validátor poražený proměnnými prostředípostmortem ve zdrojianoanonízkáano
Sebevypínací únikový východ bootstrapudodání kontroly do repozitáře, který je starší než onajeden záznam, zpracovaný tak, jak byl navrženanoano~10 řádkůano
Normalizace tvrzení + zahrnutí v obou směrechpřekryvy s lomítkem na konci a podstromů nejsou detekoványživý registr ukazuje obě třídyne — bylo porušenoanonízkáano
Překryv na dotčených souborech, ne na deklaracích3 200 kolizí neviditelných pro kontroly deklaracíforenzní matice kolizíneanonízkáano
Tvrzení sloučeno do start, není volitelné10 z 18 worktrees mělo prázdné claimyaudit souladuneanotriviálníano
Registr znovu sestavitelný z gitu82 % zastaralých záznamů registru při jednom audituopravný příkaz existovalčástečněanonízkáano
Strop uchování u úložišť jen pro připisování10 GB nepřečtených snímků metrikžádný neexistovalneanotriviálníano
Nástroj aplikuje své vlastní kontroly sám na sebelinter proti rozrůstání na 500 řádků zchátral za 19 dníregrese změřenaneanopolicyano
Publikovaný seznam „záměrně chybí“čtenáři předpokládají, že vynechání jsou přehlédnutítoto udělalo jedno README protokoluanoanoprózaano
Reprodukční příkaz u každého nálezuaudity obsahovaly nepravdivá tvrzení, zachycená až druhým čtenářemvíceneanopolicyano
Sémantická kondenzace výstupu (head + diagnostické řádky + tail, s vlastním razítkem)příliš velký výstup nástrojeimplementace governoruano, stručněspecifické pro poskytovatelenízkáodloženo na v0.2
Omezení velikosti čtení na hranici nástrojeworker pohltí soubor o 5000 řádcíchimplementace governoruano, stručněspecifické pro poskytovateletriviálníodloženo na v0.2
Rozpočet počtu subagentůnáklady na rozvětvenígovernor to globálně nastavil na 1; během dnů vrácenoano, a pak odmítnutoano, je-li odvozeno z úlohynízkáodloženo na v0.2
Telemetrie vyloučení při balení kontextunedostatečně naplněný kontext nelze laditmanifest packeruanoanonízkáodloženo
Značky shody jako omezené vyhledatelné výjimkyneviditelná potlačeníkonvence ve zdroji; jedna značka zdokumentována jako nefunkčníčástečněanonízkáodloženo
Hrany závislostí úloh—jeden demo soubor, podúlohy čekající o rok pozdějinenejasnéstřednízamítnuto v0.1
Směrování podle popisu se spouštěcími frázemivolba postupůfunguje ve zdrojíchanospecifické pro nástroj—pouze záležitost projekce

4. Zamítnuté vzory

Rovnou zamítnuto, se selháním, které zamítnutí ospravedlňuje:

ZamítnutoProč
Pojmenovaní agenti, persony, role, úrovně, velitelé, registry546 položek; 305 bylo pojmenovacích variant bez funkčního rozdílu; 139 bylo zástupných, jejichž schopnosti se rovnaly jejich odpovědnostem; 109 byly slajdy z pitch decku. Dozorový nástroj, který přidává podstatná jména, se stává tím, na co dohlíží.
Poradní úroveň, která se nazývá vynucovánímKaždá poradní úroveň zdegenerovala v dekoraci. Dvouúrovňové „advisory/blocking“ bylo zdokumentováno a neexistovalo.
Uzavřený výčet pro identitu workeraEnum o 8 hodnotách použitý jen k sestavení názvů souborů, nevalidovaný při čtení, již porušený ve vlastním živém registru.
Ručně udržovaný dispatcher s číselnými prefixy, které vypadají smysluplně5 z 39 vyvoláno; pořadí bylo dekorativní; chmod -x tiše odstranilo kontrolu.
Vzor guardu fail-open if [ -x hook ]; then hook; fiChybějící bit spustitelnosti smaže kontrolu bez chyby. Správný tvar blokuje s pokynem k obnovení.
Vlastnění mergiZdrojová implementace po rebase vynuceně přesunula cílovou větev, zahodila nepushnuté commity, bez tvrzení o původu.
Přibalený runner kontrol kvality uvnitř koordinačního nástrojeDuplicitní logika CI; audit zdroje doporučil ji sloučit. Volat nakonfigurovaný příkaz verify.
Globální konstantní rozpočty (subagenti = 1, vždy haiku)Vráceno zpět během dnů. Rozpočty musí být odvozeny z úlohy, jinak je člověk governor vypne a nic se neměří.
Tichá mutace vstupu nástroje pracovníkaPro workera neviditelné; drift by se měl ukázat dřív, než se vynutí.
Bajty ÷ 4 označené jako počet tokenůV manifestu k nerozeznání od měření. Odhady jsou označeny a vyloučeny z vynucování.
Zdokumentované metriky bez producentaKompresní subsystém s bajtově přesnými procenty retence pro kód, který nikdy nebyl napsán. Nástroj odmítá zobrazit metriku bez producenta.
Více překrývajících se úložišť stavuČtyři koexistující jmenné prostory vyžadovaly tabulku pro rozlišení. Dodejte jedno úložiště.
Ručně psaný serializér omezeného JSON v shelluSprávné jen proto, že zapisovač odmítl escapování; stálo to chybu v klíči řazení, past přenositelnosti regexu a díru v trvanlivosti. Použijte skutečný serializér.
Pozůstatková pole schématuČtyři vždy-null pole směrování převzatá z dřívějšího systému. Každé pole se buď zapisuje a čte, nebo se odstraní.
Minimální rozvětvení / minimální počet agentů44 procedur bylo označeno jako selhané, pokud nespustily 3–6 agentů, což zatěžovalo i triviální.
Přejmenování přijato jako opravaMigrace se přistihla, že mechanicky přejmenovává doktrínu, a vrátila se. Pokud lze kontrolu splnit hledáním a nahrazením, není to kontrola.
Mytologický slovník2 850 souborů stále neslo zakázané formulace rok po příkazu k odstranění. Jen běžný technický jazyk.
Neohraničené adresáře poznámek relací10 GB, 1 496 souborů, ruční runbook obnovy na patnáct až třicet minut.
Jakýkoli démon, server, databáze, fronta, povrch MCP, monitor na pozadí, vektorové úložištěŽádný důkaz, že některý z nich vyřešil problém, který mechanismy založené na souborech nevyřešily. Čtečka stdio MCP přidaná později v apps/majordomus-cli/ není žádný z nich: žádný proces nepřežije svého klienta, žádný stav nepřežije proces; viz .ai/repo/adrs/0001-rust-cli-and-stdio-mcp.md.

5. Navrhovaný strom souborů

.
├── README.md
├── LICENSE
├── SECURITY.md
├── CONTRIBUTING.md
├── AGENTS.md                    # canonical AI-readable contract for this repo
├── CLAUDE.md                    # pointer to AGENTS.md until `update` generates it
│
├── bin/
│   └── majordomus               # single portable-shell entry point
│
├── lib/                         # sourced shell modules, one per subcommand
│   ├── common.sh
│   ├── doctor.sh
│   ├── start.sh
│   ├── check.sh
│   ├── watch.sh
│   ├── update.sh
│   ├── handover.sh
│   └── finish.sh
│
├── share/
│   ├── skeleton/                # what `init` copies into a project's .majordomus/
│   │   ├── policy.yaml
│   │   ├── profiles/            # routine · implementation · debugging · deep-work
│   │   ├── templates/           # handover, completion, decisions, open-questions
│   │   └── providers/           # body.md + one wrapper template per provider
│   └── allow/                   # key allowlists: unknown keys are errors
│
├── .majordomus/                 # this repository supervising itself
├── .githooks/                   # pre-commit runs doctor, pre-push runs finish --check
│
├── test/
│   ├── run.sh
│   └── cases/                   # one script per behaviour, disposable repo each
│
├── examples/
│   └── minimal/                 # a scratch repo walked through start → finish
│
└── docs/
    ├── README.md                # index
    ├── DESIGN.md                # specification
    ├── CLI.md                   # commands, exit codes, target output
    ├── SCHEMAS.md               # every file, with a concrete example
    └── EXTRACTION_REPORT.md     # this document

Odstraněno z původního návrhu: principles/ (splývá s policy.yaml a README), workflows/ (lifecycle je CLI; adresář workflows by byl druhým popisem téhož), vějíř scripts/majordomus-* spustitelných souborů (jeden vstupní bod, sourcované moduly). Nic se nezachovalo jen proto, že to prompt navrhl.

6. Kanonické pojmy

Běžný inženýrský slovník. Žádný soud.

PojemVýznam
policyjediný kanonický soubor YAML; nezávislý na poskytovateli
profilpojmenovaný balík, který pro třídu úloh fixuje úsilí, upovídanost, přepínače kontextu, ověřování a výstupní kontrakt
projekceinstrukční soubor specifický pro poskytovatele, generovaný z politiky; opatřený otiskem
úlohajediná aktivní jednotka práce; state/current.yaml
scopenormalizovaná množina cest, kterých se úloha smí dotknout
claimrozsah zaznamenaný pro detekci překryvu; součást start
kontrolní bodaktualizace current.yaml; zastarání se měří od poslední
handoverzáznam o pokračování jen s přidáváním a povinnými sekcemi
výsledekjedno z completed / partial / blocked / no_match / failed
kontrakt příkazu finishkontrolní seznam, který finish vyhodnotí před přijetím completed
kniha záznamůstate/ledger.jsonl, jen přidávání, omezená retence, zapisuje pouze Majordomus
ratchetbaseline o jednom celém čísle, které smí klesnout, ale ne vzrůst
zapojenovynucení, jehož artefakt existuje, je spustitelný a dosažitelný ze svého dispatcheru
driftjakýkoli deterministický rozpor mezi politikou, projekcí, stavem a gitem

7. Hranice MVP

v0.1 umí: držet kanonickou politiku; definovat čtyři profily; spustit úlohu s rozsahem a normalizovaným tvrzením; uchovávat trvalý stav s identitou odvozenou z gitu; označit zastaralost stavu při čtení; zapisovat a rozřešit předávky; vyhodnotit kontrakt dokončení; detekovat třídy driftu v návrhu; generovat projekce s otiskem pro čtyři poskytovatele; prokázat, že jeho vlastní vynucování je zapojeno; běžet zcela offline v přenosném shellu.

v0.1 neumí: vyvolat model; měřit tokeny či cenu; dynamicky směrovat; hookovat runtime pracovníka; spouštět cokoli na pozadí; koordinovat napříč stroji; reprezentovat závislosti úloh.

Hranice je v README uvedena se stejnou důležitostí pro obě poloviny.

8. Audit extrakce / důvěrnosti

Provádí se nad obsahem tohoto repozitáře před každým pushem.

  • Neobjevují se žádné interní cesty, názvy hostitelů, URL, identifikátory zákazníků či případů ani tajemství. Zkontrolováno grepem na názvy adresářů zdrojového prostředí, vzory hostitelů a slovník; nula zásahů.
  • Neobjevuje se žádná citace ze soukromého materiálu. Hlásí se řády; věty ne.
  • Slovník doktríny zdrojového prostředí (názvy pilířů, zkratky, divadelní štítky) se nevyskytuje.
  • Jediná odkazovaná značka je „Prismatic“ v názvu produktu a v jednosměrném prohlášení o původu.
  • Pracovní ledger použitý při extrakci žije v dočasném adresáři relace mimo tento repozitář a necommituje se.
  • Směr závislosti: žádný. Tento repozitář nic neimportuje a na nic ve zdrojovém prostředí neodkazuje.

9. Rizika

RizikoZmírnění v návrhu
Samotný Majordomus chátrá jako čtyři nástroje před nímdoctor nejprve běží proti vlastní instalaci; každá kontrola má příkaz k reprodukci; README uvádí, co je zaručeno a co jen pozorováno
Limity přenositelného shellu (macOS dodává bash 3.2; BSD awk a sed se liší)žádná asociativní pole, žádné mapfile, žádné přepínače jen pro GNU; testováno na obou; YAML zpracovává malá závislost s zdokumentovaným záložním řešením
Parsování YAML v shellu je křehkév0.1 omezuje schéma politiky na plochou, parsovatelnou podmnožinu a validuje ji; skutečný parser se používá tam, kde je dostupný
Projekce se upravují ručněotisky to činí viditelným jedním příkazem; generovaná hlavička pojmenovává příkaz regenerace
Uživatelé přeskočí start a pracují bez dohleducheck a finish odmítnou bez current.yaml; promítnuté instrukce říkají workeru, aby spustil start
Přílišné blokování plodí kulturu obcházeníblokování je omezeno na levné, deterministické, samozřejmě správné kontroly; vše o rozpracované práci se hlásí, neblokuje
Nabobtnání rozsahu během implementaceseznam „záměrně chybí“ je veřejný závazek; revize další fáze se u každé odpovědnosti ptá, zda je zdokumentovaná / reprezentovaná / validovatelná / vynucovaná / měřitelná, a nezaměňuje první s poslední
Dva souběžní AI zapisovatelé v jednom checkoutu, což by podle návrhu měly být dva worktreePozorováno při sestavování samotného v0.1: CLI a odvozený web psaly dvě relace v jedné pracovní kopii. Fungovalo to, protože rozsahy byly disjunktní podle adresáře a obě strany si je navzájem deklarovaly dřív, než se čehokoli dotkly, což je krok nároku, který návrh činí povinným. Nástroj to na checkoutu, ve kterém žije, zatím vynutit neumí; start druhou úlohu odmítne, takže druhý zapisovatel je prostě nespustil. Zaznamenáno jako omezení, ne skryto. Čistší příklad ze stejného večera: generátor webu byl správný vůči základní URL, vůči které se ve skutečnosti nikdy nevyřešil, takže každý asset po nasazení pod cestou repozitáře vracel 404 a žádný zapisovatel to sám zachytit nemohl; stačil jeden snímek obrazovky z jedné strany a jedna oprava z druhé a oprava se dodala s kontrolou, která selže na jakékoli cestě bez prefixu. To je vlastní pravidlo repozitáře použité na sebe: žádné tvrzení bez spustitelné opory
Značka vybízí číst ji jako výřez ze zdrojové platformyprohlášení o původu je jednosměrné a výslovné; nesdílí se žádný kód

Pět fází, každá podmíněná realitou té předchozí, žádná nezačne dřív, než je předchozí zrevidována.

  1. Návrh — tento dokument a DESIGN.md. Dokončeno.
  2. Implementovat v0.1 — hotovo; viz CLI.md, SCHEMAS.md, test/cases/. Původní zadání: — strom souborů výše; behaviorální testy v jednorázových repozitářích pro: šťastnou cestu init, chybějící politiku, neplatné YAML, neznámý klíč, chybějící rozsah, nedokončenou úlohu, platné dokončení, zápis a rozlišení předávky, odmítnutí přepsání, každou třídu odchylky a zdravý případ bez zjištění. Každé tvrzení README se porovná s implementací dřív, než se fáze uzavře.
  3. Udělat dozor skutečným — pro každou odpovědnost poctivě odpovědět dokumentováno / reprezentováno / validovatelné / vynucováno / měřitelné; uzavřít nejhodnotnější mezery v tomto pořadí: integrita stavu, integrita politiky, detekce driftu, integrita životního cyklu, integrita předávek, drift projekcí, viditelnost rozpočtu, viditelnost koordinace. Vytvořit dokument modelu dozoru, který odděluje zaručené od pozorovaného.
  4. Nepřátelské posouzení — matice tvrzení/implementace; pokus smazat 30 % repozitáře; desetiminutový průchod novým uživatelem; sken čisté extrakce včetně historie gitu; audit bezpečnosti a přenositelnosti; audit terminologie. Vrací READY nebo NOT READY s blokátory.
  5. Release — až po READY. Šablonový repozitář, minimální CI, v0.1.0, poznámky k release bez nafukování, vzdálená validace včetně čerstvého repozitáře vygenerovaného ze šablony.

Fáze 3 je další akce.


11. Druhý průchod — záznamy relací a kompilátor znalostí

První průchod zkoumal instrukční soubory, hooky, úložiště stavu a koordinaci. Nezkoumal dva podsystémy, které se ukazují jako důležité pro tentýž problém: souborovou disciplínu poznámek relace a bezstavový kompilátor Markdownu, který z vlastních dokumentů repozitáře vytvářel procházitelný generovaný trezor poznámek.

Byly znovu prozkoumány, když se plánovalo M003. Metoda je nezměněná — studovat, abstrahovat, zpochybnit, syntetizovat — a stejně tak pravidlo důvěrnosti: hlásí se mechanismy a řádové velikosti, nikoli kód a slovník.

Oba jsou velmi rozdílné kvality a ten rozdíl je sám zjištěním. Disciplína poznámek relace je tvarovaná podle názvu souboru: vynucuje jmennou gramatiku a nemá model toho, co záznam obsahuje. Kompilátor je postaven pořádně a téměř každá jeho pojistka nese komentář, který pojmenovává selhání, jemuž brání.

Co říkají důkazy

PozorováníVelikostDůsledek pro tento návrh
Adresář poznámek relací s deklarovanou retencí „posledních 50 souborů“zhruba 10 GB napříč 585 položkami při tomto průchodu; oddíl 4 zaznamenává 1 496 souborů při prvním průchodu a obojí se ponechává, ne usmiřuje — počet se změnil, objem neNadměrný růst nebyl selháním retence. Druhý producent zapisoval snapshoty, které nebyly Markdown, do adresáře, v němž každý nástroj filtroval podle jedné přípony, takže se nepoužil žádný práh a žádný audit je neviděl. Retence musí být vlastností úložiště, ne vzoru souboru.
Jeho záznamyvolný text od začátku do konce; počet strojově kontrolovatelných polí nula, včetně pole identifikátoru označeného jako auto-generated, které nic negenerovaloZáznam, který tvrdí hash commitu, jejž nikdo nespočítal, je horší než žádný záznam. Každé identifikační pole relace Majordomus se počítá z gitu a v psaném těle se odmítá.
Jeho krok „komprese“nahradil originál na místě digestem odvozeným z grep, přičemž jedinou plnou kopii ponechal nesledovanouMajordomus archivuje a nikdy nepřepisuje. Nic záznam neshrnuje, protože nic zde nevolá model a regexový digest je ztrátový model s horšími způsoby selhání.
Výběr souborů tohoto krokupevně zadaný prefix roku, který přestal sedět, když se rok změnil; skončí a hlásí úspěch, aniž by cokoli udělalUdržovací příkaz, který nemůže nic udělat a ohlásí úspěch, se nedá odlišit od takového, který funguje.
Jeho řazení a výběrsoubory vybrané podle mtime souborového systému, pak seskupené podle data vyparsovaného z názvu souboruDvoje hodiny v jedné smyčce a mtime klon nepřežije. Majordomus řadí podle zaznamenaného časového razítka a shody rozhoduje knihou.
Jeho vynucovací háčekdokumentováno jako blokující; na každé platformě tiše nic nenašlo, protože vstup oddělený NUL byl poslán do řádkově orientovaného filtruTáž třída selhání, kterou první průchod našel sedmnáctkrát, nalezená znovu v subsystému, který měl tomu zabránit.
Jeho čísla retencečtyři dvojice cíl a práh pro jednu datovou sadu, rozptýlené v politice, README a dvou skriptech, žádná nesladěná, žádná s uvedeným odvozenímRetence je jeden blok politiky, čtený jedním příkazem.
Jeho procento shodyvyňaté soubory započítané do jmenovateleČíslo, které soustavně podhodnocuje to, co má hlásit.
Zjišťování kompilátoruřízeno git ls-files; poslední zaznamenaný běh klasifikoval 25 539 sledovaných souborů Markdown na 3 655 kurátorovaných, 2 662 logů relací a 19 222 vyloučenýchPravda repozitáře, žádné vylučovací globy k údržbě, žádný výstup buildu, žádné nesledované soubory. Přijato přímo.
Hrany kompilátoru7 731 hran, každá explicitní, žádná odvozenáGraf zná jen to, co někdo napsal. To je vlastnost, kterou stojí za to mít jako první.
Jeho rozbité odkazy a osiřelé stránkyzhruba třetina jeho uzlůHlášeno, nikdy neblokuje, s zaznamenaným zdůvodněním: blokování podle počtu, který je z principu velký, učí lidi selhání ignorovat.
Jeho studený běhasi 2,1 sekundy nad 3 655 zdroji, přičemž manifest zkratuje vykreslování, ale ne analýzuManifest, který jen přeskakuje zápisy, má mnohem menší cenu než ten, který přeskakuje práci. Měřte, než uvěříte.

Adoptováno, přeodvozením

Každá z nich je nápad, znovu implementovaný od základu v přenosném shellu a awk proti vlastním záznamům Majordomus. Žádný kód, schéma ani slovník nebyl převzat.

NápadČím se to zde stane
Identita ze stabilního zdrojového faktu; hashe jen pro detekci změnId uzlu je kanonické id nebo cesta v repozitáři. source_hash říká, zda se pohnul, nikdy co to je.
Provenience vyžadována na každé hraněHrana nese soubor, v němž byla pozorována, a hrana bez něj je selhání validace, a ne tiché zahození.
Slovník jistoty, jehož hodnota „inferred“ je zatím nepoužitaDůvěryhodnost grafu se stane ověřitelným tvrzením: počet odvozených hran je nula a příkaz to říká.
Klasifikovat ze struktury a deklarovaných metadat, nikdy z prózyDruh uzlu pochází z jeho zdrojové třídy nebo explicitního pole. Dokument obsahující slovo „roadmap“ se roadmapou nestává.
unknown jako plnohodnotná odpověďNerozpoznaný zdroj je uzel druhu unknown, je hlášen, nehádá se a nezahazuje.
Nikdy nenastavovat stav na věrohodnou hodnotuUž je to pravidlo pro stav úkolu, který se odvozuje a nemá uložené pole. Rozšířeno na druh uzlu.
Kontrolovat jen vady, které způsobil tento běhRozbitý odkaz mezi dvěma věcmi, které Majordomus vlastní, je selhání. Odkaz na záměrně externí zdroj ne.
Chybějící neznamená poškozenéChybějící manifest je první běh. Manifest, který se nepodaří parsovat, selže hlasitě, protože jeho považování za chybějící by potichu vypnulo záruku, kvůli které existuje.
Označit odkaz syntaxí, ve které byl napsán, ne tvarem jeho cíleRelativní odkaz bez přípony je odkazem kvůli tomu, jak byl napsán.
Před hledáním odkazů odstranit ohraničený kódCesta uvnitř ukázky kódu je příklad, ne odkaz.
Řešení kolizí nezávislé na pořadí, podložené hashemČitelný fragment je nápověda; hash je záruka.
Zaznamenejte obě hodnoty, když se dva zdroje jednoho faktu neshodujíOhlásit drift, místo aby se vybral vítěz a skryl se.
Selhání jednoho souboru je chyba, ne přerušený běhJeden vadný vstup nesmí stát sestavení.
Seřazený, deduplikovaný generovaný výstupArtefakt lze porovnat diffem, takže dopad přestavby lze zrevidovat.
Promítnout korpus s vysokým objemem a nízkou trvanlivostí jako jeden indexNa checkpointy se odkazuje z jejich relace, nedělá se z nich po jednom uzlu.
Časová razítka UTC v názvu souboru pro chronologické záznamyUž zde tvar checkpointu a předávky, a už nese poddenní rozlišení a složku jedinečnosti, které zkoumané gramatice chyběly.
Přeskočit těžký runtime, když ho job nepotřebujeUž platí z konstrukce: není žádný runtime, který by šlo přeskočit.

Odmítnuto

OdmítnutoProč
Libovolná databáze — vestavěná, relační, sloupcová nebo grafováKorpus je několik tisíc malých souborů. Databáze je závislost, příběh migrace a druhý zdroj pravdy, koupený dřív, než cokoli změřilo potřebu. Nejdřív měřit.
Embeddingy, vektorové vyhledávání, podobnost, shlukování, automatická taxonomieŽádný nedokáže jmenovat řádek, který vztah ospravedlňuje, což je test, který nyní používá hranice extrakce. Jsou také nevyvratitelné tím, kdo je nejlépe postaven k tomu, aby si všiml, že jsou špatně.
Jakékoli generované shrnutí relace, modelem nebo regexemMajordomus nevolá žádný model a studovaný regex digest je případová studie toho, proč je levná náhrada horší. Worker si napíše vlastní shrnutí, jinak ho záznam nemá.
Renderer pro vault poznámek a jakákoli závislost na konkrétní aplikaci pro poznámkyGraf je nezávislý na rendereru. Renderer lze přidat později nad stejná generovaná data; nic v jádru nesmí žádný předpokládat.
Kopírování těl záznamů do poznámky relaceJediná nejdůsledněji škodlivá vada zkoumaného úložiště relací. Relace je obálka odkazů.
Měnitelný soubor relace, na který ostatní příkazy při běhu připojují odkazyStaví zápis na horkou cestu každého příkazu a znovu vytváří druhé úložiště. Obálka se odvozuje z účetní knihy při uzavření.
Destruktivní komprese nebo přepis na místě jakéhokoli záznamuArchivace přesouvá; nikdy nepřepisuje a nikdy nepřepíše archiv.
Čas změny souboru (mtime) jako vstup řazení nebo výběruKlon nepřežije a není to čas, který záznam tvrdí.
Pravidlo uchovávání, které jmenuje vzor souboru místo úložištěAdresář o 10 GB je to, co to stojí.
Obchozí kanály vynucovaného pravidlaDvě tam existovaly, v disciplíně, jejíž vlastní politika říkala, že ji nelze obejít.
Druhé „search“, jehož kontrakt tiše nahradí prvnísearch zůstává doslovným skenem trvalých záznamů bez indexu. knowledge search je jiný korpus s jiným kontraktem a obojí to říká.

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