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.

test-evidence — Každé ověřitelné tvrzení a widget se řeší na testovací důkaz vázaný na revizi, na každém rozhraní

Důkazy jsou indexovány podle subjektu a posuzovány v prezentované revizi, jak zaznamenává ADR 0087. Každé tvrzení, pravidlo, funkce, příkaz, schopnost, nástroj MCP a případ užití je subjektem jednoho odvozeného indexu a každý widget, který tvrdí chování, jeden pojmenovává. Každý povrch čte svůj verdikt jen ze sledovaného ledgeru, jednou funkcí čerstvosti a jednou agregací, v revizi, kterou prezentuje: CLI, HTTP a MCP v pracovním stromě nebo checkoutovaném commitu, web v commitu, ze kterého byl sestaven. Běh na trunku se do ledgeru dostane přes revidovaný záznamový pull request a doplňkový záznam (záznam běhu, pokrytí, lokální řádek) může verdikt jen oslabit, a když to udělá, pojmenuje se. Verified se vykresluje jen pro jediný dokázaný řádek tabulky čerstvosti, na každém povrchu.

AKTIVNÍ 16 of 32 issues done

připraveno
4
blokováno
12
aktivní
0
verify
0
hotovo
16
zrušeno
0

Problém

Tvrzení se s testy vážou cestou a pouze `majordomus evidence show` se ptá, zda je tvrzení prokázáno, vždy v pracovním stromu toho, kdo ho spouští. Web se nemůže na tuto otázku zeptat o commitu, ze kterého byl sestaven, a žádný widget na něm nepojmenovává předmět, který by prokázal, co zobrazuje: kde stránka říká ověřeno, slovo bylo vloženo ručně. CI spouští sadu i testy cratů při každém merge a nic z toho neukládá do záznamu. Test, který odmítl běžet, se čte jako `failing`, zatímco případ, který odmítne ukončením s nulou, se zaznamená jako úspěšný. Modul pravidel drží druhou kopii odvození čerstvosti, vstupní preflight navržený v PR #578 počítá běh za aktuální vlastním filtrem bez testu zahrnutí a ADR 0068 a ADR 0080 se rozcházejí v tom, kam patří důkazy z CI. Každé rozhraní, které chce říct ověřeno, to odvozuje jinak, nebo vůbec.

Výsledek

Důkazy jsou indexovány podle subjektu a posuzovány v prezentované revizi, jak zaznamenává ADR 0087. Každé tvrzení, pravidlo, funkce, příkaz, schopnost, nástroj MCP a případ užití je subjektem jednoho odvozeného indexu a každý widget, který tvrdí chování, jeden pojmenovává. Každý povrch čte svůj verdikt jen ze sledovaného ledgeru, jednou funkcí čerstvosti a jednou agregací, v revizi, kterou prezentuje: CLI, HTTP a MCP v pracovním stromě nebo checkoutovaném commitu, web v commitu, ze kterého byl sestaven. Běh na trunku se do ledgeru dostane přes revidovaný záznamový pull request a doplňkový záznam (záznam běhu, pokrytí, lokální řádek) může verdikt jen oslabit, a když to udělá, pojmenuje se. Verified se vykresluje jen pro jediný dokázaný řádek tabulky čerstvosti, na každém povrchu.

Aktuální stav

Na masteru na 5a0770c437 drží sledovaná kniha jen lokální záznamy a kolik tvrzení dosáhlo každého stavu, vypíše `majordomus evidence show --format json | jq .totals`. Neexistuje žádný index subjektů; spojení příkaz-test se odvozuje v shellu víckrát (`scripts/generate-site-data`, `lib/commands.sh`, `scripts/ci/command-furnished`). `rules/mod.rs` nese vlastní `changed_since` a vlastní mapování stavů vedle `evidence/mod.rs`. Rozhodnutí, na nichž tento milník staví, jsou navržená a nepřistála: ADR 0068 na PR #577 (CI evidence jako artefakt a publikovaný dataset), ADR 0080 na PR #629 (zaznamenávací větev a slovo skip), ADR 0071 na PR #600 (dimenze doručení se soukromou implementací obsažení); PR #597 přidává verdikt korpusu pravidel a PR #578 vstupní preflight.

Cílový stav

Čtenář jakékoli stránky webu následuje odznak widgetu k důkazům jeho subjektu a vidí verdikt na commitu, z něhož byla stránka sestavena, s během, který ho vytvořil, a každým záznamem, který ho oslabil. `majordomus evidence subject <key>` odpovídá na stejnou otázku z terminálu, přes HTTP i přes MCP, a Cockpit ukazuje stejný verdikt. Po merge na master následuje zaznamenávací pull request, který přistane provedení svého běhu v knize. Tvrzení pak na commitu trunku, od zaznamenaného odděleném jen commity pouze s knihou, čte `proven`, a tam, kde mezitím přistály jiné merge, `inputs_unchanged` nebo `stale` s uvedením, co se změnilo; zda proces učiní první pravidlem, je rozhodnutí vlastníka (ADR 0087, Consequences). Přeskočený test se čte `not_run` s důvodem a žádný povrch nikde nevypadá zelenější než kniha pro revizi, kterou prezentuje.

Rozsah

  • .ai/repo/adrs
  • .ai/repo/project
  • .ai/repo/evidence
  • .ai/repo/evidence-baseline.txt
  • .ai/repo/features/evidence.md
  • .ai/repo/ci
  • apps/majordomus-cli/src/evidence
  • apps/majordomus-cli/src/rules
  • apps/majordomus-cli/src/git
  • apps/majordomus-cli/src/capability/builtin/evidence.rs
  • apps/majordomus-cli/src/commands/evidence.rs
  • apps/majordomus-cli/src/cockpit
  • apps/majordomus-cli/src/environment/preflight.rs
  • apps/majordomus-cli/src/redaction.rs
  • .github/workflows
  • scripts/ci
  • scripts/pages
  • scripts/generate-site-data
  • scripts/evidence-check
  • share/design/tokens.yaml
  • site/templates
  • site/data/registry/evidence-subjects.json
  • docs/EVIDENCE.md
  • docs/CLAIMS.yaml
  • docs/claims
  • test/cases

Mimo rozsah

  • Přijetí ADR 0041, 0068, 0080 nebo 0087; přijetí je úkon vlastníka
  • Zvyšování verze; pull request, který posouvá veřejný povrch, zdědí verzi, která už je na masteru, jejím mergem
  • Posuzování jiného commitu než toho, který je právě checkoutnutý, nebo commitu, ze kterého byl web sestaven
  • šablony zdrojů MCP na předmět; k důkazům se přistupuje voláním nástrojů
  • Nechat požadovanou kontrolu `ci` záviset na úloze důkazů
  • Nová shellová automatizace (ADR 0069)
  • Crate pro regulární výrazy nebo jakákoli jiná nová závislost pro redaktor
  • Označení důkazů případu užití commitem v commitovaném katalogu

Kritéria přijetí

  • Model: jedna funkce čerstvosti, jedna předložená revize, jedno ohraničení a jedna agregace posuzují každý verdikt, přeskočení se čte jako `not_run` a jeden odvozený index jmenuje každý subjekt; dokázáno testy test/cases/502_evidence_is_judged_at_the_presented_revision.sh, test/cases/507_evidence_subjects_are_derived.sh a test/cases/501_verdict_words_are_status_words.sh
  • Producent: každý zaznamenaný běh nese commit a strom, které měřil, binárka cratu, která nic nespustila, je skip, report z CI je verdikt sledované knihy odvozený před zaznamenáním běhu a běh na trunku se do knihy dostane jedním zaznamenávacím pull requestem, zastaví se na commitu, který kniha pokrývá, a zaznamená commit jen s knihou přes nezaznamenaný merge; dokazují to test/cases/505_a_recording_carries_what_its_run_measured.sh, test/cases/506_a_crate_binary_that_ran_nothing_is_not_a_pass.sh, test/cases/357_ci_records_evidence.sh, test/cases/510_ci_evidence_reaches_the_ledger_through_a_recording_branch.sh a test/cases/511_every_runner_report_carries_its_revision_and_reason.sh
  • Povrchy: CLI, HTTP, MCP, Cockpit a vstupní preflight odpovídají podle předmětu z jediné autority a doplňkový záznam jen oslabuje; dokázáno test/cases/508_evidence_answers_by_subject.sh, test/cases/509_supplementary_records_only_weaken.sh, test/cases/513_cockpit_shows_evidence.sh, test/cases/514_every_test_line_is_read.sh, test/cases/515_a_local_run_stays_local.sh a test/cases/529_the_preflight_reads_the_one_verdict.sh
  • Web: každý widget jmenuje svůj subjekt, každý subjekt má trasu důkazů, publikace je vázána na své sestavení a na seznam povolených a publikovaný text je redigován jednou; doloženo test/cases/504_public_text_is_redacted_once.sh, test/cases/512_evidence_publication_is_a_projection.sh, test/cases/516_evidence_routes_render_from_the_subject_index.sh, test/cases/517_a_panel_subject_is_joined_from_its_route.sh, test/cases/518_evidence_publication_is_bound_to_its_build.sh a test/cases/520_every_widget_names_its_proof.sh
  • Politika: nálezy subjektů odmítají, základna důkazů se přepisuje v téže změně a validátor čte každý widget; dokázáno testy test/cases/522_evidence_check_reads_widgets.sh a test/cases/523_evidence_rules_are_gated.sh
  • Testy: žádná plocha není zelenější než účetní kniha, odznak funguje v prohlížeči na šířce telefonu, zfalšované důkazy se odmítnou a pokrytí se ukazuje s jeho commitem; dokázáno testy test/cases/524_no_surface_is_greener_than_the_ledger.sh, test/cases/525_an_evidence_badge_works_in_a_browser.sh, test/cases/526_tampered_evidence_is_refused.sh a test/cases/527_coverage_is_shown_with_its_commit.sh
  • Dokumentace: reference důkazů jmenuje, co kód deklaruje, a je držena ke stromu; dokázáno testem test/cases/528_the_evidence_reference_is_held_to_the_tree.sh
  • Deploy: deploy ověřuje routy s důkazy, které publikuje, a důkazy přežijí vypršení artefaktů na gh-pages; dokázáno test/cases/521_deploy_verifies_evidence_routes.sh, test/cases/519_evidence_survives_artifact_expiry.sh a živou stránkou https://majordomus.dev/evidence/

Validace

  • bin/majordomus adr check
  • bin/majordomus plan validate
  • bin/majordomus-cli evidence show --check
  • scripts/evidence-check
  • scripts/ci/claim-proof-check --strict
  • bash test/run.sh
  • cargo test --workspace --all-features
  • majordomus generate --check
  • scripts/ci/pages-check

Požadované důkazy

  • one_authority_one_freshness
  • subjects_derived_once
  • runs_measured_where_they_ran
  • no_surface_greener_than_the_ledger
  • every_widget_names_its_subject
  • publication_bound_to_its_build

Rizika

  • Dokud nezačne běžet záznamová větev, sledovaný ledger drží jen lokální řádky a web zobrazuje většinou `not_run`. To je pravdivý stav; odznaky z toho důvodu následují zapojení CI.
  • Rozhodnutí, na kterých tento milník staví, jsou navržena v otevřených pull requestech (#577, #578, #597, #600, #629). Slice naskládaný na jedno z nich na něj čeká a pořadí přistání určuje vlastník.
  • `proven` na revizi trunku potřebuje klidný trunk: zaznamenání stojí běh celé sady a pak povinné kontroly a merge kódu, který v tom okně přistane, nechá tvrzení `inputs_unchanged` nebo `stale` na commitu přistání. Dokud vlastník nerozhodne, zda proces činí `proven` dosažitelným, nebo zda se `required_tests_current` váže na dosažitelný stav, na rušném trunku dimenze dodávky zřídka projde a web zřídka vykreslí ověřeno (ADR 0087, Důsledky).
  • Zaznamenávací pull request potřebuje token, jehož události spustí požadovaný workflow. Dokud se vlastník nerozhodne mezi spouštěním validate.yml a tokenem App, nemůže část s napojením CI přistát.
  • Každé přistání způsobí, že pull requesty otevřených řezů kolidují na odvozených souborech; každý se obnovuje merge masteru s odvozeným ovladačem merge, nikdy rebase.

Ú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
I1945 HOTOVO 0 — Rozhodnutí o testovacích důkazech a jeho plán jsou zaznamenány
I1946 HOTOVO 0 — Slova verdiktu jsou stavová slova designového systému
I1947 HOTOVO 0 — Každá funkce dosáhne k testu a každý případ užití má funkci
I1948 HOTOVO 0 — Důkazy se posuzují na předložené revizi jednou funkcí čerstvosti
I1949 HOTOVO 0 — Důkazy z CI se zaznamenávají čisté a jejich report je verdiktem sledovaného ledgeru
I1950 HOTOVO 0 — Text, který běh vytiskl, se redaktuje jednou sadou pravidel
I1951 PŘIPRAVENO 1 I1948, I1949 Běhy důkazů jsou typované a záznam nese to, co jeho běh změřil
I1952 HOTOVO 1 I1948, I1947 Subjekty důkazů se odvozují jednou, v Rustu
I1953 BLOKOVÁNO 2 I1952, I1951 Důkazy odpovídají podle subjektu, na každém povrchu
I1954 BLOKOVÁNO 2 I1951 Každý runner se dostane k ledgeru přes zaznamenávací větev
I1955 BLOKOVÁNO 3 I1953, I1950 Publikace důkazů je projekce omezená povolenou množinou
I1956 BLOKOVÁNO 3 I1953 Cockpit ukazuje důkazy podle subjektu
I1957 BLOKOVÁNO 4 I1955 Čte se každý řádek testu a lokální běh zůstává lokální
I1958 BLOKOVÁNO 4 I1952, I1946, I1955 Důkazy mají jednu cestu na subjekt a každý panel je s nimi svázán
I1959 BLOKOVÁNO 4 I1955, I1954 Publikace důkazů je typovaná, svázaná se svým buildem a uchovaná na gh-pages
I1960 BLOKOVÁNO 5 I1958, I1959, I1946 Každý widget jmenuje svůj důkaz
I1961 BLOKOVÁNO 5 I1959, I1958 Nasazení ověří cesty k důkazům, které publikuje
I1962 BLOKOVÁNO 6 I1960, I1953, I1952 Kontroly důkazů čtou nálezy subjektů a widgety
I1963 BLOKOVÁNO 6 I1960, I1956, I1959 Důkazy jsou testovány od začátku do konce
I1964 BLOKOVÁNO 7 I1962, I1963 Reference důkazů je zdokumentována a držena v souladu se stromem
I1965 PŘIPRAVENO 1 I1948 Vstupní preflight čte jediný verdikt
I2282 HOTOVO 0 — Odeslaný verdikt pull requestu se záznamem nesplňuje ochranu větve
I2296 HOTOVO 0 — Executor znovu otevře pull request se záznamem, pro který nebyl spuštěn žádný běh
I2298 HOTOVO 0 — Pull request navázaný na ten, který přistál, se zmerguje na verdikt, který jeho head už má
I2303 HOTOVO 0 — Release publikuje svá metadata na web dřív, než přistane jeho záznam, a web se nikdy nevrací o release zpět
I2396 HOTOVO 0 — Kritická cesta CI z 2026-10-10 je změřena, zaznamenána a vysvětlena dřív, než se cokoli změní
I2416 HOTOVO 0 — Verdikt ci žádá od každé vybrané kontroly stvrzenku a kontrola, jejíž krok nikdy neběžel, je červená
I2786 HOTOVO 0 — Publikované UI čte důkazy zaznamenané CI a publikace, která by ukázala testy jako neběžící, se odmítne
I2795 HOTOVO 0 — Zaznamenaný běh trunku se dostane do sledovaného ledgeru důkazů a baseline se k němu utáhne
I2845 PŘIPRAVENO 0 — a run cancelled midway is not the publication's evidence while a complete one is near
I2853 HOTOVO 0 — nasazení Pages na čerstvém masteru není odmítnuto kvůli tvrzením novějším, než je ledger, který čte
I3013 PŘIPRAVENO 0 — The evidence job runs only when a planned lane ran tests, so a records-only pull request is not red

Graf

graf závislostí test-evidencez .ai/repo/project
flowchart LR
    I1945["I1945<br/>The test-evidence decision and its plan are recorded"]:::done
    I1946["I1946<br/>The verdict words are status words of the design system"]:::done
    I1947["I1947<br/>Every feature reaches a test, and every use case has a feature"]:::done
    I1948["I1948<br/>Evidence is judged at the presented revision, by one freshness function"]:::done
    I1949["I1949<br/>CI evidence is recorded clean, and its report is the tracked ledger's verdict"]:::done
    I1950["I1950<br/>Text a run printed is redacted by one rule set"]:::done
    I1951["I1951<br/>Evidence runs are typed, and a recording carries what its run measured"]:::ready
    I1952["I1952<br/>Evidence subjects are derived once, in Rust"]:::done
    I1953["I1953<br/>Evidence answers by subject, on every surface"]:::blocked
    I1954["I1954<br/>Every runner reaches the ledger, through the recording branch"]:::blocked
    I1955["I1955<br/>The evidence publication is an allow-listed projection"]:::blocked
    I1956["I1956<br/>The Cockpit shows evidence by subject"]:::blocked
    I1957["I1957<br/>Every test line is read, and a local run stays local"]:::blocked
    I1958["I1958<br/>Evidence has one route per subject, and every panel is joined to its subject"]:::blocked
    I1959["I1959<br/>The evidence publication is typed, bound to its build, and kept on gh-pages"]:::blocked
    I1960["I1960<br/>Every widget names its proof"]:::blocked
    I1961["I1961<br/>A deploy verifies the evidence routes it publishes"]:::blocked
    I1962["I1962<br/>The evidence gates read subject findings and widgets"]:::blocked
    I1963["I1963<br/>Evidence is tested end to end"]:::blocked
    I1964["I1964<br/>The evidence reference is documented and held to the tree"]:::blocked
    I1965["I1965<br/>The entry preflight reads the one verdict"]:::ready
    I2282["I2282<br/>The record pull request's dispatched verdict does not satisfy branch protection"]:::done
    I2296["I2296<br/>The executor reopens a record pull request no run was started for"]:::done
    I2298["I2298<br/>A pull request stacked on one that landed merges on the verdict its head already has"]:::done
    I2303["I2303<br/>A release publishes its metadata to the site before its record lands, and the site never goes back a release"]:::done
    I2396["I2396<br/>The CI critical path of 2026-10-10 is measured, recorded, and explained before anything is changed"]:::done
    I2416["I2416<br/>The ci verdict asks every selected gate for a receipt, and a gate whose step never ran is red"]:::done
    I2786["I2786<br/>The published UI reads the evidence CI recorded, and a publication that would show tests as not run is refused"]:::done
    I2795["I2795<br/>The trunk's recorded run reaches the tracked evidence ledger, and the baseline is tightened to it"]:::done
    I2845["I2845<br/>a run cancelled midway is not the publication's evidence while a complete one is near"]:::ready
    I2853["I2853<br/>a Pages deploy on a fresh master is not refused for claims newer than the ledger it reads"]:::done
    I3013["I3013<br/>The evidence job runs only when a planned lane ran tests, so a records-only pull request is not red"]:::ready
    I1946 --> I1958
    I1946 --> I1960
    I1947 --> I1952
    I1948 --> I1951
    I1948 --> I1952
    I1948 --> I1965
    I1949 --> I1951
    I1950 --> I1955
    I1951 --> I1953
    I1951 --> I1954
    I1952 --> I1953
    I1952 --> I1958
    I1952 --> I1962
    I1953 --> I1955
    I1953 --> I1956
    I1953 --> I1962
    I1954 --> I1959
    I1955 --> I1957
    I1955 --> I1958
    I1955 --> I1959
    I1956 --> I1963
    I1958 --> I1960
    I1958 --> I1961
    I1959 --> I1960
    I1959 --> I1961
    I1959 --> I1963
    I1960 --> I1962
    I1960 --> I1963
    I1962 --> I1964
    I1963 --> I1964
    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/test-evidence.yaml. Přečtěte ho zpět pomocí majordomus plan show test-evidence.

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